Identity und Access Management

Zu den Beispielen

Diese Seite bietet einen Überblick über Identity and Access Management (IAM) und dessen Verwendung zur Steuerung des Zugriffs auf Ressourcen wie Buckets und Objekte in Cloud Storage.

Überblick

Mit IAM können Sie steuern, wer Zugriff auf die Ressourcen in Ihrem Google Cloud-Projekt hat. Zu den Ressourcen gehören Cloud Storage-Buckets, in Buckets gespeicherte Objekte sowie andere Google Cloud-Entitäten wie Compute Engine-Instanzen.

Hauptkonten sind die Akteure bei IAM. Hauptkonten können einzelne Nutzer, Gruppen, Domains oder sogar die gesamte Öffentlichkeit sein. Hauptkonten erhalten Rollen, mit denen sie Aktionen in Cloud Storage und allgemein in Google Cloud ausführen können. Jede Rolle umfasst eine oder mehrere Berechtigungen. Berechtigungen bilden die Grundlage von IAM: Jede Berechtigung gestattet es Ihnen, eine bestimmte Aktion auszuführen.

Mit der Berechtigung storage.objects.create können Sie zum Beispiel Objekte erstellen. Diese Berechtigung ist in Rollen wie Storage-Objekt-Ersteller enthalten, die Berechtigungen zum Erstellen von Objekten in einem Bucket gewährt, sowie in Storage-Objekt-Administrator, die eine Vielzahl von Berechtigungen für die Arbeit mit Objekten gewährt.

Die Sammlung von IAM-Rollen, die Sie für eine Ressource festlegen, wird als IAM-Richtlinie bezeichnet. Der durch diese Rollen gewährte Zugriff gilt sowohl für die Ressource, für die die Richtlinie festgelegt ist, als auch für alle in dieser Ressource enthaltenen Ressourcen. Sie können beispielsweise eine IAM-Richtlinie für einen Bucket festlegen, die einem Nutzer administrative Kontrolle über diesen Bucket und seine Objekte gewährt. Sie können auch eine IAM-Richtlinie für das Gesamtprojekt festlegen, die einem anderen Nutzer die Möglichkeit gibt, Objekte in jedem Bucket innerhalb dieses Projekts anzusehen.

Berechtigungen

Berechtigungen gestatten es Hauptkonten, bestimmte Aktionen für Buckets oder Objekte in Cloud Storage durchzuführen. Mit der Berechtigung storage.buckets.list kann ein Hauptkonto beispielsweise die Buckets in Ihrem Projekt auflisten. Sie erteilen Hauptkonten keine Berechtigungen direkt. Stattdessen erteilen Sie Rollen, die eine oder mehrere Berechtigungen enthalten.

Eine Referenzliste der IAM-Berechtigungen, die für Cloud Storage gelten, finden Sie unter IAM-Berechtigungen für Cloud Storage.

Rollen

Rollen enthalten eine oder mehrere Berechtigungen. Beispiel: Die Rolle Storage-Objekt-Betrachter enthält die Berechtigungen storage.objects.get und storage.objects.list. Sie weisen den Hauptkonten Rollen zu, mit denen sie Aktionen für die Buckets und Objekte in Ihrem Projekt ausführen können.

Eine Referenzliste der IAM-Rollen, die für Cloud Storage gelten, finden Sie unter IAM-Rollen für Cloud Storage.

Rollen auf Projektebene oder auf Bucket-Ebene

Das Zuweisen von Rollen auf Bucket-Ebene hat keine Auswirkungen auf vorhandene Rollen, die Sie auf Projektebene gewährt haben, und umgekehrt. Somit können Sie mit diesen zwei Granularitätsebenen Berechtigungen individuell anpassen. Sie können beispielsweise einem Nutzer die Berechtigung gewähren, Objekte in allen Buckets zu lesen, aber nur in einem bestimmten Bucket zu erstellen. Weisen Sie ihm dafür die Rolle Storage-Objekt-Betrachter auf Projektebene zu, damit er alle Objekte in allen Buckets Ihres Projekts lesen kann. Zusätzlich weisen Sie ihm die Rolle Storage-Objekt-Ersteller auf Bucket-Ebene für einen bestimmten Bucket zu, sodass er nur darin Objekte erstellen kann.

