Clusteranmeldedaten rotieren

Die Planung und regelmäßige Rotation Ihrer Clusteranmeldedaten ist entscheidend für den fehlerfreien Betrieb Ihrer Cluster. In diesem Dokument wird beschrieben, wie Sie Anmeldedaten rotieren, und es werden Best Practices für die Planung regelmäßiger Rotationen vorgestellt.

Dieses Dokument richtet sich an Sicherheitsexperten, die für den Lebenszyklus von Anmeldedaten in GKE-Clustern verantwortlich sind. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Cloud de Confiance by S3NS Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.

Rotation von Anmeldedaten in GKE

Die Stammzertifizierungsstelle des Clusters hat eine begrenzte Lebensdauer. Wenn die Zertifizierungsstelle abläuft, sind alle von der Zertifizierungsstelle signierten Anmeldedaten nicht mehr gültig, einschließlich des Cluster-Clientzertifikats (aus dem API-Feld MasterAuth), des Schlüssels und des Zertifikats für den API-Server und der kubelet-Clientzertifikate. Die Lebensdauer der Clusteranmeldedaten hängt davon ab, wann Sie den Cluster erstellt oder Ihre Anmeldedaten zuletzt rotiert haben. Weitere Informationen finden Sie unter Lebensdauer von Anmeldedaten.

Sie können diese Anmeldedaten widerrufen und neu ausstellen, indem Sie eine der folgenden Arten von Rotationen durchführen.

  • Rotation von Anmeldedaten:

    • Rotiert die IP-Adresse, die die Steuerungsebene für den Kubernetes API-Server verwendet.
    • Rotiert die Stammzertifizierungsstelle des Clusters.
    • Rotiert die Schlüssel des Kubernetes-Dienstkontos, die zum Signieren und Überprüfen von Anmeldedaten des Dienstkontos verwendet werden.
    • Rotiert die Zertifizierungsstelle der Aggregationsebene.
  • **IP-Adressrotation**:

    • Rotiert die IP-Adresse, die die Steuerungsebene für den Kubernetes API-Server verwendet.
    • Rotiert die Stammzertifizierungsstelle des Clusters.

Bei beiden Rotationstypen müssen Knoten neu erstellt werden, bevor sie neue Anmeldedaten verwenden können.

Sie müssen eine Rotation von Anmeldedaten für Ihren Cluster starten und abschließen , bevor Ihre aktuellen Anmeldedaten ablaufen.

Rotation von Anmeldedaten durchführen

Sie sollten die Anmeldedaten regelmäßig und vor dem Ablaufdatum Ihrer aktuellen Anmeldedaten rotieren. Bei der Rotation von Anmeldedaten müssen die Knoten neu erstellt werden, um die neuen Anmeldedaten zu nutzen. Dies kann eine Unterbrechung der Ausführung von Arbeitslasten sein. Plan Sie Wartungszeiträume und führen Sie die Rotationen während Wartungs fenstern durch, um unerwartete Ausfallzeiten von Arbeitslasten oder nicht reagierende API-Clients außerhalb des Clusters zu vermeiden.

Weitere Informationen dazu, wie sich die Verfügbarkeit von Wartungsfenstern auf die Rotation von Clusteranmeldedaten auswirkt und welche Art von Unterbrechungen in Ihrem Cluster während der einzelnen Schritte einer Rotation auftreten, finden Sie in der Zeile für die Rotation von Anmeldedaten in der Tabelle der manuellen Änderungen, bei denen die Knoten mithilfe einer Knotenupgrade-Strategie neu erstellt werden und die Wartungsrichtlinien berücksichtigt werden. GKE ist für die Aktualisierung der Knoten auf die Ressourcen verfügbarkeit angewiesen. Weitere Informationen zu Knotenaktualisierungen finden Sie unter Unterbrechungen bei Knotenaktualisierungen planen.

Lebensdauer von Clusteranmeldedaten

Die Lebensdauer von Clusteranmeldedaten hängt in der Regel davon ab, wann der Cluster erstellt wurde oder wann die Anmeldedaten zuletzt rotiert wurden:

  • Cluster, die vor etwa Oktober 2021 erstellt wurden, haben eine Lebensdauer der Zertifizierungsstelle von 5 Jahren.
  • Cluster, die nach etwa Oktober 2021 erstellt wurden, haben eine Lebensdauer der Zertifizierungsstelle von 30 Jahren.
  • Cluster, die nach etwa Januar 2022 rotiert wurden, haben eine Lebensdauer der Zertifizierungsstelle von 30 Jahren.

Cluster mit ablaufenden oder abgelaufenen Anmeldedaten finden

Wenn die Anmeldedaten Ihres Clusters in den nächsten 180 Tagen ablaufen oder die Anmeldedaten Ihres Clusters bereits abgelaufen sind, bietet GKE eine Anleitung mit einer Statistik und Empfehlung, dass Sie eine Rotation von Anmeldedaten für diesen Cluster durchführen müssen. Diese Anleitung enthält das Ablaufdatum der Anmeldedaten. Sie können diese Anleitung in der Cloud de Confiance Console aufrufen. Alternativ können Sie diese Anleitung mit der gcloud CLI oder der Recommender API aufrufen und dabei den CLUSTER_CA_EXPIRATION Untertyp angeben.

Wenn Sie eine Statistik und eine Empfehlung für einen Cluster erhalten, müssen Sie eine Rotation von Anmeldedaten durchführen. Andernfalls startet GKE automatisch eine Rotation von Anmeldedaten innerhalb von 30 Tagen nach dem Ablaufdatum der aktuellen Zertifizierungsstelle, wie im nächsten Abschnitt erläutert. Nach Abschluss der Rotation von Anmeldedaten kann es bis zu 36 Stunden dauern, bis die Statistik und Empfehlungen behoben sind.

GKE-Automatisierungsrichtlinie zur Vermeidung von Clusterausfällen

Damit Ihr Cluster nicht in einen nicht wiederherstellbaren Zustand wechselt, wenn Ihre aktuellen Anmeldedaten ablaufen, startet GKE automatisch eine Rotation von Anmeldedaten innerhalb von 30 Tagen nach dem Ablaufdatum Ihrer aktuellen Zertifizierungsstelle. Beispiel: Die Zertifizierungsstelle Ihres Clusters läuft am 6. Januar 2024 ab und Sie rotieren Ihre Anmeldedaten nicht bis zum 5. Dezember 2023. GKE startet eine automatische Rotation am oder nach dem 7. Dezember 2023 und versucht, diese Rotation sieben Tage nach dem Start des Vorgangs abzuschließen. Diese automatische Rotation ist der letzte Versuch zur Vermeidung eines Clusterausfalls. Dabei gilt Folgendes:

  • Bei automatischen Rotationen werden in der Regel Wartungsfenster oder Wartungsausschlüsse berücksichtigt. GKE behält sich jedoch das Recht vor, innerhalb von 30 Tagen nach Ablauf Schritte zur Rotation der Anmeldedaten durchzuführen, unabhängig von der Verfügbarkeit von Wartungsfenstern. Innerhalb von 30 Tagen ignoriert GKE die Verfügbarkeit von Wartungsfenstern für den ersten Schritt, nämlich den Start der Rotation.
  • Wenn die Verfügbarkeit von Wartungsfenstern verhindert, dass GKE die Rotation zunächst abschließt, versucht GKE weiterhin, die Rotation bis zum Ablaufdatum der Anmeldedaten abzuschließen. Danach kann der Cluster nicht mehr wiederhergestellt werden.
  • Nach Abschluss der Rotation von Anmeldedaten werden die ablaufenden Anmeldedaten widerrufen. Kubernetes API-Clients außerhalb des Clusters, z. B. kubectl in lokalen Umgebungen, funktionieren erst, wenn Sie die Clients so konfiguriert haben, dass sie die neuen Anmeldedaten verwenden.
  • Die Neuerstellung von Knotenpools während der Rotation kann zu Unterbrechungen bei laufenden Arbeitslasten fü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, 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 update Befehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.

Gültigkeitsdauer von Anmeldedaten prüfen

Prüfen Sie die Lebensdauer Ihrer Anmeldedaten vor und nach der Rotation von Anmeldedaten, damit Sie die Gültigkeit der Root-Zertifizierungsstelle des Clusters kennen.

Führen Sie den folgenden Befehl aus, um die Lebensdauer der Anmeldedaten für einen einzelnen Cluster zu prüfen:

