Verschlüsselungsschlüssel für etcd- und Steuerungsebenen-Bootlaufwerke rotieren

Auf dieser Seite erfahren Sie, wie Sie die Verschlüsselungsschlüssel für etcd und das Bootlaufwerk der Steuerungsebene rotieren, die Sie für die GKE Control Plane Authority konfiguriert haben. Dieses Dokument richtet sich an Clusteradministratoren und Sicherheitsingenieure.

Bevor Sie dieses Dokument lesen, sollten Sie sich mit den folgenden Konzepten der GKE Control Plane Authority vertraut machen:

Schlüsselrotationen planen

In diesem Dokument wird beschrieben, wie Sie die folgenden Komponenten für Anmeldedaten in Ihrer Steuerungsebene rotieren:

  • Der Verschlüsselungsschlüssel für etcd und die Bootlaufwerke der Steuerungsebene.
  • Der Verschlüsselungsschlüssel für die interne etcd-Sicherung, die Google Cloud für die Notfallwiederherstellung verwendet.

Sie können auch die vom Kunden verwalteten Zertifizierungsstellen (CAs) und die Signaturschlüssel für Dienstkonten rotieren, die Sie mit der GKE Control Plane Authority konfigurieren. Weitere Informationen finden Sie unter Kundenverwaltete Zertifizierungsstellen und Signaturschlüssel der Steuerungsebene rotieren.

Schlüssel im Cloud Key Management Service (Cloud KMS) laufen nicht ab. Wenn Ihre Organisation eine Sicherheitsanforderung für die Schlüsselrotation hat, rotieren Sie die Schlüssel manuell. Konfigurieren Sie für diese Schlüssel keine automatische Schlüsselrotation, um Unterbrechungen laufender Arbeitslasten zu minimieren.

Wenn Sie die Verschlüsselungsschlüssel für die Bootlaufwerke der Steuerungsebene und etcd rotieren, erstellt GKE ein neues Laufwerk, das mit dem neuen Schlüssel verschlüsselt wird. Bei regionalen Clustern kommt es aufgrund der replizierten Steuerungsebene zu keiner Ausfallzeit. Bei zonalen Clustern ist die Steuerungsebene nicht verfügbar, bis das neue Laufwerk verfügbar ist.

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, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl gcloud components update ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
  • Sie haben einen vorhandenen Cluster, der die Bootlaufwerk- und etcd-Verschlüsselung der Steuerungsebene verwendet und auf dem die GKE-Version 1.35.2-gke.1842000 oder höher ausgeführt wird.

  • Ermitteln Sie die Projekt-IDs der folgenden Google Cloud Projekte:

    • Schlüsselprojekt: Das Projekt, das Ihre Cloud KMS-Ressourcen enthält.
    • Clusterprojekt: Das Projekt, das Ihren GKE-Cluster enthält.
  • Wenn Sie die Validierungsaufgaben in diesem Dokument ausführen möchten, müssen Sie prüfen, ob das Audit-Log für den Datenzugriff von DATA_READ für die Cloud Key Management Service (KMS) API aktiviert ist. Weitere Informationen finden Sie unter Audit-Logs zum Datenzugriff aktivieren.

Erforderliche Rollen und Berechtigungen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Rotieren Ihrer vom Kunden verwalteten CAs und Schlüssel benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Beschränkungen

Sie können Ihre Cluster auf neue Versionen vorhandener Schlüssel aktualisieren, aber Sie können Ihre Cluster nicht so aktualisieren, dass für diese Verschlüsselungsvorgänge völlig neue Schlüssel verwendet werden.

Dem GKE-Dienst-Agent IAM-Rollen zuweisen

Wenn Sie Ihre Verschlüsselungsschlüssel für Bootlaufwerke und etcd rotieren möchten, weisen Sie dem GKE-Dienst-Agent in Ihrem Clusterprojekt die Rolle Kubernetes Engine KMS Crypto Key User (roles/container.cloudKmsKeyUser) für die Verschlüsselungsschlüssel in Ihrem Schlüsselprojekt zu:

gcloud kms keys add-iam-policy-binding KCP_DISK_KEY_NAME \
    --keyring=KEYRING_NAME \
    --location=LOCATION \
    --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role=roles/container.cloudKmsKeyUser \
    --project=KEY_PROJECT_ID

