Wie kann ich einem/einer Benutzer:in in einem anderen AWS-Konto den Zugriff gewähren, um Objekte in meinen Amazon-S3-Bucket hochzuladen?
Ich möchte einem/einer AWS Identity and Access Management (IAM)-Benutzer:in in einem anderen AWS-Konto Zugriff auf meinen Amazon Simple Storage Service (Amazon S3)-Bucket gewähren. Außerdem möchte ich kontoübergreifenden Zugriff gewähren, damit der/die Benutzer:in Objekte in meinen Amazon-S3-Bucket hochladen kann.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Um einem/einer Benutzer:in in einem anderen Konto Zugriff zum Hochladen von Objekten in deinen S3-Bucket zu gewähren, aktualisiere die IAM-Richtlinien entweder für den/die Benutzer:in oder sein/ihr Konto. Es hat sich bewährt, den Zugriff über das Konto zu kontrollieren, wobei der Bucket-Eigentümer die Objekteigentümerschaft erzwingt.
Wenn dein Bucket Zugriffssteuerungslisten (ACLs) anstelle der vom/von der Bucket-Eigentümer:in erzwungenen Eigentümerschaft verwendet, solltest du die Amazon-S3-Konfiguration BucketOwnerEnforced in Betracht ziehen, die ACLs deaktiviert. Überprüfe mit dem folgenden Befehl get-bucket-ownership-controls, ob der Bucket ACLs verwendet:
aws s3api get-bucket-ownership-controls --bucket DOC-EXAMPLE-BUCKET
Hinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen.
Wenn in der Ausgabe BucketOwnerPreferred oder ObjectWriter statt BucketOwnerEnforced angezeigt wird, verwendet der Bucket ACLs. Der Uploader, nicht der Bucket-Eigentümer, besitzt kontoübergreifend hochgeladene Objekte.
Vom Bucket-Eigentümer erzwungene Objekteigentümerschaft
Um Zugriff für einen Bucket auf Kontoebene zu gewähren, verwende die vom Bucket-Eigentümer erzwungene Objekteigentümerschaft. Gewähre einem/einer IAM-Benutzer:in von Konto A aus Zugriff, um Objekte in einen S3-Bucket in Konto B hochzuladen. Gehe dazu wie folgt vor:
-
Erstelle in Konto A eine IAM-Richtlinie für Benutzer, die Zugriff auf den Bucket von Konto B benötigen:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }Hinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen.
-
Rufe von Konto A den Amazon-Ressourcennamen (ARN) des IAM-Benutzers ab.
-
Erstelle von Konto B aus eine Bucket-Richtlinie, die dem/der kontoübergreifenden Benutzer:in die Berechtigung erteilt, Objekte hochzuladen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountUploadAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/UploadData" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Sid": "CrossAccountListAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/UploadData" }, "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }Hinweis: Gib für den Wert Prinzipal unbedingt den ARN des IAM-Benutzers in Konto A ein. Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen.
ACL hat die Objekteigentümerschaft erzwungen
Um Zugriff für einen Bucket zu gewähren, der die durch die ACL erzwungene Objekteigentümerschaft verwendet, gewähre die PutObjectAcl-Berechtigung in der Bucket-Richtlinie und der IAM-Benutzerrichtlinie.
-
Füge von Konto A aus eine Richtlinie an den/die IAM-Benutzer:in an. Die Richtlinie muss es dem/der Benutzer:in ermöglichen, die Aktionen PutObject und PutObjectAcl auszuführen:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }Hinweis: Bevor du eine ACL für den Upload angibst, musst du über die s3:PutObjectAcl-Berechtigung verfügen. Andernfalls erhältst du den Fehler „Access Denied“, wenn du ein Objekt mit einer ACL hochlädst, z. B. mit der bucket-owner-full control-ACL.
-
Füge von Konto B aus eine Bucket-Richtlinie an, die dem/der IAM-Benutzer:in in Konto A die Berechtigung erteilt, die Aktionen s3:PutObject und s3:PutObjectAcl auszuführen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3ObjectAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::999999999999:user/UploadData" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Sid": "DelegateS3BucketAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/UploadData" }, "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }
Ähnliche Informationen
Beispiel 2: Bucket-Eigentümer:in, der/die kontoübergreifende Bucket-Berechtigungen gewährt
- Themen
- Storage
- Sprache
- Deutsch
Ähnliche Videos

