Beispiele für Bucket-Richtlinien mit Bedingungsschlüsseln - Amazon Simple Storage Service

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 Bedingungen für das Inkrafttreten einer Richtlinie festzulegen.

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 Schlüssel für Richtlinienbedingungen 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 Reference.

Weitere Informationen zu den Berechtigungen für API S3-Operationen nach S3-Ressourcentypen finden Sie unterErforderliche Berechtigungen für Amazon S3 API S3-Operationen.

Beispiele: Amazon S3 S3-Bedingungsschlüssel für Objektoperationen

Die folgenden Beispiele zeigen, wie Sie Amazon S3 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 Reference.

Weitere Informationen zu den Berechtigungen für API S3-Operationen nach S3-Ressourcentypen finden Sie unterErforderliche Berechtigungen für Amazon S3 API S3-Operationen.

Einige der Beispielrichtlinien zeigen, wie Sie Bedingungsschlüssel mit PUTObjektoperationen verwenden können. PUTObjektoperationen ermöglichen Zugriffskontrolllisten (ACL) — Header, die Sie verwenden können, um bestimmte Berechtigungen zu erteilenACL. Mithilfe 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 Berechtigungen auf der Grundlage von Berechtigungen gewähren. PutObjectAcl Weitere Informationen finden Sie PutObjectAclin der Amazon S3 API S3-Referenz zu Amazon Simple Storage Service. Weitere Informationen zu finden ACLs Sie unterÜbersicht über die Zugriffskontrollliste (ACL).

Beispiel 1: Erteilung 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 Erlaubnis zum Hochladen von Objekten unter der Bedingung gewähren, dass Jane immer serverseitige Verschlüsselung mit verwalteten Amazon S3 S3-Schlüsseln (SSE-S3) anfordert. Der Konto-A-Administrator kann diese Anforderung mithilfe des s3:x-amz-server-side-encryption Bedingungsschlüssels wie in der Abbildung dargestellt spezifizieren. 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 diesen Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre Informationen.

aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin

Beispiel 2: Erteilen der s3:PutObject Berechtigung zum Kopieren von Objekten mit einer Einschränkung der 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:

  • Erlaubt das Kopieren von Objekten nur aus dem angegebenen Quell-Bucket (z. B.amzn-s3-demo-source-bucket).

  • Erlaubt das Kopieren von Objekten aus dem angegebenen Quell-Bucket und nur von Objekten, deren Schlüsselnamenpräfix mit einem bestimmten Präfix beginnt, z. B. öffentlich/ (zum Beispielamzn-s3-demo-source-bucket/public/*).

  • Erlaubt das Kopieren nur eines bestimmten Objekts aus dem Quell-Bucket (z. B.amzn-s3-demo-source-bucket/example.jpg).

Die folgende Bucket-Richtlinie gewährt einem Benutzer (Dave) die s3:PutObject Berechtigung. Diese Richtlinie erlaubt es ihm, Objekte nur unter der Bedingung zu kopieren, dass die Anfrage den s3:x-amz-copy-source Header enthält und dass der Header-Wert das /amzn-s3-demo-source-bucket/public/* Schlüsselnamenpräfix angibt. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

{ "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:::amzn-s3-demo-source-bucket/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "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 unter Verwendung von AWS CLI in der Amazon S3 API S3-Referenz. AWS CLI

aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg --copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
Erteilen der Berechtigung, nur ein bestimmtes Objekt zu kopieren

Die vorherige Richtlinie verwendet die Bedingung StringNotLike. Um die Erlaubnis zu erteilen, nur ein bestimmtes Objekt zu kopieren, müssen Sie die Bedingung von StringNotLike bis ändern StringNotEquals und dann den genauen Objektschlüssel angeben, wie im folgenden Beispiel gezeigt. Wenn Sie diesen Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre Informationen.

"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg" } }

Beispiel 3: Zugriff auf eine bestimmte Version eines Objekts gewähren

Angenommen, Konto A besitzt einen Bucket mit aktivierter Versionierung. Der Bucket beinhaltet mehrere Versionen des Objekts HappyFace.jpg. Der Administrator des Kontos A möchte dem Benutzer nun die Dave Erlaubnis erteilen, nur eine bestimmte Version des Objekts abzurufen. Der Kontoadministrator kann dies erreichen, indem er dem Benutzer Dave die s3:GetObjectVersion Berechtigung unter bestimmten Bedingungen erteilt, wie im folgenden Beispiel gezeigt. Das Schlüssel-Wert-Paar im Block Condition gibt den Bedingungsschlüssel s3:VersionId an. In diesem Fall Dave muss die genaue Versions-ID des Objekts bekannt sein, um das Objekt aus dem angegebenen Bucket mit aktivierter Versionierung abzurufen. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

Weitere Informationen finden Sie unter GetObjectin der Amazon Simple Storage Service API Reference.

{ "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 ruft die angegebene Version des Objekts ab und speichert sie in der OutputFile.jpg Datei.

aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave

Beispiel 4: Erteilen von Berechtigungen auf der Grundlage von Objekt-Tags

Beispiele für die Verwendung von Bedingungsschlüsseln für Objekt-Tagging bei Amazon S3 S3-Vorgängen finden Sie unterMarkierungs- und Zugriffskontrollrichtlinien.

Beispiel 5: Beschränkung des Zugriffs anhand der AWS-Konto ID des Bucket-Besitzers

Sie können entweder den s3:ResourceAccount Bedingungsschlüssel aws:ResourceAccount oder verwenden, um IAM oder virtuelle private Cloud (VPC) -Endpunktrichtlinien zu schreiben, die den Benutzer-, Rollen- oder Anwendungszugriff auf die Amazon S3 S3-Buckets einschränken, die einer bestimmten AWS-Konto ID gehören. Sie können diese Bedingungsschlüssel verwenden, um zu verhindern, dass Clients in Ihrem VPC Unternehmen auf Buckets zugreifen, die Sie nicht besitzen.

Beachten Sie jedoch, dass einige AWS Dienste auf den Zugriff auf AWS verwaltete Buckets angewiesen sind. Daher kann sich die Verwendung der s3:ResourceAccount Taste aws:ResourceAccount oder in Ihrer IAM Richtlinie auch auf den Zugriff auf diese Ressourcen auswirken. Weitere Informationen finden Sie in den folgenden Ressourcen:

Weitere Informationen zu den Schlüsseln aws:ResourceAccount und den s3:ResourceAccount Bedingungsschlüsseln sowie Beispiele für deren Verwendung finden Sie unter Beschränken des Zugriffs auf Amazon S3 S3-Buckets, die bestimmten Personen gehören, AWS-Konten im AWS Storage-Blog.

Beispiel 6: Eine TLS Mindestversion ist erforderlich

Sie können den s3:TlsVersion Bedingungsschlüssel verwendenIAM, um Richtlinien für virtuelle private Cloud-Endpunkte (VPCE) oder Buckets zu schreiben, die den Benutzer- oder Anwendungszugriff auf Amazon S3 S3-Buckets je nach der vom Client verwendeten TLS Version einschränken. Sie können diesen Bedingungsschlüssel verwenden, um Richtlinien zu schreiben, für die eine TLS Mindestversion erforderlich ist.

Die folgende Beispiel-Bucket-Richtlinie lehnt PutObject Anfragen von Clients ab, deren TLS Version älter als 1.2 ist, z. B. 1.1 oder 1.0. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }

Die folgende Beispiel-Bucket-Richtlinie erlaubt PutObject Anfragen von Clients mit einer späteren TLS Version als 1.1, zum Beispiel 1.2, 1.3 oder höher:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }

Beispiel 7: Bestimmte Hauptpersonen aus einer Deny Anweisung ausschließen

Die folgende Bucket-Richtlinie verweigert den s3:GetObject Zugriff auf dieamzn-s3-demo-bucket, außer für Principals mit der Kontonummer 123456789012. Um diese Beispielrichtlinie zu verwenden, ersetzen Sie die user input placeholders durch Ihre eigenen Informationen.

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

Beispiele: Amazon S3 S3-Bedingungsschlüssel für Bucket-Operationen

Die folgenden Beispielrichtlinien zeigen, wie Sie Amazon S3 S3-spezifische Bedingungsschlüssel für Bucket-Operationen verwenden können.

Beispiel 1: Erteilen einer s3:GetObject Erlaubnis mit einer Bedingung für eine IP-Adresse

Sie können authentifizierten Benutzern die Erlaubnis erteilen, die s3:GetObject Aktion zu verwenden, wenn die Anfrage von einem bestimmten IP-Adressbereich stammt (z. B.192.0.2.*), es sei denn, es handelt sich um eine IP-Adresse, die Sie ausschließen möchten (z. B.). 192.0.2.188 Im Condition Block IpAddress und NotIpAddress befinden sich Bedingungen, und jeder Bedingung wird ein Schlüssel-Wert-Paar zur Auswertung zugewiesen. Beide Schlüssel-Wert-Paare in diesem Beispiel verwenden den breiten Schlüssel. aws:SourceIp AWS Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

Anmerkung

Die im Condition Block angegebenen NotIpAddress Schlüsselwerte IPAddress und verwenden die CIDR Notation, wie in RFC 4632 beschrieben. Weitere Informationen finden Sie unter http://www.rfc-editor. org/rfc/rfc4632.txt.

{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": "*", "Action":"s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "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. Sie können beispielsweise die Bedingungsschlüssel aws:SourceVpce und die aws:SourceVpc Bedingungsschlüssel in Bucket-Richtlinien für VPC Endgeräte angeben. Spezifische Beispiele finden Sie unter Steuern des Zugriffs von VPC Endpunkten aus 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, den Sie verwenden möchten, oder ob Sie stattdessen einen Amazon S3 S3-spezifischen Bedingungsschlüssel 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 Reference.

Weitere Informationen zu den Berechtigungen für API S3-Operationen nach S3-Ressourcentypen finden Sie unterErforderliche Berechtigungen für Amazon S3 API S3-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 ListObjectsV2APIOperation zur Eingabe von Schlüsselnamen mit einem bestimmten Präfix. Wenn Sie der Bucket-Besitzer sind, können Sie diesen Bedingungsschlüssel verwenden, um einen Benutzer darauf zu beschränken, den Inhalt eines bestimmten Präfixes im Bucket aufzulisten. Der s3:prefix Bedingungsschlüssel ist nützlich, wenn die 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 Konzept von Ordnern; Amazon S3 API unterstützt nur Buckets und Objekte. Zum Beispiel, wenn Sie zwei Objekte mit den Schlüsselnamen haben public/object1.jpg and public/object2.jpg, die Konsole zeigt die Objekte unter öffentlich folder. In Amazon S3 API sind dies Objekte mit Präfixen, keine 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.

Im folgenden Szenario sind der Bucket-Besitzer und das übergeordnete Konto, zu dem der Benutzer gehört, identisch. Der Bucket-Besitzer kann also entweder eine Bucket-Richtlinie oder eine Benutzerrichtlinie verwenden, um Zugriff zu gewähren. Weitere Informationen zu anderen Bedingungsschlüsseln, die Sie für den ListObjectsV2 API Vorgang verwenden können, finden Sie unter ListObjectsV2.

Anmerkung

Wenn für den Bucket die Versionsverwaltung aktiviert ist, müssen Sie, um die Objekte im Bucket aufzulisten, die s3:ListBucketVersions Berechtigung in den folgenden Richtlinien statt der s3:ListBucket Berechtigung erteilen. Die s3:ListBucketVersions Berechtigung unterstützt auch den s3:prefix Bedingungsschlüssel.

Richtlinie für Benutzer:

Die folgende Benutzerrichtlinie gewährt die s3:ListBucket Berechtigung (siehe ListObjectsV2) mit einer Condition Anweisung, nach der der Benutzer in der Anfrage ein Präfix mit dem Wert angeben mussprojects. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::amzn-s3-demo-bucket", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }

Die Condition Anweisung beschränkt den Benutzer darauf, nur Objektschlüssel aufzulisten, die das projects Präfix haben. Die hinzugefügte explizite Deny Anweisung verbietet dem Benutzer, Schlüssel mit einem anderen Präfix aufzulisten, unabhängig davon, welche anderen Berechtigungen der Benutzer möglicherweise hat. Es ist beispielsweise möglich, dass der Benutzer die Erlaubnis erhält, Objektschlüssel ohne Einschränkungen aufzulisten, entweder durch Aktualisierungen der vorherigen Benutzerrichtlinie oder durch eine Bucket-Richtlinie. Da explizite Deny Anweisungen immer Allow Anweisungen überschreiben, wird die Anfrage verweigert, wenn der Benutzer versucht, andere Schlüssel als die aufzulisten, die das projects Präfix haben.

Bucket-Richtlinie

Wenn Sie das Principal Element zur obigen Benutzerrichtlinie hinzufügen und den Benutzer identifizieren, haben Sie jetzt eine Bucket-Richtlinie, wie im folgenden Beispiel gezeigt. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

{ "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:::amzn-s3-demo-bucket", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/bucket-owner" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }
Testen Sie die Richtlinie mit 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 unter Verwendung von AWS CLI in der Amazon S3 API S3-Referenz. AWS CLI

aws s3api list-objects --bucket amzn-s3-demo-bucket --prefix projects --profile AccountA

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 geben diese API Operationen bis zu 1.000 Schlüssel zurück. Eine Liste der numerischen Bedingungsoperatoren, die Sie zusammen mit s3:max-keys zugehörigen Beispielen verwenden können, finden Sie unter Numerische Bedingungsoperatoren im IAMBenutzerhandbuch.