Einheitlicher Zugriff auf Bucket-Ebene

Zu den Beispielen

Auf dieser Seite wird der einheitliche Zugriff auf Bucket-Ebene beschrieben, mit dem Sie den Zugriff auf Ihre Cloud Storage-Ressourcen einheitlich steuern können. Wenn Sie für einen Bucket den einheitlichen Zugriff auf Bucket-Ebene aktivieren, werden Access Control Lists (ACLs) deaktiviert und Sie erhalten nur mit IAM-Berechtigungen (Identity and Access Management) auf Bucket-Ebene Zugriff auf diesen Bucket und die darin enthaltenen Objekte. Sie widerrufen damit jeglichen Zugriff, der von Objekt-ACLs gewährt wird, und es ist dann nicht mehr möglich, Berechtigungen mithilfe von Bucket-ACLs zu verwalten.

Übersicht

Cloud Storage bietet zwei Systeme, damit Sie Nutzern die Berechtigung zum Zugriff auf Ihre Buckets und Objekte erteilen können: IAM und Access Control Lists (ACLs). Diese Systeme sind parallel aktiv – wenn Sie einem Nutzer Zugriff auf eine Cloud Storage-Ressource gewähren möchten, muss die Berechtigung nur von einem der Systeme erteilt werden. IAM wird in Google Cloud verwendet und ermöglicht Ihnen, verschiedene Berechtigungen auf Bucket- und Projektebene zu gewähren. ACLs werden nur von Cloud Storage verwendet und bieten eingeschränkte Berechtigungsoptionen. Sie ermöglichen Ihnen jedoch, Berechtigungen auf Objektbasis zu gewähren.

Zur Unterstützung eines einheitlichen Berechtigungssystems ist Cloud Storage mit einem einheitlichen Zugriff auf Bucket-Ebene ausgestattet. Durch die Verwendung dieses Features werden ACLs für alle Cloud Storage-Ressourcen deaktiviert: Der Zugriff auf Cloud Storage-Ressourcen wird dann ausschließlich über IAM gewährt. Nachdem Sie den einheitlichen Zugriff auf Bucket-Ebene aktiviert haben, haben Sie 90 Tage lang Zeit, dies rückgängig zu machen.

Sollten Sie einen einheitlichen Zugriff auf Bucket-Ebene verwenden?

Grundsätzlich sollte ein einheitlicher Zugriff auf Bucket-Ebene verwendet werden, da dies den Zugriff auf Ihre Cloud Storage-Ressourcen vereinheitlicht und vereinfacht.

Mit dem einheitlichen Zugriff auf Bucket-Ebene können Sie auch andere Google Cloud-Sicherheitsfeatures wie domaineingeschränkte Freigabe und IAM-Bedingungen nutzen.

In den folgenden Fällen sollten Sie möglicherweise keinen einheitlichen Zugriff auf Bucket-Ebene verwenden und stattdessen exakt abgestufte ACLs beibehalten:

  • Sie möchten den Zugriff auf bestimmte Objekte in einem Bucket über alte ACLs steuern.

  • Sie möchten, dass der Uploader eines Objekts vollständige Kontrolle über das Objekt, aber eingeschränkten Zugriff auf andere Objekte in Ihrem Bucket hat.

Beschränkungen

Bei Verwendung des einheitlichen Zugriffs auf Bucket-Ebene gelten die folgenden Einschränkungen:

  • Cloud Logging und Cloud-Audit-Logs können nicht in Buckets exportieren, in denen der einheitliche Zugriff auf Bucket-Ebene aktiviert ist.

  • Sie können die XML API nicht verwenden, um Berechtigungen für Buckets mit aktiviertem einheitlichen Zugriff auf Bucket-Ebene anzuzeigen oder festzulegen.

Verhalten bei Aktivierung

Sie können den einheitlichen Zugriff auf Bucket-Ebene entweder beim Erstellen eines neuen Buckets oder einheitlichen Zugriff auf Bucket-Ebene explizit für einen vorhandenen Bucket aktivieren.

