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 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.
Vorbereitung
Führen Sie die folgenden Schritte durch, 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
Kubernetes bietet einen integrierten Zugriffssteuerungsmechanismus, die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC). 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/ |
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/ |
Kubernetes Engine KMS Crypto Key User | Allow the Kubernetes Engine service agent in the cluster project to call KMS with user provided crypto keys to sign payloads. | |
roles/ |
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/ |
Kubernetes Engine Cluster Viewer |
Provides access to get and list GKE clusters. |
|
roles/ |
Kubernetes Engine Default Node Service Account | Least privilege role to use as the default service account for GKE Nodes. | |
roles/ |
Kubernetes Engine Developer |
Provides access to Kubernetes API objects inside clusters. |
|
roles/ |
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/ |
Kubernetes Engine Viewer |
Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects. |
|
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 ServiceAccountUser.
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
Ersetzen Sie dabei Folgendes:
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
Führen Sie die folgenden Schritte aus, um die mit einer bestimmten Rolle erteilten Berechtigungen aufzulisten:
Wechseln Sie in der Google Cloud Console auf der Seite IAM und Verwaltung zum Abschnitt Rollen.
Geben Sie zum Aufrufen der Rollen für GKE
Kubernetes Engine
im Feld Filtertabelle ein.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 Berechtigungcontainer.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.
Nächste Schritte
- Übersicht zur Zugriffssteuerung
- Zugriff auf Google Cloud-Ressourcen verwalten
- Weitere Informationen zu Zulassungsrichtlinien.
- Informationen zu Ablehnungsrichtlinien