Registrieren eines Speicherorts - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Registrieren eines Speicherorts

Nachdem Sie eine Amazon S3 Access Grants-Instance AWS-Region in Ihrem Konto erstellt haben, registrieren Sie einen S3-Standort in dieser Instance. Ein S3 Access Grants-Standort ordnet den standardmäßigen S3-Standort (s3://), einen Bucket oder ein Präfix einer Rolle AWS Identity and Access Management (IAM) zu. S3 Access Grants übernimmt diese IAM Rolle, um temporäre Anmeldeinformationen an den Empfänger weiterzugeben, der auf diesen bestimmten Standort zugreift. Sie müssen zuerst mindestens einen Standort in Ihrer S3 Access Grants-Instanz registrieren, bevor Sie eine Zugriffsberechtigung erstellen können.

Empfohlener Anwendungsfall

Wir empfehlen, den Standardstandort (s3://) zu registrieren und ihn einer IAM Rolle zuzuordnen. Der Standort am Standard-S3-Pfad (s3://) deckt den Zugriff auf all Ihre S3-Buckets in dem AWS-Region Ihres Kontos ab. Wenn Sie eine Zugriffsberechtigung erstellen, können Sie den Umfang der Gewährung auf einen Bucket, ein Präfix oder ein Objekt innerhalb des Standardspeicherorts einschränken.

Komplexe Anwendungsfälle für die Zugriffsverwaltung

Bei komplexeren Anwendungsfällen für die Zugriffsverwaltung müssen Sie möglicherweise mehr als den Standardspeicherort registrieren. Einige Beispiele für solche Anwendungsfälle sind:

  • Nehmen wir an, dass der amzn-s3-demo-bucket ist ein registrierter Standort in Ihrer S3 Access Grants-Instance, dem eine IAM Rolle zugeordnet ist, aber dieser IAM Rolle wird der Zugriff auf ein bestimmtes Präfix innerhalb des Buckets verweigert. In diesem Fall können Sie das Präfix, auf das die IAM Rolle keinen Zugriff hat, als separaten Standort registrieren und diesen Standort einer anderen IAM Rolle mit dem erforderlichen Zugriff zuordnen.

  • Angenommen, Sie möchten Zuweisungen einrichten, die den Zugriff nur auf Benutzer innerhalb eines Virtual Private Cloud (VPC) -Endpunkts beschränken. In diesem Fall können Sie einen Standort für einen Bucket registrieren, in dem die IAM Rolle den Zugriff auf den VPC Endpunkt einschränkt. Wenn später ein Empfänger S3 Access Grants um Anmeldeinformationen bittet, übernimmt S3 Access Grants die IAM Rolle des Standorts, die temporären Anmeldeinformationen zu verkaufen. Diese Anmeldeinformationen verweigern den Zugriff auf den jeweiligen Bucket, sofern sich der Anrufer nicht innerhalb des Endpunkts befindet. VPC Diese Ablehnungsberechtigung wird zusätzlich zu der regulären READ oder in der Gewährung angegebenen READWRITE Berechtigung angewendet. WRITE

Wenn Sie einen Standort registrieren, müssen Sie auch die IAM Rolle angeben, die S3 Access Grants beim Verteilen temporärer Anmeldeinformationen und beim Gültigkeitsbereich der Berechtigungen für einen bestimmten Zuschuss übernimmt.

Wenn Ihr Anwendungsfall erfordert, dass Sie mehrere Standorte in Ihrer S3 Access Grants-Instanz registrieren, können Sie einen der folgenden Standorte registrieren:

S3 URI IAMRolle Beschreibung
s3:// Default-IAM-role

Der Standardspeicherort (s3://) enthält alle Buckets in der AWS-Region.

s3://amzn-s3-demo-bucket1/ IAM-role-For-bucket

Dieser Speicherort enthält alle Objekte im angegebenen Bucket.

s3://amzn-s3-demo-bucket1/prefix-name IAM-role-For-prefix

Dieser Speicherort umfasst alle Objekte im Bucket mit einem Objektschlüsselnamen, der mit diesem Präfix beginnt.

Bevor Sie einen bestimmten Bucket oder ein bestimmtes Präfix registrieren können, stellen Sie sicher, dass Sie Folgendes tun:

  • Erstellen Sie einen oder mehrere Buckets mit den Daten, auf die Sie Zugriff gewähren möchten. Diese Buckets müssen sich im selben Verzeichnis befinden AWS-Region wie Ihre S3 Access Grants-Instanz. Weitere Informationen finden Sie unter Bucket erstellen.

    Das Hinzufügen eines Präfixes ist ein optionaler Schritt. Präfixe sind Zeichenketten am Anfang eines Objektschlüsselnamens. Sie können sie sowohl zur Organisation von Objekten in Ihrem Bucket als auch zur Zugriffsverwaltung verwenden. Informationen zum Hinzufügen eines Präfixes zu einem Bucket finden Sie unter Erstellen von Objektschlüsselnamen.

  • Erstellen Sie eine IAM Rolle, die berechtigt ist, auf Ihre S3-Daten zuzugreifen, in der AWS-Region. Weitere Informationen finden Sie im AWS IAM Identity Center Benutzerhandbuch unter IAMRollen erstellen.

  • Geben Sie in der IAM Rollenvertrauensrichtlinie dem Dienst S3 Access Grants (access-grants.s3.amazonaws.com) den Prinzipalzugriff auf die IAM Rolle, die Sie erstellt haben. Dazu können Sie eine JSON Datei erstellen, die die folgenden Anweisungen enthält. Informationen zum Hinzufügen der Vertrauensrichtlinie zu Ihrem Konto finden Sie unter Eine Rolle mithilfe benutzerdefinierter Vertrauensrichtlinien erstellen.

    TestRolePolicy.json

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"}, "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId", "aws:SourceArn":"arn:aws:s3:region:accountId:access-grants/default" } //Optionally, for an IAM Identity Center use case, add: "ForAnyValue:StringEquals": { "aws:RequestContextProvider":"arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }
  • Erstellen Sie eine IAM Richtlinie, um der von Ihnen erstellten IAM Rolle Amazon S3 S3-Berechtigungen zuzuweisen. Schauen Sie sich die folgende Beispieldatei iam-policy.json an und ersetzen Sie die user input placeholders durch eigene Daten.

    Anmerkung
    • Wenn Sie serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS) -Schlüsseln verwenden, um Ihre Daten zu verschlüsseln, enthält das folgende Beispiel die erforderlichen AWS KMS Berechtigungen für die IAM Rolle in der Richtlinie. Wenn Sie diese Funktion nicht verwenden, können Sie diese Berechtigungen aus Ihrer IAM Richtlinie entfernen.

    • Sie können die IAM Rolle nur dann auf den Zugriff auf S3-Daten beschränken, wenn die Anmeldeinformationen von S3 Access Grants vergeben werden. Dieses Beispiel zeigt Ihnen, wie Sie eine Condition Anweisung für eine bestimmte S3 Access Grants-Instanz hinzufügen. Um dies zu verwendenCondition, ersetzen Sie die S3 Access Grants-Instanz ARN in der Condition Anweisung durch Ihre S3 Access Grants-InstanzARN, die das folgende Format hat: arn:aws:s3:region:accountId:access-grants/default

    iam-policy.json

    { "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS-Region:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS-Region:accountId:access-grants/default"] } } }, //Optionally add the following section if you use SSE-KMS encryption { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Sie können einen Standort in Ihrer S3 Access Grants-Instance registrieren, indem Sie die Amazon S3-Konsole, die AWS Command Line Interface (AWS CLI), die Amazon S3 REST API oder die verwenden AWS SDKs.

Anmerkung

Nachdem Sie den ersten Standort in Ihrer S3 Access Grants-Instance registriert haben, enthält Ihre Instance immer noch keine individuellen Zugriffsberechtigungen. Informationen zum Erstellen einer Zugriffsberechtigung finden Sie unterErstellen von Gewährungen.

Bevor Sie mit S3 Access Grants Zugriff auf Ihre S3-Daten gewähren können, müssen Sie über mindestens einen registrierten Speicherort verfügen.

So registrieren Sie einen Speicherort in Ihrer S3-Access-Grants-Instance
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Zugriffsgewährungen aus.

  3. Wählen Sie auf der Seite S3 Access Grants die Region mit der S3-Access-Grants-Instance aus, mit der Sie arbeiten möchten.

    Wenn Sie die S3-Access-Grants-Instance zum ersten Mal verwenden, müssen Sie Schritt 1 – Erstellen einer S3-Access-Grants-Instance abgeschlossen haben und zu Schritt 2 des Assistenten Access-Grants-Instance einrichten gewechselt sein. Wenn Sie bereits über eine S3-Access-Grants-Instance verfügen, wählen Sie Details anzeigen und dann auf der Registerkarte Speicherorte die Option Speicherort registrieren aus.

    1. Wählen Sie für den Bereich Standort die Option S3 durchsuchen oder geben Sie den URI S3-Pfad zu dem Standort ein, den Sie registrieren möchten. Informationen zu URI S3-Formaten finden Sie in der Tabelle mit den Speicherformaten. Nachdem Sie einen eingegeben habenURI, können Sie „Ansicht“ wählen, um den Speicherort zu durchsuchen.

    2. Wählen Sie für die IAMRolle eine der folgenden Optionen aus:

      • Wählen Sie aus vorhandenen IAM Rollen

        Wählen Sie eine IAM Rolle aus der Drop-down-Liste aus. Wählen Sie nach der Auswahl einer Rolle Anzeigen aus, um sicherzustellen, dass diese Rolle die notwendigen Berechtigungen für die Verwaltung des Speicherorts besitzt, den Sie registrieren. Stellen Sie insbesondere sicher, dass diese Rolle S3 Access Grants die Berechtigungen sts:AssumeRole und sts:SetSourceIdentity gewährt.

      • Geben Sie die Rolle ein IAM ARN

        Navigieren Sie zur IAMKonsole. Kopieren Sie den Amazon-Ressourcennamen (ARN) der IAM Rolle und fügen Sie ihn in dieses Feld ein.

    3. Wählen Sie Weiter oder Speicherort registrieren aus, um dies abzuschließen.

  4. Fehlerbehebung

    Speicherort kann nicht registriert werden
    • Der Speicherort ist möglicherweise bereits registriert.

      Möglicherweise besitzen Sie nicht die Berechtigung s3:CreateAccessGrantsLocation für die Registrierung von Speicherorten. Nehmen Sie Kontakt mit Ihrem Kontoadministrator auf.

Informationen zur AWS CLI Installation von finden Sie unter Installation von AWS CLI im AWS Command Line Interface Benutzerhandbuch.

Sie können in Ihrer S3-Access-Grants-Instance den Standardspeicherort (s3://) oder einen benutzerdefinierten Speicherort registrieren. Stellen Sie sicher, dass Sie zuerst eine IAM Rolle mit Hauptzugriff auf den Standort erstellen und dann sicherstellen, dass Sie S3 Access Grants die Berechtigung erteilen, diese Rolle anzunehmen.

Um die folgenden Beispielbefehle zu verwenden, ersetzen Sie user input placeholders durch eigene Daten.

Beispiel Erstellen einer Ressourcenrichtlinie

Erstellen Sie eine Richtlinie, die es S3 Access Grants ermöglicht, die IAM Rolle zu übernehmen. Dazu können Sie eine JSON Datei erstellen, die die folgenden Anweisungen enthält. Informationen zum Hinzufügen der Ressourcenrichtlinie zu Ihrem Konto finden Sie unter Erstellen und Anfügen Ihrer ersten vom Kunden verwalteten Richtlinie.

TestRolePolicy.json

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
Beispiel Erstellen der Rolle

Führen Sie den folgenden IAM Befehl aus, um die Rolle zu erstellen.

aws iam create-role --role-name accessGrantsTestRole \ --region us-east-2 \ --assume-role-policy-document file://TestRolePolicy.json

Wenn Sie den Befehl create-role ausführen, wird die Richtlinie zurückgegeben:

{ "Role": { "Path": "/", "RoleName": "accessGrantsTestRole", "RoleId": "AROASRDGX4WM4GH55GIDA", "Arn": "arn:aws:iam::111122223333:role/accessGrantsTestRole", "CreateDate": "2023-05-31T18:11:06+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1685556427189", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" } } ] } } }

Erstellen Sie eine IAM Richtlinie, um Amazon S3 S3-Berechtigungen an die IAM Rolle anzuhängen. Schauen Sie sich die folgende Beispieldatei iam-policy.json an und ersetzen Sie die user input placeholders durch eigene Daten.

Anmerkung

Wenn Sie serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS) -Schlüsseln verwenden, um Ihre Daten zu verschlüsseln, fügt das folgende Beispiel der Richtlinie die erforderlichen AWS KMS Berechtigungen für die IAM Rolle hinzu. Wenn Sie diese Funktion nicht verwenden, können Sie diese Berechtigungen aus Ihrer IAM Richtlinie entfernen.

Um sicherzustellen, dass die IAM Rolle nur für den Zugriff auf Daten in S3 verwendet werden kann, wenn die Anmeldeinformationen von S3 Access Grants ausgegeben werden, zeigt Ihnen dieses Beispiel, wie Sie Ihrer IAM Richtlinie eine Condition Anweisung hinzufügen, die die S3 Access Grants-Instanz (s3:AccessGrantsInstance: InstanceArn) angibt. Wenn Sie das folgende Beispiel verwenden, ersetzen Sie die user input placeholders durch eigene Daten.

iam-policy.json

{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS-Region:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS-Region:accountId:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Führen Sie den folgenden Befehl aus:

aws iam put-role-policy \ --role-name accessGrantsTestRole \ --policy-name accessGrantsTestRole \ --policy-document file://iam-policy.json
Beispiel Registrieren des Standardspeicherorts
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3:// \ --iam-role-arn arn:aws:iam::111122223333:role/accessGrantsTestRole

Antwort:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "default", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default", "LocationScope": "s3://” "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }
Beispiel Registrieren eines benutzerdefinierten Speicherorts
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3://DOC-BUCKET-EXAMPLE/ \ --iam-role-arn arn:aws:iam::123456789012:role/accessGrantsTestRole

Antwort:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888", "LocationScope": "s3://DOC-BUCKET-EXAMPLE/", "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }

Informationen zur Amazon S3 REST API S3-Unterstützung für die Verwaltung einer S3 Access Grants-Instance finden Sie in den folgenden Abschnitten der Amazon Simple Storage Service API Reference:

Dieser Abschnitt enthält Beispiele für die Registrierung von Standorten mithilfe von AWS SDKs.

Um die folgenden Beispiele zu verwenden, ersetzen Sie die user input placeholders durch Ihre eigenen Informationen.

Java

Sie können in Ihrer S3-Access-Grants-Instance den Standardspeicherort (s3://) oder einen benutzerdefinierten Speicherort registrieren. Stellen Sie sicher, dass Sie zuerst eine IAM Rolle mit Hauptzugriff auf den Standort erstellen und dann sicherstellen, dass Sie S3 Access Grants die Berechtigung erteilen, diese Rolle anzunehmen.

Um die folgenden Beispielbefehle zu verwenden, ersetzen Sie user input placeholders durch eigene Daten.

Beispiel Registrieren eines Standardspeicherorts

Anfrage:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://") .iamRoleArn("arn:aws:iam::123456789012:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Antwort:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:11.027Z, AccessGrantsLocationId=default, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default, LocationScope=s3://, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )
Beispiel Registrieren eines benutzerdefinierten Speicherorts

Anfrage:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://DOC-BUCKET-EXAMPLE/") .iamRoleArn("arn:aws:iam::111122223333:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Antwort:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:10.027Z, AccessGrantsLocationId=18cfe6fb-eb5a-4ac5-aba9-8d79f04c2012, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/18cfe6fb-eb5a-4ac5-aba9-8d79f04c2666, LocationScope= s3://test-bucket-access-grants-user123/, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )