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 AWS Identity and Access Management (IAM) -Rolle zu. S3 Access Grants übernimmt diese IAM-Rolle, um temporäre Anmeldeinformationen an den Gewährungsempfänger weiterzugeben, der auf diesen bestimmten Speicherort zugreift. Sie müssen zunächst mindestens einen Speicherort in Ihrer S3-Access-Grants-Instance registrieren, bevor Sie eine Zugriffsgewährung erstellen können.

Empfohlener Anwendungsfall

Wir empfehlen, den Standardspeicherort (s3://) zu registrieren und ihn einer IAM-Rolle zuzuordnen. Der Standort im standardmäßigen S3-Pfad (s3://) deckt den Zugriff auf all Ihre S3-Buckets in dem AWS-Region Ihres Kontos ab. Wenn Sie eine Zugriffsgewährung 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:

  • Angenommen, bei amzn-s3-demo-bucket handelt es sich um einen registrierten Speicherort 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 Speicherort registrieren und diesen Speicherort einer anderen IAM-Rolle mit dem erforderlichen Zugriff zuordnen.

  • Angenommen, Sie möchten Berechtigungen erstellen, die den Zugriff auf Benutzer in einem Virtual Private Cloud (VPC)-Endpunkt beschränken. In diesem Fall können Sie einen Speicherort 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, um die temporären Anmeldeinformationen weiterzugeben. Diese Anmeldeinformationen verweigern den Zugriff auf den bestimmten Bucket, es sei denn, der Aufrufer befindet sich innerhalb des VPC-Endpunkts. Diese Verweigerungsberechtigung wird zusätzlich zu den regulären READ-, WRITE- oder READWRITE-Berechtigungen angewendet, die in der Gewährung angegeben sind.

Wenn Sie einen Speicherort registrieren, müssen Sie auch die IAM-Rolle angeben, die S3 Access Grants übernimmt, um temporäre Anmeldeinformationen weiterzugeben und den Umfang der Berechtigungen für eine bestimmte Gewährung zu definieren.

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

S3-URI IAM-Rolle 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 enthält alle Objekte im Bucket mit einem Objektschlüsselnamen, der mit diesem Präfix beginnt.

Bevor Sie einen bestimmten Speicherort oder ein bestimmtes Präfix registrieren können, muss die folgende Voraussetzung erfüllt sein:

  • 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 Zeichenfolgen 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 über die Berechtigung verfügt, auf Ihre S3-Daten in der AWS-Region zuzugreifen. Weitere Informationen finden Sie unter Erstellen von IAM-Rollen im AWS IAM Identity Center -Benutzerhandbuch.

  • Gewähren Sie in der Vertrauensrichtlinie für IAM-Rollen dem S3-Access-Grants-Service (access-grants.s3.amazonaws.com)-Prinzipal Zugriff auf die IAM-Rolle, die Sie erstellt haben. Hierzu können Sie eine JSON-Datei mit den folgenden Anweisungen erstellen. Informationen zum Hinzufügen der Vertrauensrichtlinie zu Ihrem Konto finden Sie unter Erstellen einer Rolle mit benutzerdefinierten Vertrauensrichtlinien.

    TestRolePolicy.json

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount":"accountId", "aws:SourceArn":"arn:aws:s3:region:accountId:access-grants/default" } } }, //Optionally, for an IAM Identity Center use case, add: { "Sid": "Stmt1234567891012", "Effect": "Allow", "Principal": { "Service": "access-grants.s3.amazonaws.com" }, "Action": "sts:SetContext", "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId", "aws:SourceArn":"arn:aws:s3:region:accountId:access-grants/default" }, "ForAllValues:ArnEquals": { "sts:RequestContextProviders":"arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }
  • Erstellen Sie eine IAM-Richtlinie, um Amazon-S3-Berechtigungen zur IAM-Rolle hinzuzufügen, die Sie erstellt haben. 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 S3-Daten beschränken, wenn die Anmeldeinformationen von S3 Access Grants bereitgestellt werden. Dieses Beispiel zeigt Ihnen, wie Sie eine Condition-Anweisung für eine bestimmte S3-Access-Grants-Instance hinzufügen. Um diese Condition zu verwenden, ersetzen Sie den ARN der S3-Access-Grants-Instance in der Condition-Anweisung durch den ARN Ihrer S3-Access-Grants-Instance, der 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 S3-Konsole, die AWS Command Line Interface (AWS CLI), die Amazon S3 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 Zugriffsgewährungen. Informationen über das Erstellen einer Zugriffsgewährung finden Sie unter Erstellen 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 in Speicherortumfang die Option S3 durchsuchen aus oder geben Sie den S3-URI-Pfad zu dem Standort ein, den Sie registrieren möchten. Informationen zu den S3-URI-Formaten finden Sie in der Tabelle Speicherortformate. Nach der Eingabe eines URI können Sie Anzeigen auswählen, um den Speicherort zu durchsuchen.

    2. Wählen Sie in IAM-Rolle eine der folgenden Optionen aus:

      • Auswahl aus vorhandenen IAM-Rollen

        Wählen Sie in der Dropdown-Liste eine IAM-Rolle 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.

      • Eingabe des ARN der IAM-Rolle

        Navigieren Sie zur IAM-Konsole. 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. Sie müssen zunächst eine IAM-Rolle mit Prinzipalzugriff auf den Speicherort erstellen und dann S3 Access Grants die Berechtigung gewähren, 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 S3 Access Grants die Übernahme der IAM-Rolle ermöglicht. Hierzu können Sie eine JSON-Datei mit den folgenden Anweisungen erstellen. 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 IAM-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-Berechtigungen zur IAM-Rolle hinzuzufügen. 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.

Damit die IAM-Rolle nur für den Zugriff auf Daten in S3 verwendet werden kann, wenn die Anmeldeinformationen über S3 Access Grants verteilt werden, fügen Sie eine Condition-Anweisung hinzu, die die S3-Access-Grants-Instance (s3:AccessGrantsInstance: InstanceArn) in Ihrer IAM-Richtlinie angibt, wie in diesem Beispiel gezeigt. 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-Unterstützung für die Verwaltung einer S3-Access-Grants-Instance finden Sie in den folgenden Abschnitten in der Amazon-Simple-Storage-Service-API-Referenz:

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. Sie müssen zunächst eine IAM-Rolle mit Prinzipalzugriff auf den Speicherort erstellen und dann S3 Access Grants die Berechtigung gewähren, diese Rolle anzunehmen.

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

Beispiel Registrieren eines Standardspeicherorts

Anforderung:

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

Anforderung:

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 )