IAM-Richtlinien erstellen


Auf dieser Seite wird erläutert, wie Sie IAM-Richtlinien (Identity and Access Management) für die Autorisierung in Google Kubernetes Engine (GKE) erstellen.

Überblick

Ein für den Aufruf der APIs von Google Cloud, GKE und Kubernetes verwendetes Konto benötigt dafür entsprechende Berechtigungen. Standardmäßig haben nur Sie Zugriff auf Ihr Projekt und dessen Ressourcen. Mit IAM haben Sie die Möglichkeit, den Zugriff auf Ihr Projekt und die damit verbundenen Berechtigungen zu verwalten. IAM-Berechtigungen werden zusammen mit Kubernetes RBAC verwendet. RBAC ermöglicht eine detaillierte Zugriffssteuerung für bestimmte Objekte in einem Cluster oder Namespace. IAM bezieht sich primär auf Berechtigungen der Projekt- und Organisationsebene, bietet aber auch mehrere speziell für GKE vordefinierte Rollen.

Damit Nutzer und Dienstkonten auf Ihr Google Cloud-Projekt zugreifen können, fügen Sie diese dem Projektteam als Mitglieder hinzu und weisen den Teammitgliedern Rollen zu. Rollen definieren, auf welche Google Cloud-Ressourcen ein Konto zugreifen und welche Vorgänge es ausführen kann.

In GKE können Sie mit auch IAM festlegen, welche Nutzer und Dienstkonten die Möglichkeit erhalten, auf Ihre Cluster zuzugreifen und darin Vorgänge auszuführen.

Hinweis

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Interaktion mit Kubernetes RBAC

Mit der systemeigenen rollenbasierten Zugriffssteuerung (Role-based Access Control, RBAC) in Kubernetes wird auch der Zugriff auf Ressourcen im Cluster verwaltet. RBAC steuert den Zugriff auf Cluster- und Namespace-Ebene, während IAM auf Projektebene arbeitet.

IAM und RBAC können zusammenarbeiten. Eine Entität muss ausreichende RBAC- und IAM-Berechtigungen haben, um mit Ressourcen in Ihrem Cluster arbeiten zu können.

IAM-Rollen

In den folgenden Abschnitten werden die in Google Cloud verfügbaren IAM-Rollen beschrieben.

Vordefinierte GKE-Rollen

IAM bietet vordefinierte Rollen für den Zugriff auf bestimmte Google Cloud-Ressourcen. Mit diesen Rollen wird der unbefugte Zugriff auf andere Ressourcen verhindert.

IAM bietet für GKE die folgenden vordefinierten Rollen:

Role Title Description Lowest resource
roles/container.admin Kubernetes Engine Admin

Provides access to full management of clusters and their Kubernetes API objects.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterAdmin Kubernetes Engine Cluster Admin

Provides access to management of clusters.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterViewer Kubernetes Engine Cluster Viewer

Provides access to get and list GKE clusters.

roles/container.defaultNodeServiceAccount Kubernetes Engine Default Node Service Account Alpha Least privilege role to use as the default service account for GKE Nodes.
roles/container.developer Kubernetes Engine Developer

Provides access to Kubernetes API objects inside clusters.

  • Project
roles/container.hostServiceAgentUser Kubernetes Engine Host Service Agent User

Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project.

roles/container.viewer Kubernetes Engine Viewer

Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects.

  • Project

Eine vollständige Liste der einzelnen Berechtigungen in den einzelnen Rollen finden Sie unter Google Kubernetes Engine-Rollen. Sie können die Berechtigungen in jeder IAM-Rolle auch mit der gcloud CLI oder der Google Cloud Console aufrufen. Eine Anleitung finden Sie unter Von IAM-Rollen gewährte Berechtigungen aufrufen.

Einfache IAM-Rollen

Einfache IAM-Rollen gewähren Nutzern auf Projektebene globalen Zugriff auf alle Google Cloud-Ressourcen. Verwenden Sie zum Schutz des Projekts und der Cluster nach Möglichkeit vordefinierte Rollen.

Weitere Informationen zu einfachen Rollen finden Sie in der IAM-Dokumentation unter Einfache Rollen.

Rolle "Dienstkontonutzer"

Die Rolle Dienstkontonutzer gewährt einem Google Cloud-Nutzerkonto die Berechtigung, Aktionen wie mit einem Dienstkonto auszuführen.

  • Wenn Sie einem Nutzer die Rolle iam.serviceAccountUser für ein Projekt erteilen, werden ihm sämtliche Rollen aller Dienstkonten in dem Projekt zugewiesen. Dies gilt auch für die Rollen von künftig erstellten Dienstkonten.

  • Wenn Sie einem Nutzer für ein bestimmtes Dienstkonto die Rolle iam.serviceAccountUser erteilen, erhält er alle diesem Dienstkonto zugewiesenen Rollen.

