Kontoübergreifender Zugriff auf Amazon-S3-Buckets in Athena - Amazon Athena

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 auf Amazon-S3-Buckets in Athena

Ein gängiges Amazon-Athena-Szenario ist das Gewähren des Zugriffs für Benutzer in einem Konto, das sich von dem des Bucket-Eigentümers unterscheidet, damit diese Abfragen ausführen können. Verwenden Sie in diesem Fall eine Bucket-Richtlinie zum Gewähren des Zugriffs.

Anmerkung

Informationen zum kontenübergreifenden Zugriff auf AWS Glue Datenkataloge von Athena finden Sie unter. Kontoübergreifender Zugriff auf AWS Glue -Datenkataloge

Die folgende Beispiel-Bucket-Richtlinie, die vom Bucket-Eigentümer erstellt und auf den Bucket s3://DOC-EXAMPLE-BUCKET angewendet wurde, gewährt allen Benutzern im Konto 123456789123 Zugriff. Hierbei handelt es sich um ein anderes Konto.

{ "Version": "2012-10-17", "Id": "MyPolicyID", "Statement": [ { "Sid": "MyStatementSid", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789123:root" }, "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }

Um einem bestimmten Benutzer in einem Konto Zugriff zu gewähren, ersetzen Sie den Schlüssel Principal durch einen Schlüssel, der anstelle von root den Benutzer angibt. Verwenden Sie für das Benutzerprofil Dave beispielsweise arn:aws:iam::123456789123:user/Dave.

Kontoübergreifender Zugriff auf einen mit einem benutzerdefinierten Schlüssel verschlüsselten Bucket AWS KMS

Wenn Sie einen Amazon S3 S3-Bucket haben, der mit einem benutzerdefinierten Schlüssel AWS Key Management Service (AWS KMS) verschlüsselt ist, müssen Sie möglicherweise Benutzern von einem anderen Amazon Web Services Services-Konto Zugriff darauf gewähren.

Um einem Benutzer in Konto B Zugriff auf einen AWS KMS-verschlüsselten Bucket in Konto A zu gewähren, sind die folgenden Berechtigungen erforderlich:

  • Die Bucket-Richtlinie in Konto A muss Zugriff auf die von Konto B übernommene Rolle gewähren.

  • Die AWS KMS Schlüsselrichtlinie in Konto A muss Zugriff auf die Rolle gewähren, die der Benutzer in Konto B übernommen hat.

  • Die von Konto B übernommene AWS Identity and Access Management (IAM) -Rolle muss Zugriff sowohl auf den Bucket als auch auf den Schlüssel in Konto A gewähren.

In den folgenden Verfahren wird beschrieben, wie jede dieser Berechtigungen erteilt wird.

So gewähren Sie dem Benutzer in Konto B Zugriff auf den Bucket in Konto A
  • Überprüfen Sie in Konto A die S3-Bucket-Richtlinie und bestätigen Sie, dass eine Anweisung vorhanden ist, die den Zugriff von der Konto-ID von Konto B ermöglicht.

    Die folgende Bucket-Richtlinie ermöglicht beispielsweise s3:GetObject den auf die Konto-ID 111122223333:

    { "Id": "ExamplePolicy1", "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt1", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Principal": { "AWS": [ "111122223333" ] } } ] }
Um dem Benutzer in Konto b Zugriff über die AWS KMS Schlüsselrichtlinie in Konto a zu gewähren
  1. Erteilen Sie in der AWS KMS Schlüsselrichtlinie für Konto A der Rolle, die Konto B einnimmt, Berechtigungen für die folgenden Aktionen:

    • kms:Encrypt

    • kms:Decrypt

    • kms:ReEncrypt*

    • kms:GenerateDataKey*

    • kms:DescribeKey

    Im folgenden Beispiel wird nur einer IAM-Rolle der Schlüsselzugriff gewährt.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUseOfTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] }
  2. Überprüfen Sie von Konto A aus die Schlüsselrichtlinie in der AWS Management Console Richtlinienansicht.

  3. Überprüfen Sie in der Schlüsselrichtlinie, ob in der folgenden Anweisung Konto B als Prinzipal aufgeführt wird.

    "Sid": "Allow use of the key"
  4. Wenn die "Sid": "Allow use of the key"-Anweisung nicht vorhanden ist, führen Sie die folgenden Schritte aus:

    1. Wechseln Sie, um die Schlüsselrichtlinie mithilfe der Standardansicht der Konsole anzuzeigen.

    2. Fügen Sie die Konto-ID von Konto B als externes Konto mit Zugriff auf den Schlüssel hinzu.

So gewähren Sie von der von Konto B übernommenen IAM-Rolle aus Zugriff auf den Bucket und den Schlüssel in Konto A
  1. Öffnen Sie zuerst die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Öffnen Sie die IAM-Rolle, die dem Benutzer in Konto B zugeordnet ist.

  3. Überprüfen Sie die Liste der Berechtigungsrichtlinien, die auf eine IAM-Rolle angewendet werden.

  4. Stellen Sie sicher, dass eine Richtlinie angewendet wird, die Zugriff auf den Bucket gewährt.

    Die folgende Beispielanweisung gewährt der IAM-Rolle Zugriff auf die Operationen s3:GetObject und s3:PutObject im Bucket DOC-EXAMPLE-BUCKET:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt2", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
  5. Stellen Sie sicher, dass eine Richtlinie angewendet wird, die Zugriff auf den Schlüssel gewährt.

    Anmerkung

    Wenn die von Konto B übernommene IAM-Rolle bereits über Administratorzugriff verfügt, müssen Sie keinen Zugriff auf den Schlüssel aus den IAM-Richtlinien des Benutzers gewähren.

    Die folgende Beispielanweisung gewährt der IAM-Rolle Zugriff auf die Verwendung des Schlüssels arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt3", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey", "kms:ReEncrypt*" ], "Effect": "Allow", "Resource": "arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" } ] }

Kontenübergreifender Zugriff auf Bucket-Objekte

Objekte, die von einem anderen Konto (Konto C) als dem Konto in Besitz des Buckets (Konto A) hochgeladen werden, erfordern möglicherweise explizite ACLs auf Objektebene, die Lesezugriff auf das abfragende Konto (Konto B) gewähren. Um diese Anforderung zu vermeiden, sollte Konto C eine Rolle in Konto A übernehmen, bevor Objekte in den Bucket von Konto A platziert werden. Weitere Informationen finden Sie unter How can I provide cross-account access to objects that are in Amazon S3 buckets?.