Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Angeben von Bedingungen in einer Richtlinie

Mit der Zugriffsrichtliniensprache können Sie Bedingungen für die Erteilung von Berechtigungen angeben. Mit dem Element Condition  (oder dem Condition-Block) können Sie angeben, unter welchen Bedingungen eine Richtlinie wirksam ist. Im optionalen Element Condition formulieren Sie Ausdrücke, in denen Sie boolesche Operatoren verwenden (gleich, kleiner als usw.), um die Richtlinienbedingung auf Übereinstimmung mit den Werten in der Anforderung zu prüfen. Wenn Sie einem Benutzer beispielsweise eine Berechtigung zum Hochladen eines Objekts erteilen, kann der Bucket-Eigentümer verlangen, dass das Objekt öffentlich lesbar ist, indem die Bedingung StringEquals wie hier gezeigt hinzugefügt wird:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }

Der Condition-Block definiert die StringEquals-Bedingung, die für das angegebene Schlüssel-Wert-Paar "s3:x-amz-acl":["public-read"] angewendet wird. Es gibt eine Reihe vordefinierter Schlüssel, die Sie zum Ausdrücken einer Bedingung verwenden können. Das Beispiel verwendet den Bedingungsschlüssel s3:x-amz-acl. Diese Bedingung fordert, dass der Benutzer den spezifischen Header x-amz-acl mit dem Wert public-read in jeder PUT Object-Anforderung angibt.

Weitere Informationen zum Angeben von Bedingungen in einer Zugriffsrichtliniensyntax finden Sie unter Bedingung im IAM-Benutzerhandbuch.

Die folgenden Themen beschreiben AWS-weite und Amazon S3–spezifische Bedingungsschlüssel und bieten Beispielrichtlinien.

Verfügbare Bedingungsschlüssel