Ersetzen Sie Folgendes:

  • KCP_DISK_KEY_NAME: der Name des Verschlüsselungsschlüssels für die Bootlaufwerke und etcd-Laufwerke der Steuerungsebene.
  • KEYRING_NAME: der Name des Schlüsselbunds, der den Schlüssel enthält
  • LOCATION: der Google Cloud -Standort des Schlüsselbunds. Dieser muss mit dem Standort Ihres Clusters übereinstimmen. Eine Liste der Regionen finden Sie in der Tabelle der Cloud KMS-Standorte, wenn Sie nach „Region“ filtern.
  • CLUSTER_PROJECT_NUMBER: die numerische Projektnummer des Clusterprojekts.
  • KEY_PROJECT_ID: die Projekt-ID Ihres Schlüsselprojekts.

Schlüssel für etcd- und Steuerungsebene-Bootlaufwerke rotieren

  1. Erstellen Sie eine neue Primärschlüsselversion für das Bootlaufwerk und den etcd-Verschlüsselungsschlüssel:

    gcloud kms keys versions create \
        --key=KCP_DISK_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    Es kann bis zu 10 Minuten dauern, bis die Änderungen im Projekt wirksam werden.

  2. Suchen Sie die aktuelle Patchversion der Cluster-Steuerungsebene:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(currentMasterVersion)'
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: Name Ihres GKE-Clusters.
    • LOCATION: der Standort der GKE-Cluster-Steuerungsebene, z. B. us-central1.
  3. Führen Sie ein Upgrade der Cluster-Steuerungsebene auf die bereits verwendete Version durch.

    gcloud container clusters upgrade CLUSTER_NAME \
        --master \
        --location=LOCATION \
        --cluster-version=CONTROL_PLANE_VERSION \
        --project=CLUSTER_PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • CONTROL_PLANE_VERSION: die Version der Cluster-Steuerungsebene aus der Ausgabe des vorherigen Schritts.
    • CLUSTER_PROJECT_ID: die Projekt-ID Ihres Clusterprojekts.

Nach Abschluss des Upgrades der Steuerungsebene verwendet der Cluster die neue Schlüsselversion, um die Bootlaufwerke der Steuerungsebene und alle etcd-Laufwerke zu verschlüsseln.

Verschlüsselungsschlüssel für interne etcd-Sicherungen rotieren

In diesem Abschnitt erfahren Sie, wie Sie den Verschlüsselungsschlüssel für die interne etcd-Sicherung rotieren, die Google Cloud für die Notfallwiederherstellung verwendet. Sie können die automatische Rotation für diesen Schlüssel konfigurieren. Wir empfehlen jedoch, stattdessen eine manuelle Rotation durchzuführen. Nachdem Sie den Schlüssel rotiert haben, verwendet der Cluster die neue Schlüsselversion, um neue interne etcd-Sicherungen zu verschlüsseln.

Interne etcd-Sicherungen verwenden die Primärschlüsselversion und werden in den folgenden Intervallen erstellt:

  • Alle 30 Minuten für zonale Cluster.
  • Alle 10 Minuten für Autopilot-Cluster und regionale Standardcluster.

Nachdem Sie den Schlüssel rotiert haben, sollten Sie die vorherige Schlüsselversion nicht sofort deaktivieren oder löschen. Warten Sie, bis genügend Zeit vergangen ist, damit GKE neue interne etcd-Sicherungen erstellen kann, die die neue Schlüsselversion verwenden.

  • Erstellen Sie eine neue Primärschlüsselversion für den internen etcd-Sicherungsverschlüsselungsschlüssel:

    gcloud kms keys versions create \
        --key=ETCD_BACKUP_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    Ersetzen Sie Folgendes:

    • ETCD_BACKUP_KEY_NAME: der Name des internen Verschlüsselungsschlüssels für die etcd-Sicherung.
    • KEYRING_NAME: der Name des Schlüsselbunds, der den Schlüssel enthält
    • LOCATION: der Google Cloud -Standort des Schlüsselbunds. Dieser muss mit dem Standort Ihres Clusters übereinstimmen. Eine Liste der Regionen finden Sie in der Tabelle der Cloud KMS-Standorte, wenn Sie nach „Region“ filtern.
    • KEY_PROJECT_ID: die Projekt-ID Ihres Schlüsselprojekts.

Nächste Schritte