Kontoübergreifender Zugriff mit S3 Access Grants - 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.

Kontoübergreifender Zugriff mit S3 Access Grants

Mit S3 Access Grants können Sie Amazon S3 S3-Datenzugriff auf Folgendes gewähren:

  • AWS Identity and Access Management (IAM) -Identitäten innerhalb Ihres Kontos

  • IAM-Identitäten in anderen Konten AWS

  • Verzeichnisbenutzer oder -gruppen in Ihrer Instanz AWS IAM Identity Center

Konfigurieren Sie zunächst den kontoübergreifenden Zugriff für das andere Konto. Dazu gehört die Gewährung des Zugriffs auf Ihre S3 Access Grants-Instanz mithilfe einer Ressourcenrichtlinie. Gewähren Sie anschließend mithilfe von Zuschüssen Zugriff auf Ihre S3-Daten (Buckets, Präfixe oder Objekte).

Nachdem Sie den kontoübergreifenden Zugriff konfiguriert haben, kann das andere Konto temporäre Zugangsdaten für Ihre Amazon S3 S3-Daten von S3 Access Grants anfordern. Die folgende Abbildung zeigt den Benutzerablauf für den kontoübergreifenden S3-Zugriff über S3 Access Grants:

S3 Access gewährt kontoübergreifenden Benutzerfluss
  1. Benutzer oder Anwendungen in einem zweiten Konto (B) fordern Anmeldeinformationen von der S3 Access Grants-Instance in Ihrem Konto (A) an, in der die Amazon S3 S3-Daten gespeichert sind. Weitere Informationen finden Sie unter Anfordern des Zugriffs auf Amazon-S3-Daten über S3 Access Grants.

  2. Die S3 Access Grants-Instance in Ihrem Konto (A) gibt temporäre Anmeldeinformationen zurück, wenn es eine Zuweisung gibt, die dem zweiten Konto Zugriff auf Ihre Amazon S3 S3-Daten gewährt. Weitere Informationen finden Sie unter Erstellen von Gewährungen.

  3. Benutzer oder Anwendungen im zweiten Konto (B) verwenden die von S3 Access Grants bereitgestellten Anmeldeinformationen, um auf die S3-Daten in Ihrem Konto (A) zuzugreifen.

Die Konfiguration von S3 Access gewährt kontoübergreifenden Zugriff

Gehen Sie wie folgt vor, um kontoübergreifenden S3-Zugriff über S3 Access Grants zu gewähren:

  • Schritt 1: Konfigurieren Sie eine S3 Access Grants-Instanz in Ihrem Konto, z. B. die Konto-ID111122223333, in der die S3-Daten gespeichert sind.

  • Schritt 2: Konfigurieren Sie die Ressourcenrichtlinie für die S3 Access Grants-Instanz in Ihrem Konto, 111122223333 um Zugriff auf das zweite Konto zu gewähren, z. B. die Konto-ID444455556666.

  • Schritt 3: Konfigurieren Sie die IAM-Berechtigungen für den IAM-Principal im zweiten Konto444455556666, um Anmeldeinformationen von der S3 Access Grants-Instanz in Ihrem Konto anzufordern. 111122223333

  • Schritt 4: Erstellen Sie einen Grant in Ihrem Konto111122223333, der dem IAM-Principal im zweiten Konto 444455556666 Zugriff auf einige der S3-Daten in Ihrem Konto gewährt. 111122223333

Schritt 1: Konfigurieren Sie eine S3 Access Grants-Instanz in Ihrem Konto

Zunächst benötigen Sie eine S3 Access Grants-Instance in Ihrem Konto, 111122223333 um den Zugriff auf Ihre Amazon S3 S3-Daten zu verwalten. Sie müssen jeweils eine S3 Access Grants-Instance erstellen AWS-Region , in der die S3-Daten gespeichert sind, die Sie teilen möchten. Wenn Sie Daten in mehr als einer gemeinsam nutzen AWS-Region, wiederholen Sie jeden dieser Konfigurationsschritte für jeden AWS-Region. Wenn Sie bereits über eine S3 Access Grants-Instanz in dem Bereich verfügen, in AWS-Region dem Ihre S3-Daten gespeichert sind, fahren Sie mit dem nächsten Schritt fort. Wenn Sie keine S3 Access Grants-Instanz konfiguriert haben, finden Sie hier Informationen Erstellen einer S3-Access-Grants-Instance zum Abschließen dieses Schritts.

Schritt 2: Konfigurieren Sie die Ressourcenrichtlinie für Ihre S3 Access Grants-Instanz, um kontoübergreifenden Zugriff zu gewähren

Nachdem Sie in Ihrem Konto eine S3 Access Grants-Instanz 111122223333 für den kontoübergreifenden Zugriff erstellt haben, konfigurieren Sie die ressourcenbasierte Richtlinie für die S3 Access Grants-Instanz in Ihrem Konto, um kontenübergreifenden Zugriff 111122223333 zu gewähren. Die S3-Access-Grants-Instance selbst unterstützt ressourcenbasierte Richtlinien. Mit der richtigen ressourcenbasierten Richtlinie können Sie AWS Identity and Access Management (IAM-) Benutzern oder Rollen von anderen AWS-Konten Benutzern Zugriff auf Ihre S3 Access Grants-Instanz gewähren. Der kontoübergreifende Zugriff gewährt nur die folgenden Berechtigungen (Aktionen):

  • s3:GetAccessGrantsInstanceForPrefix— Der Benutzer, die Rolle oder die App kann die S3 Access Grants-Instanz abrufen, die ein bestimmtes Präfix enthält.

  • s3:ListAccessGrants

  • s3:ListAccessLocations

  • s3:GetDataAccess— Der Benutzer, die Rolle oder die App kann temporäre Anmeldeinformationen anfordern, die auf dem Zugriff basieren, den Sie über S3 Access Grants erhalten haben. Mit diesen Anmeldeinformationen können Sie auf die S3-Daten zugreifen, für die Ihnen Zugriff gewährt wurde.

Sie können auswählen, welche dieser Berechtigungen in die Ressourcenrichtlinie aufgenommen werden sollen. Diese Ressourcenrichtlinie auf der S3 Access Grants-Instanz ist eine normale ressourcenbasierte Richtlinie und unterstützt alles, was die IAM-Richtliniensprache unterstützt. In derselben Richtlinie können Sie beispielsweise Zugriff auf bestimmte IAM-Identitäten in Ihrem Konto gewähren111122223333, indem Sie die aws:PrincipalArn Bedingung verwenden. Bei S3 Access Grants ist dies jedoch nicht erforderlich. Stattdessen können Sie innerhalb Ihrer S3 Access Grants-Instanz Zuschüsse für einzelne IAM-Identitäten von Ihrem Konto aus sowie für das andere Konto erstellen. Indem Sie die einzelnen Zugriffsberechtigungen über S3 Access Grants verwalten, können Sie Ihre Berechtigungen skalieren.

Wenn Sie AWS Resource Access Manager(AWS RAM) bereits verwenden, können Sie es verwenden, um Ihre s3:AccessGrantsRessourcen mit anderen Konten oder innerhalb Ihrer Organisation zu teilen. Weitere Informationen finden Sie unter Arbeiten mit gemeinsam genutzten AWS Ressourcen. Wenn Sie die Ressourcenrichtlinie nicht verwenden AWS RAM, können Sie die Ressourcenrichtlinie auch mithilfe der API-Operationen S3 Access Grants oder AWS Command Line Interface (AWS CLI) hinzufügen.

Wir empfehlen Ihnen, die Konsole AWS Resource Access Manager (AWS RAM) zu verwenden, um Ihre s3:AccessGrants Ressourcen mit anderen Konten oder innerhalb Ihrer Organisation zu teilen. Gehen Sie wie folgt vor, um S3 Access Grants kontenübergreifend zu teilen:

So konfigurieren Sie die Ressourcenrichtlinie für die S3 Access Grants-Instanz:
  1. Melden Sie sich bei der Amazon S3 S3-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie das AWS-Region aus der AWS-Region Auswahl aus.

  3. Wählen Sie im linken Navigationsbereich Access Grants aus.

  4. Wählen Sie auf der Seite Access Grants-Instanz im Abschnitt Instanz in diesem Konto die Option Instanz teilen aus. Dadurch werden Sie zur AWS RAM Konsole weitergeleitet.

  5. Wählen Sie Resource Share erstellen aus.

  6. Folgen Sie den AWS RAM Schritten, um die Ressourcenfreigabe zu erstellen. Weitere Informationen finden Sie unter Eine Ressourcenfreigabe erstellen in AWS RAM.

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

Sie können die Ressourcenrichtlinie mit dem put-access-grants-instance-resource-policy CLI-Befehl hinzufügen.

Wenn Sie kontoübergreifenden Zugriff für die S3 Access Grants-Instanz in Ihrem Konto auf das zweite Konto 111122223333 gewähren möchten444455556666, 111122223333 sollte die Ressourcenrichtlinie für die S3 Access Grants-Instanz in Ihrem Konto dem zweiten Konto die 444455556666 Erlaubnis geben, die folgenden Aktionen auszuführen:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Geben Sie in der Ressourcenrichtlinie für die S3 Access Grants-Instanz den ARN Ihrer S3 Access Grants-Instanz als und das zweite Konto 444455556666 alsPrincipal. Resource Um das folgende Beispiel zu verwenden, ersetzen Sie die Platzhalter für Benutzereingaben durch Ihre eigenen Informationen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Verwenden Sie den folgenden Befehl, um die Ressourcenrichtlinie für S3 Access Grants Instance hinzuzufügen oder zu aktualisieren. Wenn Sie den folgenden Beispielbefehl verwenden, ersetzen Sie den user input placeholders durch Ihre eigenen Informationen.

Beispiel Fügen Sie die Ressourcenrichtlinie für die S3 Access Grants-Instanz hinzu oder aktualisieren Sie sie
aws s3control put-access-grants-instance-resource-policy \ --account-id 111122223333 \ --policy file://resourcePolicy.json \ --region us-east-2 { "Policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"444455556666\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\",\n \"s3:GetAccessGrantsInstanceForPrefix\"\n ],\n \"Resource\": \"arn:aws:s3:us-east-2:111122223333:access-grants/default\"\n }\n ]\n }\n", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
Beispiel Abrufen einer S3-Access-Grants-Ressourcenrichtlinie

Sie können die CLI auch verwenden, um eine Ressourcenrichtlinie für eine S3 Access Grants-Instanz abzurufen oder zu löschen.

Verwenden Sie den folgenden Beispielbefehl, um eine S3 Access Grants-Ressourcenrichtlinie abzurufen. Wenn Sie diesen Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre Informationen.