Nach der Aktivierung hat ein Bucket folgendes Verhalten:

  • Bei Anfragen zum Festlegen, Lesen oder Ändern von Bucket- und Objekt-ACLs werden 400 Bad Request-Fehler ausgegeben.

  • Bei JSON API-Anfragen für eine vollständige Projektion von Bucket- oder Objektmetadaten enthält die Antwort eine leere ACL.

  • Die gsutil-Befehle cp -p, mv -p und rsync -p schlagen fehl (unabhängig davon, ob der Bucket mit einheitlichem Zugriff auf Bucket-Ebene die Quelle oder das Ziel darstellt). Die gsutil-Befehle acl und defacl schlagen ebenfalls fehl.

  • Die Inhaberschaft einzelner Objekte ist nicht mehr vorhanden. Der durch diese Inhaberschaft gewährte Zugriff wird entzogen und Anfragen für Bucket- und Objektmetadaten enthalten kein owner-Feld mehr.

  • Bei der Erstellung erhalten Buckets spezielle IAM-Rollen. Wenn Sie beim Erstellen eines neuen Buckets einen einheitlichen Zugriff auf Bucket-Ebene aktivieren, erhält dieser Bucket zusätzliche IAM-Rollen, wie in der verknüpften Tabelle angegeben.

    • Dabei werden die Berechtigungen, die Objekte von den Standard-Objekt-ACLs des Buckets übernommen haben, beibehalten.

    • Wenn Sie den einheitlichen Zugriff auf Bucket-Ebene für einen vorhandenen Bucket aktivieren, müssen Sie solche Rollen manuell zuordnen. Sie können einen anderen Satz Rollen anwenden, wenn Sie die Standard-Objekt-ACLs des Buckets geändert haben.

Verhalten bei Deaktivierung

Cloud Storage speichert vorhandene ACLs 90 Tage lang, sodass die Möglichkeit besteht, den Zugriff auf Bucket-Ebene zu deaktivieren und die Verwendung von ACLs wiederherzustellen. Folgendes passiert, wenn Sie während dieser Zeit den Zugriff auf Bucket-Ebene einheitlich deaktivieren:

  • Gespeicherte ACLs für Objekte werden wieder aktiviert.

  • Alle Objekte, die dem Bucket nach dem Aktivieren des einheitlichen Zugriffs auf Bucket-Ebene hinzugefügt werden, erhalten ACLs entsprechend den vom Bucket verwendeten Standard-Objekt-ACLs.

Überlegungen beim Migrieren eines vorhandenen Buckets

Wenn Sie den einheitlichen Zugriff auf Bucket-Ebene für einen vorhandenen Bucket aktivieren, sollten die Berechtigungen von Nutzern und Diensten, deren Zugriff zuvor über ACLs gewährt wurde, zu IAM migriert werden. In diesem Abschnitt werden einige Schritte beschrieben, die Sie beim Migrieren eines Buckets zum einheitlichen Zugriff auf Bucket-Ebene ausführen sollten. Da ACLs und IAM für Bucket-Berechtigungen synchronisiert werden, sollten Sie sich speziell auf den Zugriff auf Objekte in Ihrem Bucket konzentrieren und nicht auf den Bucket-Zugriff.

Werden durch eine IAM-Berechtigung auf Bucket-Ebene zu viele Daten freigegeben?

Bevor Sie Ihren ACLs entsprechende IAM-Berechtigungen zuweisen, sollten Sie Folgendes berücksichtigen:

  • Eine auf Bucket-Ebene angewendete IAM-Berechtigung gilt für alle Objekte im Bucket. ACLs hingegen können von Objekt zu Objekt variieren.

Wenn Sie den Zugriff auf ausgewählte Objekte beschränken möchten, sollten Sie diese in separaten Buckets gruppieren. Die Objekte in einer Gruppierung sollten jeweils dieselben Berechtigungen haben.

Nutzung von Objekt-ACLs prüfen

Bei der Migration zum einheitlichen Zugriff auf Bucket-Ebene sollten Sie prüfen, ob auf Objekte im Bucket über die jeweils angewendeten ACLs zugegriffen wird. Dafür bietet Cloud Monitoring einen Messwert, der die ACL-Nutzung aufzeichnet. Wenn dieser Messwert darauf hinweist, dass Nutzer oder Dienste für den Zugriff auf Ihre Objekte auf ACLs angewiesen sind, sollten Sie dem Bucket entsprechende IAM-Berechtigungen zuweisen, bevor Sie den einheitlichen Zugriff auf Bucket-Ebene aktivieren. Eine Anleitung zum Prüfen der ACL-Nutzung in Monitoring finden Sie unter Auf ACL-Nutzung prüfen.