Manche Rollen können sowohl auf Projekt- als auch auf Bucket-Ebene verwendet werden. Auf Projektebene gelten die enthaltenen Berechtigungen für alle Buckets und Objekte im Projekt. Auf Bucket-Ebene dagegen gelten sie nur für einen bestimmten Bucket und die enthaltenen Objekte. Beispiele für solche Rollen sind Storage-Administrator, Storage-Objekt-Betrachter und Storage-Objekt-Ersteller.

Manche Rollen können nur auf einer Ebene zugewiesen werden. Beispielsweise können Sie die Rolle Inhaber alter Storage-Objekte nur auf Bucket-Ebene anwenden.

Bezug zu ACLs

Legacy-Bucket-IAM-Rollen arbeiten mit Bucket-ACLs zusammen: Wenn Sie eine Legacy-Bucket-Rolle einfügen oder entfernen, werden diese Änderungen von den mit dem Bucket verknüpften ACLs übernommen. Genauso wird durch Änderungen an einer Bucket-spezifischen ACL auch die entsprechende Legacy-Bucket-IAM-Rolle für den Bucket geändert.

Legacy Bucket-Rolle Zugehörige ACL
Leser von Legacy-Storage-Buckets Bucket-Leser
Autor von Legacy-Storage-Buckets Bucket-Autor
Inhaber von Legacy-Storage-Buckets Bucket-Inhaber

Alle anderen IAM-Rollen auf Bucket-Ebene, einschließlich der Legacy-Objekt-IAM-Rollen, funktionieren unabhängig von ACLs. Ebenso funktionieren alle IAM-Rollen auf Projektebene unabhängig von ACLs. Wenn Sie beispielsweise einem Nutzer die Rolle Storage-Objekt-Betrachter gewähren, bleiben die ACLs unverändert. Sie können also IAM-Rollen auf Bucket-Ebene verwenden, um allgemeinen Zugriff auf alle Objekte in einem Bucket zu gewähren, und die fein abgestuften Objekt-ACLs, um den Zugriff auf bestimmte Objekte im Bucket anzupassen.

IAM-Berechtigung zum Ändern von ACLs

Sie können IAM verwenden, um Hauptkonten die Berechtigung zum Ändern von ACLs für Objekte zu erteilen. Wenn ein Nutzer alle folgenden storage.buckets-Berechtigungen hat, kann er mit Bucket-ACLs und Standardobjekt-ACLs arbeiten: .get, .getIamPolicy, .setIamPolicy und .update.

Ebenso können Nutzer mit Objekt-ACLs arbeiten, wenn sie die storage.objects-Berechtigungen .get, .getIamPolicy, .setIamPolicy und .update haben.

Benutzerdefinierte Rollen

IAM umfasst viele vordefinierte Rollen, die häufige Anwendungsfälle abdecken. Sie können aber auch eigene Rollen definieren, die von Ihnen festgelegte Berechtigungen enthalten. Dafür bietet IAM benutzerdefinierte Rollen.

Hauptkontotypen

Es gibt verschiedene Arten von Hauptkonten. Google-Konten und Google-Gruppen sind beispielsweise zwei allgemeine Hauptkontotypen, während allAuthenticatedUsers und allUsers zwei spezielle Arten sind. Eine Liste der typischen Hauptkontotypen in IAM finden Sie unter Identitätskonzepte.

Konvergenzwerte

Cloud Storage unterstützt Konvergenzwerte. Diese sind besondere Hauptkonten, die speziell auf Ihre IAM-Bucket-Richtlinien angewendet werden können. Sie sollten in der Regel keine Konvergenzwerte in Produktionsumgebungen verwenden, da sie das Zuweisen von einfachen Rollen erfordern. Die Zuweisung von einfachen Rollen in Produktionsumgebungen wird jedoch nicht empfohlen.

Ein Konvergenzwert ist eine zweiteilige Kennung, die aus einer einfachen Rolle und einer Projekt-ID besteht:

  • projectOwner:PROJECT_ID
  • projectEditor:PROJECT_ID
  • projectViewer:PROJECT_ID

Ein Konvergenzwert dient als Brücke zwischen den Hauptkonten, denen die einfache Rolle und eine IAM-Rolle zugewiesen wurde: Die IAM-Rolle, die dem Konvergenzwert zugewiesen ist, wird auch allen Hauptkonten der angegebenen einfachen Rolle für die angegebene Projekt-ID gewährt.

Beispiel: jane@example.com und john@example.com haben die einfache Rolle Betrachter für ein Projekt mit dem Namen my-example-project und Sie haben einen Bucket in diesem Projekt mit dem Namen my-bucket. Wenn Sie dem Konvergenzwert projectViewer:my-example-project die Rolle Storage-Objekt-Ersteller für my-bucket zuweisen, erhalten sowohl jane@example.com als auch john@example.com die mit Storage-Objekt-Ersteller verknüpften Berechtigungen für my-bucket.

Sie können den Zugriff auf Konvergenzwerte für Ihre Buckets gewähren und entziehen. Cloud Storage wendet sie jedoch unter bestimmten Umständen automatisch an. Weitere Informationen finden Sie unter Modifizierbares Verhalten für einfache Rollen in Cloud Storage.

Bedingungen

Mit IAM Conditions können Sie Bedingungen festlegen, die steuern, wie Berechtigungen an Hauptkonten gewährt werden. Cloud Storage unterstützt die folgenden Arten von Bedingungsattributen:

  • resource.name: Zugriff auf Buckets und Objekte basierend auf dem Bucket- oder Objektnamen. Sie können auch resource.type verwenden, um Zugriff auf Buckets oder Objekte zu gewähren. Dies ist bei Verwendung von resource.name aber in der Regel redundant. Mit der folgenden Beispielbedingung wird eine IAM-Einstellung auf alle Objekte mit demselben Präfix angewendet:
    resource.name.startsWith('projects/_/buckets/BUCKET_NAME/objects/OBJECT_PREFIX')
  • Datum/Uhrzeit: Legt ein Ablaufdatum für die Berechtigung fest.
    request.time < timestamp('2019-01-01T00:00:00Z')

Diese bedingten Ausdrücke sind logische Anweisungen, die eine Teilmenge der Common Ausdruck Language (CEL) verwenden. Sie geben Bedingungen in den Rollenbindungen der IAM-Richtlinie eines Buckets an.

Beachten Sie die folgenden Einschränkungen:

  • Bevor Sie Bedingungen auf Bucket-Ebene hinzufügen, müssen Sie den einheitlichen Bucket-Zugriff für den Bucket aktivieren. Obwohl Bedingungen auf Projektebene zulässig sind, sollten Sie alle Buckets im Projekt zu einem einheitlichen Zugriff auf Bucket-Ebene migrieren, um zu verhindern, dass Cloud Storage-ACLs IAM-Bedingungen auf Projektebene überschreiben. Sie können eine einheitliche Zugriffsbeschränkung auf Bucket-Ebene anwenden, um einen einheitlichen Zugriff auf Bucket-Ebene für alle neuen Buckets in Ihrem Projekt zu ermöglichen.
  • Der Befehl gsutil iam ch funktioniert nicht mit Richtlinien, die Bedingungen enthalten. Zum Ändern einer Richtlinie mit Bedingungen verwenden Sie gsutil iam get. Damit können Sie die Richtlinie für den entsprechenden Bucket abrufen, sie lokal bearbeiten und anschließend gsutil iam set auf den Bucket anwenden.
  • Für die Anwendung von Bedingungen benötigen Sie gsutil in der Version 4.38 oder höher.
  • Wenn Sie die JSON API für den Aufruf von getIamPolicy und setIamPolicy für Buckets mit Bedingungen verwenden, müssen Sie die IAM-Richtlinienversion auf 3 festlegen.
  • Da die Berechtigung storage.objects.list auf Bucket-Ebene gewährt wird, können Sie den Zugriff auf die Objektliste mit dem Bedingungsattribut resource.name nicht auf eine Teilmenge von Objekten im Bucket beschränken. Bei Nutzern ohne die Berechtigung storage.objects.list auf Bucket-Ebene kann eine Beeinträchtigung der Funktionen der Console und von gsutil bestehen.
  • Abgelaufene Bedingungen bleiben in Ihrer IAM-Richtlinie, bis Sie sie entfernen.

Einsatz mit Cloud Storage-Tools

Obwohl IAM-Berechtigungen nicht über die XML API festgelegt werden können, können Nutzer, die IAM-Berechtigungen erhalten, weiterhin die XML API und andere Tools für den Zugriff auf Cloud Storage verwenden.

Informationen dazu, welche IAM-Berechtigungen Nutzer benötigen, um Aktionen mit unterschiedlichen Cloud Storage-Tools auszuführen, finden Sie in IAM mit der Cloud Console, IAM mit gsutil, IAM mit JSON und IAM mit XML.

Nächste Schritte