Beispiele für Bucket-Richtlinien - Amazon Simple Storage Service

Willkommen im neuen Amazon-S3-Benutzerhandbuch! Das Amazon-S3-Benutzerhandbuch kombiniert Informationen und Anweisungen aus den drei eingestellten Handbüchern: Amazon-S3-Entwicklerhandbuch, Benutzerhandbuch der Amazon-S3-Konsole und Amazon S3 – Handbuch Erste Schritte.

Beispiele für Bucket-Richtlinien

Dieser Abschnitt zeigt einige Beispiele für typische Anwendungsfälle für Bucket-Richtlinien. Die Richtlinien verwenden die Zeichenfolgen bucket und examplebucket im Ressourcenwert. Um diese Richtlinien zu testen, ersetzen Sie diese Zeichenfolge durch Ihren Bucket-Namen. Informationen zur Sprache der Zugriffsichtlinie finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht.

Anmerkung

Bucket-Richtlinien sind auf eine Größe von 20 KB beschränkt.

Mit dem AWS Policy Generator können Sie eine Bucket-Richtlinie für Ihren Amazon S3-Bucket erstellen. Sie können dann das generierte Dokument verwenden, um Ihre Bucket-Richtlinie festzulegen, indem Sie die Amazon S3-Konsole, verschiedene Drittanbieterwerkzeuge oder Ihre Anwendung verwenden.

Wichtig

Beim Testen von Berechtigungen unter Verwendung der Amazon S3-Konsole erteilen Sie zusätzliche Berechtigungen, die die Konsole benötigt – s3:ListAllMyBuckets, s3:GetBucketLocation und s3:ListBucket. Ein detailliertes Beispiel für eine Richtlinie, die Berechtigungen für Benutzer erteilt und sie unter Verwendung der Konsole testet, finden Sie unter Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien.

Berechtigungen an mehrere Konten mit zusätzlichen Bedingungen erteilen

Die folgende Beispielrichtlinie gewährt die Berechtigungen s3:PutObject und s3:PutObjectAcl für mehrere AWS-Konten und erfordert, dass jede Anforderung für diese Operationen die public-read-Zugriffskontrollliste (ACL) enthält. Weitere Informationen finden Sie unter Amazon S3-Aktionen und Beispiele für Amazon-S3-Bedingungsschlüssel.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AddCannedAcl", "Effect":"Allow", "Principal": {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"]}, "Action":["s3:PutObject","s3:PutObjectAcl"], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition":{"StringEquals":{"s3:x-amz-acl":["public-read"]}} } ] }

Erteilen von Leseberechtigungen an einen anonymen Benutzer

Die folgende Beispielrichtlinie erteilt allen öffentlichen anonymen Benutzern die s3:GetObject-Berechtigung. (Eine Liste der Berechtigungen und der von ihnen zugelassenen Operationen finden Sie unter Amazon S3-Aktionen.) Diese Berechtigung gestattet jedem, die Objektdaten zu lesen, was praktisch ist, wenn Sie Ihren Bucket als Website konfigurieren und wollen, dass jeder die Objekte in Ihrem Bucket lesen kann. Bevor Sie eine Bucket-Richtlinie verwenden, um einem anonymen Benutzer Leserechte zu gewähren, müssen Sie die Einstellungen für den öffentlichen Zugriff für Ihren Bucket deaktivieren. Weitere Informationen finden Sie unter Festlegen von Berechtigungen für den Website-Zugriff.

Warnung

Seien Sie vorsichtig, wenn Sie anonymen Zugriff auf Ihren Amazon S3-Bucket gewähren oder die Einstellungen für den öffentlichen Zugriff deaktivieren. Wenn Sie anonymen Zugriff gewähren, kann jeder auf der ganzen Welt auf Ihren Bucket zugreifen. Wir empfehlen Ihnen, niemals anonymen Zugriff auf Ihren Amazon S3-Bucket zu gewähren, es sei denn, Sie müssen dies ausdrücklich tun, z. B. beim Hosting von statischen Websites.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PublicRead", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"] } ] }

Beschränken des Zugriffs auf bestimmte IP-Adressen

Im folgenden Beispiel wird jedem Benutzer die Berechtigung zum Ausführen von Amazon S3-Operationen an Objekten im angegebenen S3-Bucket verweigert, es sei denn, die Anforderung stammt aus dem in der Bedingung angegebenen IP-Adressbereich.

Die Anweisung identifiziert 54.240.143.0/24 als Bereich zulässiger Internet Protocol Version 4 (IPv4)-IP-Adressen.

Der Condition-Block verwendet die Bedingungen NotIpAddress und den Bedingungsschlüssel aws:SourceIp, wobei es sich um einen AWS-übergreifenden Bedingungsschlüssel handelt. Weitere Informationen über diese Bedingungsschlüssel finden Sie unter Beispiele für Amazon-S3-Bedingungsschlüssel. Die aws:SourceIp IPv4-Werte verwenden die CIDR-Standardnotation. Weitere Informationen finden Sie in der IAM-JSON-Richtlinienelemente-Referenz im IAM-Benutzerhandbuch.

Wichtig

Ersetzen Sie den IP-Adressbereich in diesem Beispiel durch einen geeigneten Wert für Ihren Anwendungsfall, bevor Sie diese Richtlinie verwenden. Andernfalls verlieren Sie die Möglichkeit, auf Ihren Bucket zuzugreifen.

{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "IPAllow", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

Zulassen von IPv4- und IPv6-Adressen

Wenn Sie mit der Verwendung von IPv6-Adressen beginnen, empfehlen wir, dass Sie alle Richtlinien Ihrer Organisation zusätzlich zu Ihren bereits vorhandenen IPv4-Adressbereichen auf Ihre IPv6-Adressbereiche aktualisieren, um die Funktion Ihrer Richtlinien während der Umstellung auf IPv6 sicherzustellen.

Das folgende Beispiel für eine Bucket-Richtlinie zeigt, wie Sie IPv4- und IPv6-Adressbereiche kombinieren können, um alle gültigen IP-Adressen in Ihrer Organisation abzudecken. Die Beispielrichtlinie würde Zugriff auf die IP-Adressen 54.240.143.1 und 2001:DB8:1234:5678::1 des Beispiels erteilen und den Zugriff auf die Adressen 54.240.143.129 und 2001:DB8:1234:5678:ABCD::1 verweigern.

Die IPv6-Werte für aws:SourceIp müssen im CIDR-Standardformat angegeben werden. Für IPv6 unterstützen wir die Verwendung von :: zur Darstellung eines Bereichs von Nullen (zum Beispiel 2032001:DB8:1234:5678::/64). Weitere Informationen finden Sie unter IP-Adressen-Bedingungsoperatoren im IAM-Benutzerhandbuch.

Wichtig

Ersetzen Sie die IP-Adressbereiche in diesem Beispiel durch geeignete Werte für Ihren Anwendungsfall, bevor Sie diese Richtlinie verwenden. Andernfalls verlieren Sie möglicherweise die Möglichkeit, auf Ihren Bucket zuzugreifen.

{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal":"*", "Action":"s3:*", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] }, "NotIpAddress": { "aws:SourceIp": [ "54.240.143.128/30", "2001:DB8:1234:5678:ABCD::/80" ] } } } ] }

Beschränken des Zugriffs auf einen spezifischen HTTP-Referrer

Angenommen, Sie haben eine Website mit einem Domänennamen (www.example.com oder example.com) mit Links zu Fotos und Videos, die in Ihrem Amazon S3-Bucket, DOC-EXAMPLE-BUCKET, gespeichert sind. Standardmäßig sind alle Amazon S3-Ressourcen privat, d. h. nur das AWS-Konto, das die Ressourcen erstellt hat, kann darauf zugreifen. Um Lesezugriff auf diese Objekte von Ihrer Website aus zu erlauben, können Sie eine Bucket-Richtlinie hinzufügen, die mit dem s3:GetObject-Schlüssel eine aws:Referer-Berechtigung mit der Bedingung vergibt, dass die Get-Anforderung von bestimmten Webseiten kommen muss. Die folgende Richtlinie spezifiziert die StringLike-Bedingung mit dem aws:Referer-Bedingungsschlüssel.

{ "Version":"2012-10-17", "Id":"http referer policy example", "Statement":[ { "Sid":"Allow get requests originating from www.example.com and example.com.", "Effect":"Allow", "Principal":"*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} } } ] }

Stellen Sie sicher, dass die von Ihnen verwendeten Browser den HTTP referer-Header in der Anfrage enthalten.

Erteilen einer Berechtigung an eine Amazon CloudFront OAI

Über das folgende Beispiel einer Bucket-Richtlinie wird eine CloudFront-Ursprungszugriffsidentitätsberechtigung (Origin Access Identity, OAI) erteilt, um alle Objekte in Ihrem Amazon S3-Bucket abzurufen (zu lesen). Sie können eine CloudFront-OAI verwenden, um Benutzern den Zugriff auf Objekte in Ihrem Bucket über CloudFront zu ermöglichen, jedoch nicht direkt über Amazon S3. Weitere Informationen finden Sie unter Beschränken des Zugriffs auf Amazon S3-Inhalte durch Verwenden einer Ursprungszugriffsidentität im Amazon CloudFront-Entwicklerhandbuch.

Bei der folgenden Richtlinie wird die ID der OAI als Principal der Richtlinie verwendet. Weitere Informationen zur Verwendung von S3-Bucket-Richtlinien zur Gewährung des Zugriffs auf eine CloudFront-OAI finden Sie unter Verwenden von Amazon S3-Bucket-Richtlinien im Amazon CloudFront-Entwicklerhandbuch.

Zur Verwendung dieses Beispiels gehen Sie wie folgt vor:

{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Hinzufügen einer Bucket-Richtlinie zur Anforderung einer MFA

Amazon S3 unterstützt MFA-geschützten API-Zugriff, eine Funktion, die eine Multi-Factor Authentication (MFA) für den Zugriff auf Ihre Amazon S3-Ressourcen erzwingen kann. Die Multifaktor-Authentifizierung bietet ein zusätzliches Sicherheitsniveau, das Sie auf Ihre AWS-Umgebung anwenden können. Es handelt sich um eine Sicherheitsfunktion, die die Angabe eines gültigen MFA-Codes von Benutzern erfordert, mit dem das physische Eigentum eines MFA-Geräts belegt wird. Weitere Informationen finden Sie unter AWS Multi-Factor Authentication. Sie können die MFA für alle Anfragen zum Zugriff auf Ihre Amazon S3-Ressourcen verlangen.

Sie können die Forderung der MFA-Authentifizierung unter Verwendung des aws:MultiFactorAuthAge-Schlüssels in einer Bucket-Richtlinie erzwingen. Benutzer von AWS Identity and Access Management (IAM) können auf Amazon S3-Ressourcen zugreifen, indem sie temporäre Anmeldeinformationen verwenden, die vom AWS Security Token Service (AWS STS) ausgestellt wurden. Sie geben den MFA-Code zum Zeitpunkt der AWS STS-Anforderung an.

Wenn Amazon S3 eine Anforderung mit Multi-Faktor Authentication empfängt, liefert der aws:MultiFactorAuthAge-Schlüssel einen numerischen Wert, der angibt, wie lange (in Sekunden) es her ist, dass die temporären Anmeldeinformationen erstellt wurden. Wenn die in der Anforderung bereitgestellten temporären Anmeldeinformationen nicht mit einem MFA-Gerät erstellt wurden, ist dieser Schlüsselwert null (nicht vorhanden). In einer Bucket-Richtlinie können Sie eine Bedingung hinzufügen, um diesen Wert zu überprüfen, wie im folgenden Beispiel für eine Bucket-Richtlinie gezeigt. Die Richtlinie verweigert jede Amazon S3-Operation am /taxdocuments-Ordner in dem DOC-EXAMPLE-BUCKET-Bucket, wenn die Anforderung nicht über MFA authentifiziert wird. Weitere Informationen finden Sie unter Verwenden der Multi-Factor Authentication (MFA) in AWS im IAM-Benutzerhandbuch.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }

Die Null-Bedingung im Condition-Block wird zu true ausgewertet, wenn der aws:MultiFactorAuthAge-Schlüsselwert null ist, d. h. die temporären Anmeldeinformationen in der Anforderung wurden ohne den MFA-Schlüssel erstellt.

Die folgende Bucket-Richtlinie ist eine Erweiterung der vorhergehenden Bucket-Richtlinie. Sie beinhaltet zwei Richtlinienanweisungen. Eine Anweisung gewährt jedem die s3:GetObject-Berechtigung für einen Bucket (DOC-EXAMPLE-BUCKET). Eine weitere Anweisung schränkt den Zugriff auf den DOC-EXAMPLE-BUCKET/taxdocuments-Ordner im Bucket weiter ein, indem sie eine MFA erzwingt.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Optional können Sie eine numerische Bedingung verwenden, um die Dauer zu beschränken, für die der aws:MultiFactorAuthAge-Schlüssel gültig ist, unabhängig von der Lebensdauer der temporären Sicherheitsanmeldeinformationen, die für die Authentifizierung der Anforderung verwendet wurden. Beispielsweise überprüft die folgende Bucket-Richtlinie zusätzlich zur geforderten MFA-Authentifizierung auch, vor wie langer Zeit die temporäre Sitzung erstellt wurde. Die Richtlinie verweigert jede Operation, wenn der aws:MultiFactorAuthAge-Schlüsselwert angibt, dass die temporäre Sitzung vor mehr als einer Stunde erstellt wurde (3600 Sekunden).

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Erteilung von kontenübergreifenden Berechtigungen für das Hochladen von Objekten, wobei sichergestellt wird, dass der Bucket-Eigentümer volle Kontrolle besitzt

Das folgende Beispiel zeigt, wie Sie einem anderen AWS-Konto das Hochladen von Objekten in Ihren Bucket gestatten, während Sie die volle Kontrolle über die hochgeladenen Objekte übernehmen. Diese Richtlinie setzt durch, dass ein spezifisches AWS-Konto (123456789012) nur dann Objekte hochladen kann, wenn dieses Konto beim Hochladen die vordefinierte ACL für die vollständige Kontrolle durch den Bucket-Eigentümer enthält. Die Bedingung StringEquals in der Richtlinie gibt den Bedingungsschlüssel s3:x-amz-acl an, um die Anforderung auszudrücken (siehe Beispiele für Amazon-S3-Bedingungsschlüssel).

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"123456789012"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }

Erteilen von Berechtigungen für Amazon S3 Inventory und Amazon S3 Analytics

Amazon S3 Inventory erstellt Listen der Objekte in einem S3-Bucket, und Amazon S3 Analytics Export erzeugt Ausgabedateien der in der Analyse verwendeten Daten. Der Bucket, dessen Objekte die Bestandserfassung auflistet, wird als Quell-Bucket bezeichnet. Die Buckets, in die die Bestandsdatei und die Analyseexportdatei geschrieben werden, werden als Ziel-Buckets bezeichnet. Sie müssen bei der Einrichtung des Bestands für einen Amazon S3-Bucket und des Analyseberichts eine Bucket-Richtlinie für den Ziel-Bucket erstellen. Weitere Informationen finden Sie unter Amazon S3 inventory und Amazon S3 analytics – Speicherklassenanalyse.

Das folgende Beispiel für eine Bucket-Richtlinie erteilt Amazon S3 die Berechtigung, Objekte aus dem Konto für den Quell-Bucket in den Ziel-Bucket zu schreiben (PUTs). Sie verwenden eine solche Bucket-Richtlinie für den Ziel-Bucket, wenn Sie Amazon S3 Inventory und Amazon S3 Analytics Export einrichten.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"InventoryAndAnalyticsExamplePolicy", "Effect":"Allow", "Principal": {"Service": "s3.amazonaws.com"}, "Action":"s3:PutObject", "Resource":["arn:aws:s3:::destinationbucket/*"], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::sourcebucket" }, "StringEquals": { "aws:SourceAccount": "123456789012", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

Erteilen von Berechtigungen für Amazon S3 Storage Lens

Amazon S3 Storage Lens aggregiert Ihre Nutzungs- und Aktivitätsmetriken und zeigt die Informationen in einem interaktiven Dashboard auf der Amazon S3-Konsole oder über einen Export von Metrikdaten an, der im CSV- oder Parquet-Format heruntergeladen werden kann. Sie können das Dashboard verwenden, um Erkenntnisse und Trends zu visualisieren, Ausreißer zu kennzeichnen und Empfehlungen zur Optimierung der Speicherkosten und zur Anwendung bewährter Datenschutzmethoden einzusehen. Sie können S3 Storage Lens über die AWS-Managementkonsole, die AWS CLI, AWS SDKs oder REST-API verwenden.

S3 Storage Lens kann Ihre Speichernutzung zu Metrikexporten in einem Amazon S3-Bucket zur weiteren Analyse aggregieren. Der Bucket, den S3 Storage Lens für die Metrikexporte platziert, wird als Ziel-Bucket bezeichnet. Sie müssen eine Bucket-Richtlinie für den Ziel-Bucket haben, wenn Sie Ihren S3 Storage Lens-Metrikexport einrichten. Weitere Informationen finden Sie unter Bewerten Ihrer Speicheraktivität und -nutzung mit Amazon S3 Storage Lens.

Die folgende Beispiel-Bucket-Richtlinie erteilt Amazon S3 die Berechtigung, Objekte (PUT) in einen Ziel-Bucket zu schreiben. Sie verwenden eine solche Bucket-Richtlinie für den Ziel-Bucket, wenn Sie einen S3 Storage Lens-Metrikexport einrichten.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3StorageLensExamplePolicy", "Effect": "Allow", "Principal": { "Service": [ "storage-lens.s3.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/111122223333/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" }, "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringEquals": { "aws:SourceArn": "arn:aws:s3:your-region:111122223333:storage-lens/your-dashboard-configuration-id" } } } ] }

Die folgende Änderung an der vorherigen Bucket-Richtlinien-"Action": "s3:PutObject"-Ressource beim Einrichten eines S3 Storage Lens-Metriktexports auf Organisationsebene.

{ "Action": "s3:PutObject", "Resource": "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/your-organization-id/*",