Google Kubernetes Engine (GKE) verwendet Instanzmetadaten, um virtuelle Knotenmaschinen (VMs) zu konfigurieren. Einige dieser Metadaten sind jedoch möglicherweise vertraulich und sollten vor Arbeitslasten geschützt werden, die auf dem Cluster ausgeführt werden.
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,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
Knotendienstkonto konfigurieren
Die Dienstkonto-Anmeldedaten jedes Knotens sind weiterhin für Arbeitslasten verfügbar. Standardmäßig verwenden Ihre Knoten das Compute Engine-Standarddienstkonto. Sie sollten für Ihre Knoten ein Dienstkonto mit minimalen Berechtigungen konfigurieren, das anstelle des Standarddienstkontos der Compute Engine verwendet wird. Hängen Sie dann dieses Dienstkonto an Ihre Knoten an, damit ein Angreifer den GKE-Metadatenschutz nicht umgehen kann, indem er die Compute Engine API für den direkten Zugriff auf die zugrunde liegenden VM-Instanzen verwendet.
Weitere Informationen finden Sie unter Dienstkonten mit minimalen Berechtigungen verwenden.
Führen Sie die folgenden Schritte aus, um ein Dienstkonto mit minimalen Berechtigungen zu erstellen:
Erstellen Sie ein neues IAM-Dienstkonto (Identity and Access Management) und speichern Sie die E-Mail-Adresse in einer Umgebungsvariablen:
gcloud iam service-accounts create NODE_SA_NAME \ --display-name="DISPLAY_NAME" export NODE_SA_EMAIL=$(gcloud iam service-accounts list --format='value(email)' \ --filter='displayName:DISPLAY_NAME')Dabei gilt:
NODE_SA_NAMEist der Name des neuen Knotendienstkontos.DISPLAY_NAME: der Anzeigename des neuen Dienstkontos.
Die E-Mail-Adresse des Knotendienstkontos hat das Format
NODE_SA_NAME@PROJECT_ID.iam.gserviceaccount.com.Konfigurieren Sie Ihr Dienstkonto mit den Mindestrollen und -berechtigungen, um Ihre GKE-Knoten auszuführen:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/monitoring.metricWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/monitoring.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/logging.logWriterErsetzen Sie
PROJECT_IDdurch die ID Ihres Google Cloud Projekts in.Wenn Ihr Cluster private Images aus Artifact Registry abruft, fügen Sie die Rolle
roles/artifactregistry.readerhinzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/artifactregistry.reader
Metadatenverbergung
Die Metadatenverbergung in GKE verhindert, dass Nutzer-Pods auf
kube-env, das Kubelet-Anmeldedaten enthält, sowie auf das
Instanzidentitätstoken der VM zugreifen.
Die Metadatenverbergung schirmt den Clustermetadatenserver mit einer Firewall vor Traffic von Nutzer-Pods ab. Diese Pods werden nicht auf HostNetwork ausgeführt. Dadurch sind nur sichere Abfragen möglich. Die Firewall verhindert, dass Nutzer-Pods Kubelet-Anmeldedaten für Berechtigungsausweitungsangriffe oder die VM-Identität für Instanzausweitungsangriffe verwenden.
Die Workload Identity Federation for GKE ersetzt die Notwendigkeit der Metadatenverbergung und erweitert die Schutzmaßnahmen, die die Metadatenverbergung bietet. Sie sollten die Workload Identity Federation for GKE in allen Situationen anstelle der Metadatenverbergung verwenden. Weitere Informationen finden Sie unter Identitätsföderation von Arbeitslasten für GKE.
Verwenden Sie die verworfene --workload-metadata=SECURE
Option in Ihrem
gcloud beta container clusters create Befehl
oder in Ihrem
gcloud beta container node-pools create Befehl, um die Metadatenverbergung zu aktivieren.
Beschränkungen
Die Metadatenverbergung hat folgende Einschränkungen:
- Die Metadatenverbergung schützt nur den Zugriff auf
kube-envund die Instanzidentitätstoken des Knotens. - Mit der Metadatenverbergung wird nicht der Zugriff auf das Dienstkonto des Knotens beschränkt.
- Mit der Metadatenverbergung wird nicht der Zugriff auf andere zugehörige Instanzmetadaten beschränkt.
- Mit der Metadatenverbergung wird nicht der Zugriff auf andere Legacy-Metadaten-APIs beschränkt.
- Mit der Metadatenverbergung wird nicht der Traffic von Pods beschränkt, die im Hostnetzwerk ausgeführt werden (
hostNetwork: truein der Pod-Spezifikation).
Legacy-Metadaten-APIs deaktivieren und davon umstellen
Die Compute Engine-Metadatenserver-Endpunkte v0.1 und v1beta1 wurden verworfen und am 30. September 2020 eingestellt.
Informationen zum Zeitplan für die Einstellung finden Sie unter v0.1 und v1beta1 Einstellung der Metadatenserver-Endpunkte.
Nächste Schritte
- Informationen zur Authentifizierung bei Google Cloud APIs über GKE-Arbeitslasten.
- Weitere Informationen zur Workload Identity Federation for GKE.
- Weitere Informationen zur Fehlerbehebung bei GKE-Authentifizierungsproblemen.
- Sicherheit des Clusters erhöhen