Warum kann ich nicht auf ein Objekt zugreifen, das von einem anderen AWS-Konto in meinen Amazon S3-Bucket hochgeladen wurde?

Lesedauer: 4 Minute
0

Ein AWS Identity and Access Management (IAM)-Benutzer von einem anderen AWS-Konto hat ein Objekt in meinen Amazon Simple Storage Service (Amazon S3)-Bucket hochgeladen. Wenn ich versuche, auf dieses Objekt zuzugreifen, erhalte ich den Fehler 403 Access Denied. Wie kann ich das beheben?

Kurzbeschreibung

Bei vorhandenen Amazon S3-Buckets mit den Standardeinstellungen für Objekteigentümer ist der Objekteigentümer das AWS-Konto, das das Objekt in den Bucket hochgeladen hat. Für diese vorhandenen Buckets musste ein Objekteigentümer einem Objekt explizit Berechtigungen gewähren (indem er eine Zugriffskontrollliste anfügte). Andernfalls könnte der Bucket-Besitzer nicht auf das Objekt zugreifen.

Mit S3 Object Ownership können Bucket-Besitzer jetzt den Besitz aller Objekte verwalten, die in ihre Buckets hochgeladen wurden. Standardmäßig ist für alle neu erstellten S3-Buckets die vom Bucket-Besitzer erzwungene Einstellung aktiviert. Wenn die Einstellung Bucket-Besitzer erzwungen aktiviert ist, werden Bucket-Besitzer zu Objekt-Besitzern für alle Objekte innerhalb des Buckets. Darüber hinaus sind alle ACLs in einem Bucket und seinen Objekten deaktiviert.

Sie können den S3-Objektbesitz auch für bestehende Buckets festlegen, indem Sie entweder die Einstellung Bucket-Besitzer erzwungen oder Bucket-Besitzer empfohlen aktivieren. Wenn die Einstellung Bucket-Besitzer empfohlen aktiviert ist, sind ACLs immer noch aktiviert. Außerdem gehören nur Objekte, die mit einer bucket-owner-full-control-ACL in den Bucket hochgeladen wurden, dem Bucket-Besitzer. Wenn Sie die Einstellung Bucket-Besitzer erzwungen für einen vorhandenen Bucket aktivieren, beachten Sie, dass Sie sie auch jederzeit deaktivieren können. (Wenn Sie die Einstellung Bucket-Besitzer erzwungen für einen vorhandenen Bucket deaktivieren, werden alle zuvor angewendeten Buckets und Objekt-ACLs wieder aktiviert.)

Es ist eine bewährte Methode, dass Bucket-Besitzer die Einstellung für Bucket-Besitzer erzwungen für neue und bestehende Buckets verwenden und gleichzeitig die Berechtigungen mithilfe von IAM- und Bucket-Richtlinien verwalten.

Wichtig: Bevor Sie ACLs für vorhandene Buckets deaktivieren, sollten Sie die möglichen Auswirkungen abschätzen. Wenn ein Objekt oder Bucket mehrere ACLs enthält, überprüfen und aktualisieren Sie Ihre Bucket- und IAM-Richtlinien, um die erforderlichen Berechtigungen zu gewähren.

Lösung

Führen Sie den folgenden Befehl aus, um ACLs für Ihren Bucket zu deaktivieren und den Besitz für alle Objekte im Bucket zu übernehmen:

aws s3api put-bucket-ownership-controls --bucket example-bucket --ownership-controls 'Rules=[{ObjectOwnership=BucketOwnerEnforced}]'

Wenn Sie ACLs in Ihrem Bucket nicht deaktivieren können, verwenden Sie die folgenden Optionen, um Zugriff auf Objekte in Ihrem Bucket zu gewähren.

Zugriff während eines Put- oder Kopiervorgangs gewähren

Während eines Put- oder Kopiervorgangs kann der Objekt-Besitzer angeben, dass die ACL des Objekts dem Bucket-Besitzer die volle Kontrolle gibt.

Für eine Put-Operation kann der Objekt-Besitzer diesen Befehl ausführen:

aws s3api put-object --bucket destination_DOC-EXAMPLE-BUCKET --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Für einen Kopiervorgang eines einzelnen Objekts kann der Objekt-Besitzer einen der folgenden Befehle ausführen:

aws s3api copy-object --bucket destination_DOC-EXAMPLE-BUCKET --key source_DOC-EXAMPLE-BUCKET/myobject --acl bucket-owner-full-control

-oder-

aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/myobject s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control

Für einen Kopiervorgang mehrerer Objekte kann der Objekt-Besitzer den folgenden Befehl ausführen:

aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/ s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control --recursive

Zugriff gewähren, nachdem das Objekt dem Bucket hinzugefügt wurde

Wenn sich das Objekt bereits in einem Bucket in einem anderen Konto befindet, kann der Objekt-Besitzer dem Bucket-Besitzer mit einem Befehl put-object-acl Zugriff gewähren:

aws s3api put-object-acl --bucket destination_DOC-EXAMPLE-BUCKET --key keyname --acl bucket-owner-full-control

Verlangen, dass Objekte dem Bucket-Besitzer die volle Kontrolle gewähren

Sie können eine Bucket-Richtlinie verwenden, um zu verlangen, dass für alle Objekte, die von einem anderen Konto in Ihren Bucket hochgeladen werden, die ACL auf „bucket-owner-full-control“ gesetzt wird. Ein Beispiel finden Sie unter Wenn andere AWS-Konten Objekte in meinen S3-Bucket hochladen, wie kann ich verlangen, dass sie mir das Eigentum an Objekten gewähren?


Ähnliche Informationen

IAM-Tutorial: Delegieren Sie den Zugriff über AWS-Konten mithilfe von IAM-Rollen

Kontenübergreifende Berechtigungen zum Hochladen von Objekten gewähren und gleichzeitig sicherstellen, dass der Bucket-Besitzer die volle Kontrolle hat

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren