Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Verwenden von Amazon S3 Block Public Access

Amazon S3 bietet Einstellungen für die Blockierung des öffentlichen Zugriffs für Buckets und Konten, mit denen Sie den öffentlichen Zugriff auf Amazon S3-Ressourcen verwalten können. Standardmäßig erlauben neue Buckets und Objekte keinen öffentlichen Zugriff, Nutzer können jedoch Bucket-Richtlinien oder Objektberechtigungen so ändern, dass öffentlicher Zugriff erlaubt wird. Die Amazon S3-Einstellungen zur Blockierung des öffentlichen Zugriffs übergehen diese Richtlinien und Berechtigungen, so dass Sie den öffentlichen Zugriff auf diese Ressourcen beschränken können. Mit Amazon S3 Block Public Access können Administratoren und Bucket-Eigentümer problemlos zentrale Kontrollen zur Begrenzung des öffentlichen Zugriffs auf ihre Amazon S3-Ressourcen einrichten. Diese Kontrollen werden unabhängig davon durchgesetzt, wie die Ressourcen erstellt wurden.

Wenn Amazon S3 eine Anforderung zum Zugriff auf einen Bucket oder ein Objekt erhält, wird ermittelt, ob für den Bucket oder das Konto des Bucket-Eigentümers eine Block Public Access-Einstellung vorliegt. Wenn eine Block Public Access-Einstellung vorhanden ist, die den angeforderten Zugriff verbietet, lehnt Amazon S3 die Anforderung ab. Amazon S3 Block Public Access bietet vier Einstellungen. Diese Einstellungen sind voneinander unabhängig und können in beliebiger Kombination verwendet werden. Jede Einstellung kann auf einen Bucket oder auf ein ganzes AWS-Konto angewendet werden. Wenn die Block Public Access-Einstellungen eines Buckets von denen des Kontos seines Eigentümers abweichen, wendet Amazon S3 die restriktivere Kombination der Einstellungen auf Bucket- und Konto-Ebene an. Wenn Amazon S3 ermittelt, ob eine Operation von einer Block Public Access-Einstellung untersagt wird, werden alle Anforderungen abgelehnt, die entweder gegen eine Einstellung auf Bucket-Ebene oder gegen eine auf Konto-Ebene verstoßen.

Warnung

Öffentlicher Zugriff auf Buckets und Objekte wird über Zugriffskontrolllisten (ACLs), Bucket-Richtlinien oder beides gewährt. Um zu gewährleisten, dass bei allen Ihren Amazon S3-Buckets und -Objekten der öffentliche Zugriff blockiert ist, empfehlen wird, alle vier Einstellungen zur Blockierung des öffentlichen Zugriffs für Ihr Konto zu aktivieren. Diese Einstellungen blockieren den öffentlichen Zugriff für alle aktuellen und zukünftigen Buckets.

Bevor Sie diese Einstellungen anwenden, verifizieren Sie, dass Ihre Anwendungen ohne öffentlichen Zugriff korrekt funktionieren. Wenn ein bestimmter Umfang an öffentlichem Zugriff auf Ihre Buckets oder Objekte nötig ist, z. B. zum Hosten einer statischen Website, wie unter Hosten einer statischen Website auf Amazon S3 beschrieben, können Sie die einzelnen Einstellungen an Ihre Speicheranwendungsfälle anpassen.

Anmerkung

  • Sie können Block Public Access-Einstellungen nur für Buckets und AWS-Konten aktivieren. Amazon S3 unterstützt keine Block Public Access-Einstellungen für einzelne Objekte.

  • Wenn Sie die Block Public Access-Einstellungen auf ein Konto anwenden, gelten die Einstellungen global für alle AWS-Regionen. Die Einstellungen werden möglicherweise nicht in allen Regionen umgehend oder gleichzeitig wirksam, werden aber auf jeden Fall von allen Regionen übernommen.

Aktivieren von Block Public Access auf der Amazon S3-Konsole.

Amazon S3 Block Public Access bietet vier Einstellungen. Sie können diese Einstellungen in beliebiger Kombination auf einzelne Buckets oder auf ganze AWS-Konten anwenden. Die nachfolgende Abbildung zeigt die Aktivierung von Block Public Access auf der Amazon S3-Konsole für Ihr Konto. Weitere Informationen finden Sie unter Einrichtung von Berechtigungen: Block Public Access im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.


					Screenshot der Konsole mit den Einstellungen für den öffentlichen Zugriff für ein Konto.

Block Public Access-Einstellungen

Amazon S3 Block Public Access bietet vier Einstellungen. Sie können diese Einstellungen in beliebiger Kombination auf einzelne Buckets oder auf ganze AWS-Konten anwenden. Wenn Sie eine Einstellung auf ein Konto anwenden, gilt sie für alle Buckets, die dem Konto gehören.

Die folgende Tabelle enthält die verfügbaren Einstellungen.

Name Beschreibung
BlockPublicAcls

Das Festlegen dieser Option auf TRUE hat folgende Verhaltensweise zur Folge:

  • "PUT Bucket acl"- und "PUT Object acl"-Aufrufe schlagen fehl, wenn die angegebene Zugriffskontrollliste (ACL) öffentlich ist.

  • "PUT Object"-Aufrufe schlagen fehl, wenn die Anforderung eine öffentliche ACL enthält.

  • Wenn diese Einstellung auf ein Konto angewendet wird, schlagen "PUT Bucket"-Aufrufe fehl, wenn die Anforderung eine öffentliche ACL enthält.

Wen diese Einstellung auf TRUE festgelegt ist, schlagen die angegebenen Operationen fehl (gleich, ob sie über die REST-API, die AWS CLI oder AWS-SDKs erfolgen). Vorhandene Richtlinien und ACLs für Buckets und Objekte werden jedoch nicht geändert. Mit dieser Einstellung können Sie den öffentlichen Zugriff einschränken und gleichzeitig die vorhandenen Richtlinien und ACLs für Ihre Buckets und Objekte prüfen, verbessern oder anderweitig ändern.

IgnorePublicAcls

Wenn Sie diese Option auf TRUE festlegen, ignoriert Amazon S3 alle öffentlichen ACLs auf einem Bucket und alle darin enthaltenen Objekte. Mit dieser Einstellung können Sie den von ACLs gewährten öffentlichen Zugriff sicher blockieren und gleichzeitig "PUT Object"-Aufrufe zulassen, die eine öffentliche ACL enthalten (im Gegensatz zu BlockPublicAcls, das "PUT Object"-Aufrufe zurückweist, die eine öffentliche ACL enthalten). Die Aktivierung dieser Einstellungen wirkt sich nicht auf die Persistenz von vorhandenen ACLs aus und verhindert nicht, dass neue öffentliche ACLs eingerichtet werden.

BlockPublicPolicy

Wenn Sie diese Option auf TRUE festlegen, lehnt Amazon S3 alle "PUT Bucket policy"-Aufrufe ab, wenn die angegebene Bucket-Richtlinie den öffentlichen Zugriff zulässt. Mit dieser Einstellung können Sie es Benutzern gestatten, Bucket-Richtlinien zu verwalten, ohne ihnen die öffentliche Freigabe des Buckets oder der darin enthaltenen Objekte zu erlauben. Die Aktivierung dieser Einstellung hat keine Auswirkungen auf vorhandene Bucket-Richtlinien.

Wichtig

Um diese Einstellung effektiv zu nutzen, empfehlen wir Ihnen, sie auf Konto-Ebene anzuwenden. Eine Bucket-Richtlinie kann Benutzern das Ändern der Block Public Access-Einstellungen eines Buckets gestatten. Daher könnten Benutzer mit der Berechtigung zum Ändern einer Bucket-Richtlinie eine Richtlinie einfügen, die es ihnen erlaubt, die Block Public Access-Einstellungen für den Bucket zu deaktivieren. Wenn diese Einstellung dann für das ganze Konto aktiviert wird statt für einen bestimmten Bucket, blockiert Amazon S3 öffentliche Richtlinien selbst dann, wenn ein Benutzer die Bucket-Richtlinie so ändert, dass diese Einstellung deaktiviert wird.