Die vordefinierten Schlüssel zur Angabe von Bedingungen in einer Amazon S3-Zugriffsrichtlinie können wie folgt eingeteilt werden:

  • AWS-weite Schlüssel – AWS stellt eine Reihe gemeinsamer Schlüssel zur Verfügung, die von allen AWS-Services unterstützt werden, die Richtlinien unterstützen. Diese Schlüssel, die allen Services gemeinsam sind, werden AWS-weite Schlüssel genannt und verwenden das Präfix aws:. Eine Liste der AWS-weiten Schlüssel finden Sie unter Verfügbare Schlüssel für Bedingungen im IAM-Benutzerhandbuch. Es gibt auch für Amazon S3 spezifische Schlüssel, die das Präfix s3: verwenden. Amazon S3–spezifische Schlüssel werden unter dem nächsten Aufzählungspunkt besprochen.

     

    Die neuen Bedingungsschlüssel aws:sourceVpce und aws:sourceVpc werden in Bucket-Richtlinien für VPC-Endpunkte verwendet. Beispiele für die Verwendung von Bedingungsschlüsseln finden Sie unter Beispiel für Bucket-Richtlinien für VPC-Endpunkte für Amazon S3.

    Die folgende Beispiel-Bucket-Richtlinie ermöglicht authentifizierten Benutzern das Verwenden der Aktion s3:GetObject, wenn die Anforderung aus einem bestimmten Bereich von IP-Adressen stammt (192.168.143.*), sofern die IP-Adresse nicht 192.168.143.188 ist. 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 AWS-weiten Schlüssel aws:SourceIp.

    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:::examplebucket/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "192.168.143.0/24" }, "NotIpAddress" : { "aws:SourceIp": "192.168.143.188/32" } } } ] }
  • Amazon S3–spezifische Schlüssel – Zusätzlich zu den AWS-weiten Schlüsseln sind die folgenden Bedingungsschlüssel nur im Zusammenhang mit der Gewährung von Amazon S3-spezifischen Berechtigungen anwendbar. Diese Amazon S3–spezifischen Bedingungsschlüssel verwenden das Präfix s3:.

    • s3:x-amz-acl

    • s3:x-amz-copy-source

    • s3:x-amz-metadata-directive

    • s3:x-amz-server-side-encryption

    • s3:VersionId

    • s3:LocationConstraint

    • s3:delimiter

    • s3:max-keys

    • s3:prefix

    • s3:x-amz-server-side-encryption-aws-kms-key-id

    • s3:ExistingObjectTag/<tag-key>

      Beispiele für die Verwendung von Objekt-Tag-basierten Bedingungsschlüsseln finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

    • s3:RequestObjectTagKeys

    • s3:RequestObjectTag/<tag-key>

    • s3:object-lock-remaining-retention-days

    • s3:object-lock-mode

    • s3:object-lock-retain-until-date

    • s3:object-lock-legal-hold

     

    Die folgende BuckBereichsrichtlinie gewährt beispielsweise die s3:PutObject-Berechtigung für zwei AWS-Konten, wenn die Anforderung den x-amz-acl-Header enthält, der das Objekt öffentlich lesbar macht.

    { "Version":"2012-10-17", "Statement": [ { "Sid":"AddCannedAcl", "Effect":"Allow", "Principal": { "AWS": ["arn:aws:iam::account1-ID:root","arn:aws:iam::account2-ID:root"] }, "Action":["s3:PutObject"], "Resource": ["arn:aws:s3:::examplebucket/*"], "Condition": { "StringEquals": { "s3:x-amz-acl":["public-read"] } } } ] }

    Der Condition-Block verwendet die StringEquals-Bedingung und ist mit dem Schlüssel-Wert-Paar "s3:x-amz-acl":["public-read" zur Auswertung versehen. Im Schlüssel-Wert-Paar ist s3:x-amz-acl ein Amazon S3–spezifischer Schlüssel, wie durch das Präfix s3: angezeigt wird.

Wichtig

Nicht alle Bedingungen machen für alle Aktionen auch Sinn. So ist es beispielsweise sinnvoll, eine s3:LocationConstraint-Bedingung in eine Richtlinie einzubeziehen, die die s3:CreateBucket Amazon S3-Berechtigung gewährt, nicht jedoch für die s3:GetObject-Bedingung. Amazon S3 kann semantische Fehler für diesen Typ testen, die Amazon S3–spezifische Bedingungen beinhalten. Wenn Sie jedoch eine Richtlinie für einen IAM-Benutzer erstellen und eine semantisch ungültige Amazon S3-Bedingung einfügen, wird kein Fehler gemeldet, weil IAM keine Amazon S3-Bedingungen validieren kann.

Im folgenden Abschnitt werden die Bedingungsschlüssel beschrieben, mit denen bedingte Berechtigungen für Bucket- und Objektoperationen erteilt werden können. Darüber hinaus gibt es Bedingungsschlüssel in Bezug auf die Amazon S3-Signatur-Version 4-Authentifizierung. Weitere Informationen finden Sie unter Amazon S3 Für Signature Version 4 Authentication spezifische Richtlinienschlüssel im Amazon Simple Storage Service API Reference.

Amazon S3-Bedingungsschlüssel für Objekt-Operationen

Die folgende Tabelle enthält die Amazon S3-Bedingungen, die Sie mit Amazon S3-Aktionen verwenden können. Beispielrichtlinien werden nach der Tabelle bereitgestellt. Beachten Sie Folgendes für die Amazon S3–spezifischen Bedingungsschlüssel, die in der nachfolgenden Tabelle beschriebenen sind:

  • Den Bedingungsschlüsselnamen ist das Präfix s3: vorangestellt. Beispiel, s3:x-amz-acl.

  • Jeder Bedingungsschlüssel wird dem vom API zugelassenen gleichen Namensanforderungsheader zugeordnet, auf den die Bedingung festgelegt werden kann. Das heißt, diese Bedingungsschlüssel bestimmen das Verhalten der gleichen Namensanforderungsheader. Beispiel:

    • Der Bedingungsschlüssel s3:x-amz-acl, den Sie für die Bedingungsberechtigung s3:PutObject verwenden können, definiert das Verhalten des Anforderungsheaders x-amz-acl, der das PUT-Objekt-API unterstützt.

    • Der Bedingungsschlüssel s3:VersionId, den Sie für die bedingte Berechtigung für die Bedingung s3:GetObjectVersion verwenden können, definiert das Verhalten des Abfrageparameters versionId, den Sie in einer GET-Objekt-Anforderung setzen.

Berechtigung Anwendbare Bedingungsschlüssel (oder Schlüsselwörter) Beschreibung

s3:PutObject

  • s3:x-amz-acl (für vordefinierte ACL-Berechtigungen)

  • s3:x-amz-grant-permission (für ausdrückliche Berechtigungen), wobei permission sein kann:

    read, write,​ read-acp,​ write​-acp,​ ​full​-control

Die Operation PUT Object erlaubt Zugriffskontrolllisten (ACL)-spezifische Header, mit denen Sie ACL-spezifische 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.

Eine Beispielrichtlinie finden Sie unter Beispiel 1: s3:PutObject-Berechtigung mit der Bedingung erteilen, dass der Bucket-Eigentümer vollständige Kontrolle erhalten muss.

Weitere Informationen über ACLs finden Sie in Zugriffskontrolllisten (ACL) – Übersicht.

s3:x-amz-copy-source

Um ein Objekt zu kopieren, verwenden Sie das PUT-Objekt-API (siehe PUT Object) und geben die Quelle mit dem Header x-amz-copy-source an. Mit diesem Schlüssel kann der Bucket-Eigentümer die Kopierquelle auf einen bestimmten Bucket, einen bestimmten Ordner im Bucket oder ein bestimmtes Objekt in einem Bucket einschränken.

Eine Beispielrichtlinie finden Sie in Beispiel 3: s3:PutObject-Berechtigung zum Kopieren von Objekten mit einer Einschränkung für die Kopierquelle erteilen.

s3:x-amz-server-side-encryption

Wenn Sie ein Objekt hochladen, können Sie mit dem x-amz-server-side-encryption-Header Amazon S3 anweisen, das Objekt beim Speichern zu verschlüsseln, indem Sie einen Kundenhauptschlüssel (CMK) verwenden, der in AWS Key Management Service (AWS KMS) gespeichert ist, oder einen Verschlüsselungsschlüssel verwenden, der von Amazon S3 verwaltet wird (siehe Schützen von Daten mithilfe serverseitiger Verschlüsselung).

Beim Erteilen der Berechtigung s3:PutObject kann der Bucket-Eigentümer eine Bedingung unter Verwendung dieses Schlüssels hinzufügen, damit der Benutzer diesen Header in der Anforderung angeben muss. Ein Bucket-Eigentümer kann eine solche bedingte Berechtigung erteilen, um sicherzustellen, dass Objekte, die der Benutzer hochlädt, beim Speichern verschlüsselt werden.

Eine Beispielrichtlinie finden Sie in Beispiel 1: s3:PutObject-Berechtigung mit der Bedingung erteilen, dass der Bucket-Eigentümer vollständige Kontrolle erhalten muss.

s3:x-amz-server-side-encryption-aws-kms-key-id

Wenn Sie ein Objekt hochladen, können Sie mit dem x-amz-server-side-encryption-aws-kms-key-id-Header Amazon S3 anweisen, das Objekt beim Speichern mit dem angegebenen AWS KMS-CMK zu verschlüsseln (siehe Schutz von Daten durch serverseitige Verschlüsselung mit CMKs, die in AWS Key Management Service (SSE-KMS) gespeichert sind).

Bei der Erteilung der s3:PutObject-Berechtigung kann der Bucket-Eigentümer mit diesem CMK eine Bedingung hinzufügen, um die für die Objektverschlüsselung verwendete Schlüssel-ID AWS KMS auf einen bestimmten Wert zu beschränken.

Ein Bucket-Eigentümer kann eine solche bedingte Berechtigung erteilen, um sicherzustellen, dass Objekte, die der Benutzer hochlädt, beim Speichern mit einem bestimmten CMK verschlüsselt werden.

Der AWS KMS-CMK, den Sie in der Richtlinie angeben, muss das folgende Format verwenden:

arn:aws:kms:region:acct-id:key/key-id

s3:x-amz-metadata-directive

Wenn Sie ein Objekt mit dem PUT-Objekt-API kopieren (siehe PUT Object), können Sie optional den Header x-amz-metadata-directive hinzufügen, um anzugeben, ob die Objektmetadaten aus dem Quellobjekt kopiert oder durch die in der Anforderung angegebenen Metadaten ersetzt werden sollen.

Mithilfe dieser Schlüssel kann ein Eigentümer eine Bedingung hinzufügen, um bestimmte Verhaltensweisen beim Hochladen von Objekten zu erzwingen.

Zulässige Werte: COPY | REPLACE. Der Standardwert ist COPY.

s3:x-amz-storage-class

Standardmäßig mit s3:PutObject gespeicherte Objekte verwenden die Speicherklasse STANDARD. Sie können jedoch den Anforderungs-Header x-amz-storage-class verwenden, um eine andere Speicherklasse anzugeben.

Beim Erteilen der Berechtigung s3:PutObject können Sie mit dem Bedingungsschlüssel s3:x-amz-storage-class einschränken, welche Speicherklasse beim Speichern hochgeladener Objekte verwendet wird. Weitere Informationen zu Speicherklassen finden Sie unter Speicherklassen.

Eine Beispielrichtlinie finden Sie unter Beispiel 5: Objekt-Uploads auf Objekte mit einer bestimmten Speicherklasse beschränken.

Gültige Werte finden Sie unter Amazon S3 PUT Object – Anforderungen

  • s3:RequestObjectTagKeys

  • s3:RequestObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung für die Aktion s3:PutObject begrenzen, indem Sie die in der Anforderung erlaubten Objekt-Tags beschränken. Beispiele für die Verwendung von Bedingungsschlüsseln finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:object-lock-mode

Wenn Sie ein Objekt hochladen, können Sie die Bedingung s3:object-lock-mode verwenden, damit der Benutzer für ein Objekt nur den Modus COMPLIANCE oder GOVERNANCE festlegen kann.

s3:object-lock-retain-until-date

Wenn Sie ein Objekt hochladen, können Sie die Bedingung s3:object-lock-retain-until-date verwenden, um die zulässigen Aufbewahrungsdaten für ein Objekt zu beschränken.

s3:object-lock-legal-hold

Wenn Sie ein Objekt hochladen, können Sie die Bedingung s3:object-lock-legal-hold verwenden, damit der Benutzer keine rechtliche Aufbewahrungsfrist für ein Objekt festlegen kann.

s3:PutObjectAcl

  • s3:x-amz-acl (für vordefinierte ACL-Berechtigungen)

  • s3:x-amz-grant-permission (für ausdrückliche Berechtigungen), wobei permission sein kann:

    read, write,​ read-acp,​ write​-acp,​ ​grant-full​-control

Die PUT Object ACL-API legt die Zugriffskontrollliste (ACL) für das angegebene Objekt fest. Die Operation unterstützt ACL-bezogene Header. Wenn Sie diese Berechtigung erteilen, kann der Bucket-Eigentümer mithilfe dieser Schlüssel Bedingungen hinzufügen, die bestimmte Berechtigungen erfordern. Weitere Informationen über ACLs finden Sie in Zugriffskontrolllisten (ACL) – Übersicht.

Beispielsweise kann der Bucket-Eigentümer die Kontrolle über das Objekt behalten wollen, unabhängig davon, wem das Objekt gehört. Um dies zu erreichen, kann der Bucket-Eigentümer eine Bedingung unter Verwendung eines dieser Schlüssel hinzufügen, um zu verlangen, dass der Benutzer spezifische Berechtigungen für den Bucket-Eigentümer einschließt.

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung für die Aktion s3:PutObjectAcl nur auf Objekte beschränken, die einen bestimmten Tagschlüssel und -wert haben. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:PutObjectTagging

  • s3:RequestObjectTagKeys

  • s3:RequestObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung für die Aktion s3:PutObjectTagging begrenzen, indem Sie die in der Anforderung erlaubten Objekt-Tags beschränken. Beispiele für die Verwendung von Bedingungsschlüsseln finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:PutObjectVersionTagging

  • s3:RequestObjectTagKeys

  • s3:RequestObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung für die Aktion s3:PutObjectVersionTagging begrenzen, indem Sie die in der Anforderung erlaubten Objekt-Tags beschränken. Beispiele für die Verwendung von Bedingungsschlüsseln finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:VersionId

Mit diesem Bedingungsschlüssel können Sie die Berechtigung für die Aktion s3:PutObjectVersionTagging nur auf eine bestimmte Objektversion beschränken. Eine Beispielrichtlinie finden Sie unter Beispiel 4: Gewähren von Zugriff auf eine bestimmte Version eines Objekts.

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:GetObjectVersion

s3:VersionId

Diese Amazon S3-Berechtigung erlaubt es dem Benutzer, eine Reihe von Amazon S3-API-Operationen auszuführen (vgl. Amazon S3-Berechtigungen für Objekt-Operationen). Für einen versionsaktivierten Bucket können Sie die Objektversion angeben, für die Daten abgerufen werden sollen.

Durch Hinzufügen einer Bedingung, die diesen Schlüssel verwendet, kann der Bucket-Eigentümer den Benutzer auf den Zugriff auf Daten einer bestimmten Version des Objekts beschränken. Eine Beispielrichtlinie finden Sie unter Beispiel 4: Gewähren von Zugriff auf eine bestimmte Version eines Objekts.

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:GetObject

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:GetObjectAcl

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:GetObjectVersionAcl

s3:VersionId

Sie können die Zugriffskontrollliste (ACL) einer bestimmten Objektversion mithilfe der GET Object acl-API abrufen. Der Benutzer muss über die Berechtigung für die s3:GetObjectVersionAcl-Aktion verfügen. Für einen versionsaktivierten Bucket erlaubt diese Amazon S3-Berechtigung einem Benutzer, die ACL für eine bestimmte Version des Objekts abzurufen.

Der Bucket-Eigentümer kann mithilfe des Schlüssels eine Bedingung hinzufügen, um den Benutzer auf eine bestimmte Version des Objekts zu beschränken.

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:PutObjectVersionAcl

s3:VersionId

Für einen versionsaktivierten Bucket können Sie die Objektversion in der Anforderung PUT Object acl angeben, um ACL für eine bestimmte Objektversion festzulegen. Mit dieser Bedingung kann der Bucket-Eigentümer den Benutzer darauf beschränken, eine ACL nur für eine bestimmte Version eines Objekts festzulegen.

  • s3:x-amz-acl (für vordefinierte ACL-Berechtigungen)

  • s3:x-amz-grant-permission (für ausdrückliche Berechtigungen), wobei permission sein kann:

    read, write,​ read-acp,​ write​-acp,​ ​grant-full​-control

Für einen versionsaktivierten Bucket erlaubt Ihnen diese Amazon S3-Berechtigung, die ACL für eine bestimmte Version des Objekts festzulegen.

Siehe die Bedingung s3:PutObjectACL in dieser Tabelle, um eine Beschreibung dieser Bedingungsschlüssel zu erhalten.

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:DeleteObjectVersion

s3:VersionId

In einem versionsaktivierten Bucket erlaubt diese Amazon S3-Berechtigung dem Benutzer, eine bestimmte Version des Objekts zu löschen.

Der Bucket-Eigentümer kann mithilfe dieses Schlüssels eine Bedingung hinzufügen, um den Benutzer darauf zu beschränken, nur eine bestimmte Version des Objekts zu löschen.

Ein Beispiel für die Verwendung dieses Bedingungsschlüssels finden Sie unter Beispiel 4: Gewähren von Zugriff auf eine bestimmte Version eines Objekts. In diesem Beispiel wird die Berechtigung für die Aktion s3:GetObjectVersion erteilt, die Richtlinie ist aber mit diesem Bedingungsschlüssel versehen.

s3:DeleteObjectTagging

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:DeleteObjectVersionTagging

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:VersionId

Mit diesem Bedingungsschlüssel können Sie die Berechtigung für die Aktion s3:DeleteObjectVersionTagging nur auf eine bestimmte Objektversion beschränken. Eine Beispielrichtlinie finden Sie unter Beispiel 4: Gewähren von Zugriff auf eine bestimmte Version eines Objekts.

s3:GetObjectTagging

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:GetObjectVersionTagging

s3:ExistingObjectTag/<tag-key>

Mit diesem Bedingungsschlüssel können Sie die Berechtigung nur auf Objekte beschränken, die über einen bestimmten Tagschlüssel und -wert verfügen. Beispiele finden Sie unter Objektmarkierung und Zugriffskontrollrichtlinien..

s3:VersionId

Mit diesem Bedingungsschlüssel können Sie die Berechtigung für die Aktion s3:GetObjectVersionTagging nur auf eine bestimmte Objektversion beschränken. Eine Beispielrichtlinie finden Sie unter Beispiel 4: Gewähren von Zugriff auf eine bestimmte Version eines Objekts.

s3:PutObjectRetention

s3:object-lock-remaining-retention-days

Wenn diese Berechtigung gewährt wird, kann der Bucket-Eigentümer mit diesem Bedingungsschlüssel minimal und maximal zulässige Aufbewahrungszeiträume für Objekte im Bucket festlegen.

s3:object-lock-mode

Sie können die Bedingung s3:object-lock-mode verwenden, damit der Benutzer für ein Objekt nur den Modus COMPLIANCE oder GOVERNANCE festlegen kann.

s3:object-lock-retain-until-date

Sie können die Bedingung s3:object-lock-retain-until-date verwenden, um die zulässigen Aufbewahrungsdaten für ein Objekt zu beschränken.

s3:object-lock-legal-hold

Sie können die Bedingung s3:object-lock-legal-hold verwenden, damit der Benutzer keine rechtliche Aufbewahrungsfrist für ein Objekt festlegen kann.

s3:CreateMultipartUpload

s3:object-lock-mode

Wenn Sie ein Objekt hochladen, können Sie die Bedingung s3:object-lock-mode verwenden, damit der Benutzer für ein Objekt nur den Modus COMPLIANCE oder GOVERNANCE festlegen kann.

s3:object-lock-retain-until-date

Wenn Sie ein Objekt hochladen, können Sie die Bedingung s3:object-lock-retain-until-date verwenden, um die zulässigen Aufbewahrungsdaten für ein Objekt zu beschränken.

s3:object-lock-legal-hold

Wenn Sie ein Objekt hochladen, können Sie die Bedingung s3:object-lock-legal-hold verwenden, damit der Benutzer keine rechtliche Aufbewahrungsfrist für ein Objekt festlegen kann.

Beispiel 1: s3:PutObject-Berechtigung mit der Bedingung erteilen, dass der Bucket-Eigentümer vollständige Kontrolle erhalten muss

Angenommen, Konto A besitzt einen Bucket und der Konto-Administrator möchte Dave, einem Benutzer in Konto B, Berechtigungen zum Hochladen von Objekten erteilen. Standardmäßig gehören Objekte, die Dave hochgeladen hat, zu Konto B, und Konto A besitzt keine Berechtigungen für diese Objekte. Da der Bucket-Eigentümer die Rechnungen bezahlt, benötigt er volle Berechtigungen für die Objekte, die Dave hochlädt. Der Administrator von Konto A kann für diesen Zweck eine Berechtigung s3:PutObject an Dave erteilen, unter der Bedingung, dass die Anforderung ACL-spezifische Header enthält, die explizit die vollständige Berechtigung gewähren oder eine vordefinierte ACL verwenden (vgl. PUT Object).

  • Der geforderte Header x-amz-full-control in der Anforderung erteilt dem Bucket-Eigentümer vollständige Kontrollberechtigungen.

    Die folgende Bucket-Richtlinie erteilt dem Benutzer Dave die Berechtigung s3:PutObject mit einer Bedingung, die den Bedingungsschlüssel s3:x-amz-grant-full-control enthält, in die Anforderung den Header x-amz-full-control aufzunehmen.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringEquals": { "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID" } } } ] }

    Anmerkung

    In diesem Beispiel geht es um die kontoübergreifende Berechtigung. Wenn Dave (der die Berechtigung erhält) jedoch zu dem AWS-Konto gehört, dem der Bucket gehört, ist diese bedingte Berechtigung nicht erforderlich. Grund hierfür ist, dass das übergeordnete Konto, dem Dave angehört, Eigentümer von Objekten ist, die der Benutzer hochlädt.

    Die vorherige Bucket-Richtlinie erteilt dem Benutzer Dave in Konto B eine bedingte Berechtigung. Während diese Richtlinie in Kraft ist, ist es Dave möglich, die gleiche Berechtigung ohne Bedingung über eine andere Richtlinie zu erhalten. Beispiel: Dave kann einer Gruppe angehören, der Sie die Berechtigung s3:PutObject bedingungslos erteilen. Um solche Berechtigungslücken zu vermeiden, können Sie eine strengere Zugriffsrichtlinie schreiben, indem Sie eine explizite Zugriffsverweigerung hinzufügen. In diesem Beispiel verweigern Sie explizit die Upload-Berechtigung für Benutzer Dave, wenn er nicht die erforderlichen Header in die Anforderung einbindet, die dem Bucket-Eigentümer volle Berechtigungen gewährt. Eine explizite Verweigerung ersetzt immer eine anderswo erteilte Erlaubnis. Hier folgt das überarbeitete Beispiel für die Zugriffsrichtlinie.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringEquals": { "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID" } } }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringNotEquals": { "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID" } } } ] }

    Wenn Sie zwei AWS-Konten haben, können Sie die Richtlinie mit AWS Command Line Interface (AWS CLI) testen. Sie fügen die Richtlinie hinzu und testen die Berechtigung mithilfe der Anmeldedaten von Dave mit dem folgenden AWS CLI put-object-Befehl. Sie stellen dem Benutzer Dave die Anmeldeinformationen bereit, indem Sie den Parameter --profile hinzufügen. Sie erteilen dem Bucket-Eigentümer die volle Kontrolle, indem Sie den Parameter --grant-full-control hinzufügen. Weitere Informationen zum Einrichten und Verwenden der AWS CLI finden Sie unter Einrichten der Tools für die Beispiel-Anleitungen.

    aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBUserProfile
  • Der geforderte Header x-amz-acl mit einer vordefinierten ACL erteilt dem Bucket-Eigentümer vollständige Kontrollberechtigungen.

    Um den Header x-amz-acl in der Anforderung erforderlich zu machen, können Sie das Schlüssel-Wert-Paar im Block Condition ersetzen und den Bedingungsschlüssel s3:x-amz-acl wie im folgenden Beispiel dargestellt angeben.

    "Condition": { "StringNotEquals": { "s3:x-amz-acl": "bucket-owner-full-control" }

    Um die Berechtigung mithilfe der AWS CLI zu testen, geben Sie den Parameter --acl an. Die AWS CLI fügt dann beim Senden der Anforderung den Header x-amz-acl hinzu.

    aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --acl "bucket-owner-full-control" --profile AccountBadmin

Beispiel 2: 3:PutObject-Berechtigung unter der Bedingung erteilen, dass Objekte mit serverseitiger Verschlüsselung gespeichert werden

Angenommen, Konto A besitzt einen Bucket. Der Konto-Administrator möchte Jane, einer Benutzerin in Konto A, die Berechtigung zum Hochladen von Objekten mit einer 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" }

Um die Berechtigung mithilfe der AWS CLI zu testen, müssen Sie den erforderlichen Parameter --server-side-encryption hinzufügen.

aws s3api put-object --bucket example1bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountBadmin

Beispiel 3: s3:PutObject-Berechtigung zum Kopieren von Objekten mit einer Einschränkung für die Kopierquelle erteilen

Wenn Sie in der PUT-Objektanforderung 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 für die Quelle zu kopieren, z. B.:

  • das Kopieren von Objekten nur aus dem sourcebucket-Bucket erlauben.

  • das Kopieren von Objekten aus dem Bucket sourcebucket erlauben und nur die Objekte, deren Schlüsselnamenpräfix mit public/ beginnt. Beispiel, sourcebucket/public/*

  • nur das Kopieren eines bestimmten Objekts aus dem Bucket sourcebucketerlauben, z. B.: sourcebucket/example.jpg.

Mit der folgenden Bucket-Richtlinie wird dem Benutzer Dave die Berechtigung s3:PutObject gewährt. 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 /examplebucket/public/* angibt.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "cross-account permission to user in your own account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": ["s3:PutObject"], "Resource": "arn:aws:s3:::examplebucket/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/folder", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "examplebucket/public/*" } } } ] }

Sie können die Berechtigung mit dem AWS CLI-Befehl copy-object testen. Sie geben die Quelle an, indem Sie den Parameter --copy-source hinzufügen. Das Präfix des Schlüsselnamens 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 Festlegen der AWS CLI finden Sie unter Einrichten der Tools für die Beispiel-Anleitungen.

aws s3api copy-object --bucket examplebucket --key HappyFace.jpg --copy-source examplebucket/public/PublicHappyFace1.jpg --profile AccountADave

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": "examplebucket/public/PublicHappyFace1.jpg" } }

Beispiel 4: Gewähren von Zugriff auf eine bestimmte Version eines Objekts

Angenommen, Konto A besitzt einen versionsaktivierten Bucket. Der Bucket beinhaltet mehrere Versionen des Objekts HappyFace.jpg. Der Kontoadministrator möchte nun seinem Benutzer (Dave) die Berechtigung erteilen, nur eine bestimmte Version des Objekts zu erhalten. Der Kontoadministrator kann dies erreichen, indem Dave die Berechtigung s3:GetObjectVersion wie gezeigt bedingt erhält. Das Schlüssel-Wert-Paar im Block Condition gibt den Bedingungsschlüssel s3:VersionId an.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": ["s3:GetObjectVersion"], "Resource": "arn:aws:s3:::examplebucketversionenabled/HappyFace.jpg" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": ["s3:GetObjectVersion"], "Resource": "arn:aws:s3:::examplebucketversionenabled/HappyFace.jpg", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e" } } } ] }

In diesem Fall muss Dave die genaue Objekt-Versions-ID kennen, um das Objekt abzurufen.

Sie können die Berechtigungen mit dem AWS CLI;-Befehl get-object mit dem Parameter --version-id testen, der 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-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave

Beispiel 5: Objekt-Uploads auf Objekte mit einer bestimmten Speicherklasse beschränken

Angenommen, Konto A besitzt einen Bucket. Der Kontoadministrator möchte Dave, einen Benutzer in Konto A, insofern einschränken, nur Objekte in den Bucket hochladen zu können, die mit der Speicherklasse STANDARD_IA gespeichert werden. Der Administrator von Konto A kann für diesen Zweck, wie in der folgenden Beispiel-Bucket-Richtlinie gezeigt, den Bedingungsschlüssel s3:x-amz-storage-class verwenden.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "StringEquals": { "s3:x-amz-storage-class": [ "STANDARD_IA" ] } } } ] }

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

Die folgende Tabelle zeigt eine Liste von für die Bucket-Operationen spezifischen Berechtigungen, die Sie in Richtlinien gewähren können. Für jede Berechtigung werden die verfügbaren Schlüssel angezeigt, die Sie bei der Angabe einer Bedingung verwenden können.

Berechtigung Anwendbare Bedingungsschlüssel Beschreibung

s3:CreateBucket

  • s3:x-amz-acl (für vordefinierte ACL-Berechtigungen)

  • s3:x-amz-grant-permission (für ausdrückliche Berechtigungen), wobei permission sein kann:

    read, write,​ read-acp,​ write​-acp,​ ​full​-control

Die „Create Bucket“-API (siehe PUT Bucket) unterstützt ACL-spezifische Header. Mithilfe dieser Bedingungsschlüssel können Sie von einem Benutzer fordern, diese Header in der Anforderung festzulegen, die bestimmte Berechtigungen gewähren.

s3:LocationConstraint

Mit diesem Bedingungsschlüssel können Sie einen Benutzer so einschränken, dass er den Bucket nur in einer bestimmten AWS-Region erstellen kann. Eine Beispielrichtlinie finden Sie in Beispiel 1: Einem Benutzer erlauben, einen Bucket nur in einer bestimmten Region zu erstellen.

s3:ListBucket

s3:prefix

Mithilfe dieses Bedingungsschlüssels können Sie die Antwort der Get Bucket (List Objects)-API (vgl. GET Bucket (List Objects)) auf Schlüsselnamen mit einem bestimmten Präfix einschränken.

Das „Get Bucket (List Objects) API” gibt eine Liste der Objektschlüssel im angegebenen Bucket zurück. Dieses API unterstützt den Header prefix, um nur die Objektschlüssel mit einem bestimmten Präfix abzurufen. Dieser Bedingungsschlüssel bezieht sich auf den Header prefix.

Zum Beispiel, die Amazon S3-Konsole unterstützt das Ordner-Konzept mithilfe von Schlüsselnamenpräfixen. Wenn Sie also zwei Objekte mit Schlüsselnamen public/object1.jpg und public/object2.jpg haben, zeigt die Konsole die Objekte unter dem Ordner public. Wenn Sie Ihre Objektschlüssel mithilfe solcher Präfixe organisieren, können Sie der Berechtigung s3:ListBucket die Bedingung erteilen, dass der Benutzer eine Liste mit Schlüsselnamen mit einem bestimmten Präfix abrufen kann.

Eine Beispielrichtlinie finden Sie in Beispiel 2: Einem Benutzer erlauben, eine Liste von Objekten in einem Bucket nach einem bestimmten Präfix abzurufen .

s3:delimiter

Wenn Sie Ihre Objektschlüsselnamen mithilfe von Präfixen und Begrenzungszeichen organisieren, können Sie mithilfe dieses Bedingungsschlüssels den Parameter delimiter in der Anforderung "Get Bucket (List Objects)" angeben. In diesem Fall gibt die Amazon S3-Antwort eine Liste von Objektschlüsseln mit gemeinsamen, gruppierten Präfixen zurück. Um ein Beispiel für die Verwendung von Präfixen und Separatoren zu erhalten, gehen Sie zu Get Bucket (List Objects).

s3:max-keys

Mit dieser Bedingung können Sie die zurückgegebene Anzahl der Amazon S3-Schlüssel begrenzen, als Antwort auf die Anforderung „Get Bucket (List Objects)“, indem der Benutzer den Parameter max-keys angeben muss. Standardmäßig gibt das API bis zu 1000 Schlüsselnamen zurück.

Eine Liste der numerischen Bedingungen, die Sie verwenden können, finden Sie unter Numerische Bedingungsoperatoren im IAM-Benutzerhandbuch.

s3:ListBucketVersions

s3:prefix

Wenn Ihr Bucket versionsaktiviert ist, können Sie das API GET Bucket Object versions verwenden (vgl. GET Bucket Object versions), um Metadaten aller Versionen der Objekte abzurufen. Für dieses API muss der Bucket-Eigentümer die Berechtigung s3:ListBucketVersions in der Richtlinie erteilen.

Mithilfe dieses Bedingungsschlüssels können Sie die Antwort des API auf Schlüsselnamen mit einem bestimmten Präfix einschränken, indem der Benutzer aufgefordert wird, den Parameter prefix in der Anforderung mit einem bestimmten Wert anzugeben.

Zum Beispiel, die Amazon S3-Konsole unterstützt das Ordner-Konzept Schlüsselnamenpräfixe zu verwenden. Wenn Sie also zwei Objekte mit den Schlüsselnamen public/object1.jpg und public/object2.jpg haben, zeigt die Konsole die Objekte unter dem Ordner public. Wenn Sie Ihre Objektschlüssel mithilfe solcher Präfixe organisieren, können Sie der Berechtigung s3:ListBucket die Bedingung erteilen, dass nur eine Liste mit Schlüsselnamen mit einem bestimmten Präfix abgerufen werden kann.

Eine Beispielrichtlinie finden Sie in Beispiel 2: Einem Benutzer erlauben, eine Liste von Objekten in einem Bucket nach einem bestimmten Präfix abzurufen .

s3:delimiter

Wenn Sie Ihre Objektschlüsselnamen mithilfe von Präfixen und Begrenzungszeichen organisieren, können Sie mithilfe dieses Bedingungsschlüssels vom Benutzer fordern, den Parameter delimiter in seiner Anforderung "GET Bucket Object versions" anzugeben. In diesem Fall gibt die Amazon S3-Antwort eine Liste von Objektschlüsseln mit gemeinsamen, gruppierten Präfixen zurück.

s3:max-keys

Mit dieser Bedingung können Sie die zurückgegebene Anzahl der Amazon S3-Schlüssel begrenzen, als Antwort auf die Anforderung „GET Bucket Object versions“, indem der Benutzer den Parameter max-keys angeben muss. Standardmäßig gibt das API bis zu 1000 Schlüsselnamen zurück. Eine Liste der numerischen Bedingungen, die Sie verwenden können, finden Sie unter Numerische Bedingungsoperatoren im IAM-Benutzerhandbuch.

s3:PutBucketAcl

  • s3:x-amz-acl (für vordefinierte ACL-Berechtigungen)

  • s3:x-amz-grant-permission (für ausdrückliche Berechtigungen), wobei permission sein kann:

    read, write,​ read-acp,​ write​-acp,​ ​full​-control

Die PUT Bucket acl-API (vgl. PUT Bucket) unterstützt ACL-spezifische Header. Sie können diese Bedingungsschlüssel verwenden, um von einem Benutzer zu fordern, diese Header in der Anforderung festzulegen.

Beispiel 1: Einem Benutzer erlauben, einen Bucket nur in einer bestimmten Region zu erstellen

Angenommen, ein AWS-Kontoadministrator möchte seinem Benutzer (Dave) die Berechtigung erteilen, einen Bucket nur in der Region Südamerika (São Paulo) zu erstellen. Der Kontoadministrator kann die folgende Benutzerrichtlinie anfügen, welche die Berechtigung s3:CreateBucket mit der angegebenen Bedingung gewährt. Das Schlüssel-Wert-Paar im Block Condition gibt den Schlüssel s3:LocationConstraint und die Region sa-east-1 als seinen Wert an.

Anmerkung

In diesem Beispiel erteilt der Bucket-Eigentümer einem seiner Benutzer die Berechtigung, daher kann entweder eine Bucket-Richtlinie oder eine Benutzerrichtlinie verwendet werden. Dieses Beispiel zeigt eine Benutzerrichtlinie.

Eine Liste der Amazon S3-Regionen finden Sie unter Regionen und Endpunkte im AWS General Reference.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:CreateBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition": { "StringLike": { "s3:LocationConstraint": "sa-east-1" } } } ] }

Diese Richtlinie beschränkt den Benutzer auf die Erstellung eines Buckets ausschließlich in der Region sa-east-1. Es ist jedoch möglich, dass eine andere Richtlinie diesem Benutzer die Berechtigung erteilt, Buckets in einer anderen Region zu erstellen. Wenn der Benutzer beispielsweise zu einer Gruppe gehört, ist der Gruppe möglicherweise eine Richtlinie zugeordnet, die alle Benutzer der Gruppe zum Erstellen von Buckets in einer anderen Region berechtigt. Um sicherzustellen, dass der Benutzer keine Berechtigung zum Erstellen von Buckets in einer anderen Region erhält, können Sie in dieser Richtlinie eine explizite Anweisung zur Verweigerung hinzufügen.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:CreateBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition": { "StringLike": { "s3:LocationConstraint": "sa-east-1" } } }, { "Sid":"statement2", "Effect":"Deny", "Action":[ "s3:CreateBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition": { "StringNotLike": { "s3:LocationConstraint": "sa-east-1" } } } ] }

Die Anweisung Deny verwendet die Bedingung StringNotLike. Das heißt, eine Create-Bucket-Anforderung wird verweigert, wenn die Standortbeschränkung nicht „sa-east-1” ist. Die explizite Verweigerung erlaubt dem Benutzer nicht, einen Bucket in einer anderen Region zu erstellen, unabhängig davon, welche andere Berechtigung der Benutzer erhält.

Sie können die Richtlinie mit dem folgenden create-bucket AWS CLI-Befehl testen. In diesem Beispiel wird die Datei bucketconfig.txt verwendet, um die Standortbeschränkung anzugeben. Merken Sie sich den Windows-Pfad der Datei. Sie müssen den Bucket-Namen und -Pfad entsprechend aktualisieren. Sie müssen die Anmeldeinformationen des Benutzers bereitstellen, indem Sie den Parameter --profile hinzufügen. Weitere Informationen zum Einrichten und Verwenden der AWS CLI finden Sie unter Einrichten der Tools für die Beispiel-Anleitungen.

aws s3api create-bucket --bucket examplebucket --profile AccountADave --create-bucket-configuration file://c:/Users/someUser/bucketconfig.txt

Die Datei bucketconfig.txt gibt die Konfiguration wie folgt an.

{"LocationConstraint": "sa-east-1"}

Beispiel 2: Einem Benutzer erlauben, eine Liste von Objekten in einem Bucket nach einem bestimmten Präfix abzurufen

Ein Bucket-Eigentümer kann einen Benutzer darauf beschränken, die Inhalte eines bestimmten Ordners im Bucket aufzulisten. Dies ist nützlich, wenn Objekte in dem Bucket nach Schlüsselnamenpräfixen organisiert sind. Die Amazon S3-Konsole verwendet dann die Präfixe zur Anzeige einer Ordnerhierarchie (nur die Konsole unterstützt Ordner; die Amazon S3-API unterstützt nur Buckets und Objekte).

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. Zuerst zeigen wir eine Benutzerrichtlinie.

Die folgende Benutzerrichtlinie erteilt die Berechtigung für den Bucket s3:ListBucket (siehe GET Bucket (List Objects)) mit der Bedingung, dass der Benutzer in der Anforderung das Präfix prefix mit dem Wert projects anführt.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::examplebucket" ], "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::examplebucket" ], "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. Zum Beispiel ist es möglich, dass der Benutzer die Berechtigung erhält, Objektschlüssel ohne Einschränkung aufzulisten, beispielsweise entweder durch Aktualisierungen der früheren Benutzerrichtlinie oder durch eine Bucket-Richtlinie. Da jedoch die explizite Verweigerung immer vorrangig ist, wird die Benutzeranforderung verweigert, andere Schlüssel als das Präfix project aufzulisten.

Die vorherige Richtlinie ist eine Benutzerrichtlinie. Wenn Sie der Richtlinie das Element Principal hinzufügen, das den Benutzer identifiziert, haben Sie jetzt eine Bucket-Richtlinie.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::BucketOwner-accountID:user/user-name" }, "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::examplebucket" ], "Condition" : { "StringEquals" : { "s3:prefix": "examplefolder" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::BucketOwner-AccountID:user/user-name" }, "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::examplebucket" ], "Condition" : { "StringNotEquals" : { "s3:prefix": "examplefolder" } } } ] }

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 zum Einrichten und Verwenden der AWS CLI finden Sie unter Einrichten der Tools für die Beispiel-Anleitungen.

aws s3api list-objects --bucket examplebucket --prefix examplefolder --profile AccountADave

Wenn der Bucket versionsaktiviert ist, müssen Sie die Berechtigung s3:ListBucket für die Auflistung der Objekte im Bucket in der früheren Richtlinie nun auf die Berechtigung s3:ListBucketVersions ändern. Diese Berechtigung unterstützt auch den s3:prefix-Bedingungsschlüssel.