gcloud container clusters describe CLUSTER_NAME \
    --location LOCATION \
    --format "value(masterAuth.clusterCaCertificate)" \
    | base64 --decode \
    | openssl x509 -noout -dates

Die Ausgabe sieht in etwa so aus:

notBefore=Mar 17 16:45:34 2023 GMT
notAfter=Mar  9 17:45:34 2053 GMT

Wenn Sie diesen Befehl nach dem Starten einer Rotation von Anmeldedaten ausführen, ist die Ausgabe die Lebensdauer des ursprünglichen Zertifikats. Dieses Zertifikat bleibt gültig bis Sie die Rotation abschließen. Nach Abschluss der Rotation ist die Ausgabe die Lebensdauer Ihres neuen Zertifikats.

Führen Sie den folgenden Befehl aus, um die Lebensdauer der Anmeldedaten für alle Cluster in einem Projekt zu prüfen:

gcloud container clusters list --project PROJECT_ID \
    --format="value(name,masterAuth.clusterCaCertificate)" | \
while read -r cluster ca; do \
    expiry_date=$(echo -e "$ca" | base64 --decode | openssl x509 -noout -enddate | awk -F'=' '{print $2}'); \
    printf "%-40s  | %s\n" "$cluster" "$expiry_date" ; \
done | \
column -t | \
awk -F',' 'BEGIN{print "Cluster Name    |  Certificate Expiry Date"} {print}'

Rotation von Anmeldedaten durchführen

Jede Rotation von Anmeldedaten umfasst die folgenden Schritte:

  1. Rotation starten: Die Steuerungsebene beginnt, zusätzlich zur ursprünglichen IP-Adresse eine neue IP-Adresse zu verwenden. Neue Anmeldedaten werden für Arbeitslasten und die Steuerungsebene ausgegeben.
  2. Neuerstellung von Knoten: GKE erstellt Clusterknoten neu, damit die Knoten die neue IP-Adresse und die neuen Anmeldedaten verwenden. Dabei wird die Verfügbarkeit von Wartungsfenstern und Ausschlüssen berücksichtigt. Sie können Ihre Knoten auch manuell neu erstellen, indem Sie ein Upgrade der Knotenversion auf dieselbe GKE-Version durchführen, die die Knoten bereits ausführen.
  3. API-Clients aktualisieren: Aktualisieren Sie nach dem Starten der Rotation alle Cluster-API-Clients wie Entwicklungsmaschinen mit kubectl, um über die neue IP-Adresse mit der Steuerungsebene zu kommunizieren.
  4. Rotation abschließen: Die Steuerungsebene beendet die Bereitstellung von Traffic über die ursprüngliche IP-Adresse. Alte Anmeldedaten werden widerrufen, einschließlich vorhandener statischer Anmeldedaten für Kubernetes-Dienstkonten.

Wenn Sie eine Rotation von Anmeldedaten starten oder wenn GKE automatisch eine Rotation startet, führt GKE diese Schritte automatisch aus und versucht auch, die Rotation abzuschließen. Wenn der Clusterablauf mehr als 30 Tage entfernt ist, berücksichtigt GKE bei jedem Schritt die Verfügbarkeit von Wartungsfenstern. Bei automatischen Rotationen vor dem Ablauf des Clusters behält sich GKE das Recht vor, die Verfügbarkeit von Wartungsfenstern zu ignorieren, um zu verhindern, dass der Cluster nicht mehr wiederhergestellt werden kann. Innerhalb von 30 Tagen, ignoriert GKE die Verfügbarkeit von Wartungsfenstern für den ersten Schritt, nämlich den Start der Rotation.

Wenn Sie eine Rotation von Anmeldedaten nicht innerhalb von sieben Tagen nach dem Start abschließen, versucht GKE, die Rotation für Sie abzuschließen. Wenn einige Knoten in Ihrem Cluster noch die vorherigen Anmeldedaten verwenden, schlägt der automatische Abschlussvorgang fehl. GKE versucht jedoch weiterhin, die Rotation abzuschließen, bis die Anmeldedaten ablaufen und der Cluster nicht mehr wiederhergestellt werden kann. Sie sollten alle von Ihnen gestarteten Rotationen von Anmeldedaten manuell verfolgen und abschließen. Wenn Sie Blocker für die Verfügbarkeit von Wartungsfenstern überschreiben möchten, führen Sie die Befehle in den folgenden Abschnitten aus, um diese Phasen des Rotationsvorgangs manuell auszulösen. Verlassen Sie sich nicht auf den automatischen Abschluss, der eine Maßnahme nach dem Best-Effort-Prinzip ist.

