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.
Überprüfen der Bucket-Eigentümerschaft mit Bucket-Eigentümer-Bedingung
Die Bedingung des Amazon S3 S3-Bucket-Besitzers stellt sicher, dass die Buckets, die Sie in Ihren S3-Vorgängen verwenden, zu den AWS-Konten das erwarten Sie.
Die meisten S3-Vorgänge lesen oder schreiben in bestimmte S3-Buckets. Zu diesen Vorgängen gehören das Hochladen, Kopieren und Herunterladen von Objekten, das Abrufen oder Ändern von Bucket-Konfigurationen und das Abrufen oder Ändern von Objektkonfigurationen. Wenn Sie diese Vorgänge ausführen, geben Sie den Bucket an, den Sie verwenden möchten, indem Sie seinen Namen in die Anforderung einbeziehen. Um beispielsweise ein Objekt aus S3 abzurufen, stellen Sie eine Anforderung, die den Namen eines Buckets und den Objektschlüssel angibt, der aus diesem Bucket abgerufen werden soll.
Da Amazon S3 Buckets anhand ihrer Namen identifiziert, könnte eine Anwendung, die einen falschen Bucket-Namen in einer Anforderung verwendet, versehentlich Vorgänge gegen einen anderen Bucket als erwartet ausführen. Um unbeabsichtigte Bucket-Interaktionen in solchen Situationen zu vermeiden, können Sie die Bucket-Eigentümer-Bedingung verwenden. Mit der Bedingung „Bucket-Besitzer“ können Sie überprüfen, ob der Ziel-Bucket dem erwarteten Benutzer gehört AWS-Konto und bietet so eine zusätzliche Gewissheit, dass Ihre S3-Operationen die von Ihnen beabsichtigten Auswirkungen haben.
Themen
Wann die Bucket-Eigentümer-Bedingung verwendet werden sollte
Wir empfehlen, die Bucket-Eigentümer-Bedingung zu verwenden, wenn Sie einen unterstützten S3-Vorgang ausführen und die Konto-ID des erwarteten Bucket-Eigentümers kennen. Die Bucket-Eigentümer-Bedingung ist für alle S3-Objekt-Vorgänge und die meisten S3-Bucketvorgänge verfügbar. Eine Liste der S3-Vorgänge, die die Bucket-Eigentümerbedingung nicht unterstützen, finden Sie unter Beschränkungen und Einschränkungen.
Um die Vorteile der Verwendung der Bucket-Eigentümer-Bedingung zu erkennen, stellen Sie sich das folgende Szenario vor AWS Kunde Bea:
-
Bea entwickelt eine Anwendung, die Amazon S3 verwendet. Während der Entwicklung verwendet Bea sie nur zum Testen AWS-Konto um einen Bucket mit dem Namen zu erstellen und ihre Anwendung so zu konfigurieren
bea-data-test
, dass sie Anfragen an sie stellt.bea-data-test
-
Bea stellt ihre Anwendung bereit, vergisst jedoch, die Anwendung neu zu konfigurieren, sodass sie in ihrer Produktion einen Bucket verwendet AWS-Konto.
-
In der Produktion stellt Beas Anwendung Anforderungen an
bea-data-test
, die erfolgreich sind. Dies führt dazu, dass Produktionsdaten in den Bucket im Testkonto von Bea geschrieben werden.
Bea kann sich vor solchen Situationen schützen, indem sie die Bucket-Eigentümer-Bedingung verwendet. Mit der Bedingung „Besitzer des Buckets“ kann Bea Folgendes einbeziehen AWS-Konto ID des voraussichtlichen Bucket-Besitzers in ihren Anfragen. Amazon S3 überprüft dann die Konto-ID des Bucket-Eigentümers, bevor es eine Anforderung bearbeitet. Wenn der tatsächliche Bucket-Eigentümer nicht mit dem erwarteten Bucket-Eigentümer übereinstimmt, schlägt die Anforderung fehl.
Wenn Bea die Bucket-Eigentümer-Bedingung verwendet, führt das zuvor beschriebene Szenario nicht dazu, dass die Anwendung von Bea versehentlich in einen Test-Bucket schreibt. Stattdessen schlagen die Anforderungen, die ihre Anwendung in Schritt 3 stellt, mit einer Fehlermeldung Access Denied
fehl. Durch die Verwendung der Bedingung „Bucket Owner“ trägt Bea dazu bei, das Risiko einer versehentlichen Interaktion mit Buckets im falschen Format zu vermeiden AWS-Konto.
Verifizieren eines Bucket-Eigentümers
Um die Bucket-Eigentümer-Bedingung zu verwenden, schließen Sie in ihre Anforderung einen Parameter ein, der den erwarteten Bucket-Eigentümer angibt. Die meisten S3-Vorgänge betreffen nur einen einzelnen Bucket und erfordern nur diesen einzelnen Parameter, um die Bucket-Eigentümer-Bedingung zu verwenden. Für CopyObject
-Vorgänge gibt dieser erste Parameter den erwarteten Eigentümer des Ziel-Buckets an, und Sie schließen einen zweiten Parameter ein, um den erwarteten Eigentümer des Quell-Buckets anzugeben.
Wenn Sie eine Anforderung stellen, die einen Bucket-Eigentümer-Bedingungsparameter enthält, überprüft S3 vor der Verarbeitung der Anforderung die Konto-ID des Bucket-Eigentümers mit dem angegebenen Parameter. Wenn der Parameter mit der Konto-ID des Bucket-Eigentümers übereinstimmt, verarbeitet S3 die Anforderung. Wenn der Parameter nicht mit der Konto-ID des Bucket-Eigentümers übereinstimmt, schlägt die Anforderung mit einer Fehlermeldung Access Denied
fehl.
Sie können den Bucket Owner Condition zusammen mit dem AWS Command Line Interface (AWS CLI), AWS SDKsund Amazon S3 RESTAPIs. Wenn Sie die Bucket-Eigentümer-Bedingung mit dem AWS CLI und Amazon S3 RESTAPIs, verwenden Sie die folgenden Parameternamen.
Zugriffsmethode | Parameter für Nicht-Kopiervorgänge | Quellparameter für Kopiervorgang | Zielparameter für Kopiervorgang |
---|---|---|---|
AWS CLI | --expected-bucket-owner |
--expected-source-bucket-owner |
--expected-bucket-owner |
Amazon S3 REST APIs | Header x-amz-expected-bucket-owner |
Header x-amz-source-expected-bucket-owner |
Header x-amz-expected-bucket-owner |
Die Parameternamen, die für die Verwendung der Bucket-Eigentümer-Bedingung mit dem AWS
SDKsvariieren je nach Sprache. Informationen zur Bestimmung der erforderlichen Parameter finden Sie in der SDK Dokumentation für Ihre gewünschte Sprache. Sie finden die SDK Dokumentation unter Tools to Build on AWS
Beispiele
Die folgenden Beispiele zeigen, wie Sie die Bucket-Besitzer-Bedingung in Amazon S3 implementieren können, indem Sie AWS CLI oder das AWS SDK for Java 2.x.
Beispiel: Ein Objekt hochladen
Im folgenden Beispiel wird ein Objekt in den S3-Bucket hochgeladen
, wobei die Bucket-Owner-Bedingung verwendet amzn-s3-demo-bucket1
wird, um sicherzustellen, dass es Eigentum von AWS-Konto
amzn-s3-demo-bucket1
111122223333
.
Beispiel: Kopieren eines Objekts
Im folgenden Beispiel wird das Objekt object1
vom S3-Bucket
in den S3-Bucket amzn-s3-demo-bucket1
kopiert. Dabei wird die Bucket-Eigentümer-Bedingung verwendet, um sicherzustellen, dass die Buckets den erwarteten Konten gemäß der folgenden Tabelle gehören. amzn-s3-demo-bucket2
Bucket | Erwarteter Eigentümer |
---|---|
|
111122223333 |
|
444455556666 |
Beispiel: Abrufen einer Bucket-Richtlinie
Im folgenden Beispiel wird die Zugriffsrichtlinie für den S3-Bucket abgerufen
, wobei die Bedingung bucket owner verwendet wird, um sicherzustellen, dass dieser Bucket amzn-s3-demo-bucket1
gehört AWS-Konto
amzn-s3-demo-bucket1
111122223333
.
Beschränkungen und Einschränkungen
Die Amazon-S3-Bucket-Eigentümer-Bedingung hat die folgenden Einschränkungen und Grenzen:
-
Der Wert des Bedingungsparameters Bucket Owner muss ein sein AWS-Konto ID (12-stelliger numerischer Wert). Service-Prinzipale werden nicht unterstützt.
-
Die Bedingung „Bucket-Besitzer“ ist weder für CreateBucketListBuckets, noch für andere der in enthaltenen Operationen verfügbar AWS S3-Steuerung. Amazon S3 ignoriert alle Bucket-Eigentümer-Bedingungsparameter, die in Anfragen für diese Vorgänge enthalten sind
-
Die Bucket-Eigentümer-Bedingung überprüft nur, dass das im Verifizierungsparameter angegebene Konto den Bucket besitzt. Die Bucket-Eigentümer-Bedingung überprüft nicht die Konfiguration des Buckets. Sie garantiert auch nicht, dass die Konfiguration des Buckets bestimmte Bedingungen erfüllt oder mit einem früheren Zustand übereinstimmt.