Diese Rolle umfasst die folgenden Berechtigungen:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Weitere Informationen zur Rolle "Dienstkontonutzer" finden Sie in der IAM-Dokumentation unter Dienstkontonutzer.

Der folgende Befehl zeigt die Syntax zum Erteilen der Rolle "Dienstkontonutzer":

gcloud iam service-accounts add-iam-policy-binding \
  SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --member=user:USER \
  --role=roles/iam.serviceAccountUser

Dabei gilt:

  • SA_NAME ist der Name des Dienstkontos.
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
  • USER ist die E-Mail-Adresse des Nutzers

Rolle "Nutzer des Dienst-Agents für Host"

Die Rolle "Host-Service-Agent-Nutzer" wird nur in Clustern einer freigegebenen VPC verwendet. Diese Rolle umfasst die folgenden Berechtigungen:

  • compute.firewalls.get
  • container.hostServiceAgent.*
  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone

Benutzerdefinierte Rollen

Wenn die vordefinierten Rollen nicht Ihren Anforderungen entsprechen, können Sie benutzerdefinierte Rollen mit von Ihnen festgelegten Berechtigungen definieren.

Weitere Informationen hierzu finden Sie unter Benutzerdefinierte Rollen erstellen und verwalten.

Von IAM-Rollen gewährte Berechtigungen aufrufen

Sie können die von einer Rolle gewährten Berechtigungen mit der gcloud CLI oder der Google Cloud Console aufrufen.

gcloud

Zum Aufrufen der mit einer bestimmten Rolle gewährten Berechtigungen führen Sie den im Folgenden aufgeführten Befehl aus:

gcloud iam roles describe roles/ROLE

Ersetzen Sie dabei ROLE durch eine beliebige IAM-Rolle. GKE-Rollen haben das Präfix roles/container, z. B. gcloud iam roles describe roles/container.admin.

Console

Zum Auflisten der mit einer bestimmten Rolle gewährten Berechtigungen führen Sie die folgenden Schritte aus:

  1. Wechseln Sie in der Google Cloud Console auf der Seite IAM und Verwaltung zum Abschnitt Rollen.

    IAM & Verwaltung aufrufen

  2. Geben Sie zum Aufrufen der Rollen für GKE Kubernetes Engine im Feld Filtertabelle ein.

  3. Wählen Sie die Rolle aus, die Sie sich ansehen möchten. Die Beschreibung der Rolle und eine Liste der zugewiesenen Berechtigungen werden angezeigt.

IAM-Rollen verwalten

Weitere Informationen zum Verwalten von IAM-Rollen und -Berechtigungen für Nutzer finden Sie in der IAM-Dokumentation unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Weitere Informationen zu Dienstkonten finden Sie unter Dienstkonten Rollen zuweisen.

Beispiele

Die folgenden Beispiele veranschaulichen die Funktionsweise von IAM mit GKE:

  • In einem Unternehmen hat ein neuer Mitarbeiter angefangen. Er soll dem Google Cloud-Projekt hinzugefügt werden, muss die Cluster des Projekts und andere Google Cloud-Ressourcen jedoch nur aufrufen können. Der Projektinhaber weist ihm auf Projektebene die Rolle Compute-Betrachter zu. Diese Rolle bietet Lesezugriff, um Knoten anzuzeigen und aufzulisten, bei denen es sich um Compute Engine-Ressourcen handelt.
  • Der Mitarbeiter ist für Betriebsabläufe zuständig und muss einen Cluster mit gcloud oder mit der Google Cloud Console aktualisieren. Für diesen Vorgang ist die Berechtigung container.clusters.update erforderlich. Daher weist der Projektinhaber ihm die Administratorrolle für Kubernetes Engine-Cluster zu. Der Mitarbeiter hat jetzt sowohl die Berechtigungen der Rolle des Administrators für Kubernetes Engine-Cluster als auch des Compute-Betrachters.
  • Es gibt Probleme mit einem Deployment, dessen Ursache der Mitarbeiter ermitteln soll. Er muss kubectl get pods ausführen, um die im Cluster ausgeführten Pods zu sehen. Der Mitarbeiter hat bereits die Rolle "Compute-Betrachter", die aber nicht zum Auflisten von Pods ausreicht. Der Mitarbeiter benötigt die Rolle "Kubernetes Engine-Betrachter".
  • Der Mitarbeiter muss einen neuen Cluster erstellen. Der Projektinhaber gewährt dem Mitarbeiter für das Dienstkonto PROJECT_NUMBER-compute@developer.gserviceaccount.com die Rolle "Dienstkontonutzer". Dieser kann dadurch auf das Standarddienstkonto in Compute Engine zugreifen. Diesem Dienstkonto ist die Rolle "Bearbeiter" zugewiesen, die eine breite Palette von Berechtigungen bietet.

Weitere Informationen