Rotation starten

Führen Sie den folgenden Befehl aus, um eine Rotation von Anmeldedaten zu starten:

gcloud container clusters update CLUSTER_NAME \
    --location LOCATION \
    --start-credential-rotation

Mit diesem Befehl werden neue Anmeldedaten erstellt, diese Anmeldedaten an die Steuerungsebene ausgegeben und die Steuerungsebene so konfiguriert, dass sie zwei IP-Adressen verwendet: die ursprüngliche IP-Adresse und eine neue IP-Adresse.

In-Cluster-Komponenten mit langlebigen Verbindungen neu starten

Nachdem Sie eine IP-Adress- oder Anmeldedatenrotation gestartet haben, wird auch die Zertifizierungsstelle des Clusters rotiert. Einige In-Cluster-Komponenten, die langlebige TLS-Verbindungen aufrechterhalten, z. B. metrics-server und konnectivity-agent, vertrauen möglicherweise nicht automatisch der neuen Cluster-Zertifizierungsstelle.

In dieser Situation können diese Verbindungen bei der Kommunikation mit Knoten oder anderen Clusterendpunkten fehlschlagen. In den Komponentenlogs werden möglicherweise TLS-Handshake-Fehler angezeigt, z. B. x509: certificate signed by unknown authority.

Wenn diese Fehler nach dem Starten einer Rotation auftreten, müssen Sie Ihre Pods möglicherweise manuell neu starten. Durch einen Neustart wird der Pod gezwungen, die Verbindung neu zu initialisieren und die neuen Cluster-Zertifizierungsstellenzertifikate zu laden. Führen Sie beispielsweise die folgenden Befehle aus, um metrics-server und konnectivity-agent neu zu starten:

kubectl rollout restart deployment metrics-server -n kube-system
kubectl rollout restart deployment konnectivity-agent -n kube-system

Knoten neu erstellen

Nach der Neukonfiguration des API-Servers für die Bereitstellung einer neuen IP-Adresse aktualisiert GKE automatisch Ihre Knoten, um die neue IP-Adresse und die neuen Anmeldedaten zu verwenden, wenn eine Wartung verfügbar ist. GKE aktualisiert alle Knoten auf die GKE-Version, die die Knoten bereits ausführen. Dadurch werden die Knoten neu erstellt. Weitere Informationen finden Sie unter Knotenpool-Upgrades.

Standardmäßig schließt GKE die Rotation von Anmeldedaten sieben Tage nach dem Start automatisch ab. Wenn ein aktives Wartungsfenster oder ein aktiver Ausschluss in Ihrem Cluster verhindert, dass GKE bestimmte Knoten während dieses Zeitraums erstellt, kann die Rotation von Anmeldedaten zunächst nicht abgeschlossen werden. GKE versucht jedoch weiterhin, die Knoten neu zu erstellen und die Rotation abzuschließen, bis die Verfügbarkeit von Wartungsfenstern GKE die Fortsetzung ermöglicht. Bei wichtigen Ereignissen wie Cloud de Confiance Next kann GKE auch automatische Neuerstellungen von Knoten pausieren, damit es nicht zu Unterbrechungen kommt.

Wenn Sie Wartungsausschlüsse oder Wartungsfenster verwenden, die zu einem Fehlschlagen der Rotation führen können, zwingen Sie GKE, Ihre Knoten neu zu erstellen, indem Sie einen der folgenden Schritte ausführen:

  • Führen Sie in Autopilot-Clustern ein manuelles Upgrade der Steuerungsebene durch:

    gcloud container clusters upgrade CLUSTER_NAME \
        --location=LOCATION \
        --master \
        --cluster-version=VERSION
    

    Ersetzen Sie VERSION durch die gleiche GKE-Version, die der Cluster bereits verwendet.

  • Führen Sie in Standardclustern ein manuelles Upgrade für jeden Knotenpool durch.

Weitere Informationen finden Sie unter Manuelle Änderungen, die GKE-Wartungsrichtlinien berücksichtigen.

Fortschritt der Neuerstellung von Knotenpools prüfen

  1. Führen Sie zur Überwachung des Rotationsvorgangs den folgenden Befehl aus:

    gcloud container operations list \
        --filter="operationType=UPGRADE_NODES AND status=RUNNING" \
        --format="value(name)"
    

    Dieser Befehl gibt die Vorgangs-ID des Knotenupgrades zurück.

  2. Um den Vorgang abzufragen, übergeben Sie die Vorgangs-ID an den folgenden Befehl:

    gcloud container operations wait OPERATION_ID
    

Knotenpools werden jeweils einzeln neu erstellt und jeder Knotenpool hat einen eigenen Vorgang. Wenn Sie mehrere Knotenpools nutzen, verwenden Sie diese Anweisungen, um alle einzelnen Vorgänge abzufragen.

API-Clients aktualisieren

Nachdem Sie die Rotation von Anmeldedaten gestartet haben, müssen Sie alle API-Clients außerhalb des Clusters (z. B. kubectl auf Entwicklermaschinen) aktualisieren, um die neuen Anmeldedaten zu verwenden und auf die neue IP-Adresse der Steuerungsebene verweisen.

Führen Sie den folgenden Befehl für jeden API-Client aus, um Ihre API-Clients zu aktualisieren:

gcloud container clusters get-credentials CLUSTER_NAME \
    --location LOCATION

Anmeldedaten des Kubernetes-Dienstkonto aktualisieren

Wenn Sie statische Anmeldedaten für Dienstkonten in Ihrem Cluster verwenden, wechseln Sie zu kurzlebigen Anmeldedaten. Nach Abschluss der Rotation sind vorhandene Anmeldedaten für Dienstkonten ungültig. Wenn Sie keine kurzlebigen Anmeldedaten verwenden möchten, müssen Sie Ihre statischen Anmeldedaten neu erstellen für alle Dienstkonten im Cluster, bevor Sie die Rotation abschließen.

Führen Sie den folgenden Befehl aus, um statische Anmeldedaten für Dienstkonten zu finden, die in Ihrem Cluster vorhanden sind:

kubectl get secrets --all-namespaces --field-selector type=kubernetes.io/service-account-token

Wenn die Ausgabe dieses Befehls No resources found lautet, hat Ihr Cluster keine statischen Anmeldedaten für Dienstkonten.

Fest codierte IP-Adressen und Firewallregeln aktualisieren

Wenn Sie die IP-Adresse der Steuerungsebene in Ihrer Umgebung fest codiert haben oder wenn Sie Firewallregeln haben, die auf die IP-Adresse der Steuerungsebene ausgerichtet sind, aktualisieren Sie die Adressen auf die neue IP-Adresse. Wenn Sie die Rotation abschließen, ohne die IP-Adressen in Anwendungen und Firewallregeln zu aktualisieren, kann es zu Unterbrechungen bei diesen Ressourcen kommen, wenn GKE die Bereitstellung über die vorherige IP-Adresse der Steuerungsebene beendet.

Rotation abschließen

Nachdem Sie API-Clients außerhalb des Clusters aktualisiert haben, schließen Sie die Rotation ab, um die Steuerungsebene so zu konfigurieren, dass sie nur die neuen Anmeldedaten und die neue IP-Adresse verwendet:

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --complete-credential-rotation

Wenn die Rotation von Anmeldedaten nicht abgeschlossen wird und eine Fehlermeldung ähnlich der folgenden zurückgegeben wird, lesen Sie den Hilfeartikel Fehler 400: Knotenpool muss neu erstellt werden:

ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.

GKE berücksichtigt die Verfügbarkeit von Wartungsfenstern, wenn die Rotation automatisch abgeschlossen wird. GKE kann diese Verfügbarkeit jedoch innerhalb von 30 Tagen nach Ablauf ignorieren, um zu verhindern, dass der Cluster nicht mehr wiederhergestellt werden kann. Wenn der Abschluss der Rotation zunächst fehlschlägt und die Rotation vor mindestens sieben Tagen gestartet wurde, versucht GKE, die Rotation bis zum Ablaufdatum der Anmeldedaten abzuschließen. Danach kann der Cluster nicht mehr wiederhergestellt werden.

Nächste Schritte