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

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 Zugriffsrichtlinie finden Sie unter Richtlinien und Berechtigungen in Amazon S3.

Anmerkung

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

Sie können den AWS Policy Generator verwenden, um eine Bucket-Richtlinie für Ihren Amazon S3-Bucket zu 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 müssen Sie der Konsole zusätzliche Berechtigungen erteilen, 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 Walkthrough: 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 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:::awsexamplebucket1/*", "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.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PublicRead", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":["arn:aws:s3:::awsexamplebucket1/*"] } ] }
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.

Beschränken des Zugriffs auf bestimmte IP-Adressen

Im folgenden Beispiel wird jedem Benutzer die Berechtigungen 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 Amazon S3-Bedingungsschlüssel. Die aws:SourceIp IPv4-Werte verwenden die CIDR-Standardnotation. Weitere Informationen finden Sie unter Referenz zu IAM JSON-Richtlinienelementen in der 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:::awsexamplebucket1", "arn:aws:s3:::awsexamplebucket1/*" ], "Condition": { "NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

IPv4- und IPv6-Adressen zulassen

Wenn Sie mit der Verwendung von IPv6-Adressen beginnen, sollten Sie alle Richtlinien Ihrer Organisation zusätzlich zu den bereits vorhandenen IPv4-Adressbereichen mit Ihren IPv6-Adressbereichen 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 Buckets von 0s (z. B. 2032001:DB8:1234:5678::/64). Weitere Informationen finden Sie unter Bedingungsoperatoren für IP-Adressen 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:::awsexamplebucket1/*", "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 (awsexamplebucket1) gespeichert sind. Standardmäßig sind alle Amazon S3-Ressourcen privat, sodass nur das AWS-Konto, das die Ressourcen erstellt hat, auf sie zugreifen kann. 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:::awsexamplebucket1/*", "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 der Berechtigung für 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 abzurufen (zu lesen). Sie können eine CloudFront-OAI verwenden, um Benutzern den Zugriff auf Objekte in Ihrem Bereich über CloudFront, aber nicht direkt über Amazon S3 zu ermöglichen. Weitere Informationen finden Sie unter Einschränken des Zugriffs auf Amazon S3-Inhalte durch Verwenden einer Ursprungszugriffsidentität im Entwicklerhandbuch für Amazon CloudFront.

Bei der folgenden Richtlinie wird die ID der OAI als Principal der Richtlinie verwendet. Weitere Informationen zum Verwenden von S3-Bucket-Richtlinien zum Erteilen des Zugriffs auf eine CloudFront-OAI finden Sie unter Verwenden von Amazon S3-Bucket-Richtlinien im Entwicklerhandbuch für Amazon CloudFront.

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:::awsexamplebucket1/*" } ] }

Hinzufügen einer Bucket-Richtlinie zur Anforderung einer MFA

Amazon S3 unterstützt den MFA-geschützten API-Zugriff. Mittels dieser Funktion können Sie eine Multifaktor-Authentifizierung (MFA) für den Zugriff auf Ihre Amazon S3-Ressourcen durchsetzen. 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-Multifaktor-Authentifizierung. Sie können die MFA für alle Anfragen zum Zugriff auf Ihre Amazon S3-Ressourcen vorschreiben.

Sie können die MFA-Anforderung mit dem aws:MultiFactorAuthAge-Schlüssel in einer Bucket-Richtlinie durchsetzen. AWS Identity and Access Management (IAM) Benutzer können auf Amazon S3-Ressourcen zugreifen, indem sie temporäre Anmeldeinformationen verwenden, die von AWS Security Token Service (AWS STS) ausgegeben werden. Sie geben den MFA-Code zum Zeitpunkt der AWS STS-Anfrage an.

Wenn Amazon S3 eine Anforderung mit Multifaktor-Authentifizierung 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 auf dem /taxdocuments-Ordner im awsexamplebucket1-Bucket, wenn die Anforderung nicht über die MFA authentifiziert wird. Um mehr über die MFA zu erfahren, lesen Sie Multifaktor-Authentifizierung (MFA) in AWS in IAM-Benutzerhandbuch.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::awsexamplebucket1/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 (awsexamplebucket1). Eine weitere Anweisung schränkt den Zugriff auf den awsexamplebucket1/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:::awsexamplebucket1/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

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:::awsexamplebucket1/taxdocuments/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::awsexamplebucket1/taxdocuments/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

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 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"} } } ] }

Gewähren von Berechtigungen für Amazon S3-Bestand und Amazon S3-Analysen

Der Amazon S3-Bestand erstellt Listen der Objekte in einem Amazon S3-Bucket, und der Amazon S3-Analyseexport erstellt 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 eine Bucket-Richtlinie für den Ziel-Bucket erstellen, wenn Sie den Bestand für einen Amazon S3-Bucket und den Analyseexport einrichten. Weitere Informationen finden Sie unter Amazon S3-Bestand und Amazon S3-Analyse – Speicherklassenanalyse.

Das folgende Beispiel für eine Bucket-Richtlinie erteilt die Amazon S3-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 einen Amazon S3-Bestand und einen Amazon S3-Analyseexport 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": "1234567890", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }