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.
Bucket-Richtlinien sind auf eine Größe von 20 KB beschränkt.
Mit dem AWS Policy Generator
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.
Themen
- Berechtigungen an mehrere Konten mit zusätzlichen Bedingungen erteilen
- Erteilen von Leseberechtigungen an einen anonymen Benutzer
- Beschränken des Zugriffs auf bestimmte IP-Adressen
- Beschränken des Zugriffs auf einen spezifischen HTTP-Referrer
- Erteilen einer Berechtigung an eine Amazon CloudFront OAI
- Hinzufügen einer Bucket-Richtlinie zur Anforderung einer MFA
- Erteilung von kontenübergreifenden Berechtigungen für das Hochladen von Objekten, wobei sichergestellt wird, dass der Bucket-Eigentümer volle Kontrolle besitzt
- Erteilen von Berechtigungen für Amazon S3 Inventory und Amazon S3 Analytics
- Erteilen von Berechtigungen für Amazon S3 Storage Lens
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.
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.
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.
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,
, 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 DOC-EXAMPLE-BUCKET
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:
-
Ersetzen Sie
EH1HDMB1FH2TC
durch die ID der OAI. Die ID der OAI finden Sie auf der Seite „Origin Access Identity“ (Ursprungszugriffsidentität)in der CloudFront-Konsole oder unter ListCloudFrontOriginAccessIdentities in der CloudFront-API. -
Ersetzen Sie
DOC-EXAMPLE-BUCKET
durch den Namen Ihres Amazon S3-Buckets.
{ "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 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
-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.
DOC-EXAMPLE-BUCKET
{ "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 (
). Eine weitere Anweisung schränkt den Zugriff auf den DOC-EXAMPLE-BUCKET
-Ordner im Bucket weiter ein, indem sie eine MFA erzwingt.
DOC-EXAMPLE-BUCKET
/taxdocuments
{ "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
/*",