Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Mit Amazon-S3-Bucket-Richtlinien können Sie den Zugriff auf Objekte in Ihren Buckets sichern, sodass nur Benutzer mit den entsprechenden Berechtigungen darauf zugreifen können. Sie können sogar verhindern, dass authentifizierte Benutzer ohne die entsprechenden Berechtigungen auf Ihre Amazon-S3-Ressourcen zugreifen.
Dieser Abschnitt veranschaulicht Beispiele für typische Anwendungsfälle für Bucket-Richtlinien. Diese Beispielrichtlinien verwenden
als Ressourcenwert. Wenn Sie diese Richtlinien testen möchten, ersetzen Sie die amzn-s3-demo-bucket
durch Ihre eigenen Informationen (z. B. Ihren Bucket-Namen). user input placeholders
Um einer Gruppe von Objekten Berechtigungen zu gewähren oder zu verweigern, können Sie Platzhalterzeichen (*
) in Amazon-Ressourcennamen (ARNs) und anderen Werten verwenden. Sie können beispielsweise den Zugriff auf Gruppen von Objekten steuern, die mit einem gemeinsamen Präfix beginnen oder mit einer bestimmten Erweiterung wie .html
enden.
Weitere Informationen zur AWS Identity and Access Management (IAM-) Richtliniensprache finden Sie unter. Richtlinien und Berechtigungen in Amazon S3
Weitere Informationen zu den Berechtigungen für S3-API-Operationen nach S3-Ressourcentypen finden Sie unter Erforderliche Berechtigungen für Amazon-S3-API-Operationen.
Anmerkung
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 diese Berechtigungen unter Verwendung der Konsole testet, finden Sie unter Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien.
Zusätzliche Ressourcen zur Erstellung von Bucket-Richtlinien umfassen Folgendes:
-
Eine Liste der IAM-Richtlinienaktionen, -Ressourcen und -Bedingungsschlüssel, die Sie beim Erstellen einer Bucket-Richtlinie verwenden können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3 in der Service-Authorization-Referenz.
-
Weitere Informationen zu den Berechtigungen für S3-API-Operationen nach S3-Ressourcentypen finden Sie unter Erforderliche Berechtigungen für Amazon-S3-API-Operationen.
-
Anleitungen zur Erstellung einer S3-Richtlinie finden Sie unter Hinzufügen einer Bucket-Richtlinie mit der Amazon-S3-Konsole.
-
Informationen zur Behebung von Fehlern mit einer Richtlinie finden Sie unter Problembehandlung beim Zugriff verweigert (403 Forbidden) Fehler in Amazon S3.
Themen
- Erteilen einer Leseberechtigung an einen öffentlichen anonymen Benutzer
- Erfordern von Verschlüsselung
- Verwaltung von Buckets mithilfe von Canned ACLs
- Verwaltung des Objektzugriffs mit Objektmarkierung
- Verwalten des Objektzugriffs mithilfe globaler Bedingungsschlüssel
- Verwalten des Zugriffs auf der Grundlage von HTTP- oder HTTPS-Anforderungen
- Verwalten des Benutzerzugriffs auf bestimmte Ordner
- Verwalten des Zugriffs für Zugriffsprotokolle
- Zugriff auf eine Amazon CloudFront OAI verwalten
- Verwalten des Zugriffs für Amazon S3 Storage Lens
- Verwalten von Berechtigungen für S3 Inventory, S3 Analytics und S3-Inventory-Berichte
- Verlangen von MFA
- Benutzer daran hindern, Objekte zu löschen
Erteilen einer Leseberechtigung an einen öffentlichen anonymen Benutzer
Sie können Ihre Richtlinieneinstellungen verwenden, um öffentlichen anonymen Benutzern Zugriff zu gewähren. Dies ist nützlich, wenn Sie Ihren Bucket als statische Website konfigurieren. Um öffentlichen anonymen Benutzern Zugriff gewähren zu können, müssen Sie die Block-Public-Access-Einstellungen für Ihren Bucket deaktivieren. Weitere Information dazu sowie zur erforderlichen Richtlinie finden Sie unter Festlegen von Berechtigungen für den Website-Zugriff. Informationen zum Einrichten restriktiverer Richtlinien für denselben Zweck finden Sie unter Wie kann ich öffentlichen Lesezugriff auf einige Objekte in meinem Amazon S3 S3-Bucket gewähren?
Standardmäßig blockiert Amazon S3 den öffentlichen Zugriff auf Ihr Konto und Ihre Buckets. Wenn Sie einen Bucket verwenden möchten, um eine statische Website zu hosten, können Sie diese Schritte verwenden, um Ihre Einstellungen für Block Public Access zu bearbeiten:
Warnung
Bevor Sie diesen Schritt ausführen, lesen Sie den Abschnitt Blockieren des öffentlichen Zugriffs auf Ihren Amazon-S3-Speicher, um sicherzustellen, dass Sie die mit dem Zulassen eines öffentlichen Zugriffs verbundenen Risiken kennen und akzeptieren. Wenn Sie die Einstellungen für Block Public Access deaktivieren, um Ihren Bucket öffentlich zu machen, kann jeder im Internet auf Ihren Bucket zugreifen. Wir empfehlen Ihnen, den gesamten öffentlichen Zugriff auf Ihre Buckets zu blockieren.
-
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie den Namen des Buckets aus, den Sie als statische Website konfiguriert haben.
-
Wählen Sie Permissions (Berechtigungen).
-
Wählen Sie unter Block public access (bucket settings) (Öffentlichen Zugriff blockieren (Bucket-Einstellungen)), die Option Edit (Bearbeiten).
-
Löschen Sie Block all public access (Gesamten öffentlichen Zugriff blockieren) und wählen Sie Save (Speichern).
Amazon S3 deaktiviert die Einstellungen für „Öffentlichen Zugriff blockieren“ für Ihren Bucket. Um eine öffentliche, statische Website zu erstellen, müssen Sie möglicherweise auch die Einstellungen für „Öffentlichen Zugriff blockieren“ für Ihr Konto bearbeiten, bevor Sie eine Bucket-Richtlinie hinzufügen. Wenn die Einstellungen „Öffentlichen Zugriff blockieren“ für Ihr Konto aktuell aktiviert sind, sehen Sie einen Hinweis unter „Öffentlichen Zugriff blockieren“ (Bucket-Einstellungen).
Erfordern von Verschlüsselung
Sie können eine serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS) -Schlüsseln (SSE-KMS) verlangen, wie in den folgenden Beispielen gezeigt.
SSE-KMS für alle in einen Bucket geschriebenen Objekte verlangen
Die folgende Beispielrichtlinie verlangt, dass jedes Objekt, das in den Bucket geschrieben wird, mit serverseitiger Verschlüsselung unter Verwendung von () -Schlüsseln AWS Key Management Service (SSE-KMS AWS KMS) verschlüsselt wird. Wenn das Objekt nicht mit SSE-KMS verschlüsselt ist, wird die Anforderung abgelehnt.
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [{
"Sid": "DenyObjectsThatAreNotSSEKMS
",
"Principal": "*",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "true"
}
}
}]
}
Erfordern von SSE-KMS mit einem bestimmten AWS KMS key für alle in einen Bucket geschriebenen Objekte
Die folgende Beispielrichtlinie verhindert, dass Objekte in den Bucket geschrieben werden, wenn sie nicht mit SSE-KMS unter Verwendung einer bestimmten KMS-Schlüssel-ID verschlüsselt sind. Selbst wenn die Objekte mit SSE-KMS verschlüsselt sind, indem ein Pro-Anfrage-Header oder eine Standardverschlüsselung für Buckets verwendet wird, können die Objekte nicht in den Bucket geschrieben werden, wenn sie nicht mit dem angegebenen KMS-Schlüssel verschlüsselt wurden. Stellen Sie sicher, dass Sie den in diesem Beispiel verwendeten KMS-Schlüssel-ARN durch Ihren eigenen KMS-Schlüssel-ARN ersetzen.
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [{
"Sid": "DenyObjectsThatAreNotSSEKMSWithSpecificKey
",
"Principal": "*",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*",
"Condition": {
"ArnNotEqualsIfExists": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-2
:111122223333
:key/01234567-89ab-cdef-0123-456789abcdef
"
}
}
}]
}
Verwaltung von Buckets mithilfe von Canned ACLs
Erteilen von Berechtigungen für mehrere Konten, um Objekte hochzuladen oder Objekte öffentlich zugänglich ACLs zu machen
Die folgende Beispielrichtlinie erteilt mehreren AWS-Konten die Berechtigungen s3:PutObject
und s3:PutObjectAcl
. Außerdem erfordert die Beispielrichtlinie, dass alle Anforderungen für diese Operationen die public-read
vordefinierte Zugriffssteuerungsliste (ACL) enthalten müssen. Weitere Informationen erhalten Sie unter Richtlinienaktionen für Amazon S3 und Richtlinienbedingungsschlüssel für Amazon S3.
Warnung
Mit der vordefinierten public-read
-ACL kann jeder Benutzer weltweit die Objekte in Ihrem Bucket sehen. Seien Sie vorsichtig, wenn Sie anonymen Zugriff auf Ihren Amazon-S3-Bucket gewähren oder die Block-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. Informationen zum Aktivieren der Einstellungen zum Blockieren des öffentlichen Zugriffs für das Hosten statischer Websites finden Sie unter Tutorial: Konfiguration einer statischen Website in Amazon S3.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPublicReadCannedAcl",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333
:root",
"arn:aws:iam::444455556666
:root"
]
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": [
"public-read"
]
}
}
}
]
}
Erteilung von kontoü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 einer anderen AWS-Konto Person das Hochladen von Objekten in Ihren Bucket ermöglichen und gleichzeitig sicherstellen können, dass Sie die volle Kontrolle über die hochgeladenen Objekte haben. Diese Richtlinie gewährt einer bestimmten Person AWS-Konto (
) nur dann die Möglichkeit, Objekte hochzuladen, wenn dieses Konto beim Upload 111122223333
bucket-owner-full-control
die gespeicherte ACL enthält. Die StringEquals
-Bedingung in der Richtlinie spezifiziert den s3:x-amz-acl
-Bedingungsschlüssel, um die vordefinierte ACL-Anforderung auszudrücken. Weitere Informationen finden Sie unter Richtlinienbedingungsschlüssel für Amazon S3.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PolicyForAllowUploadWithACL",
"Effect":"Allow",
"Principal":{"AWS":"111122223333
"},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::amzn-s3-demo-bucket
/*",
"Condition": {
"StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
}
}
]
}
Verwaltung des Objektzugriffs mit Objektmarkierung
Einem Benutzer nur das Lesen von Objekten gestatten, die einen bestimmten Tag-Schlüssel und -Wert besitzen
Die folgende Berechtigungsrichtlinie beschränkt einen Benutzer darauf, nur Objekte zu lesen, die den Tag-Schlüssel und -Wert environment: production
haben. Diese Richtlinie verwendet den s3:ExistingObjectTag
-Bedingungsschlüssel, um den Tag-Schlüssel und -Wert anzugeben.
{
"Version":"2012-10-17",
"Statement":[
{
"Principal":{
"AWS":"arn:aws:iam::111122223333
:role/JohnDoe
"
},
"Effect":"Allow",
"Action":[
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource":"arn:aws:s3:::amzn-s3-demo-bucket
/*",
"Condition":{
"StringEquals":{
"s3:ExistingObjectTag/environment":"production"
}
}
}
]
}
Einschränken, welche Objekt-Tag-Schlüssel Benutzer hinzufügen können
Die folgende Beispielrichtlinie erteilt einem Benutzer die Berechtigungen, die s3:PutObjectTagging
-Aktion auszuführen, die dem Benutzer gestattet, einem vorhandenen Objekt Markierungen hinzuzufügen. Die Bedingung verwendet den Bedingungsschlüssel s3:RequestObjectTagKeys
, um die zulässigen Tag-Schlüssel zu spezifizieren, z. B. Owner
oder CreationDate
. Weitere Informationen finden Sie unter Erstellen einer Bedingung, die mehrere Schlüsselwerte testet im IAM-Benutzerhandbuch.
Die Richtlinie stellt sicher, dass jeder in der Anfrage angegebene Tag-Schlüssel ein autorisierter Tag-Schlüssel ist. Der ForAnyValue
-Qualifizierer in der Bedingung stellt sicher, dass mindestens einer der spezifizierten Schlüssel in der Anfrage enthalten ist.
{
"Version": "2012-10-17",
"Statement": [
{"Principal":{"AWS":[
"arn:aws:iam::111122223333
:role/JohnDoe
"
]
},
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
/*"
],
"Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
}
}
}
]
}
Einen spezifischen Tag-Schlüssel und -Wert verlangen, wenn Benutzern erlaubt wird, Objekt-Tags hinzuzufügen
Die folgende Beispielrichtlinie erteilt einem Benutzer die Berechtigungen, die s3:PutObjectTagging
-Aktion auszuführen, die dem Benutzer gestattet, einem vorhandenen Objekt Markierungen hinzuzufügen. Die Bedingung verlangt, dass der Benutzer einen spezifischen Tag-Schlüssel (z. B.
) mit dem Wert Project
angibt.X
{
"Version": "2012-10-17",
"Statement": [
{"Principal":{"AWS":[
"arn:aws:iam::111122223333
:user/JohnDoe
"
]
},
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
/*"
],
"Condition": {"StringEquals": {"s3:RequestObjectTag/Project
": "X
"
}
}
}
]
}
Einem Benutzer nur das Hinzufügen mit einem bestimmten Tag-Schlüssel und -Wert erlauben
Die folgende Beispielrichtlinie gewährt einem Benutzer die Berechtigung, die s3:PutObject
-Aktion auszuführen, sodass er Objekte einem Bucket hinzufügen kann. Die Condition
-Anweisung schränkt die Tag-Schlüssel und -Werte jedoch ein, die für die hochgeladenen Objekte zulässig sind. In diesem Beispiel kann der Benutzer dem Bucket nur Objekte hinzufügen, die den spezifischen Tag-Schlüssel (
) mit dem Wert Department
haben.Finance
{
"Version": "2012-10-17",
"Statement": [{
"Principal":{
"AWS":[
"arn:aws:iam::111122223333
:user/JohnDoe
"
]
},
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
/*"
],
"Condition": {
"StringEquals": {
"s3:RequestObjectTag/Department
": "Finance
"
}
}
}]
}
Verwalten des Objektzugriffs mithilfe globaler Bedingungsschlüssel
Globale Bedingungsschlüssel sind Bedingungskontextschlüssel mit einem aws
Präfix. AWS-Services kann globale Bedingungsschlüssel oder dienstspezifische Schlüssel unterstützen, die das Dienstpräfix enthalten. Sie können das Condition
-Element einer JSON-Richtlinie verwenden, um Schlüssel in einer Anforderung mit Schlüsselwerten zu vergleichen, die Sie in Ihrer Richtlinie angeben.
Beschränken des Zugriffs nur auf Zugriffsprotokollbereitstellungen von Amazon S3 Server
Im folgenden Beispiel ist die Bucket-Richtlinie aws:SourceArnDer globale Bedingungsschlüssel wird verwendet, um den Amazon-Ressourcennamen (ARN) der Ressource zu vergleichen und eine service-to-service Anfrage mit dem ARN zu stellen, der in der Richtlinie angegeben ist. Sie können diesen globalen aws:SourceArn
-Bedingungsschlüssel verwenden, um zu verhindern, dass der Amazon-S3-Service bei Transaktionen zwischen Services als verwechselter Stellvertreter verwendet wird. Nur der Amazon-S3-Service darf dem Amazon-S3-Bucket Objekte hinzufügen.
Diese Bucket-Beispielrichtlinie gewährt nur dem Prinzipal des Protokollierungsservices (logging.s3.amazonaws.com
) s3:PutObject
-Berechtigungen.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPutObjectS3ServerAccessLogsPolicy
",
"Principal": {
"Service": "logging.s3.amazonaws.com"
},
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
-logs
/*",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "111111111111
"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET
"
}
}
},
{
"Sid": "RestrictToS3ServerAccessLogs
",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
-logs
/*",
"Condition": {
"ForAllValues:StringNotEquals": {
"aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com"
}
}
}
]
}
Erlauben des Zugriffs nur für Ihre Organisation
Wenn Sie möchten, dass alle IAM-Prinzipale, die auf eine Ressource zugreifen, von einem Standort AWS-Konto in Ihrer Organisation stammen (einschließlich des AWS Organizations Verwaltungskontos), können Sie den aws:PrincipalOrgID
globalen Bedingungsschlüssel verwenden.
Wenn Sie diese Art von Zugriff gewähren oder einschränken möchten, definieren Sie die aws:PrincipalOrgID
-Bedingung und legen Sie den Wert in der Bucket-Richtlinie auf Ihre Organisations-ID fest. Die Organisations-ID wird verwendet, um den Zugriff auf den Bucket zu kontrollieren. Wenn Sie die aws:PrincipalOrgID
-Bedingung verwenden, werden die Berechtigungen aus der Bucket-Richtlinie auch auf alle neuen Konten angewendet, die der Organisation hinzugefügt werden.
Hier ist ein Beispiel für eine auf Ressourcen basierende Bucket-Richtlinie, die Sie verwenden können, um bestimmten IAM-Prinzipalen in Ihrer Organisation direkten Zugriff auf Ihren Bucket zu erteilen. Durch das Hinzufügen des globalen Bedingungsschlüssels aws:PrincipalOrgID
zu Ihrer Bucket-Richtlinie muss sich das Prinzipal-Konto nun in Ihrer Organisation befinden, um Zugriff auf die Ressource zu erhalten. Selbst wenn Sie bei der Gewährung des Zugriffs versehentlich ein falsches Konto angeben, aws:PrincipalOrgID Der globale Bedingungsschlüssel dient als zusätzliche Absicherung. Wenn dieser globale Schüssel in einer Richtlinie verwendet wird, verhindert diese, dass alle Prinzipale außerhalb der angegebenen Organisation auf den Amazon-S3-Bucket zugreifen können. Nur Prinzipale von Konten in der aufgelisteten Organisation erhalten Zugriff auf die Ressource.
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowGetObject",
"Principal": {
"AWS": "*"
},
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": ["o-aa111bb222
"]
}
}
}]
}
Verwalten des Zugriffs auf der Grundlage von HTTP- oder HTTPS-Anforderungen
Beschränken des Zugriffs nur auf HTTPS-Anforderungen
Wenn Sie verhindern möchten, dass potenzielle Angreifer den Netzwerkverkehr manipulieren, können Sie HTTPS (TLS) verwenden, um nur verschlüsselte Verbindungen zuzulassen und gleichzeitig den Zugriff von HTTP-Anforderungen auf Ihren Bucket zu beschränken. Um festzustellen, ob es sich bei der Anfrage um HTTP oder HTTPS handelt, verwenden Sie den aws:SecureTransportglobaler Bedingungsschlüssel in Ihrer S3-Bucket-Richtlinie. Der aws:SecureTransport
-Bedingungsschlüssel überprüft, ob eine Anforderung über HTTP gesendet wurde.
Wenn eine Anforderung true
zurückgibt, wurde sie über HTTPS gesendet. Wenn eine Anforderung false
zurückgibt, wurde sie über HTTP gesendet. Sie können dann den Zugriff auf Ihren Bucket basierend auf dem gewünschten Anforderungsschema erlauben oder verweigern.
Im folgenden Beispiel verweigert die Bucket-Richtlinie ausdrücklich HTTP-Anforderungen.
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "RestrictToTLSRequestsOnly",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
",
"arn:aws:s3:::amzn-s3-demo-bucket
/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}]
}
Beschränken des Zugriffs auf einen spezifischen HTTP-Referer
Angenommen, Sie haben eine Website mit dem Domänennamen
oder www.example.com
mit Links zu Fotos und Videos, die in Ihrem Bucket namens example.com
gespeichert sind. Standardmäßig sind alle Amazon S3 S3-Ressourcen privat, sodass nur derjenige AWS-Konto darauf zugreifen kann, der die Ressourcen erstellt hat. amzn-s3-demo-bucket
Wenn Sie Lesezugriff auf diese Objekte von Ihrer Website aus erlauben möchten, können Sie eine Bucket-Richtlinie hinzufügen, die die s3:GetObject
-Berechtigung mit der Bedingung erlaubt, dass die GET
-Anforderung von bestimmten Webseiten stammen muss. Die folgende Richtlinie schränkt Anforderungen ein, indem die Bedingung StringLike
zusammen mit dem aws:Referer
-Bedingungsschlüssel verwendet wird.
{
"Version":"2012-10-17",
"Id":"HTTP referer policy example",
"Statement":[
{
"Sid":"Allow only GET requests originating from www.example.com and example.com.",
"Effect":"Allow",
"Principal":"*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":"arn:aws:s3:::amzn-s3-demo-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 Anforderung enthalten.
Warnung
Wir empfehlen, bei der Verwendung des aws:Referer
-Bedingungsschlüssels vorsichtig zu sein. Ein öffentlich bekannter HTTP-Referer-Header-Wert sollte möglichst nicht eingeschlossen werden. Nicht autorisierte Parteien können mit modifizierten oder benutzerdefinierten Browsern einen beliebigen aws:Referer
-Wert ihrer Wahl bereitstellen. Verwenden Sie es daher nicht, aws:Referer
um zu verhindern, dass Unbefugte direkte AWS Anfragen stellen.
Der aws:Referer
-Bedingungsschlüssel wird nur bereitgestellt, damit Kunden ihre digitalen, in Amazon S3 gespeicherten Inhalte vor der Referenzierung auf nicht autorisierte Drittanbieter-Websites schützen können. Weitere Informationen finden Sie unter aws:Refererim IAM-Benutzerhandbuch.
Verwalten des Benutzerzugriffs auf bestimmte Ordner
Erteilen des Benutzerzugriffs auf bestimmte Ordner
Angenommen, Sie versuchen, Benutzern Zugriff auf einen bestimmten Ordner zu gewähren. Wenn der IAM-Benutzer und der S3-Bucket zu demselben gehören AWS-Konto, können Sie dem Benutzer mithilfe einer IAM-Richtlinie Zugriff auf einen bestimmten Bucket-Ordner gewähren. Bei diesem Ansatz müssen Sie Ihre Bucket-Richtlinie nicht aktualisieren, um Zugriff zu gewähren. Sie können die IAM-Richtlinie einer IAM-Rolle hinzufügen, zu der mehrere Benutzer wechseln können.
Wenn die IAM-Identität und der S3-Bucket unterschiedlichen Kategorien angehören AWS-Konten, müssen Sie sowohl in der IAM-Richtlinie als auch in der Bucket-Richtlinie kontoübergreifenden Zugriff gewähren. Weitere Informationen zum Gewähren von kontoübergreifendem Zugriff finden Sie unter Bucket-Eigentümer erteilt kontoübergreifende Bucket-Berechtigungen.
Die folgende Bucket-Beispielrichtlinie gewährt
vollen Konsolenzugriff nur auf seinen Ordner (JohnDoe
home/
). Indem Sie einen JohnDoe
/home
-Ordner erstellen und Ihren Benutzern die entsprechenden Berechtigungen gewähren, können sich mehrere Benutzer einen einzelnen Bucket teilen. Diese Richtlinie besteht aus drei Allow
-Anweisungen:
-
: Erlaubt dem Benutzer (AllowRootAndHomeListingOfCompanyBucket
), Objekte auf der Stammebene desJohnDoe
-Buckets und imamzn-s3-demo-bucket
home
-Ordner aufzulisten. Diese Anweisung erlaubt dem Benutzer außerdem, mithilfe der Konsole nach dem Präfixhome/
zu suchen. -
: Erlaubt dem Benutzer (AllowListingOfUserFolder
), alle Objekte imJohnDoe
home/
-Ordner und entsprechenden Unterordnern aufzulisten.JohnDoe
/ -
: Erlaubt dem Benutzer, alle Amazon-S3-Aktionen durchzuführen, indemAllowAllS3ActionsInUserFolder
Read
-,Write
- undDelete
-Berechtigungen gewährt werden. Die Berechtigungen sind auf den Home-Ordner des Bucket-Eigentümers beschränkt.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRootAndHomeListingOfCompanyBucket
",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333
:user/JohnDoe
"
]
},
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::amzn-s3-demo-bucket
"],
"Condition": {
"StringEquals": {
"s3:prefix": ["", "home/", "home/JohnDoe
"],
"s3:delimiter": ["/"]
}
}
},
{
"Sid": "AllowListingOfUserFolder
",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333
:user/JohnDoe
"
]
},
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::amzn-s3-demo-bucket
"],
"Condition": {
"StringLike": {
"s3:prefix": ["home/JohnDoe
/*"]
}
}
},
{
"Sid": "AllowAllS3ActionsInUserFolder
",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333
:user/JohnDoe
"
]
},
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::amzn-s3-demo-bucket
/home/JohnDoe
/*"]
}
]
}
Verwalten des Zugriffs für Zugriffsprotokolle
Gewähren des Zugriffs auf Application Load Balancer, um Zugriffsprotokolle zu aktivieren
Wenn Sie die Zugriffsprotokollierung für Ihren Application Load Balancer aktivieren, müssen Sie den Namen des S3-Buckets angeben, in dem der Load Balancer die Protokolle speichert. Dem Bucket muss eine Richtlinie angefügt sein, die Elastic Load Balancing die Berechtigung zum Schreiben in den Bucket gewährt.
Im folgenden Beispiel gewährt die Bucket-Richtlinie Elastic Load Balancing (ELB) die Berechtigung, die Zugriffsprotokolle in den Bucket zu schreiben:
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"AWS": "arn:aws:iam::elb-account-id
:root"
},
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/prefix
/AWSLogs/111122223333
/*"
}
]
}
Anmerkung
Stellen Sie sicher, dass Sie
durch die AWS-Konto -ID für Elastic Load Balancing für Ihre AWS-Region ersetzen. Eine Liste der Regionen von Elastic Load Balancing finden Sie unter Hinzufügen von Richtlinien zu Ihrem S3-Bucket im Benutzerhandbuch für Elastic Load Balancing.elb-account-id
Wenn Ihre Region AWS-Region nicht in der Liste der unterstützten Elastic Load Balancing Balancing-Regionen aufgeführt ist, verwenden Sie die folgende Richtlinie, die dem angegebenen Log-Lieferdienst Berechtigungen gewährt.
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"Service": "logdelivery.elasticloadbalancing.amazonaws.com"
},
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/prefix
/AWSLogs/111122223333
/*"
}
]
}
Stellen Sie anschließend sicher, dass Sie Ihre Zugriffsprotokolle von Elastic Load Balancing konfigurieren, indem Sie sie aktivieren. Sie können Ihre Bucket-Berechtigungen überprüfen, indem Sie eine Testdatei erstellen.
Zugriff auf eine Amazon CloudFront OAI verwalten
Einer Amazon CloudFront OAI die Erlaubnis erteilen
Die folgende Beispiel-Bucket-Richtlinie gewährt einer CloudFront Origin Access Identity (OAI) -Berechtigung, alle Objekte in Ihrem S3-Bucket abzurufen (zu lesen). Sie können eine CloudFront OAI verwenden, um Benutzern den Zugriff auf Objekte in Ihrem Bucket zu ermöglichen, CloudFront aber nicht direkt über Amazon S3. Weitere Informationen finden Sie unter Beschränken des Zugriffs auf Amazon S3 S3-Inhalte mithilfe einer Origin-Zugriffsidentität im Amazon CloudFront Developer Guide.
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 Migration von Origin Access Identity (OAI) zu Origin Access Control (OAC) im Amazon Developer Guide. CloudFront
Zur Verwendung dieses Beispiels gehen Sie wie folgt vor:
-
Ersetzen Sie
mit der OAI-ID. Die ID der OAI finden Sie auf der Origin-Zugriffsidentitäts-SeiteEH1HDMB1FH2TC
auf der Konsole oder verwenden Sie CloudFront ListCloudFrontOriginAccessIdentitiesin der CloudFront API. -
Ersetzen Sie
durch den Namen von Ihrem Bucket.amzn-s3-demo-bucket
{
"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:::amzn-s3-demo-bucket
/*"
}
]
}
Verwalten des Zugriffs für Amazon S3 Storage Lens
Erteilen von Berechtigungen für Amazon S3 Storage Lens
S3 Storage Lens aggregiert Ihre Metriken und zeigt die Informationen im Abschnitt Konto-Snapshot der Seite Buckets der Amazon-S3-Konsole an. S3 Storage Lens bietet außerdem ein interaktives Dashboard, mit dem Sie Erkenntnisse und Trends visualisieren, Ausreißer kennzeichnen und Empfehlungen zur Optimierung der Speicherkosten erhalten und bewährte Datenschutzmethoden anwenden können. Das Dashboard verfügt über Drilldown-Optionen, um Erkenntnisse auf Organisations-, Konto-, AWS-Region-, Speicherklassen-, Bucket-, Präfix- oder Objekt- oder Storage-Lens-Gruppenebene zu generieren. Sie können auch einen täglichen Metrikexport als CSV versenden oder Parquet in einen S3-Bucket formatieren.
S3 Storage Lens kann Ihre aggregierten Speichernutzungsmetriken in einen Amazon-S3-Bucket exportieren, um sie weiter zu analysieren. Der Bucket, in dem S3 Storage Lens seine Metrikexporte speichert, wird als Ziel-Bucket bezeichnet. Sie müssen eine Bucket-Richtlinie für den Ziel-Bucket haben, wenn Sie Ihren Metrikexport in S3 Storage Lens einrichten. Weitere Informationen finden Sie unter Bewerten Ihrer Speicheraktivität und -nutzung mit Amazon S3 Storage Lens.
Die folgende Bucket-Beispielrichtlinie erteilt Amazon S3 die Berechtigung, Objekte (PUT
-Anforderungen) in einen Ziel-Bucket zu schreiben. Sie verwenden eine solche Bucket-Richtlinie für den Ziel-Bucket, wenn Sie einen S3-Storage-Lens-Metrik-Export einrichten.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3StorageLensExamplePolicy",
"Effect": "Allow",
"Principal": {
"Service": "storage-lens.s3.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-destination-bucket
/destination-prefix
/StorageLens/111122223333
/*"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceAccount": "111122223333
",
"aws:SourceArn": "arn:aws:s3:region-code
:111122223333
:storage-lens/storage-lens-dashboard-configuration-id
"
}
}
}
]
}
Verwenden Sie die folgende Änderung an der vorherigen Resource
-Anweisung der Bucket-Richtlinie beim Einrichten eines Metrikexports von S3 Storage Lens auf Organisationsebene.
"Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket
/destination-prefix
/StorageLens/your-organization-id
/*",
Verwalten von Berechtigungen für S3 Inventory, S3 Analytics und S3-Inventory-Berichte
Gewähren von Berechtigungen für S3 Inventory und S3 Analytics
S3 Inventory erstellt Listen der Objekte in einem Bucket und der Speicherklassenanalyse-Export von S3 Analytics erstellt Ausgabedateien der in der Analyse verwendeten Daten. Der Bucket, dessen Objekte die Bestandserfassung auflistet, wird als Quell-Bucket bezeichnet. Der Bucket, in dem die Bestandsdatei und die Analyseexportdatei geschrieben werden, wird als Ziel-Bucket bezeichnet. Sie müssen eine Bucket-Richtlinie für den Ziel-Bucket erstellen, wenn Sie den Bestand oder einen Analyseexport einrichten. Weitere Informationen erhalten Sie unter Katalogisieren und Analysieren Ihrer Daten mit S3 Inventory und Amazon S3 analytics – Speicherklassen-Analyse.
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 (PUT
-Anforderungen). Sie verwenden eine solche Bucket-Richtlinie für den Ziel-Bucket, wenn Sie einen S3-Inventory- und 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:::DOC-EXAMPLE-DESTINATION-BUCKET
/*"
],
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
"
},
"StringEquals": {
"aws:SourceAccount": "111122223333
",
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
Steuern der Erstellung der Konfiguration von S3-Inventory-Berichten
Katalogisieren und Analysieren Ihrer Daten mit S3 Inventory erstellt Listen der Objekte in einem S3-Bucket sowie die Metadaten für jedes Objekt. Die s3:PutInventoryConfiguration
-Berechtigung ermöglicht es einem Benutzer, eine Bestandskonfiguration zu erstellen, die alle verfügbaren Objektmetadatenfelder enthält, und den Ziel-Bucket zum Speichern des Bestands anzugeben. Ein Benutzer mit Lesezugriff auf Objekte im Ziel-Bucket kann auf alle Objektmetadatenfelder zugreifen, die im Bestandsbericht verfügbar sind. Weitere Informationen über die Metadatenfelder, die in S3 Inventory verfügbar sind, finden Sie unterAmazon-S3-Inventory-Liste.
Wenn Sie einen Benutzer daran hindern möchten, einen S3-Inventory-Bericht zu konfigurieren, entfernen Sie die s3:PutInventoryConfiguration
-Berechtigung des Benutzers.
Einige Objektmetadatenfelder in S3-Inventory-Berichtskonfigurationen sind optional, was bedeutet, dass sie standardmäßig verfügbar sind, aber eingeschränkt werden können, wenn Sie einem Benutzer die s3:PutInventoryConfiguration
-Berechtigung erteilen. Mithilfe des s3:InventoryAccessibleOptionalFields
-Bedingungsschlüssels können Sie steuern, ob Benutzer diese optionalen Metadatenfelder in ihre Berichte aufnehmen können. Eine Liste der optionalen Metadatenfelder, die in S3 Inventory verfügbar sind, finden Sie unter OptionalFieldsin der Amazon Simple Storage Service API-Referenz.
Um einem Benutzer die Erlaubnis zu erteilen, eine Bestandskonfiguration mit bestimmten optionalen Metadatenfeldern zu erstellen, verwenden Sie den s3:InventoryAccessibleOptionalFields
-Bedingungsschlüssel, um die Bedingungen in Ihrer Bucket-Richtlinie zu verfeinern.
Die folgende Beispielrichtlinie gewährt einem Benutzer (
) unter bestimmten Bedingungen die Berechtigung, eine Bestandskonfiguration zu erstellen. Die Ana
ForAllValues:StringEquals
-Bedingung in der Richtlinie verwendet den s3:InventoryAccessibleOptionalFields
-Bedingungsschlüssel, um die beiden zulässigen optionalen Metadatenfelder anzugeben, nämlich Size
undStorageClass
. Wenn
also eine Inventarkonfiguration erstellt, sind die einzigen optionalen Metadatenfelder, die sie einbeziehen kann, Ana
Size
undStorageClass
.
{
"Id": "InventoryConfigPolicy",
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowInventoryCreationConditionally",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333
:user/Ana
"
},
"Action":
"s3:PutInventoryConfiguration",
"Resource":
"arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
",
"Condition": {
"ForAllValues:StringEquals": {
"s3:InventoryAccessibleOptionalFields": [
"Size",
"StorageClass"
]
}
}
}
]
}
Um einen Benutzer daran zu hindern, einen S3-Inventory-Bericht zu konfigurieren, der bestimmte optionale Metadatenfelder enthält, fügen Sie der Bucket-Richtlinie für den Quell-Bucket eine explizite Deny
-Anweisung hinzu. Die folgende Beispiel-Bucket-Richtlinie verbietet dem Benutzer
, eine Bestandskonfiguration im Quell-Bucket Ana
zu erstellen, die die optionalen Metadatenfelder DOC-EXAMPLE-SOURCE-BUCKET
ObjectAccessControlList
oder ObjectOwner
enthält. Der Benutzer
kann weiterhin eine Bestandskonfiguration mit anderen optionalen Metadatenfeldern erstellen.Ana
{
"Id": "InventoryConfigSomeFields",
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowInventoryCreation",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333
:user/Ana
"
},
"Action": "s3:PutInventoryConfiguration",
"Resource":
"arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
",
},
{
"Sid": "DenyCertainInventoryFieldCreation",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::111122223333
:user/Ana
"
},
"Action": "s3:PutInventoryConfiguration",
"Resource":
"arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
",
"Condition": {
"ForAnyValue:StringEquals": {
"s3:InventoryAccessibleOptionalFields": [
"ObjectOwner",
"ObjectAccessControlList"
]
}
}
}
]
}
Anmerkung
Die Verwendung des s3:InventoryAccessibleOptionalFields
-Bedingungsschlüssels in Bucket-Richtlinien hat keinen Einfluss auf die Bereitstellung von Bestandsberichten, die auf den vorhandenen Bestandskonfigurationen basieren.
Wichtig
Wir empfehlen die Verwendung von ForAllValues
mit einem Allow
-Effekt oder ForAnyValue
mit einem Deny
-Effekt, wie in den vorherigen Beispielen gezeigt.
Verwenden Sie die Option ForAllValues
weder mit einem Deny
-Effekt noch ForAnyValue
mit einem Allow
-Effekt, da diese Kombinationen zu restriktiv sein und das Löschen der Bestandskonfiguration blockieren können.
Weitere Informationen zu den Bedingungssatzoperatoren ForAllValues
und ForAnyValue
finden Sie unter Mehrwertige Kontextschlüssel im IAM-Benutzerhandbuch.
Verlangen von 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 Multi-Faktor-Authentifizierung bietet ein zusätzliches Maß an Sicherheit, das Sie auf Ihre AWS Umgebung anwenden können. Die MFA 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
Verwenden Sie zum Erzwingen der MFA-Anforderung den aws:MultiFactorAuthAge
-Bedingungsschlüssel in einer Bucket-Richtlinie. IAM-Benutzer können mithilfe temporärer Anmeldeinformationen, die von AWS Security Token Service (AWS STS) ausgestellt wurden, auf Amazon S3 S3-Ressourcen zugreifen. Sie geben den MFA-Code zum Zeitpunkt der AWS STS
-Anfrage an.
Wenn Amazon S3 eine Anforderung mit Multi-Factor Authentication empfängt, liefert der aws:MultiFactorAuthAge
-Bedingungsschlü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 gezeigt.
Die Beispielrichtlinie verweigert jede Amazon-S3-Operation am
-Ordner in dem /taxdocuments
-Bucket, wenn die Anforderung nicht über die MFA authentifiziert wird. Weitere Informationen über die MFA finden Sie unter Using Multi-Factor Authentication (MFA) (Verwenden der Multi-Factor-Authentifizierung (MFA)) in AWS im IAM-Benutzerhandbuch.amzn-s3-demo-bucket
{
"Version": "2012-10-17",
"Id": "123",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/taxdocuments
/*",
"Condition": { "Null": { "aws:MultiFactorAuthAge": true }}
}
]
}
Die Null
-Bedingung im Condition
-Block wird zu true
ausgewertet, wenn der aws:MultiFactorAuthAge
-Bedingungsschlüsselwert null ist, d. h., die temporären Anmeldeinformationen in der Anforderung wurden ohne ein MFA-Gerät erstellt.
Die folgende Bucket-Richtlinie ist eine Erweiterung der vorhergehenden Bucket-Richtlinie. Die folgende Richtlinie umfasst zwei Richtlinienanweisungen. Eine Anweisung gewährt jedem die s3:GetObject
-Berechtigung für einen Bucket (
). Eine weitere Anweisung schränkt den Zugriff auf den amzn-s3-demo-bucket
-Ordner im Bucket weiter ein, indem sie eine MFA erzwingt. amzn-s3-demo-bucket
/taxdocuments
{
"Version": "2012-10-17",
"Id": "123",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/taxdocuments
/*",
"Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
},
{
"Sid": "",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*"
}
]
}
Optional können Sie eine numerische Bedingung verwenden, um die Gültigkeitsdauer des aws:MultiFactorAuthAge
-Schlüssels zu beschränken. Die Dauer, die Sie für den aws:MultiFactorAuthAge
-Schlüssel angeben, 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:::amzn-s3-demo-bucket
/taxdocuments
/*",
"Condition": {"Null": {"aws:MultiFactorAuthAge": true }}
},
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/taxdocuments
/*",
"Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }}
},
{
"Sid": "",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*"
}
]
}
Benutzer daran hindern, Objekte zu löschen
Standardmäßig besitzen Benutzer keine Berechtigungen. Wenn Sie Richtlinien erstellen, erteilen Sie Benutzern möglicherweise Berechtigungen, die Sie nicht erteilen möchten. Um solche Berechtigungslücken zu vermeiden, können Sie eine strengere Zugriffsrichtlinie schreiben, indem Sie eine explizite Zugriffsverweigerung hinzufügen.
Um Benutzer oder Konten ausdrücklich daran zu hindern, Objekte zu löschen, müssen Sie die folgenden Aktionen zu einer Bucket-Richtlinie hinzufügen: s3:DeleteObject
-, s3:DeleteObjectVersion
- und s3:PutLifecycleConfiguration
-Berechtigungen. Alle drei Aktionen sind erforderlich, da Sie Objekte entweder durch explizites Aufrufen der DELETE Object
-API-Operationen löschen können oder indem Sie ihre Lebenszykluskonfiguration (siehe Verwalten des Lebenszyklus von Objekten) so einrichten, dass Amazon S3 die Objekte entfernt, wenn ihre Lebensdauer abläuft.
Im folgenden Richtlinienbeispiel verweigern Sie dem Benutzer
ausdrücklich MaryMajor
DELETE Object
Berechtigungen. Eine explizite Deny
-Anweisung überschreibt immer jede andere gewährte Berechtigung.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-bucket1
/*123456789012
:user/" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] } ] }
amzn-s3-demo-bucket1
/*