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


.

Auf dieser Seite wird beschrieben, wie Sie die Verschlüsselungsschlüssel für die etcd- und Steuerungsebenen-Bootdisk rotieren, die Sie für die GKE-Steuerungsebenen-Autorität konfiguriert haben. Diese Seite richtet sich an Clusteradministratoren und Sicherheitsexperten.

Machen Sie sich vor dem Lesen dieser Seite mit den folgenden Konzepten für die GKE-Steuerungsebene vertraut:

Schlüsselrotationen planen

Auf dieser Seite wird beschrieben, wie Sie die folgenden Anmeldedatenkomponenten 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 Dienstkontosignaturschlüssel rotieren, die Sie mit der GKE-Steuerungsebene konfigurieren. Weitere Informationen finden Sie unter CA-Zertifikate und Signaturschlüssel für vom Kunden verwaltete Steuerungsebenen 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. Um Unterbrechungen laufender Arbeitslasten zu minimieren, sollten Sie für diese Schlüssel keine automatische Schlüsselrotation konfigurieren.

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 führt dieser Vorgang aufgrund der replizierten Steuerungsebene zu keiner Ausfallzeit. Bei zonalen Clustern ist die Steuerungsebene nicht mehr verfügbar, bis die neue Festplatte verfügbar ist.

Hinweise

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 diesen Task 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 gcloud components update ab.
  • Sie haben einen vorhandenen Cluster, der Bootlaufwerk der Steuerungsebene und etcd-Verschlüsselung verwendet.

  • 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.
  • Prüfen Sie, ob das DATA_READ-Audit-Log für den Datenzugriff für die Cloud Key Management Service (KMS) API aktiviert ist, um die Validierungsaufgaben auf dieser Seite auszuführen. 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 nicht auf völlig neue Schlüssel für diese Verschlüsselungsvorgänge.

IAM-Rollen für den GKE-Dienst-Agent gewähren

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 Speicherort des Schlüsselbunds. Dieser muss mit dem Standort Ihres Clusters übereinstimmen. Eine Liste der Regionen finden Sie in der Tabelle mit Cloud KMS-Standorten. Filtern Sie dort nach „Region“.
  • CLUSTER_PROJECT_NUMBER: Die numerische Projektnummer des Clusterprojekts.
  • KEY_PROJECT_ID: Die Projekt-ID Ihres Schlüsselprojekts.

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

  1. Erstellen Sie eine neue primäre Schlüsselversion für den 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. So finden 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 dieselbe Version durch, die bereits verwendet wird.

    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 Boot-Laufwerke der Steuerungsebene und alle etcd-Laufwerke zu verschlüsseln.

Internen etcd-Verschlüsselungsschlüssel für Back-ups rotieren

In diesem Abschnitt wird beschrieben, 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, die Rotation manuell durchzuführen. Nachdem Sie den Schlüssel rotiert haben, verwendet der Cluster die neue Schlüsselversion zum Verschlüsseln neuer interner etcd-Sicherungen.

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

  • 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 mit der neuen Schlüsselversion erstellen kann.

  • Erstellen Sie eine neue primäre Schlü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 etcd-Verschlüsselungsschlüssels für Sicherungen.
    • KEYRING_NAME: der Name des Schlüsselbunds, der den Schlüssel enthält.
    • LOCATION: der Google Cloud Speicherort des Schlüsselbunds. Dieser muss mit dem Standort Ihres Clusters übereinstimmen. Eine Liste der Regionen finden Sie in der Tabelle mit Cloud KMS-Standorten. Filtern Sie dort nach „Region“.
    • KEY_PROJECT_ID: Die Projekt-ID Ihres Schlüsselprojekts.

Nächste Schritte