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.

Übersicht

Ein für den Aufruf der APIs von Google Cloud, GKE und Kubernetes verwendetes Konto benötigt dafür entsprechende Zugriffsrechte. Standardmäßig haben nur Sie Zugriff auf Ihr Projekt und dessen Ressourcen. Mit Cloud IAM haben Sie die Möglichkeit, den Zugriff auf Ihr Projekt und die damit verbundenen Berechtigungen zu verwalten. Cloud 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 von Google Cloud. Es 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 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:

Mit den folgenden Methoden können Sie die gcloud-Einstellungen festlegen:

  • Verwenden Sie gcloud init, wenn Sie die Standardeinstellungen ansehen möchten.
  • Verwenden Sie gcloud config, um Ihre Projekt-ID, Zone und Region individuell festzulegen.

gcloud init verwenden

Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify location erhalten, führen Sie diesen Abschnitt aus.

  1. Führen Sie gcloud init aus und folgen Sie der Anleitung:

    gcloud init

    Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag --console-only verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:

    gcloud init --console-only
  2. Folgen Sie der Anleitung, um gcloud zur Verwendung Ihres Google Cloud-Kontos zu autorisieren.
  3. Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
  4. Wählen Sie ein Google Cloud-Projekt aus.
  5. Wählen Sie eine Compute Engine-Standardzone aus.

gcloud config verwenden

  • Legen Sie Ihre standardmäßige Projekt-ID fest:
    gcloud config set project PROJECT_ID
  • Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Compute-Standardzone fest:
    gcloud config set compute/zone COMPUTE_ZONE
  • Wenn Sie mit regionalen Clustern arbeiten, legen Sie die Compute-Standardregion fest:
    gcloud config set compute/region COMPUTE_REGION
  • Aktualisieren Sie gcloud auf die neueste Version:
    gcloud components update

Interaktion mit Kubernetes RBAC

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

IAM und RBAC sind kombinierbar. Damit Nutzer mit Ressourcen in Ihrem Cluster arbeiten können, benötigen sie auf jeder Ebene entsprechende Berechtigungen.

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:

Rolle Titel Beschreibung Niedrigste Ressource
roles/container.admin Kubernetes Engine-Administrator

Berechtigung zum vollständigen Verwalten von Clustern und den zugehörigen Kubernetes API-Objekten.

Zum Festlegen eines Dienstkontos auf Knoten müssen Sie auch die Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser) zuweisen.

Projekt
roles/container.clusterAdmin Administrator für Kubernetes Engine-Cluster

Berechtigung zum Verwalten von Clustern.

Zum Festlegen eines Dienstkontos auf Knoten müssen Sie auch die Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser) zuweisen.

Projekt
roles/container.clusterViewer Kubernetes Engine-Clusterbetrachter Informationen zum Zugriff auf GKE-Cluster abrufen und auflisten.
roles/container.developer Kubernetes Engine-Entwickler Bietet Zugriff auf Kubernetes API-Objekte in Clustern Projekt
roles/container.hostServiceAgentUser Nutzer des Dienst-Agents für den Kubernetes Engine-Host Ermöglicht dem Kubernetes Engine-Dienstkonto im Hostprojekt, freigegebene Netzwerkressourcen für die Clusterverwaltung zu konfigurieren. Gewährt auch Zugriff zum Untersuchen der Firewallregeln im Hostprojekt
roles/container.viewer Kubernetes Engine Viewer Lesezugriff auf GKE-Ressourcen Projekt

Weitere Informationen zu den von jeder IAM-Rolle erteilten Berechtigungen finden Sie unter Von IAM-Rollen erteilte Berechtigungen ansehen.

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

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.*

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 dem gcloud-Befehlszeilentool oder der 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

Dabei ist role eine beliebige IAM-Rolle. GKE-Rollen haben das Präfix roles/container.:

Beispiel:

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. Rufen Sie auf der IAM-Seite der Cloud Console den Abschnitt Rollen auf.

    IAM-Seite aufrufen

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

  3. Wählen Sie die gewünschte Rolle aus. 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 als Compute Engine-Ressourcen aufzurufen und aufzulisten.
  • 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