Amazon-S3-Bedingungsschlüssel - 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.

Amazon-S3-Bedingungsschlüssel

Mit der Sprache der Zugriffsrichtlinie können Sie bei der Erteilung von Berechtigungen Bedingungen angeben. Um Bedingungen dafür festzulegen, wann eine Richtlinie gültig ist, können Sie das optionale Element Condition oder den Block Condition verwenden. Sie können vordefinierte AWS-weite Schlüssel und Amazon S3-spezifische Schlüssel verwenden, um Bedingungen in einer Amazon S3-Zugriffsrichtlinie anzugeben.

Im Element Condition formulieren Sie Ausdrücke, in denen Sie boolesche Operatoren verwenden (gleich, kleiner als usw.), um die Bedingung auf Übereinstimmung mit den Werten in der Anforderung zu prüfen. Wenn Sie einem Benutzer beispielsweise die Berechtigung zum Hochladen eines Objekts erteilen, kann der Bucket-Eigentümer anfordern, dass das Objekt öffentlich lesbar ist, indem er die Bedingung StringEquals wie hier gezeigt hinzufügt:

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

Im Beispiel gibt der Block Condition die Bedingung StringEquals an, die auf das angegebene Schlüssel-Wert-Paar angewendet wird, "s3:x-amz-acl":["public-read"]. Es gibt einen Satz vordefinierter Schlüssel, die Sie zum Ausdruck einer Bedingung verwenden können. Das Beispiel verwendet den Bedingungsschlüssel s3:x-amz-acl. Diese Bedingung erfordert, dass der Benutzer in jeder PUT Object-Anforderung den Header x-amz-acl mit dem Wert public-read angibt.

AWS-weite Bedingungsschlüssel

AWS bietet eine Reihe von gemeinsamen Schlüsseln, die von allen - AWS Services unterstützt werden, die Richtlinien unterstützen. Diese Schlüssel werden als AWS-weite Schlüssel bezeichnet und verwenden das Präfix aws:. Eine vollständige Liste der AWS-weiten Schlüssel ist im Abschnitt Verfügbare AWS -Schlüssel für Bedingungen des IAM-Benutzerhandbuchs enthalten. Sie können AWS-weite Bedingungsschlüssel in Amazon S3 verwenden. 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.0.2.0.*), sofern die IP-Adresse nicht 192.0.2.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:SourceIp AWS-weiten Schlüssel.

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 AWS-weite Bedingungsschlüssel in Amazon 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-Autorisierungs-Referenz.

Amazon-S3-spezifische Bedingungsschlüssel

Sie können Amazon-S3-Bedingungsschlüssel mit bestimmten Amazon-S3-Aktionen verwenden. Jeder Bedingungsschlüssel wird dem vom API zugelassenen gleichen Namensanforderungsheader zugeordnet, auf den die Bedingung festgelegt werden kann. Amazon-S3-spezifische Bedingungsschlüssel bestimmen das Verhalten der Anforderungs-Header mit demselben Namen. Eine vollständige Liste der Amazon S3-spezifischen Bedingungsschlüssel finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3 in der Service-Autorisierungs-Referenz.

Der Bedingungsschlüssel s3:x-amz-acl, den Sie zum Erteilen der Bedingungsberechtigung s3:PutObject verwenden können, definiert das Verhalten des Anforderungs-Headers x-amz-acl, den die 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.

Die folgende Bucket-Richtlinie erteilt die -s3:PutObjectBerechtigung für zwei AWS-Konten , wenn die Anforderung den x-amz-acl Header enthält, der das Objekt öffentlich lesbar macht. 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 ist.

{ "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:::awsexamplebucket1/*"], "Condition": { "StringEquals": { "s3:x-amz-acl":["public-read"] } } } ] }
Wichtig

Nicht alle Bedingungen machen für alle Aktionen auch Sinn. Beispielsweise ist es sinnvoll, die Bedingung s3:LocationConstraint für eine Richtlinie einzufügen, die die Amazon-S3-Berechtigung s3:CreateBucket erteilt. Es ist jedoch nicht sinnvoll, diese Bedingung in eine Richtlinie aufzunehmen, die die s3:GetObject-Genehmigung erteilt. Amazon S3 kann auf semantische Fehler dieses Typs testen, die Amazon-S3-spezifische Bedingungen beinhalten. Wenn Sie jedoch eine Richtlinie für eine(n) IAM-Benutzer oder -Rolle erstellen und eine semantisch ungültige Amazon-S3-Bedingung einfügen, wird kein Fehler gemeldet, weil IAM keine Amazon-S3-Bedingungen validieren kann.