Warum erhalte ich die Fehlermeldung Zugriff verweigert, wenn ich Dateien in meinen Amazon S3-Bucket hochlade, der über die Standardverschlüsselung von AWS KMS verfügt?

Lesedauer: 4 Minute
0

Mein Amazon Simple Storage Service (Amazon S3) -Bucket verfügt über die Standardverschlüsselung von AWS Key Management Service (AWS KMS). Ich versuche, Dateien in den Bucket hochzuladen, aber Amazon S3 gibt die Fehlermeldung Zugriff verweigert zurück. Wie kann ich das beheben?

Lösung

Bestätigen Sie zunächst:

  • Ihr AWS Identity and Access Management (IAM) -Benutzer oder Ihre Rolle verfügt über die s3:putObject-Berechtigung für den Bucket.
  • Ihr AWS KMS-Schlüssel hat keinen „aws/s3"-Alias. Dieser Alias kann nicht für die Standard-Bucket-Verschlüsselung verwendet werden, wenn kontoübergreifende IAM-Prinzipale die Objekte hochladen. Weitere Informationen zu AWS KMS-Schlüsseln und zur Richtlinienverwaltung finden Sie unter Schutz von Daten mithilfe serverseitiger Verschlüsselung mit AWS Key Management Service (SSE-KMS).

Aktualisieren Sie dann die AWS KMS-Berechtigungen Ihres IAM-Benutzers oder Ihrer IAM-Rolle basierend auf der Fehlermeldung, die Sie erhalten.

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. Stellen Sie sicher, dass Sie die KMS-Berechtigungen sowohl der IAM-Richtlinie als auch der KMS-Schlüsselrichtlinie hinzufügen.
  • Um eine IAM-Richtlinie zur Steuerung des Zugriffs auf einen KMS-Schlüssel verwenden zu können, muss die Schlüsselrichtlinie für den KMS-Schlüssel dem Konto die Erlaubnis geben, IAM-Richtlinien zu verwenden.

„Beim Aufrufen der PutObject-Operation ist ein Fehler aufgetreten (accessDenied): Access Denied"

Diese Fehlermeldung weist darauf hin, dass Ihr IAM-Benutzer oder Ihre IAM-Rolle eine Genehmigung für die Aktion kms:GenerateDataKey benötigt.

Gehen Sie wie folgt vor, um die Berechtigung für kms:GenerateDataKey hinzuzufügen:

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie den IAM-Benutzer oder die IAM-Rolle aus, die Sie verwenden, um Dateien in den Amazon S3-Bucket hochzuladen.

3.    Erweitern Sie auf der Registerkarte Berechtigungen jede Richtlinie, um das zugehörige JSON-Richtliniendokument anzuzeigen.

4.    Suchen Sie in den JSON-Richtliniendokumenten nach Richtlinien für den Zugriff auf AWS KMS. Überprüfen Sie die Aussagen mit „Wirkung“: „Zulassen“, um zu überprüfen, ob der Benutzer oder die Rolle über Berechtigungen für die Aktion kms:generateDataKey für den AWS KMS-Schlüssel des Buckets verfügt.

5.    Wenn diese Berechtigung fehlt, fügen Sie die Berechtigung der entsprechenden Richtlinie hinzu. Anweisungen finden Sie unter Hinzufügen von Berechtigungen für einen Benutzer (Konsole) oder Ändern einer Richtlinie für Rollenberechtigungen (Konsole).

6.    Suchen Sie in den JSON-Richtliniendokumenten nach Aussagen mit „Effekt“: „Ablehnen“. Vergewissern Sie sich, dass diese Anweisungen die s3:putObject-Aktion für den Bucket nicht ablehnen. Die Anweisungen dürfen dem IAM-Benutzer oder der IAM-Rolle nicht den Zugriff auf die Aktion kms:GenerateDataKey für den Schlüssel verweigern, der zum Verschlüsseln des Buckets verwendet wurde. Außerdem dürfen die erforderlichen KMS- und S3-Berechtigungen nicht eingeschränkt werden, wenn VPC-Endpunktrichtlinien, Richtlinien zur Dienststeuerung, Berechtigungsgrenzen oder Sitzungsrichtlinien verwendet werden.

„Beim Aufrufen der CreateMultipartUpload-Operation ist ein Fehler aufgetreten (accessDenied): Access Denied"

Diese Fehlermeldung weist darauf hin, dass Ihr IAM-Benutzer oder Ihre IAM-Rolle Berechtigungen für die Aktionen kms:GenerateDataKey und kms:Decrypt benötigt.

Gehen Sie wie folgt vor, um Berechtigungen für kms:GenerateDataKey und kms:Decrypt hinzuzufügen:

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie den IAM-Benutzer oder die IAM-Rolle aus, die Sie verwenden, um Dateien in den Amazon S3-Bucket hochzuladen.

3.    Erweitern Sie auf der Registerkarte Berechtigungen jede Richtlinie, um das zugehörige JSON-Richtliniendokument anzuzeigen.

4.    Suchen Sie in den JSON-Richtliniendokumenten nach Richtlinien für den Zugriff auf AWS KMS. Überprüfen Sie die Aussagen mit „Wirkung“: „Zulassen“, um zu überprüfen, ob die Rolle über Berechtigungen für kms:generateDataKey und kms:Decrypt für den AWS-KMS-Schlüssel des Buckets verfügt.

5.    Wenn diese Berechtigungen fehlen, fügen Sie die Berechtigungen der entsprechenden Richtlinie hinzu. Anweisungen finden Sie unter Hinzufügen von Berechtigungen für einen Benutzer (Konsole) oder Ändern einer Richtlinie für Rollenberechtigungen (Konsole).

6.    Suchen Sie in den JSON-Richtliniendokumenten nach Aussagen mit „Effekt“: „Ablehnen“. Bestätigen Sie dann, dass diese Anweisungen die s3:PutObject-Aktion für den Bucket nicht ablehnen. Die Anweisungen dürfen dem IAM-Benutzer oder der IAM-Rolle nicht den Zugriff auf die Aktionen kms:GenerateDataKey und kms:Decrypt für den Schlüssel verweigern, der zum Verschlüsseln des Buckets verwendet wurde. Außerdem dürfen die erforderlichen KMS- und S3-Berechtigungen nicht eingeschränkt werden, wenn VPC-Endpunktrichtlinien, Richtlinien zur Dienststeuerung, Berechtigungsgrenzen oder Sitzungsrichtlinien verwendet werden.


Ähnliche Informationen

Einstellung des standardmäßigen serverseitigen Verschlüsselungsverhaltens für Amazon S3-Buckets

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren