Benutzer mit der Berechtigung, Objekte zu meinem Amazon S3-Bucket hinzuzufügen, erhalten die Fehlermeldung „Access Denied“. Warum ist das so?
AWS Identity and Access Management (IAM)-Benutzer haben die Berechtigung zur s3:putObject-Aktion in meinem Amazon Simple Storage Service (Amazon S3)-Bucket. Wenn sie jedoch versuchen, ein Objekt hochzuladen, erhalten sie einen HTTP 403-Fehler: „Access Denied“.
Kurzbeschreibung
Wenn IAM-Benutzer die richtigen Berechtigungen zum Hochladen in den Bucket haben, überprüfe die folgenden Richtlinien auf Einstellungen, die das Hochladen verhindern:
- IAM-Benutzerberechtigung für s3:PutObjectAcl
- Bedingungen in der Bucket-Richtlinie
- Zugriff, der durch eine Amazon Virtual Private Cloud (Amazon VPC)-Endpunktrichtlinie zulässig ist
- AWS-KMS-Verschlüsselung
Lösung
IAM-Benutzerberechtigung für s3:PutObjectAcl
Wenn IAM-Benutzer die Zugriffssteuerungsliste (ACL) des Objekts während des Uploads aktualisieren müssen, müssen Benutzer in ihrer IAM-Richtlinie auch über Berechtigungen für s3:PutObjectAcl verfügen. Anweisungen zum Aktualisieren der IAM-Richtlinie von Benutzern findest du unter Ändern der Berechtigungen für IAM-Benutzer.
Bedingungen in der Bucket-Richtlinie
Überprüfe deine Bucket-Richtlinie auf die folgenden Beispielbedingungen, die Uploads in den Bucket einschränken. Wenn die Bucket-Richtlinie eine Bedingung hat und die Bedingung gültig ist, müssen IAM-Benutzer die Bedingung erfüllen, damit der Upload funktioniert.
Wichtig: Wenn du die Bedingungen überprüfst, stelle sicher, dass die Bedingung mit einer Zulassungs-Anweisung („Effekt“: „Zulassen“) oder einer Zugriffsverweigerungs-Anweisung („Effekt“: „Verweigern“) verknüpft ist. Damit der Upload funktioniert, müssen Benutzer die Bedingung einer Zulasungs-Anweisung erfüllen oder die Bedingung einer Zugriffsverweigerungs-Anweisung vermeiden.
Suche nach einer Bedingung, die Uploads nur von einer bestimmten IP-Adresse zulässt, ähnlich der folgenden:
"Condition": { "IpAddress": { "aws:SourceIp": "54.240.143.0/24" } }
Wenn die Bucket-Richtlinie diese Bedingung erfüllt, müssen IAM-Benutzer über die zulässigen IP-Adressen auf deinen Bucket zugreifen.
Suche nach einer Bedingung, die Uploads nur zulässt, wenn es sich bei dem Objekt um eine bestimmte Speicherklasse handelt, ähnlich der folgenden:
"Condition": { "StringEquals": { "s3:x-amz-storage-class": [ "STANDARD_IA" ] }
Wenn die Richtlinie diese Bedingung hat, müssen Benutzer Objekte mit der zulässigen Speicherklasse hochladen. Beispielsweise erfordert die vorherige Bedingungsanweisung die Speicherklasse STANDARD_IA. Das bedeutet, dass Benutzer das Objekt mit einem AWS Command Line Interface (AWS CLI)-Befehl hochladen müssen, der dem folgenden ähnelt:
aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key examplefile.jpg --body c:\examplefile.jpg --storage-class STANDARD_IA
Hinweis: Wenn du beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhältst, stelle sicher, dass du die neueste Version der AWS CLI verwendest.
Suche nach einer Bedingung, die Uploads nur zulässt, wenn dem Objekt eine bestimmte Zugriffssteuerungsliste (ACL) zugewiesen ist, ähnlich der folgenden:
"Condition": { "StringEquals": { "s3:x-amz-acl":["public-read"] } }
Wenn die Richtlinie diese Bedingung hat, müssen Benutzer Objekte mit der zulässigen ACL hochladen. Die vorherige Bedingung erfordert beispielsweise die public-read-ACL, sodass Benutzer das Objekt mit einem Befehl hochladen müssen, der dem folgenden ähnelt:
aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key examplefile.jpg --body c:\examplefile.jpg --acl public-read
Suche nach einer Bedingung, die erfordert, dass Uploads dem Bucket-Eigentümer (kanonische Benutzer-ID) die volle Kontrolle über das Objekt gewähren, ähnlich der folgenden:
"Condition": { "StringEquals": { "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID" } }
Wenn die Richtlinie diese Bedingung erfüllt, müssen Benutzer Objekte mit einem Befehl hochladen, der dem folgenden ähnelt:
aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key examplefile.jpg --body c:\examplefile.jpg --grant-full-control id=CanonicalUserID
Suche nach einer Bedingung, die Uploads nur zulässt, wenn Objekte mit einem AWS Key Management System (AWS KMS)-Schlüssel verschlüsselt sind, ähnlich der folgenden:
"Condition": { "StringEquals": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/abcdabcd-abcd-abcd-abcd-abcdabcdabcd" } }
Wenn die Richtlinie diese Bedingung erfüllt, müssen Benutzer Objekte mit einem Befehl hochladen, der dem folgenden ähnelt:
aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key examplefile.jpg --body c:\examplefile.jpg --server-side-encryption aws:kms --ssekms-key-id arn:aws:kms:us-east-1:111122223333:key/abcdabcd-abcd-abcd-abcd-abcdabcdabcd
Suche nach einer Bedingung, die Uploads nur zulässt, wenn Objekte eine bestimmte Art der serverseitigen Verschlüsselung verwenden, ähnlich der folgenden:
"Condition": { "StringEquals": { "s3:x-amz-server-side-encryption": "AES256" } }
Wenn die Richtlinie diese Bedingung erfüllt, müssen Benutzer Objekte mit einem Befehl hochladen, der dem folgenden ähnelt:
aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key examplefile.jpg --body c:\examplefile.jpg --server-side-encryption "AES256"
Durch eine VPC-Endpunktrichtlinie zulässiger Zugriff
Wenn IAM-Benutzer Objekte mithilfe einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance auf Amazon S3 hochladen und diese Instance mithilfe eines VPC-Endpunkts an Amazon S3 weitergeleitet wird, musst du die VPC-Endpunktrichtlinie überprüfen. Stelle sicher, dass die Endpunktrichtlinie Uploads in den Bucket zulässt.
Die folgende VPC-Endpunktrichtlinie ermöglicht beispielsweise den Zugriff auf DOC-EXAMPLE-BUCKET. Wenn der Bucket nicht als zulässige Ressource aufgeführt ist, können Benutzer mithilfe der Instance in der VPC keine Uploads in den Bucket durchführen.
{ "Statement": [{ "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }] }
Wenn Benutzer Objekte mit einer ACL hochladen, muss die VPC-Endpunktrichtlinie außerdem Zugriff auf die s3:PutObjectAcl-Aktion gewähren, ähnlich der folgenden:
{ "Statement": [{ "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:PutObject", "s3:PutObjectAcl", ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }] }
AWS-KMS-Verschlüsselung
Aktualisiere die AWS-KMS-Berechtigungen von IAM-Benutzern oder IAM-Rollen basierend auf der Fehlermeldung, die du erhältst. Informationen zur Behebung dieser Access Denied-Fehler findest du unter Warum erhalte ich die Fehlermeldung „Access Denied“, wenn ich Dateien in meinen Amazon-S3-Bucket hochlade, der über die Standardverschlüsselung von AWS KMS verfügt?
Wichtig: Wenn der AWS-KMS-Schlüssel und die IAM-Rolle zu verschiedenen AWS-Konten gehören, müssen die IAM-Richtlinie und die KMS-Schlüsselrichtlinie aktualisiert werden. Stelle sicher, dass du die KMS-Berechtigungen sowohl der IAM-Richtlinie als auch der KMS-Schlüsselrichtlinie hinzufügst. Außerdem kann ein AWS-KMS-Schlüssel mit einem „aws/s3"-Alias nicht für die Standard-Bucket-Verschlüsselung verwendet werden, wenn kontoübergreifende IAM-Prinzipale die Objekte hochladen. Jeder Objekt-Upload, jede Kopie oder jeder Bucket, der für die Verwendung eines S3-Bucket-Schlüssels für SSE-KMS konfiguriert ist, muss Zugriff auf die kms:Decrypt-Berechtigung haben. Weitere Informationen zu AWS-KMS-Schlüsseln und zur Richtlinienverwaltung findest du unter Verwenden der serverseitigen Verschlüsselung mit AWS-KMS-Schlüsseln (SSE-KMS).
Ähnliche Informationen
Beispiele für Bucket-Richtlinien unter Verwendung von Bedingungsschlüsseln
Einstellung des standardmäßigen serverseitigen Verschlüsselungsverhaltens für Amazon-S3-Buckets
- Themen
- Storage
- Sprache
- Deutsch
Ähnliche Videos

