Direkt zum Inhalt

Wie kann ich die Amazon-S3-Block-Public-Access-Funktion verwenden, um den öffentlichen Zugriff auf Amazon S3-Ressourcen zu verwalten?

Lesedauer: 3 Minute
0

Ich möchte den Zugriff auf meine Amazon Simple Storage Service (Amazon S3)-Ressourcen verwalten. Dazu möchte ich S3 Block Public Access verwenden.

Lösung

Du kannst Amazon S3 Block Public Access-Einstellungen für verschiedene Zugriffsebenen konfigurieren.

Erteile die erforderlichen Berechtigungen

Um die S3-Block-Public-Access-Einstellungen zu ändern, muss dein AWS-Identity-and-Access-Management(IAM)-Benutzer oder deine AWS-Identity-and-Access-Management(IAM)-Rolle über die folgenden Berechtigungen verfügen:

  • s3:PutAccountPublicAccessBlock
  • s3:PutBucketPublicAccessBlock

Um deine aktuellen S3-Block-Public-Access-Einstellungen anzuzeigen, muss dein IAM-Benutzer oder deine IAM-Rolle über die folgenden Berechtigungen verfügen:

  • s3:GetAccountPublicAccessBlock
  • s3:GetBucketPublicAccessBlock

Weitere Informationen findest du unter Berechtigungen.

S3 Block Public Access aktivieren oder deaktivieren

Hinweis: Seit April 2023 aktiviert Amazon S3 automatisch S3 Block Public Access für alle Buckets, die du erstellst.

Du kannst die Einstellungen für S3 Block Public Access auf Konto- oder Bucket-Ebene oder auf beiden Ebenen konfigurieren.

S3 Block Public Access aktivieren

Nachdem du S3 Block Public Access aktiviert hast, führt Amazon S3 die folgenden Aktionen durch:

  • Verweigert ausnahmslos alle anonymen und nicht authentifizierten Anfragen. Amazon S3-URIs und URLs, die einen Webbrowser oder Curl für den Zugriff verwenden, erhalten eine "HTTP 403 Access Denied"-Fehlermeldung.
  • Ignoriert neue öffentliche ACLs, die du auf Amazon-S3-Objekte anwendest, und widerruft den Benutzerzugriff auf den S3-Bucket und die S3-Objekte.

S3 Block Public Access deaktivieren

Wenn du S3 Block Public Access deaktiviert hast, ermöglicht Amazon S3 den Zugriff auf ein Objekt mit einer öffentlichen Bucket-Richtlinie oder einer öffentlichen ACL. Für Amazon S3-Anforderungen wie LIST oder GET können Kosten anfallen. AWS berechnet dir Gebühren für anonyme Anfragen, die in Bezug auf den öffentlichen Bucket oder das öffentliche Objekt übermittelt werden. AWS-Config-Regeln und IAM Access Analyzer für S3 generieren Warnungen betreffend den öffentlichen Status deines Buckets.

Wenn du S3 Block Public Access deaktivierst, zeigt deine Amazon S3-Konsole die Zugriffseinstellungen im Übersichtsbereich Externer Zugriff an.

Behebung von Fehlern des Typs „"Access Denied"“ und S3-Bucket-Fehlern

Möglicherweise erhältst du die Fehlermeldung "Access Denied", wenn du versuchst, S3 Block Public Access in deinem S3-Bucket zu aktivieren oder zu deaktivieren.

Gehe wie folgt vor, um diesen Fehler zu beheben:

  • Stelle sicher, dass die Service-Kontrollrichtlinien (SCPs) von AWS Organizations Änderungen an S3 Block Public Access auf Konto- oder Bucket-Ebene nicht verhindern. Überprüfe die Verweigerungs-Anweisungen für die Aktionen s3:PutBucketPublicAccessBlock und s3:PutAccountPublicAccessBlock.
  • Wenn dein Bucket in der Spalte Zugriff einen Fehler anzeigt, füge deiner IAM-Richtlinie die folgenden Berechtigungen hinzu, um Buckets und öffentliche Zugriffseinstellungen aufzulisten:
    s3:GetAccountPublicAccessBlock
    s3:GetBucketPublicAccessBlock
    s3:GetBucketPolicyStatus
    s3:GetBucketLocation
    s3:GetBucketAcl
    s3:ListAccessPoints
    s3:ListAllMyBuckets

Identifiziere den IAM-Benutzer oder die IAM-Rolle, der/die S3 Block Public Access geändert hat

Überprüfe deinen AWS CloudTrail-Ereignisverlauf, um Ereignisse für die folgenden EventNames zu identifizieren:

  • Suche auf Kontoebene nach PutAccountPublicAccessBlock.
  • Suche auf Bucket-Ebene nach PutBucketPublicAccessBlock.

Um den Amazon-Ressourcennamen (ARN) des Aufrufers zu identifizieren, vergleiche ihn mit dem Feld UserIdentity im Protokoll. Beispielprotokoll:

 "userIdentity": {  
 "type": "AssumedRole",  
 "principalId": "[AccountID]:[RoleName]",  
 "arn": "arn:aws:sts::[AccountID]:assumed-role/[RoleName]/[RoleSession]",

Überprüfe dann bucketName, um den geänderten S3-Bucket zu identifizieren. Beispielprotokoll:

"requestParameters": {  
 "publicAccessBlock": "",  
 "bucketName": "[BucketName]"
AWS OFFICIALAktualisiert vor 8 Monaten