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-ID111122223333
:{ "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
-
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": "*" } ] } -
-
Überprüfen Sie von Konto A aus die Schlüsselrichtlinie in der AWS Management Console Richtlinienansicht.
-
Ü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"
-
Wenn die
"Sid": "Allow use of the key"
-Anweisung nicht vorhanden ist, führen Sie die folgenden Schritte aus:-
Wechseln Sie, um die Schlüsselrichtlinie mithilfe der Standardansicht der Konsole anzuzeigen.
-
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
-
Öffnen Sie zuerst die IAM-Konsole unter https://console.aws.amazon.com/iam/
. -
Öffnen Sie die IAM-Rolle, die dem Benutzer in Konto B zugeordnet ist.
-
Überprüfen Sie die Liste der Berechtigungsrichtlinien, die auf eine IAM-Rolle angewendet werden.
-
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
unds3:PutObject
im BucketDOC-EXAMPLE-BUCKET
:{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt2", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
-
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?