RestrictPublicBuckets

Durch das Festlegen dieser Option auf TRUE wird der Zugriff auf einen Bucket mit einer öffentlichen Richtlinie auf ausschließlich AWS-Services und autorisierte Benutzer innerhalb des Kontos des Bucket-Eigentümers beschränkt. Diese Einstellung blockiert alle kontenübergreifenden Zugriffe auf den Bucket (außer durch AWS-Services) und erlaubt es gleichzeitig Benutzern innerhalb des Kontos, den Bucket zu verwalten.

Die Aktivierung dieser Einstellung wirkt sich nicht auf vorhandene Bucket-Richtlinien aus – mit folgender Ausnahme: Amazon S3 blockiert den öffentlichen und kontenübergreifenden Zugriff, der von einer öffentlichen Bucket-Richtlinie abgeleitet wird, darunter auch die nicht-öffentliche Delegation auf bestimmte Konten.

Wichtig

  • "GET Bucket acl"- und "GET Object acl"-Aufrufe geben immer die effektiven Berechtigungen für den angegebenen Bucket oder das angegebene Objekt zurück. Nehmen wir als Beispiel an, dass ein Bucket über eine ACL verfügt, die den öffentlichen Zugriff zulässt, dass für den Bucket aber auch die Einstellung IgnorePublicAcls aktiviert ist. In diesem Fall gibt „GET Bucket acl“ statt der ACL, die tatsächlich mit dem Bucket verknüpft ist, eine ACL zurück, die die von Amazon S3 durchgesetzten Zugriffsberechtigungen widerspiegelt.

  • Die Block Public Access-Einstellungen ändern keine vorhandenen Richtlinien oder ACLs. Daher sorgt das Entfernen einer Block Public Access-Einstellung dafür, dass ein Bucket oder ein Objekt mit einer öffentlichen Richtlinie oder ACLs wieder öffentlich zugänglich ist.

Die Bedeutung von „öffentlich“

  • ACLs

    • Amazon S3 erachtet eine Bucket- oder Objekt-ACL als öffentlich, wenn sie Mitgliedern der vordefinierten Gruppen AllUsers oder AuthenticatedUsers irgendwelche Berechtigungen erteilt. Weitere Informationen zu vordefinierten Gruppen finden Sie unter Vordefinierte Gruppen in Amazon S3.

  • Richtlinien

    • Bei der Evaluierung einer Bucket-Richtlinie beginnt Amazon S3 mit der Annahme, dass die Richtlinie öffentlich ist. Dann evaluiert es die Richtlinie, um festzustellen, ob sie als nicht-öffentlich eingestuft werden kann. Um als nicht-öffentlich zu gelten, darf eine Bucket-Richtlinie nur Zugriff für feste Werte (Werte, die keine Platzhalter aufweisen) gewähren, wie einen oder mehrere der folgenden Werte:

      • einen Satz von Classless Inter-Domain Routings (CIDRs), unter Verwendung von aws:SourceIp. Weitere Informationen zu CIDR finden Sie unter RFC 4632 auf der RFC-Editor-Website.

      • Ein AWS-Prinzipal, Benutzer, Rolle, oder Service-Prinzipal (z. B. aws:PrincipalOrgID)

      • aws:SourceArn

      • aws:SourceVpc

      • aws:SourceVpce

      • aws:SourceOwner

      • aws:SourceAccount

      • s3:x-amz-server-side-encryption-aws-kms-key-id

      • aws:userid, außerhalb des Musters "AROLEID:*"

    • Gemäß diesen Regeln gelten die folgenden Beispielrichtlinien als öffentlich:

      { "Principal": { "Federated": "graph.facebook.com" }, "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}} }

      Diese Richtlinien können zu nicht-öffentlichen Richtlinien gemacht werden, indem einer der vorgenannten Bedingungsschlüssel unter Verwendung eines festen Wertes eingefügt wird. So können Sie beispielsweise die letzte oben angeführte Richtlinie zu einer nicht-öffentlichen Richtlinie machen, indem Sie aws:SourceVpc wie folgt auf einen festen Wert festlegen:

      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}} }
    • Weitere Informationen zu Bucket-Richtlinien finden Sie unter Verwendung von Bucket-Richtlinien und Benutzerrichtlinien.

