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 Element Condition
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 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.
Beispiele – Amazon-S3-Bedingungsschlüssel für Objekt-Vorgänge
Dieser Abschnitt enthält Beispiele, die zeigen, wie Sie Amazon-S3-spezifische Bedingungsschlüssel für Objekt-Vorgänge 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.
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. Mit diesen Schlüsseln kann der Bucket-Eigentümer 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 über ACLs finden Sie in Zugriffskontrolllisten (ACL) – Übersicht.
Themen
- Beispiel 1: Gewährung von PutObject s3-Berechtigungen, für die Objekte erforderlich sind, die mit serverseitiger Verschlüsselung gespeichert wurden
- Beispiel 2: Gewährung der PutObject s3-Berechtigung zum Kopieren von Objekten mit einer Einschränkung der Kopierquelle
- Beispiel 3: Zugriff auf eine bestimmte Version eines Objekts gewähren
- Beispiel 4: Erteilen von Berechtigungen auf der Grundlage von Objekt-Tags
- Beispiel 5: Beschränken des Zugriffs anhand der AWS-Konto ID des Bucket-Besitzers
- Beispiel 6: Eine TLS-Mindestversion ist erforderlich
Beispiel 1: Gewährung von PutObject s3-Berechtigungen, für die Objekte erforderlich sind, die mit serverseitiger Verschlüsselung gespeichert wurden
Angenommen, Konto A besitzt einen Bucket. Der Konto-Administrator möchte Jane, einer Benutzerin in Konto A, die Berechtigung zum Hochladen von Objekten mit der Bedingung erteilen, dass Jane immer serverseitige Verschlüsselung anfordert, damit Amazon S3 die Objekte verschlüsselt speichert. 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 Block Condition
gibt den Schlüssel s3:x-amz-server-side-encryption
an.
"Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" }}
Wenn Sie die Berechtigung mit dem testen AWS CLI, müssen Sie den erforderlichen Parameter mithilfe des --server-side-encryption
Parameters hinzufügen.
aws s3api put-object --bucket example1bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountBadmin
Beispiel 2: Gewährung der PutObject s3-Berechtigung zum Kopieren von Objekten mit einer Einschränkung der Kopierquelle
Wenn Sie in der PUT Object-Anforderung ein Quellobjekt angeben, handelt es sich um eine Kopieroperation (siehe PUT Object - Copy). Dementsprechend kann der Bucket-Eigentümer einem Benutzer die Berechtigung erteilen, Objekte mit Einschränkungen in Bezug auf die Quelle zu kopieren, z. B.:
-
das Kopieren von Objekten nur aus dem
sourcebucket
-Bucket erlauben. -
das Kopieren von Objekten aus dem Quell-Bucket und nur den Objekten, deren Schlüsselnamen-Präfix mit public/f beginnt, erlauben (z. B. sourcebucket/public/*)
-
das Kopieren nur eines bestimmten Objekts aus dem Quell-Bucket erlauben (z. B. sourcebucket/example.jpg).
Die folgende Bucket-Richtlinie erteilt dem Benutzer Dave die Berechtigung s3:PutObject
. Sie erlaubt ihm, nur Objekte mit der Bedingung zu kopieren, dass die Anforderung den Header s3:x-amz-copy-source
enthält und der Header-Wert das Präfix des Schlüsselnamens /awsexamplebucket1/public/*
angibt.
{ "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:::awsexamplebucket1
/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/folder", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1
/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "awsexamplebucket1
/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 zum Einrichten von finden Sie unterEntwickeln mit Amazon S3 über die AWS CLI. AWS CLI
aws s3api copy-object --bucket
awsexamplebucket1
--key HappyFace.jpg --copy-sourceexamplebucket
/public/PublicHappyFace1.jpg --profile AccountADave
Erteilen der Berechtigung, nur ein bestimmtes Objekt zu kopieren
Die vorherige Richtlinie verwendet die Bedingung StringNotLike
. Um nur das Kopieren eines bestimmten Objekts zu erlauben, müssen Sie die Bedingung von StringNotLike
in StringNotEquals
ändern und dann den genauen Objektschlüssel wie gezeigt angeben.
"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "
awsexamplebucket1
/public/PublicHappyFace1.jpg" } }
Beispiel 3: Zugriff auf eine bestimmte Version eines Objekts gewähren
Angenommen, Konto A besitzt einen versionsaktivierten Bucket. Der Bucket beinhaltet mehrere Versionen des Objekts HappyFace.jpg
. Der Kontoadministrator möchte nun dem Benutzer Dave die Berechtigung erteilen, nur eine bestimmte Version des Objekts zu erhalten. Der Kontoadministrator erreicht dies, indem er Dave die Berechtigung s3:GetObjectVersion
bedingt erteilt wie unten gezeigt. Das Schlüssel-Wert-Paar im Block Condition
gibt den Bedingungsschlüssel s3:VersionId
an. In diesem Fall muss Dave die genaue Objekt-Versions-ID kennen, um das Objekt abzurufen.
Weitere Informationen finden Sie 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:::examplebucketversionenabled
/HappyFace.jpg" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::examplebucketversionenabled
/HappyFace.jpg", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e
" } } } ] }
Testen Sie die Richtlinie mit AWS CLI
Sie können die Berechtigungen mit dem AWS CLI get-object
Befehl testen, wobei der --version-id
Parameter die spezifische Objektversion identifiziert. Der Befehl ruft das Objekt ab und speichert es in der Datei OutputFile.jpg
.
aws s3api get-object --bucket
examplebucketversionenabled
--key HappyFace.jpg OutputFile.jpg --version-idAaaHbAQitwiL_h47_44lRO2DDfLlBO5e
--profile AccountADave
Beispiel 4: Erteilen von Berechtigungen auf der Grundlage von Objekt-Tags
Beispiele für die Verwendung von Objektmarkierungs-Bedingungsschlüsseln mit Amazon-S3-Vorgänge finden Sie unter Markierungs- und Zugriffskontrollrichtlinien.
Beispiel 5: Beschränken des Zugriffs anhand der AWS-Konto ID des Bucket-Besitzers
Sie können entweder den Schlüssel aws:ResourceAccount
oder den Schlüssel s3:ResourceAccount
verwenden, um Endpunktrichtlinien für IAM oder Virtual Private Cloud (VPC) zu schreiben, die den Benutzer- oder Anwendungszugriff auf die Amazon-S3-Buckets einschränken, die einer bestimmten AWS-Konto -ID gehören. Sie können diesen Bedingungsschlüssel verwenden, wenn Sie Clients in Ihrer VPC daran hindern möchten, auf Buckets zuzugreifen, die Sie nicht besitzen.
Beachten Sie jedoch, dass einige AWS Dienste auf den Zugriff auf AWS verwaltete Buckets angewiesen sind. 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 und Beispiele 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
-
Beschränken des Zugriffs auf Amazon-S3-Buckets im Besitz bestimmter AWS-Konten
im AWS Storage Blog
Beispiel 6: Eine TLS-Mindestversion ist erforderlich
Sie können den TlsVersion Bedingungsschlüssel s3: verwenden, um IAM-, Virtual Private Cloud Endpoint (VPCE) - oder Bucket-Richtlinien zu schreiben, die den Benutzer- oder Anwendungszugriff auf Amazon S3 S3-Buckets auf der Grundlage 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.
Diese Beispiel-Bucket-Richtlinie lehnt PutObject Anfragen von Clients ab, deren TLS-Version niedriger als 1.2 ist, zum Beispiel 1.1 oder 1.0.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1
/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }
Diese Beispiel-Bucket-Richtlinie erlaubt PutObject Anfragen von Clients, deren TLS-Version höher als 1.1 ist, z. B. 1.2, 1.3 oder höher.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1
/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }
Beispiele – Amazon-S3-Bedingungsschlüssel für Bucket-Vorgänge
Dieser Abschnitt enthält Beispielrichtlinien, die zeigen, wie Sie Amazon-S3-spezifische Bedingungsschlüssel für Bucket-Vorgänge verwenden können.
Themen
Beispiel 1: Gewährung der GetObject s3-Berechtigung 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 (192.0.2.*) stammt, es sei denn, die IP-Adresse ist 192.0.2.188. Im Bedingungsblock sind die Bedingungen IpAddress
und NotIpAddress
enthalten, und bei jeder Bedingung ist ein Schlüssel-Wert-Paar zur Auswertung angefügt. Beide Schlüssel-Wert-Paare in diesem Beispiel verwenden den ‐wide key. aws:SourceIp
AWS
Anmerkung
Die in der Bedingung angegebenen Schlüsselwerte IPAddress
und NotIpAddress
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:::
awsexamplebucket1
/*", "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. 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 Reference.
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 der GET Bucket (ListObjects) -API auf Schlüsselnamen mit einem bestimmten Präfix zu beschränken. Wenn Sie der Bucket-Eigentümer sind, können Sie einen Benutzer beschränken, den Inhalt eines bestimmten Präfixes im Bucket aufzulisten. Dieser Bedingungsschlüssel 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. Weitere Informationen zur Verwendung von Präfixen und Trennzeichen zum Filtern von Zugriffsberechtigungen finden Sie unter Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien.
Wenn es beispielsweise zwei Objekte mit den Schlüsselnamen public/object1.jpg
und public/object2.jpg
gibt, zeigt die Konsole die Objekte unter dem Ordner public
an. In der Amazon-S3-API sind dies Objekte mit Präfixen, nicht Objekte in Ordnern. Wenn Sie jedoch in der Amazon-S3-API die Objektschlüssel mithilfe solcher Präfixe organisieren, können Sie die Berechtigung s3:ListBucket
mit der Bedingung s3:prefix
erteilen, die dem Benutzer das Abrufen einer Liste mit Schlüsselnamen mit diesen spezifischen Präfixen ermöglicht.
In diesem Beispiel sind der Bucket-Eigentümer und das übergeordnete Konto, zu dem der Benutzer gehört, dieselben. Der Bucket-Eigentümer kann also entweder eine Bucket-Richtlinie oder eine Benutzerrichtlinie verwenden. Weitere Hinweise zu anderen Bedingungsschlüsseln, die Sie mit der GET Bucket (ListObjects) -API verwenden können, finden Sie unter ListObjects.
Richtlinie für Benutzer:
Die folgende Benutzerrichtlinie erteilt die s3:ListBucket
-Berechtigung (siehe GET Bucket (List Objects)) mit der Bedingung, dass der Benutzer in der Anforderung das prefix
mit dem Wert projects
anführt.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::
awsexamplebucket1
", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::awsexamplebucket1
", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }
Die Bedingung schränkt den Benutzer ein, nur Objektschlüssel mit dem Präfix projects
auflisten zu können. Die hinzugefügte explizite Verweigerung verhindert, dass die Anforderung des Benutzers auf Auflistung von Schlüsseln mit irgendeinem anderen Präfix verweigert wird, unabhängig davon, welche anderen Berechtigungen der Benutzer gegebenenfalls hat. z. B. ist es möglich, dass der Benutzer die Berechtigung erhält, Objektschlüssel ohne Einschränkung aufzulisten, entweder durch Aktualisierungen der vorherigen Benutzerrichtlinie oder durch eine Bucket-Richtlinie. Da jedoch die explizite Zugriffsverweigerung stets Vorrang hat, wird die Benutzeranforderung zum Auflisten anderer Schlüssel, die nicht das Präfix projects
enthalten, abgelehnt.
Bucket-Richtlinie
Wenn Sie der oben gezeigten Richtlinie das Element Principal
hinzufügen, das den Benutzer identifiziert, erhalten Sie eine Bucket-Richtlinie wie gezeigt.
{ "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:::awsexamplebucket1
", "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:::awsexamplebucket1
", "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 unterEntwickeln mit Amazon S3 über die AWS CLI. AWS CLI
aws s3api list-objects --bucket
awsexamplebucket1
--prefix examplefolder --profile AccountADave
Wenn der Bucket versionsaktiviert ist, müssen Sie die Berechtigung s3:ListBucketVersions
in der vorherigen Richtlinie erteilen, um die Objekte im Bucket auflisten zu können, und nicht die Berechtigung s3:ListBucket
. Diese Berechtigung unterstützt auch den s3:prefix
-Bedingungsschlüssel.
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 der Anforderer in einem GET-Bucket (ListObjects) oder einer ListObjectVersionsGET-Anfrage zurückgeben kann. Standardmäßig gibt die API 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.