Zugriffsbereiche in GKE


Auf dieser Seite werden die Standardzugriffsbereiche beschrieben, die Knoten in GKE-Clustern (Google Kubernetes Engine) zugewiesen sind.

Was sind Zugriffsbereiche?

Zugriffsbereiche sind die Legacy-Methode zum Gewähren von Berechtigungen für Ihre Knoten sowie für Arbeitslasten, die auf Ihren Knoten ausgeführt werden, wenn die Arbeitslasten die Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) verwenden. Zugriffsbereiche definieren die OAuth-Bereiche, die in API-Aufrufen von Clientbibliotheken oder der gcloud CLI verwendet werden.

Wir empfehlen, keine eigenen Zugriffsbereiche anzugeben. Stattdessen sollten Sie IAM-Berechtigungen oder die rollenbasierte Zugriffssteuerung von Kubernetes (Role-based Access Control, RBAC) verwenden, um Zugriff auf spezifische IAM-Dienstkonten oder Kubernetes-Dienstkonten zu gewähren.

Standardzugriffsbereiche

Wenn Sie einen neuen GKE-Cluster erstellen, weist Google Cloud den Knoten standardmäßig eine Reihe von Zugriffsbereichen zu, basierend auf dem von den Knoten verwendeten Dienstkonto. Diese Zugriffsbereiche ermöglichen bestimmte Funktionen für GKE. Sie können Zugriffsbereiche auch manuell mit dem Flag --scopes festlegen, wenn Sie Standardcluster erstellen. Autopilot-Cluster oder Knotenpools. Sie können die Zugriffsbereiche für vorhandene Knotenpools nicht ändern. Erstellen Sie stattdessen einen neuen Knotenpool mit den neuen Bereichen und migrieren Sie Arbeitslasten in diesen Knotenpool.

In den folgenden Abschnitten werden die Standardzugriffsbereiche beschrieben, die GKE zu Knoten hinzufügt, je nachdem, ob Sie ein benutzerdefiniertes Dienstkonto angeben und ob Sie Zugriffsbereiche manuell angeben.

Autopilot-Cluster

Dienstkonto Haben Sie Zugriffsbereiche manuell angegeben? Zugriffsbereiche, die GKE hinzufügt
Standardmäßiges Compute Engine-Dienstkonto Nein
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: wird hinzugefügt, wenn Cloud Logging aktiviert ist
  • https://www.googleapis.com/auth/monitoring: wird hinzugefügt, wenn Cloud Monitoring aktiviert ist
Ja Manuell angegebene Bereiche
Benutzerdefiniertes Dienstkonto Nein https://www.googleapis.com/auth/cloud-platform
Ja Manuell angegebene Bereiche

Standardcluster

Dienstkonto Manuell angegebene Zugriffsbereiche? Zugriffsbereiche für GKE
Standardmäßiges Compute Engine-Dienstkonto Nein
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: wird hinzugefügt, wenn Cloud Logging aktiviert ist
  • https://www.googleapis.com/auth/monitoring: wird hinzugefügt, wenn Cloud Monitoring aktiviert ist
Ja
  • Manuell angegebene Bereiche
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: wird hinzugefügt, wenn Cloud Logging aktiviert ist
  • https://www.googleapis.com/auth/monitoring: wird hinzugefügt, wenn Cloud Monitoring aktiviert ist
Benutzerdefiniertes Dienstkonto Nein
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/cloud-platform
Ja
  • Manuell angegebene Bereiche
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: wird hinzugefügt, wenn Cloud Logging aktiviert ist
  • https://www.googleapis.com/auth/monitoring: wird hinzugefügt, wenn Cloud Monitoring aktiviert ist

Benutzerdefiniertes Dienstkonto für Arbeitslasten konfigurieren

IAM ist das Zugriffssteuerungssystem, mit dem Sie Nutzern und Dienstkonten in Ihrem Google Cloud-Projekt autorisierte Rollen zuweisen. Ein Dienstkonto ist ein spezielles Google-Konto, das in Ihrem Namen Aufgaben wie die Bereitstellung von Anwendungen ausführt. Sie verwenden IAM zum Erstellen eines Dienstkontos und dann IAM-Richtlinienbindungen zur Sicherung des Kontos.

Wenn Ihre Arbeitslasten Zugriff auf Compute Engine benötigen, erteilen Sie dem Dienstkonto die Rolle Compute-Engine-Administrator. Wenn für Ihre Arbeitslasten private Images aus der Artifact Registry abgerufen werden müssen, lesen Sie die Informationen unter Zugriffssteuerung für Artifact Registry-Repositories konfigurieren.

Dienstkonto erstellen

Führen Sie die folgenden Befehle aus, um ein benutzerdefiniertes Dienstkonto mit dem Namen kubernetes-engine-node-sa zu erstellen:

export NODE_SA_NAME=kubernetes-engine-node-sa
gcloud iam service-accounts create $NODE_SA_NAME \
  --display-name "GKE Node Service Account"
export NODE_SA_EMAIL=`gcloud iam service-accounts list --format='value(email)' \
  --filter='displayName:GKE Node Service Account'`

Minimale Rollen gewähren

Mit den folgenden Befehlen konfigurieren Sie das Dienstkonto mit den minimal erforderlichen Rollen und Berechtigungen für den GKE-Knoten. Dabei ist $PROJECT Ihre Projekt-ID:

export PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.viewer
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/logging.logWriter

Zusätzliche Rollen zuweisen

Mit dem folgenden Befehl weisen Sie dem Dienstkonto die Rolle Compute Engine-Administrator zu:

gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/compute.admin

Unter Zugriff auf Google Kubernetes Engine-Cluster gewähren erfahren Sie, wie Sie Dienstkonten Zugriff auf private Images erteilen, die in Artifact Registry gespeichert sind.

Cluster oder Knotenpool mit benutzerdefiniertem Dienstkonto erstellen

Führen Sie den folgenden Befehl aus, um einen Cluster zu erstellen, der das benutzerdefinierte Dienstkonto verwendet:

gcloud container clusters create --service-account=$NODE_SA_EMAIL

So erstellen Sie einen Knotenpool in einem vorhandenen Cluster:

gcloud container node-pools create --service-account=$NODE_SA_EMAIL