Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie behebe ich den Fehler „Access Denied“, wenn IAM-Benutzer von einem anderen AWS-Konto aus versuchen, auf meinen Amazon S3-Bucket zuzugreifen?
Meine Bucket-Richtlinie für Amazon Simple Storage Service (Amazon S3) gewährt vollen Zugriff auf ein anderes AWS-Konto. Wenn jedoch AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Benutzer von diesem Konto aus versuchen, auf meinen Bucket zuzugreifen, erhalten sie die Fehlermeldung „Access Denied“.
Kurzbeschreibung
Wenn die Bucket-Richtlinie bereits Zugriff auf ein anderes Konto gewährt, können kontoübergreifende Benutzer aus den folgenden Gründen die Fehlermeldung Access Denied erhalten:
- Die IAM-Richtlinie des Benutzers gewährt keinen Zugriff auf den Bucket.
- Du hast das Objekt mit dem AWS Key Management Service (AWS KMS) verschlüsselt, und der Benutzer hat keinen Zugriff auf den AWS-KMS-Schlüssel.
- Eine Zugriffsverweigerungs-Anweisung in der Bucket- oder IAM-Richtlinie blockiert den Zugriff des Benutzers.
- Die Endpunktrichtlinie von Amazon Virtual Private Cloud (Amazon VPC) blockiert den Zugriff auf den Bucket.
- Die Service-Kontrollrichtlinie (SCP) von AWS Organizations blockiert den Zugriff auf den Bucket.
- Das Objekt gehört nicht zu dem Konto, das Eigentümer des Buckets ist.
- Du hast Zahlung durch den Anforderer für den Amazon S3-Bucket aktiviert.
- Du hast eine Sitzungsrichtlinie übergeben, die den Zugriff auf den Bucket blockiert hat.
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.
Die IAM-Richtlinie des Benutzers gewährt keinen Zugriff auf den Bucket
Stelle für den kontoübergreifenden Zugriff sicher, dass du Zugriff auf Buckets in der IAM-Richtlinie im Benutzerkonto und in der Bucket-Richtlinie in deinem Konto gewährst.
Gehe wie folgt vor, um der IAM-Richtlinie im Benutzerkonto Bucket-Berechtigungen hinzuzufügen:
- Öffne die IAM-Konsole.
- Wähle im Navigationsbereich die IAM-Benutzer oder -Rollen aus, die nicht auf den Bucket zugreifen können.
- Erweitere unter Berechtigungsrichtlinien jede Richtlinie, um das zugehörige JSON-Richtliniendokument anzuzeigen.
- Vergewissere dich in den JSON-Richtliniendokumenten, die den Namen des Buckets enthalten, dass die Richtlinien die richtigen S3-Aktionen für den Bucket zulassen.
- Wenn der IAM-Benutzer oder die IAM-Rolle keinen Zugriff auf den Bucket gewährt, füge eine Richtlinie hinzu, die die richtigen Berechtigungen gewährt.
Die folgende Beispiel-IAM-Richtlinie gewährt einem Benutzer Zugriff für das Herunterladen von Objekten in der GetObject-Anforderung aus DOC-EXAMPLE-BUCKET:{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt", "Action": "s3:GetObject", "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }
Hinweis: Wenn du Instance-Profile verwendest oder eine Rolle übernimmst, stelle sicher, dass die Richtlinie über die richtigen Berechtigungen verfügt.
Du hast das Objekt mit AWS KMS verschlüsselt
Wenn sowohl die IAM-Richtlinie als auch die Bucket-Richtlinie kontoübergreifenden Zugriff gewähren, überprüfe den Bucket auf Standardverschlüsselung mit AWS KMS. Oder überprüfe die Eigenschaften des Objekts auf die AWS-KMS-Verschlüsselung. Wenn du das Objekt mit einem KMS-Schlüssel verschlüsselt hast, muss der Benutzer auch über Berechtigungen zur Verwendung des Schlüssels verfügen.
Gehe wie folgt vor, um einem IAM-Benutzer die Berechtigungen zum Herunterladen und Hochladen in einen Bucket und zur Verwendung des AWS-KMS-Schlüssels zu gewähren:
-
Bearbeite die KMS-Schlüsselrichtlinie, um die folgende Anweisung hinzuzufügen:
{ "Sid": "ExampleStmt", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Jane" }, "Resource": "*" }Hinweis: Ersetze den Beispiel-ARN durch den ARN deines Prinzipals.
-
Wenn der AWS-KMS-Schlüssel zum Konto des IAM-Benutzers gehört, musst du die Schlüsselrichtlinie nicht aktualisieren. Wenn der AWS-KMS-Schlüssel zu deinem Konto gehört, musst du die Berechtigungen des IAM-Benutzers aktualisieren, um die folgende IAM-Richtlinienanweisung hinzuzufügen:
{ "Sid": "KMSAccess", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Effect": "Allow", "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" }Hinweis: Ersetze den ARN des Beispiel-KMS-Schlüssels durch den ARN deines KMS-Schlüssels.
Weitere Informationen findest du unter Warum erhalten kontoübergreifende Benutzer die Fehlermeldung „Access Denied“, wenn sie versuchen, auf meine S3-Objekte zuzugreifen, die ich mit einem vom Kunden verwalteten AWS-KMS-Schlüssel verschlüsselt habe?
Eine Zugriffsverweigerungsanweisung in der Richtlinie blockiert den Zugriff der Benutzer
Überprüfe die Bucket-Richtlinie und die IAM-Richtlinien der Benutzer auf Anweisungen, die dem Benutzer ausdrücklich den Zugriff auf den Bucket verweigern.
Gehe wie folgt vor, um die Bucket-Richtlinie zu überprüfen:
- Öffne die Amazon-S3-Konsole.
- Wähle in der Liste der Buckets den Bucket mit der Richtlinie aus, die du überprüfen möchtest.
- Wähle die Registerkarte Berechtigungen aus.
- Suche in der Bucket-Richtlinie nach Anweisungen mit „Effect“: „Deny“.
- Ändere die Bucket-Richtlinie, um alle „Effect“: „Deny“-Anweisungen zu entfernen, die dem Benutzer den Zugriff auf den Bucket verweigern.
Gehe wie folgt vor, um die IAM-Richtlinien der Benutzer zu überprüfen:
- Öffne die IAM-Konsole.
- Wähle im Navigationsbereich die IAM-Benutzer oder -Rollen aus, die nicht auf den Bucket zugreifen können.
- Erweitere unter Berechtigungsrichtlinien jede Richtlinie, um die JSON-Richtliniendokumente anzuzeigen.
- Suche in den JSON-Richtliniendokumenten, die sich auf den S3-Bucket beziehen, nach Anweisungen, die „Effect“: „Deny“ enthalten.
- Ändere die IAM-Berechtigungsrichtlinien des Benutzers, um „Effect“: „Deny“-Anweisungen zu entfernen, die dem Benutzer den Zugriff auf den Bucket verweigern.
Die VPC-Endpunktrichtlinie blockiert den Zugriff auf den Bucket
Wenn Benutzer mit einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance über einen VPC-Endpunkt auf den Bucket zugreifen, überprüfe die VPC-Endpunktrichtlinie. Vergewissere dich, dass die VPC-Endpunktrichtlinie die richtigen Berechtigungen für den Zugriff auf den S3-Bucket enthält.
Die folgende Beispiel-VPC-Endpunktrichtlinie ermöglicht den Zugriff auf DOC-EXAMPLE-BUCKET:
{ "Id": "Policy1234567890123", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567890123", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Principal": "*" } ] }
Warnung: Das Element „Principal“: „*“ gewährt jedem, der den VPC-Endpunkt verwendet, Zugriff auf den Bucket. Stelle sicher, dass du den Umfang des Prinzipalwerts für deinen Anwendungsfall einschränkst.
Die SCP von Organizations blockiert den Zugriff auf den Bucket
Wenn das Konto des Benutzers Organizations verwendet, überprüfe die SCPs auf Zugriffsverweigerungs-Anweisungen, die den Zugriff auf den Bucket blockieren.
Die folgende Beispielrichtlinie verweigert ausdrücklich den Zugriff auf Amazon S3:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:*", "Resource": "*" } ] }
Das Objekt gehört nicht zu dem Konto, das Eigentümer des Buckets ist
Standardmäßig ist das Konto, das das Objekt hochlädt, Eigentümer des Objekts, auch wenn der Bucket einem anderen Konto gehört. Die Berechtigungen des Buckets gelten nicht automatisch für ein Objekt, das Eigentum eines anderen Kontos ist.
Verwende die folgenden bewährten Methoden, um die Fehler Access Denied von der S3-Objekteigentümerschaft zu beheben:
- Wende die vom Bucket-Eigentümer erzwungene Einstellung für die S3-Objekteigentümerschaft an, um Zugriffssteuerungslisten (ACLs) für deine Buckets zu deaktivieren.
- Wenn du ACLs nicht deaktivieren möchtest, um die Objekteigentümerschaft für neue Objekte durchzusetzen, wende die bevorzugte Einstellung für Bucket-Eigentümer an. Stelle sicher, dass du die Bucket-Richtlinie so aktualisierst, dass die gescannte ACL „bucket-owner-full-control“ für alle PUT-Anforderungen an deinen Bucket erforderlich ist. Der Objekteigentümer kann die folgende put-object-acl ausführen, um dem Bucket-Eigentümer Zugriff zu gewähren:
Hinweis: Um auf das Objekt zuzugreifen, muss der Objekteigentümer dem Bucket-Eigentümer explizit Zugriff gewähren. Verwende das Objekteigentümerkonto, um den vorherigen Befehl auszuführen.aws s3api put-object-acl --bucket examplebucket --key keyname --acl bucket-owner-full-control
Du hast „Zahlung durch den Anforderer“ aktiviert
Wenn du „Zahlung durch den Anforderer“ für den Bucket aktiviert hast, müssen Benutzer anderer Konten den Parameter x-amz-request-payer angeben.
Die Benutzer müssen die folgenden Maßnahmen ergreifen:
- Füge für die Anforderungen DELETE, GET, HEAD, POST und PUT x-amz-request-payer : requester in den Header ein.
- Füge für signierte URLs x-amz-request-payer=requester in die Anforderung ein.
- Gib für AWS-CLI-Befehle den Parameter**--request-payer** an:
aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester
Eine Sitzungsrichtlinie blockierte den Zugriff auf den Bucket
Stelle sicher, dass die von dir übergebene Sitzungsrichtlinie den Zugriff auf den S3-Bucket nicht blockiert.
Ähnliche Informationen
- Themen
- Storage
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr