Dienstkontoschlüssel rotieren

Auf dieser Seite wird beschrieben, wie Sie Schlüssel für die folgenden Dienstkonten rotieren:

So rotieren Sie Ihre Dienstkontoschlüssel:

  1. Erstellen Sie ein Verzeichnis zum Speichern einer Sicherung Ihrer aktuellen Secrets:

    mkdir backup
  2. Beachten Sie die folgenden Informationen für das entsprechende Dienstkonto:

    Komponentenzugriff

    Cluster Secret Namespace
    Admin admin-cluster-creds kube-system
    Admin user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Admin private-registry-creds kube-system
    Nutzer private-registry-creds kube-system
    • Wenn Sie keine private Registry verwenden, enthält das private-registry-creds-Secret den Schlüssel für Ihr Dienstkonto für den Komponentenzugriff.
    • Wenn Sie eine private Registry verwenden, enthält das private-registry-creds-Secret die Anmeldedaten für Ihre private Registry, jedoch nicht den Dienstkontoschlüssel für den Komponentenzugriff.

    Connect-register

    Cluster Secret Namespace
    Admin admin-cluster-creds kube-system
    Admin user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt

    Logging-monitoring

    Cluster Secret Namespace
    Admin admin-cluster-creds kube-system
    Admin user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Nutzer google-cloud-credentials kube-system
    Nutzer stackdriver-service-account-key knative-serving

    Audit-Logging

    Cluster Secret Namespace
    Admin admin-cluster-creds kube-system
    Admin user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Admin kube-apiserver CLUSTER_NAME

    Stackdriver

    Cluster Secret Namespace
    Admin admin-cluster-creds kube-system
    Admin user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Nutzer google-cloud-credentials kube-system
    Nutzer stackdriver-service-account-key knative-serving
  3. Erstellen Sie mit dem folgenden Befehl eine Sicherung jedes Secrets:

    kubectl get secret SECRET --namespace NAMESPACE \
        --kubeconfig KUBECONFIG -o json > backup/SECRET-NAMESPACE.json

    Dabei gilt:

    • NAMESPACE: der Namespace, in dem sich das Secret befindet. Beispiel: kube-system.
    • KUBECONFIG: der Pfad zur kubeconfig-Datei für den Administrator- oder Nutzercluster.
    • SECRET: der Name des Secrets. Beispiel: admin-cluster-creds.

    Führen Sie beispielsweise die folgenden Befehle für das Audit-Logging-Dienstkonto aus:

    kubectl get secret admin-cluster-creds --namespace kube-system \
            --kubeconfig KUBECONFIG -o json > backup/admin-cluster-creds-kube-system.json
    
    kubectl get secret user-cluster-creds --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/user-cluster-creds-NAMESPACE.json
    
    kubectl get secret kube-apiserver --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/kube-apiserver-NAMESPACE.json
  4. Führen Sie den folgenden Befehl aus, um eine neue Dienstkonto-Schlüsseldatei zu erstellen:

    gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT

    Dabei gilt:

    • NEW_KEY_FILE: der Name Ihrer neuen Dienstkonto-Schlüsseldatei.
    • IAM_ACCOUNT: die E-Mail-Adresse des Dienstkontos.
  5. Suchen Sie in der Konfigurationsdatei des Administratorclusters das Feld componentAccessServiceAccountKeyPath, den Abschnitt gkeConnect, den Abschnitt stackdriver und den Abschnitt cloudAuditLogging. Ersetzen Sie an diesen Stellen die Pfade zu den Dienstkontoschlüsseldateien.

  6. Suchen Sie in der Konfigurationsdatei des Nutzerclusters das Feld componentAccessServiceAccountKeyPath, den Abschnitt gkeConnect, den Abschnitt stackdriver und den Abschnitt cloudAudigLogging. Ersetzen Sie an diesen Stellen die Pfade zu den Dienstkontoschlüsseldateien.

  7. Speichern Sie die Änderungen, die Sie mit den folgenden Befehlen vorgenommen haben:

    Sie können die Schlüssel für eine Komponente nacheinander oder alle Schlüssel gleichzeitig rotieren, indem Sie die Komponente auf sakeys setzen.

    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG \
        --admin-cluster
    
    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG
    

    Dabei gilt:

    • COMPONENT: eine der folgenden Optionen:

      • componentaccess
      • register
      • cloudauditlogging
      • stackdriver
      • sakeys (rotiert alle Komponentenschlüssel)
    • ADMIN_CLUSTER_KUBECONFIG: der Pfad zur kubeconfig-Datei für den Administratorcluster.

    • ADMIN_CLUSTER_CONFIG: der Pfad zur Konfigurationsdatei des Administratorclusters.

    • USER_CLUSTER_CONFIG: der Pfad zur Konfigurationsdatei des Nutzerclusters.

Knoten neu erstellen

Einige Dienstkontoschlüsselrotationen können länger dauern, da der Knoten neu erstellt werden muss:

Dienstkonto Knoten müssen neu erstellt werden
Komponentenzugriff Bei Verwendung von Artifact Registry: Ja
Bei Verwendung einer privaten Registry: Nein
Audit-Logging Administratorcluster: Ja, aber nur Knoten der Steuerungsebene
Nutzercluster mit Kubeception: Nein
Nutzercluster mit Controlplane V2: Ja, aber nur Knoten der Steuerungsebene
Logging-monitoring Nein
Connect-register Nein

Bei einer Schlüsselrotation, bei der Knoten neu erstellt werden müssen, werden die Knoten in einem schrittweisen Aktualisierungsprozess ersetzt, d. h., die Knoten werden einzeln neu erstellt.

Die mögliche Ausfallzeit bei einer Schlüsselrotation ist mit der Ausfallzeit bei einem Clusterupgrade vergleichbar. Weitere Informationen finden Sie unter Ausfallzeiten bei Upgrades.

Sicherungen wiederherstellen

Wenn Sie die Sicherungen der zuvor erstellten Secrets wiederherstellen müssen, führen Sie den folgenden Befehl aus:

kubectl apply -f backup/

Erweiterte Clusterunterschiede beim Rotieren von Dienstkontoschlüsseln

Der Befehl gkectl update credentials wird für erweiterte Cluster nur teilweise unterstützt. In der folgenden Tabelle sind Befehlsvariationen aufgeführt, die unterstützt werden und solche, die nicht unterstützt werden:

Befehl Beschreibung Support
gkectl update credentials certificate-authorities rotate Rotieren Sie Zertifizierungsstellen. Unterstützt
gkectl update credentials certificate-authorities status Vorschau: Status der Rotation von Zertifizierungsstellen ansehen. Unterstützt
gkectl update credentials certificate-authorities update-kubeconfig Laden Sie eine kubeconfig-Datei mit dem neuesten Clientzertifikat herunter. Unterstützt
gkectl update credentials cloudauditlogging Cloud-Audit-Logs-Anmeldedaten aktualisieren Nicht unterstützt
gkectl update credentials componentaccess Aktualisieren Sie die Anmeldedaten für den Schlüssel des Dienstkontos für den Komponentenzugriff für Cluster, die mit Google Distributed Cloud für VMware erstellt wurden. Unterstützt
gkectl update credentials f5bigip Aktualisieren Sie die Anmeldedaten für den F5 BIG-IP-Load-Balancer. Nicht erforderlich
gkectl update credentials ksa-signing-key rotate Rotieren Sie den Signaturschlüssel für das Kubernetes-Dienstkonto (Kubernetes service account, KSA). Nicht unterstützt
gkectl update credentials ksa-signing-key status Status einer laufenden KSA-Tokensignaturschlüsselrotation ansehen Nicht unterstützt
gkectl update credentials Aktualisieren Sie Clusteranmeldedaten. Unterstützt
gkectl update credentials privateregistry Aktualisieren Sie die Anmeldedaten der privaten Registry für einen Cluster. Unterstützt
gkectl update credentials register Aktualisieren Sie die Anmeldedaten für den Schlüssel für die Registrierung von Dienstkonten. Unterstützt
gkectl update credentials sakeys Aktualisieren Sie die Anmeldedaten für Dienstkontoschlüssel für einen Cluster. Unterstützt
gkectl update credentials stackdriver Vorschau: Google Cloud Observability-Anmeldedaten aktualisieren. Unterstützt
gkectl update credentials vsphere vSphere-Anmeldedaten für einen Cluster aktualisieren Unterstützt

Eine umfassende Liste der Google Distributed Cloud for VMware-Funktionen, die für erweiterte Cluster unterstützt werden oder nicht, finden Sie unter Unterschiede beim Ausführen erweiterter Cluster.