Mit diesem Messwert können Sie ermitteln, welche Auswirkungen das Aktivieren des einheitlichen Zugriffs auf Bucket-Ebene auf Ihren Workflow hat:

Messwert Beschreibung
storage.googleapis.com/authz/acl_operations_count Die Anzahl der ACL-Vorgänge, die deaktiviert werden, sobald der einheitliche Zugriff auf Bucket-Ebene aktiviert ist, aufgeschlüsselt nach ACL-Vorgangsart und -Bucket.

Ein wichtiger zu untersuchender ACL-Vorgang ist OBJECT_ACCESS_REQUIRED_OBJECT_ACL:

  • Wenn diese Zahl null ist, waren in den letzten 6 Wochen keine ACLs auf Objektebene erforderlich, um auf Objekte zuzugreifen. IAM-Richtlinien decken die erforderlichen Berechtigungen auf Bucket- bzw. Projektebene ab.

  • Wenn diese Zahl größer als null ist, wurden innerhalb der letzten 6 Wochen Zugriffsanfragen auf Objekte gestellt, für die Objekt-ACL-Berechtigungen erforderlich waren. Sie sollten entsprechende IAM-Richtlinien zuweisen, bevor Sie den einheitlichen Zugriff auf Bucket-Ebene aktivieren.

Weitere Informationen zu Monitoring-Messwerten finden Sie unter Messwerte, Zeitachsen und Ressourcen.

Standard-Objekt-ACL eines Buckets prüfen

Jedem Bucket ist eine Standard-Objekt-ACL zugeordnet. Diese Standard-Objekt-ACL wird auf jedes neue Objekt angewendet, das einem Bucket hinzugefügt wird, sofern beim Hinzufügen des Objekts zum Bucket nicht explizit eine ACL angegeben wird.

Bevor Sie den einheitlichen Zugriff auf Bucket-Ebene aktivieren, sollten Sie die Standard-Objekt-ACL prüfen, die für Ihren Bucket gilt. Nachdem Sie den einheitlichen Zugriff auf Bucket-Ebene aktiviert haben, können Sie sich überlegen, ob Sie die mit der Standard-Objekt-ACL verknüpften Berechtigungen gewähren möchten. Wenn ja, müssen Sie dem Bucket entsprechende IAM-Berechtigungen zuweisen.

Objekt-ACLs entsprechende IAM-Berechtigungen zuweisen

Objekt-ACLs können Zugriff gewähren, den IAM derzeit nicht bietet. Um sicherzustellen, dass bestehende Nutzer den Zugriff auf Objekte nicht verlieren, wenn Sie einen einheitlichen Zugriff auf Bucket-Ebene aktivieren, verwenden Sie die folgende Tabelle und weisen Sie betroffenen Nutzern die entsprechenden IAM-Rollen zu.

Objekt-ACL-Berechtigung Entsprechende IAM-Rolle
READER Leser alter Storage-Objekte (roles/storage.legacyObjectReader)
OWNER Inhaber alter Storage-Objekte (roles/storage.legacyObjectOwner)

Überlegungen bei der Verwendung von IAM Conditions

IAM Conditions können nur für Buckets mit aktiviertem einheitlichen Zugriff auf Bucket-Ebene verwendet werden, um so Konflikte zwischen den IAM-Richtlinien eines Buckets und Objekt-ACLs zu vermeiden. Das heißt:

  • Wenn Sie IAM Conditions für einen Bucket einrichten möchten, müssen Sie zuerst den einheitlichen Zugriff auf Bucket-Ebene für diesen Bucket aktivieren.

  • Wenn Sie den einheitlichen Zugriff auf Bucket-Ebene für einen Bucket deaktivieren möchten, müssen Sie zuerst alle IAM Conditions aus der Richtlinie dieses Buckets entfernen. Informationen zum Anzeigen und Entfernen von Bedingungen aus einer Bucket-Richtlinie finden Sie unter IAM Conditions für Bucket verwenden. Der einheitliche Zugriff auf Bucket-Ebene kann nicht deaktiviert werden, wenn er 90 Tage in Folge für einen Bucket aktiviert war.

Weitere Informationen