Beispiel

Dieses Beispiel zeigt, wie Amazon S3 eine Richtlinie bewertet, die Berechtigungen sowohl für den öffentlichen wie auch für den nicht-öffentlichen Zugriff enthält.

Nehmen wir an, dass ein Bucket eine Richtlinie aufweist, die den Zugriff auf einen Satz an festen Prinzipalen gewährt. Nach den zuvor beschriebenen Regeln gilt diese Richtlinie nicht als öffentlich. Wenn Sie daher die Einstellung RestrictPublicBuckets aktivieren, bleibt die Richtlinie wie geschrieben in Kraft, da RestrictPublicBuckets nur für Buckets mit öffentlichen Richtlinien gilt. Wenn Sie jedoch der Richtlinie eine öffentliche Anweisung hinzufügen, wird RestrictPublicBuckets für den Bucket wirksam. Nur AWS Service-Principals und autorisierten Benutzern des Kontos des Bucket-Eigentümers wird der Zugriff auf den Bucket gewährt.

Nehmen wir beispielsweise an, dass ein Bucket, der „Konto-1“ gehört, eine Richtlinie aufweist, die Folgendes enthält:

  1. eine Anweisung, die AWS CloudTrail (das ein AWS-Service-Prinzipal ist) Zugriff gewährt

  2. eine Anweisung, die Konto "Konto-2" Zugriff gewährt

  3. eine Anweisung, die der Öffentlichkeit Zugriff gewährt, z. B. durch das Festlegen von "Principal": "*" ohne einschränkende Condition

Diese Richtlinie gilt wegen der dritten Anweisung als öffentlich. Wenn diese Richtlinie vorhanden und RestrictPublicBuckets aktiviert ist, gewährt Amazon S3 den Zugriff nur durch CloudTrail. Beachten Sie: Obwohl die zweite Anweisung nicht öffentlich ist, deaktiviert Amazon S3 den Zugriff durch „Konto-2“. Das liegt daran, dass die dritte Anweisung die gesamte Richtlinie zu einer öffentlichen Richtlinie macht, so dass RestrictPublicBuckets gilt. Somit deaktiviert Amazon S3 den kontenübergreifenden Zugriff, obwohl die Richtlinie den Zugriff an ein bestimmtes Konto („Konto-2“) delegiert. Wenn Sie aber die dritte Anweisung aus der Richtlinie entfernen, gilt die Richtlinie nicht als öffentlich, und RestrictPublicBuckets ist nicht mehr gültig. Somit erhält „Konto-2“ wieder Zugriff auf den Bucket, selbst wenn Sie RestrictPublicBuckets aktiviert lassen.

Berechtigungen

Um die Funktionen von Amazon S3 Block Public Access zu nutzen, benötigen Sie die folgenden Berechtigungen:

Operation Erforderliche Berechtigungen
GET bucket policy status s3:GetBucketPolicyStatus
GET bucket Block Public Access settings s3:GetBucketPublicAccessBlock
PUT bucket Block Public Access settings s3:PutBucketPublicAccessBlock
DELETE bucket Block Public Access settings s3:PutBucketPublicAccessBlock
GET account Block Public Access settings s3:GetAccountPublicAccessBlock
PUT account Block Public Access settings s3:PutAccountPublicAccessBlock
DELETE account Block Public Access settings s3:PutAccountPublicAccessBlock

Anmerkung

Für die DELETE-Operationen sind dieselben Berechtigungen erforderlich wie für die PUT-Operationen. Es gibt keine separaten Berechtigungen für die DELETE-Operationen.

Beispiele

Verwenden von Block Public Access mit der AWS CLI

Sie können Amazon S3 Block Public Access über die AWS CLI verwenden. Welchen Befehl Sie verwenden, hängt davon ab, ob Sie einen Block Public Access-Aufruf auf einem Bucket oder einem Konto durchführen möchten. Weitere Informationen zum Einrichten und Verwenden der AWS CLI finden Sie unter Was ist die AWS Command Line Interface?

  • Bucket

    • Um Block Public Access-Operationen auf einem Bucket durchzuführen, verwenden Sie den AWS CLI-Service s3api. Folgende Operationen auf Bucket-Ebene verwenden diesen Service:

      • PUT PublicAccessBlock (für einen Bucket)

      • GET PublicAccessBlock (für einen Bucket)

      • DELETE PublicAccessBlock (für einen Bucket)

      • GET BucketPolicyStatus

  • Konto

    • Um Block Public Access-Operationen auf einem Konto durchzuführen, verwenden Sie den AWS CLI-Service s3control. Folgende Operationen auf Konto-Ebene verwenden diesen Service:

      • PUT PublicAccessBlock (für ein Konto)

      • GET PublicAccessBlock (für ein Konto)

      • DELETE PublicAccessBlock (für ein Konto)

Verwenden von Block Public Access mit dem AWS SDK for Java

Die folgenden Beispiele zeigen, wie Sie Amazon S3 Block Public Access mit dem AWS SDK for Java verwenden. Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Verwendung von AWS SDK for Java.

Beispiel 1

Dieses Beispiel zeigt, wie Sie mit dem AWS SDK for Java eine Block Public Access-Konfiguration auf einem S3-Bucket einrichten.

AmazonS3 client = AmazonS3ClientBuilder.standard() .withCredentials(<credentials>) .build(); client.setPublicAccessBlock(new SetPublicAccessBlockRequest() .withBucketName(<bucket-name>) .withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration() .withBlockPublicAcls(<value>) .withIgnorePublicAcls(<value>) .withBlockPublicPolicy(<value>) .withRestrictPublicBuckets(<value>)));

Wichtig

Dieses Beispiel trifft nur für Operationen auf Bucket-Ebene zu, die die AmazonS3-Client-Klasse verwenden. Sehen Sie sich für Operationen auf Konto-Ebene das folgende Beispiel an.

Beispiel 2

Dieses Beispiel zeigt, wie Sie eine Block Public Access-Konfiguration auf einem Amazon S3-Konto mit dem AWS SDK for Java einrichten.

AWSS3ControlClientBuilder controlClientBuilder = AWSS3ControlClientBuilder.standard(); controlClientBuilder.setRegion(<region>); controlClientBuilder.setCredentials(<credentials>); AWSS3Control client = controlClientBuilder.build(); client.putPublicAccessBlock(new PutPublicAccessBlockRequest() .withAccountId(<account-id>) .withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration() .withIgnorePublicAcls(<value>) .withBlockPublicAcls(<value>) .withBlockPublicPolicy(<value>) .withRestrictPublicBuckets(<value>)));

Wichtig

Dieses Beispiel trifft nur für Operationen auf Konto-Ebene zu, die die AWSS3Control-Client-Klasse verwenden. Sehen Sie sich für Operationen auf Bucket-Ebene das vorhergehende Beispiel an.

Verwenden von Block Public Access mit anderen AWS-SDKs

Weitere Informationen zur Verwendung von anderen AWS-SDKs finden Sie unter Verwenden der AWS SDKs, CLI und Explorer.

Verwenden von Block Public Access mit den REST-APIs

Weitere Informationen zum Verwenden von Amazon S3 Block Public Access über REST-APIs finden Sie in den folgenden Themen in der Amazon Simple Storage Service API Reference.