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.
Beispiele für Bucket-Richtlinien mit Bedingungsschlüsseln
Sie können die Sprache der Zugriffsrichtlinie verwenden, um Bedingungen anzugeben, wenn Sie Berechtigungen erteilen. Sie können das optionale Condition
-Element oder den Condition
-Block verwenden, um anzugeben, unter welchen Bedingungen eine Richtlinie wirksam ist.
Richtlinien, die Amazon-S3-Bedingungsschlüssel für Objekt- und Bucket-Vorgänge verwenden, finden Sie in den folgenden Beispielen. Weitere Informationen über Bedingungsschlüssel finden Sie unter Richtlinienbedingungsschlüssel für Amazon S3. Eine vollständige Liste der Amazon-S3-Aktionen, -Bedingungsschlüssel und -Ressourcen, die Sie in Richtlinien angeben 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.
Beispiele: Amazon-S3-Bedingungsschlüssel für Objektoperationen
Die folgenden Beispiele zeigen, wie Sie Amazon-S3‑spezifische Bedingungsschlüssel für Objektoperationen verwenden können. Eine vollständige Liste der Amazon-S3-Aktionen, -Bedingungsschlüssel und -Ressourcen, die Sie in Richtlinien angeben 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.
Einige der Beispielrichtlinien zeigen, wie Sie Bedingungsschlüssel mit PUT Object-Vorgänge verwenden können. PUT Object-Vorgänge ermöglichen für Access Control List (ACL) spezifische Header, mit denen Sie ACL-basierte Berechtigungen erteilen können. Durch die Verwendung dieser Bedingungsschlüssel können Sie eine Bedingung festlegen, die bestimmte Zugriffsberechtigungen erfordert, wenn der Benutzer ein Objekt hochlädt. Sie können im Rahmen des Vorgangs auch ACL-basierte Berechtigungen gewähren. PutObjectAcl Weitere Informationen finden Sie PutObjectAclin der Amazon S3 Amazon Simple Storage Service API-Referenz. Weitere Informationen zu finden ACLs Sie unterZugriffskontrolllisten (ACL) – Übersicht.
Themen
- Beispiel 1: Gewähren einer s3:PutObject-Berechtigung, die erfordert, dass Objekte mit serverseitiger Verschlüsselung gespeichert werden.
- Beispiel 2: Erteilen der s3:PutObject-Berechtigung zum Kopieren von Objekten mit einer Einschränkung auf die Kopierquelle
- Beispiel 3: Gewähren des Zugriffs auf eine bestimmte Version eines Objekts
- Beispiel 4: Erteilen von Berechtigungen basierend auf Objekt-Tags
- Beispiel 5: Beschränken des Zugriffs durch die AWS-Konto -ID des Bucket-Eigentümers
- Beispiel 6: Mindestanforderung für die TLS-Version
- Beispiel 7: Ausschließen bestimmter Prinzipale aus einer Deny-Anweisung
- Beispiel 8: Erzwingen, dass Clients Objekte auf der Grundlage von Objektschlüsselnamen unter bestimmten Bedingungen hochladen oder ETags
Beispiel 1: Gewähren einer s3:PutObject
-Berechtigung, die erfordert, dass Objekte mit serverseitiger Verschlüsselung gespeichert werden.
Angenommen, Konto A besitzt einen Bucket. Der Kontoadministrator möchte Jane, einer Benutzerin in Konto A, die Berechtigung erteilen, Objekte hochzuladen, unter der Bedingung, dass Jane stets eine serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) anfordert. Der Administrator von Konto A kann für diesen Zweck, wie gezeigt, mit dem Bedingungsschlüssel s3:x-amz-server-side-encryption
arbeiten. Das Schlüssel-Wert-Paar im folgenden Condition
-Block gibt den s3:x-amz-server-side-encryption
-Bedingungsschlüssel und SSE-S3 (AES256
) als Verschlüsselungstyp an:
"Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" }}
Wenn Sie diese Berechtigung mit dem testen AWS CLI, müssen Sie die erforderliche Verschlüsselung mithilfe des --server-side-encryption
Parameters hinzufügen, wie im folgenden Beispiel gezeigt. Wenn Sie diese Beispielbefehl verwenden möchten, ersetzen Sie
durch Ihre Informationen. user input
placeholders
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyHappyFace.jpg
--bodyc:\HappyFace.jpg
--server-side-encryption "AES256
" --profileAccountAadmin
Beispiel 2: Erteilen der s3:PutObject
-Berechtigung zum Kopieren von Objekten mit einer Einschränkung auf die Kopierquelle
Wenn Sie in einer PUT
Objektanforderung ein Quellobjekt angeben, handelt es sich bei der Anforderung um einen Kopiervorgang (siehe CopyObject). Dementsprechend kann der Bucket-Besitzer einem Benutzer die Erlaubnis erteilen, Objekte mit Einschränkungen in Bezug auf die Quelle zu kopieren, zum Beispiel:
-
Erlauben Sie das Kopieren von Objekten nur aus dem angegebenen Quell-Bucket (zum Beispiel
).amzn-s3-demo-source-bucket
-
Erlauben Sie das Kopieren von Objekten aus dem angegebenen Quell-Bucket und nur von Objekten, deren Schlüsselnamen-Präfix mit einem bestimmten Präfix beginnt, wie z. B.
(zum Beispielpublic/
).amzn-s3-demo-source-bucket
/public/*
-
Erlauben Sie das Kopieren nur eines bestimmten Objekts aus dem Quell-Bucket (zum Beispiel
).amzn-s3-demo-source-bucket
/example.jpg
Die folgende Bucket-Richtlinie erteilt einem Benutzer
die Dave
s3:PutObject
-Berechtigung. Diese Richtlinie erlaubt es ihm, Objekte nur unter der Bedingung zu kopieren, dass die Anforderung den s3:x-amz-copy-source
-Header enthält und der Headerwert das /
-Schlüsselnamenpräfix angibt. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie amzn-s3-demo-source-bucket
/public/*
durch Ihre eigenen Informationen.user
input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "cross-account permission to user in your own account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-source-bucket
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "
amzn-s3-demo-source-bucket
amzn-s3-demo-source-bucket
/public/*
" } } } ] }
Testen Sie die Richtlinie mit dem AWS CLI
Sie können die Berechtigung mit dem AWS CLI copy-object
Befehl testen. Sie geben die Quelle an, indem Sie den Parameter --copy-source
hinzufügen. Das Schlüsselnamenpräfix muss dem Präfix entsprechen, das in der Richtlinie zulässig ist. Sie müssen die Anmeldeinformationen des Benutzers Dave mit dem Parameter --profile
angeben. Weitere Informationen zur Einrichtung von finden Sie unter Entwickeln mit Amazon S3 mithilfe der AWS CLI in der Amazon S3 S3-API-Referenz. AWS CLI
aws s3api copy-object --bucket
--key
amzn-s3-demo-source-bucket
HappyFace.jpg
--copy-source
amzn-s3-demo-source-bucket
/public/PublicHappyFace1.jpg
--profileAccountADave
Erteilen der Berechtigung, nur ein bestimmtes Objekt zu kopieren
Die vorherige Richtlinie verwendet die Bedingung StringNotLike
. Um die Berechtigung zu erteilen, nur ein bestimmtes Objekt zu kopieren, müssen Sie die Bedingung von StringNotLike
zu StringNotEquals
ändern und dann den genauen Objektschlüssel angeben, wie im folgenden Beispiel gezeigt. Wenn Sie diese Beispielbefehl verwenden möchten, ersetzen Sie
durch Ihre Informationen.user input
placeholders
"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "
amzn-s3-demo-source-bucket
/public/PublicHappyFace1.jpg
" } }
Beispiel 3: Gewähren des Zugriffs auf eine bestimmte Version eines Objekts
Angenommen, Konto A besitzt einen Bucket mit aktivierter Versionsverwaltung. Der Bucket beinhaltet mehrere Versionen des Objekts
. Der Administrator von Konto A möchte nun dem Benutzer HappyFace.jpg
die Berechtigung erteilen, nur eine bestimmte Version des Objekts zu erhalten. Der Kontoadministrator kann dies bewerkstelligen, indem er dem Benutzer Dave
bedingt die Dave
s3:GetObjectVersion
‑Berechtigung gewährt, wie im folgenden Beispiel gezeigt. Das Schlüssel-Wert-Paar im Block Condition
gibt den Bedingungsschlüssel s3:VersionId
an. In diesem Fall muss
die genaue Objektversions-ID kennen, um das Objekt aus dem angegebenen Bucket abzurufen. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie Dave
durch Ihre eigenen Informationen.user input
placeholders
Weitere Informationen finden Sie unter GetObjectin der Amazon Simple Storage Service API-Referenz.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave
" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/HappyFace.jpg
" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave
" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/HappyFace.jpg
", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e
" } } } ] }
Testen Sie die Richtlinie mit dem AWS CLI
Sie können die Berechtigungen in dieser Richtlinie testen, indem Sie den AWS CLI get-object
Befehl mit dem --version-id
Parameter verwenden, um die spezifische Objektversion zu identifizieren, die abgerufen werden soll. Der Befehl ruf die angegebene Version des Objekts ab und speichert sie in der
-Datei.OutputFile.jpg
aws s3api get-object --bucket
--key
amzn-s3-demo-bucket
HappyFace.jpg
OutputFile.jpg
--version-idAaaHbAQitwiL_h47_44lRO2DDfLlBO5e
--profileAccountADave
Beispiel 4: Erteilen von Berechtigungen basierend auf Objekt-Tags
Beispiele für die Verwendung von Objektmarkierungs-Bedingungsschlüsseln mit Amazon-S3-Operationen finden Sie unter Markierungs- und Zugriffskontrollrichtlinien.
Beispiel 5: Beschränken des Zugriffs durch die AWS-Konto -ID des Bucket-Eigentümers
Sie können entweder den s3:ResourceAccount
Bedingungsschlüssel aws:ResourceAccount
oder verwenden, um IAM- oder Virtual Private Cloud (VPC) -Endpunktrichtlinien zu schreiben, die den Benutzer-, Rollen- oder Anwendungszugriff auf die Amazon S3 S3-Buckets einschränken, die einer bestimmten ID gehören. AWS-Konto Sie können diese Bedingungsschlüssel verwenden, wenn Sie Clients in Ihrer VPC daran hindern möchten, auf Buckets zuzugreifen, die Ihnen nicht gehören.
Beachten Sie jedoch, dass einige AWS Dienste auf den Zugriff auf verwaltete Buckets angewiesen sind. AWS Daher kann es auch den Zugriff auf diese Ressourcen beeinflussen, wenn Sie den Schlüssel aws:ResourceAccount
oder s3:ResourceAccount
in Ihrer IAM-Richtlinie verwenden. Weitere Informationen finden Sie in den folgenden Ressourcen:
-
Beschränken des Zugriffs auf Buckets in einem bestimmten AWS-Konto im AWS PrivateLink -Handbuch
-
Beschränken des Zugriffs auf Buckets, die Amazon ECR verwendet im Amazon-ECR-Leitfaden
-
Geben Sie im Handbuch den erforderlichen Zugriff auf Systems Manager für AWS verwaltete Amazon S3 S3-Buckets an AWS Systems Manager
Weitere Informationen zu den aws:ResourceAccount
- und s3:ResourceAccount
-Bedingungsschlüsseln sowie Beispiele zu ihrer Verwendung finden Sie unter Limit access to Amazon S3 buckets owned by specific AWS-Konten
Beispiel 6: Mindestanforderung für die TLS-Version
Sie können den Bedingungsschlüssel s3:TlsVersion
verwenden, um IAM-, Virtual Private Cloud Endpoint (VPCE)- oder Bucket-Richtlinien zu schreiben, die den Zugriff von Benutzern oder Anwendungen auf Amazon-S3-Buckets basierend auf der vom Client verwendeten TLS-Version einschränken. Sie können diesen Bedingungsschlüssel verwenden, um Richtlinien zu schreiben, die eine minimale TLS-Version erfordern.
Die folgende Beispiel-Bucket-Richtlinie verweigert PutObject
-Anforderungen von Clients mit einer TLS-Version, die älter als 1.2 ist, zum Beispiel 1.1 oder 1.0. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie
durch Ihre eigenen Informationen.user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }
amzn-s3-demo-bucket1
Die folgende Bucket-Richtlinie erlaubt PutObject
-Anforderungen von Clients mit einer TLS-Version neuer als 1.1, zum Beispiel 1.2, 1.3 oder neuer:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }
amzn-s3-demo-bucket1
Beispiel 7: Ausschließen bestimmter Prinzipale aus einer Deny
-Anweisung
Die folgende Bucket-Richtlinie verweigert den s3:GetObject
-Zugriff auf den
, mit Ausnahme von Prinzipalen mit der Kontonummer amzn-s3-demo-bucket
. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie 123456789012
durch Ihre eigenen Informationen.user input
placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessFromPrincipalNotInSpecificAccount", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
/*" ], "Condition": { "StringNotEquals": { "aws:PrincipalAccount": [ "" ] } } } ] }
123456789012
Beispiel 8: Erzwingen, dass Clients Objekte auf der Grundlage von Objektschlüsselnamen unter bestimmten Bedingungen hochladen oder ETags
Mit bedingten Schreibvorgängen können Sie Ihren WRITE
-Anforderungen einen zusätzlichen Header hinzufügen, um Vorbedingungen für Ihren S3-Vorgang festzulegen. Dieser Header spezifiziert eine Bedingung, die, wenn sie nicht erfüllt wird, dazu führt, dass der S3-Vorgang fehlschlägt. Beispielsweise können Sie das Überschreiben vorhandener Daten verhindern, indem Sie beim Hochladen des Objekts überprüfen, ob sich kein Objekt mit demselben Schlüsselnamen bereits in Ihrem Bucket befindet. Sie können alternativ das Entity-Tag (ETag) eines Objekts in Amazon S3 überprüfen, bevor Sie ein Objekt schreiben.
Beispiele für Bucket-Richtlinien, die Bedingungen in einer Bucket-Richtlinie verwenden, um bedingte Schreibvorgänge zu erzwingen, finden Sie unter Erzwingen bedingter Schreibvorgänge in Amazon-S3-Buckets.
Beispiele: Amazon-S3-Bedingungsschlüssel für Bucket-Vorgänge
Die folgenden Beispielrichtlinien zeigen, wie Sie Amazon-S3-spezifische Bedingungsschlüssel für Bucket-Operationen verwenden können.
Themen
Beispiel 1: Erteilen von s3:GetObject
-Berechtigungen mit einer Bedingung für eine IP-Adresse
Sie können authentifizierten Benutzern die Berechtigung zum Verwenden der s3:GetObject
-Aktion erteilen, wenn die Anforderung aus einem bestimmten Bereich von IP-Adressen stammt (z. B.
), sofern Sie die IP-Adresse nicht ausschließen möchten (z. B. 192.0.2.*
). Im 192.0.2.188
Condition
-Block sind IpAddress
und NotIpAddress
Bedingungen und bei jeder Bedingung ist ein Schlüssel-Wert-Paar zur Auswertung angefügt. Beide Schlüssel-Wert-Paare in diesem Beispiel verwenden den aws:SourceIp
AWS Wide-Key. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie
durch Ihre eigenen Informationen.user input placeholders
Anmerkung
Die im IPAddress
-Block angegebenen Schlüsselwerte NotIpAddress
und Condition
verwenden die CIDR-Notation, wie in RFC 4632 beschrieben. Weitere Informationen finden Sie unter http://www.rfc-editor. org/rfc/rfc
{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": "*", "Action":"s3:GetObject", "Resource": "arn:aws:s3:::
/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "
amzn-s3-demo-bucket
192.0.2.0/24
" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32
" } } } ] }
Sie können auch andere bedingte Schlüssel für AWS alle Bereiche in Amazon S3 S3-Richtlinien verwenden. Beispielsweise können Sie die Bedingungsschlüssel aws:SourceVpce
und aws:SourceVpc
in Bucket-Richtlinien für VPC-Endpunkte angeben. Spezifische Beispiele finden Sie unter Steuern des Zugriffs von VPC-Endpunkten mit Bucket-Richtlinien.
Anmerkung
Für einige AWS globale Bedingungsschlüssel werden nur bestimmte Ressourcentypen unterstützt. Prüfen Sie daher, ob Amazon S3 den globalen Bedingungsschlüssel und den Ressourcentyp unterstützt, die Sie verwenden möchten, oder ob Sie stattdessen einen spezifischen Bedingungsschlüssel von Amazon S3 verwenden müssen. Eine vollständige Liste der unterstützten Ressourcentypen und Bedingungsschlüssel für Amazon S3 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.
Beispiel 2: Abrufen einer Liste von Objekten in einem Bucket mit einem bestimmten Präfix
Sie können den s3:prefix
Bedingungsschlüssel verwenden, um die Antwort des ListObjectsV2API-Vorgang zur Eingabe von Schlüsselnamen mit einem bestimmten Präfix. Wenn Sie der Bucket-Eigentümer sind, können Sie diesen Bedingungsschlüssel verwenden, um einen Benutzer darauf zu beschränken, den Inhalt eines bestimmten Präfixes im Bucket aufzulisten. Dieser Bedingungsschlüssel s3:prefix
ist nützlich, wenn Objekte im Bucket nach Schlüsselnamenpräfixen organisiert sind.
Die Amazon-S3-Konsole verwendet Schlüsselnamenpräfixe zum Anzeigen von Ordnerkonzepten. Nur die Konsole unterstützt das Ordnerkonzept. Die Amazon-S3-API unterstützt ausschließlich Buckets und Objekte. Wenn es beispielsweise zwei Objekte mit den Schlüsselnamen
und public/object1.jpg
gibt, zeigt die Konsole die Objekte im Ordner public/object2.jpg
an. In der Amazon-S3-API sind dies Objekte mit Präfixen, nicht Objekte in Ordnern. Weitere Informationen zur Verwendung von Präfixen und Trennzeichen zum Filtern von Zugriffsberechtigungen finden Sie unter Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien. public
In dem folgenden Szenario sind der Bucket-Eigentümer und das übergeordnete Konto, zu dem der Benutzer gehört, dasselbe. Daher kann der Bucket-Eigentümer entweder eine Bucket-Richtlinie oder eine Benutzer-Richtlinie verwenden, um Zugriff zu gewähren. Weitere Hinweise zu anderen Bedingungsschlüsseln, die Sie mit dem ListObjectsV2
API-Vorgang verwenden können, finden Sie unter ListObjectsV2.
Anmerkung
Wenn die Versionsverwaltung für den Bucket aktiviert ist, müssen Sie die Berechtigung s3:ListBucketVersions
in den folgenden Richtlinien erteilen, anstelle der Berechtigung s3:ListBucket
, um die Objekte im Bucket aufzulisten. Die s3:ListBucketVersions
-Berechtigung unterstützt auch den s3:prefix
-Bedingungsschlüssel.
Richtlinie für Benutzer:
Die folgende Benutzerrichtlinie gewährt die s3:ListBucket
Erlaubnis (siehe ListObjectsV2) mit einer Condition
Anweisung, nach der der Benutzer in der Anfrage ein Präfix mit dem Wert angeben muss
. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie projects
durch Ihre eigenen Informationen.user input placeholders
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::
", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
Die Condition
-Anweisung beschränkt den Benutzer darauf, nur Objektschlüssel aufzulisten, die das
-Präfix haben. Die hinzugefügte explizite projects
Deny
‑Anweisung verweigert dem Benutzer das Auflisten von Schlüsseln mit jedem anderen Präfix, unabhängig davon, welche weiteren Berechtigungen der Benutzer haben könnte. Beispielsweise ist es möglich, dass der Benutzer die Berechtigung erhält, Objektschlüssel ohne Einschränkungen aufzulisten – entweder durch Updates der vorherigen Benutzerrichtlinie oder durch eine Bucket-Richtlinie. Da explizite Deny
-Anweisungen immer Allow
-Anweisungen überschreiben, wird die Anforderung verweigert, wenn der Benutzer versucht, andere Schlüssel als die aufzulisten, die das
-Präfix haben. projects
Bucket-Richtlinie
Wenn Sie das Principal
‑Element zur oben genannten Benutzerrichtlinie hinzufügen, das den Benutzer identifiziert, besitzen Sie nun eine Bucket-Richtlinie, wie im folgenden Beispiel gezeigt. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie
durch Ihre eigenen Informationen.user input
placeholders
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
Testen Sie die Richtlinie mit dem AWS CLI
Sie können die Richtlinie mit dem folgenden list-object
AWS CLI Befehl testen. Im Befehl geben Sie Benutzeranmeldeinformationen mit dem Parameter --profile
an. Weitere Informationen zur Einrichtung und Verwendung von finden Sie unter Entwickeln mit Amazon S3 mithilfe der AWS CLI in der Amazon S3 S3-API-Referenz. AWS CLI
aws s3api list-objects --bucket
--prefix
amzn-s3-demo-bucket
projects
--profileAccountA
Beispiel 3: Festlegen der maximalen Anzahl von Schlüsseln
Sie können den s3:max-keys
Bedingungsschlüssel verwenden, um die maximale Anzahl von Schlüsseln festzulegen, die ein Anforderer in einem ListObjectsV2 oder ListObjectVersions request. Standardmäßig gibt diese API-Operation bis zu 1000 Schlüssel zurück. Die Liste der numerischen Bedingungsoperatoren, die Sie mit s3:max-keys
und begleitenden Beispielen verwenden können, finden Sie unter Numerische Bedingungsoperatoren im IAM-Benutzerhandbuch.