aws s3control get-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 { "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:root\"},\"Action\":[\"s3:ListAccessGrants\",\"s3:ListAccessGrantsLocations\",\"s3:GetDataAccess\"],\"Resource\":\"arn:aws:s3:us-east-2:111122223333:access-grants/default\"}]}", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
Beispiel Löschen einer S3-Access-Grants-Ressourcenrichtlinie

Verwenden Sie den folgenden Beispielbefehl, um eine S3 Access Grants-Ressourcenrichtlinie zu löschen. Wenn Sie diesen Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre Informationen.

aws s3control delete-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 // No response body

Sie können die Ressourcenrichtlinie mithilfe der PutAccessGrantsInstanceResourcePolicy API hinzufügen.

Wenn Sie dem zweiten Konto kontoübergreifenden Zugriff für die S3 Access Grants-Instanz in Ihrem Konto 111122223333 gewähren möchten444455556666, 111122223333 sollte die Ressourcenrichtlinie für die S3 Access Grants-Instanz in Ihrem Konto dem zweiten Konto die 444455556666 Erlaubnis geben, die folgenden Aktionen auszuführen:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Geben Sie in der Ressourcenrichtlinie für die S3 Access Grants-Instanz den ARN Ihrer S3 Access Grants-Instanz als und das zweite Konto 444455556666 alsPrincipal. Resource Um das folgende Beispiel zu verwenden, ersetzen Sie die Platzhalter für Benutzereingaben durch Ihre eigenen Informationen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Anschließend können Sie die PutAccessGrantsInstanceResourcePolicy API verwenden, um die Richtlinie zu konfigurieren.

Informationen zur REST-API-Unterstützung zum Aktualisieren, Abrufen oder Löschen einer Ressourcenrichtlinie für eine S3 Access Grants-Instance finden Sie in den folgenden Abschnitten der Amazon Simple Storage Service API-Referenz:

In diesem Abschnitt finden Sie AWS SDK-Beispiele zur Konfiguration Ihrer S3 Access Grants-Ressourcenrichtlinie, um einem zweiten AWS Konto Zugriff auf einige Ihrer S3-Daten zu gewähren.

Java

Sie können eine Ressourcenrichtlinie hinzufügen, aktualisieren, abrufen oder löschen, um den kontoübergreifenden Zugriff für Ihre S3-Access-Grants-Instance zu verwalten.

Beispiel Fügen Sie eine Ressourcenrichtlinie für eine S3 Access Grants-Instanz hinzu oder aktualisieren Sie sie

Wenn Sie kontoübergreifenden Zugriff für die S3 Access Grants-Instanz in Ihrem Konto auf das zweite Konto 111122223333 gewähren möchten444455556666, 111122223333 sollte die Ressourcenrichtlinie für die S3 Access Grants-Instanz in Ihrem Konto dem zweiten Konto die 444455556666 Erlaubnis geben, die folgenden Aktionen auszuführen:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Geben Sie in der Ressourcenrichtlinie für die S3 Access Grants-Instanz den ARN Ihrer S3 Access Grants-Instanz als und das zweite Konto 444455556666 alsPrincipal. Resource Um das folgende Beispiel zu verwenden, ersetzen Sie die Platzhalter für Benutzereingaben durch Ihre eigenen Informationen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Verwenden Sie das folgende Codebeispiel, um eine Ressourcenrichtlinie für eine S3 Access Grants-Instanz hinzuzufügen oder zu aktualisieren:

public void putAccessGrantsInstanceResourcePolicy() { PutAccessGrantsInstanceResourcePolicyRequest putRequest = PutAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .policy(RESOURCE_POLICY) .build(); PutAccessGrantsInstanceResourcePolicyResponse putResponse = s3Control.putAccessGrantsInstanceResourcePolicy(putRequest); LOGGER.info("PutAccessGrantsInstanceResourcePolicyResponse: " + putResponse); }

Antwort:

PutAccessGrantsInstanceResourcePolicyResponse( Policy={ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" }] } )
Beispiel Abrufen einer S3-Access-Grants-Ressourcenrichtlinie

Verwenden Sie das folgende Codebeispiel, um eine S3 Access Grants-Ressourcenrichtlinie abzurufen. Wenn Sie den folgenden Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

public void getAccessGrantsInstanceResourcePolicy() { GetAccessGrantsInstanceResourcePolicyRequest getRequest = GetAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); GetAccessGrantsInstanceResourcePolicyResponse getResponse = s3Control.getAccessGrantsInstanceResourcePolicy(getRequest); LOGGER.info("GetAccessGrantsInstanceResourcePolicyResponse: " + getResponse); }

Antwort:

GetAccessGrantsInstanceResourcePolicyResponse( Policy={"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::444455556666:root"},"Action":["s3:ListAccessGrants","s3:ListAccessGrantsLocations","s3:GetDataAccess"],"Resource":"arn:aws:s3:us-east-2:111122223333:access-grants/default"}]}, CreatedAt=2023-06-15T22:54:44.319Z )
Beispiel Löschen einer S3-Access-Grants-Ressourcenrichtlinie

Verwenden Sie das folgende Codebeispiel, um eine S3 Access Grants-Ressourcenrichtlinie zu löschen. Wenn Sie den folgenden Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

public void deleteAccessGrantsInstanceResourcePolicy() { DeleteAccessGrantsInstanceResourcePolicyRequest deleteRequest = DeleteAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); DeleteAccessGrantsInstanceResourcePolicyResponse deleteResponse = s3Control.putAccessGrantsInstanceResourcePolicy(deleteRequest); LOGGER.info("DeleteAccessGrantsInstanceResourcePolicyResponse: " + deleteResponse); }

Antwort:

DeleteAccessGrantsInstanceResourcePolicyResponse()

Schritt 3: Erteilen Sie IAM-Identitäten in einem zweiten Konto die Berechtigung, die S3 Access Grants-Instanz in Ihrem Konto aufzurufen

Nachdem der Besitzer der Amazon S3 S3-Daten die kontoübergreifende Richtlinie für die S3 Access Grants-Instance im Konto konfiguriert hat111122223333, 444455556666 muss der Besitzer des zweiten Kontos eine identitätsbasierte Richtlinie für seine IAM-Benutzer oder -Rollen erstellen, und der Besitzer muss ihnen Zugriff auf die S3 Access Grants-Instance gewähren. Nehmen Sie in die identitätsbasierte Richtlinie eine oder mehrere der folgenden Aktionen auf, je nachdem, was in der Ressourcenrichtlinie für die S3 Access Grants-Instanz gewährt wurde und welche Berechtigungen Sie gewähren möchten:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Gemäß dem AWS kontoübergreifenden Zugriffsmuster 444455556666 müssen die IAM-Benutzer oder -Rollen im zweiten Konto explizit über eine oder mehrere dieser Berechtigungen verfügen. Erteilen Sie beispielsweise die s3:GetDataAccess Berechtigung, damit der IAM-Benutzer oder die IAM-Rolle die S3 Access Grants-Instanz im Konto aufrufen kann, 111122223333 um Anmeldeinformationen anzufordern.

Wenn Sie diesen Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre Informationen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetDataAccess", ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Informationen zur Bearbeitung identitätsbasierter IAM-Richtlinien finden Sie im Handbuch unter Bearbeiten von IAM-Richtlinien.AWS Identity and Access Management

Schritt 4: Erstellen Sie in der S3 Access Grants-Instanz Ihres Kontos einen Grant, der der IAM-Identität im zweiten Konto Zugriff auf einige Ihrer S3-Daten gewährt

Für den letzten Konfigurationsschritt können Sie in der S3 Access Grants-Instanz in Ihrem Konto 111122223333 einen Grant erstellen, der Zugriff auf die IAM-Identität im zweiten Konto 444455556666 für einige der S3-Daten in Ihrem Konto gewährt. Sie können dies mithilfe der Amazon S3 S3-Konsole, CLI, API und SDKs tun. Weitere Informationen finden Sie unter Erstellen von Gewährungen.

Geben Sie in der Gewährung den AWS ARN der IAM-Identität des zweiten Kontos an und geben Sie an, für welchen Speicherort in Ihren S3-Daten (ein Bucket, ein Präfix oder ein Objekt) Sie Zugriff gewähren. Dieser Standort muss bereits bei Ihrer S3 Access Grants-Instanz registriert sein. Weitere Informationen finden Sie unter Registrieren eines Speicherorts. Sie können optional ein Unterpräfix angeben. Wenn es sich bei dem Speicherort, für den Sie Zugriff gewähren, um einen Bucket handelt und Sie den Zugriff weiter auf ein bestimmtes Objekt in diesem Bucket einschränken möchten, übergeben Sie den Objektschlüsselnamen in das S3SubPrefix Feld. Oder wenn Sie den Zugriff auf die Objekte im Bucket mit Schlüsselnamen einschränken möchten, die mit einem bestimmten Präfix beginnen, wie z. B.2024-03-research-results/, dann übergebenS3SubPrefix=2024-03-research-results/.

Im Folgenden finden Sie ein Beispiel für einen CLI-Befehl zum Erstellen einer Zugriffsberechtigung für eine Identität im zweiten Konto. Weitere Informationen finden Sie unter Erstellen von Gewährungen. Wenn Sie diesen Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre Informationen.

aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix=prefixA* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::444455556666:role/data-consumer-1

Nach der Konfiguration des kontoübergreifenden Zugriffs kann der Benutzer oder die Rolle im zweiten Konto Folgendes tun: