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://amzn-s3-demo-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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-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 Rolle AWS Identity and Access Management (IAM) 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:::amzn-s3-demo-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 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.
-
Um Zugriff auf den Bucket und den Schlüssel in Konto a von der IAM Rolle aus zu gewähren, die Konto b übernommen hat
-
Öffnen Sie von Konto B aus die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Öffnen Sie die dem Benutzer zugeordnete IAM Rolle in Konto B.
-
Sehen Sie sich die Liste der auf die IAM Rolle angewendeten Berechtigungsrichtlinien an.
-
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
s3:PutObject
Operationens3:GetObject
und im Bucketamzn-s3-demo-bucket
:{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt2", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-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 den Zugriff auf den Schlüssel nicht anhand der IAM Benutzerrichtlinien 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
Für Objekte, die von einem anderen Konto (Konto C) als dem Konto, dem der Bucket gehört (Konto A), hochgeladen werden, ist möglicherweise eine explizite Objektebene erforderlichACLs, die dem abfragenden Konto (Konto B) Lesezugriff gewährt. 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?