Sicherheitsschlüssel des Clusters rotieren

Schlüsselrotation

Die Schlüsselrotation ist der Vorgang, bei dem das zugrunde liegende kryptografische Material in einem Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) geändert wird. Sie kann automatisch im Rahmen einer geplanten Rotation oder manuell ausgelöst werden, normalerweise nach einem Sicherheitsvorfall, bei dem Schlüssel möglicherweise manipuliert wurden. Bei der Schlüsselrotation wird nur das einzelne Feld im Schlüssel ersetzt, das die Rohdaten zum Verschlüsselungs-/Entschlüsselungsschlüssel enthält.

Automatische Schlüsselrotation

Der AWS Key Management Service (KMS) unterstützt die automatische Rotation von KMS-Schlüsseln. Wenn diese Option aktiviert ist, generiert AWS einmal pro Jahr automatisch neues kryptografisches Schlüsselmaterial für Ihren Schlüssel. Es sind keine manuellen Maßnahmen erforderlich.

Nach einer Schlüsselrotation verschlüsselt GKE on AWS jedes neue Secret mit dem neuen Schlüssel. Alle zuvor erstellten Secrets werden weiterhin mit ihrem ursprünglichen Schlüssel entschlüsselt. Aus diesem Grund behält AWS das ältere Schlüsselmaterial von CMK unbefristet bei, sodass alte DEKs entschlüsselt werden können, wenn alte Secrets gelesen werden.

Mit dem folgenden Befehl können Sie prüfen, ob die automatische Rotation für einen KMS-Schlüssel aktiviert ist:

aws kms get-key-rotation --key-id KMS_KEY_ID

Ersetzen Sie KMS_KEY_ID durch Ihre AWS-KMS-Schlüssel-ID.

Sie können die automatische Schlüsselrotation aktivieren, indem Sie den folgenden Befehl ausführen:

aws kms enable-key-rotation --key-id KMS_KEY_ID

Manuelle Schlüsselrotation

In diesem Abschnitt wird erläutert, wie Sie die Konfigurationsschlüssel der Steuerungsebene oder des Knotenpools manuell rotieren.

Konfigurationsschlüssel der Steuerungsebene

Führen Sie die folgenden Schritte aus, um den Konfigurationsschlüssel der Steuerungsebene manuell zu rotieren:

  1. Erstellen Sie einen neuen Schlüssel für Cloud Key Management Service. Speichern Sie den Wert Ihres ARN eines KMS-Schlüssels. Sie werden ihn später benötigen.

  2. Prüfen Sie, ob die mit dem Cluster verknüpfte IAM-Rolle Berechtigungen zum Verschlüsseln und Entschlüsseln mit dem neuen Schlüssel hat.

  3. Aktualisieren Sie den Verschlüsselungsschlüssel mit dem Befehl gcloud container aws clusters update.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --config-encryption-kms-key-arn=CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Dabei gilt:

    • CLUSTER_NAME: der Name des Clusters
    • GOOGLE_CLOUD_LOCATION: die unterstützte Google Cloud Region, die Ihren Cluster verwaltet, z. B. us-west1
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: Ihr neuer KMS-Schlüssel-ARN

Root-Volume der Steuerungsebene

Führen Sie die folgenden Schritte aus, um den Schlüssel des Root-Volumes der Steuerungsebene manuell zu rotieren:

  1. Erstellen Sie einen neuen Schlüssel für Cloud Key Management Service. Speichern Sie den Wert Ihres ARN eines KMS-Schlüssels. Sie werden ihn später benötigen.

  2. Prüfen Sie, ob die mit dem Cluster verknüpfte IAM-Rolle Berechtigungen zum Verschlüsseln und Entschlüsseln mit dem neuen Schlüssel hat.

  3. Aktualisieren Sie den Verschlüsselungsschlüssel mit dem Befehl gcloud container aws clusters update.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Dabei gilt:

    • CLUSTER_NAME: der Name des Clusters
    • GOOGLE_CLOUD_LOCATION: die unterstützte Google Cloud Region, die Ihren Cluster verwaltet, z. B. us-west1
    • ROOT_VOLUME_KMS_KEY_ARN: Amazon-Ressourcenname (ARN) des AWS KMS-Schlüssels zum Verschlüsseln des Root-Volumes

Konfigurationsschlüssel für Knotenpools

Führen Sie die folgenden Schritte aus, um den Schlüssel Konfiguration des Knotenpools manuell zu rotieren:

  1. Erstellen Sie einen neuen Schlüssel für Cloud Key Management Service.

  2. Prüfen Sie, ob die mit dem Cluster verknüpfte IAM-Rolle Berechtigungen zum Verschlüsseln und Entschlüsseln mit dem neuen Schlüssel hat.

  3. Aktualisieren Sie den verwendeten KMS-Alias:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Dabei gilt:

    • KEY_ALIAS: der Alias Ihres vorhandenen Schlüssels
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: Ihr neuer KMS-Schlüssel-ARN
  4. Zwingen Sie den Cluster, alle Cluster-Secrets mit dem neuen Verschlüsselungsschlüssel neu zu verschlüsseln:

     kubectl get secrets --all-namespaces -o json | \
     kubectl annotate --overwrite -f - encryption-key-rotation-time=`date +"%Y%m%d-%H%M%S"`
    
  5. Deaktivieren Sie den alten AWS-KMS-Schlüssel. Weitere Informationen finden Sie unter Schlüssel aktivieren und deaktivieren.

Root-Volumes für Knotenpools

Führen Sie die folgenden Schritte aus, um den Schlüssel des Root-Volumes für Knotenpools manuell zu rotieren:

  1. Erstellen Sie einen neuen Schlüssel für Cloud Key Management Service.

  2. Prüfen Sie, ob die mit dem Cluster verknüpfte IAM-Rolle Berechtigungen zum Verschlüsseln und Entschlüsseln mit dem neuen Schlüssel hat.

  3. Aktualisieren Sie den verwendeten KMS-Alias:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id ROOT_VOLUME_KMS_KEY_ARN
    

    Dabei gilt:

    • KEY_ALIAS: der Alias Ihres vorhandenen Schlüssels
    • ROOT_ENCRYPTION_KMS_KEY_ARN: Ihr neuer KMS-Schlüssel-ARN
  4. Aktualisieren Sie den Knotenpool:

     gcloud container aws node-pools update NODE_POOL_NAME \
         --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Dabei gilt:

    • NODE_POOL_NAME: Name des Knotenpools
    • ROOT_VOLUME_KMS_KEY_ARN: Amazon-Ressourcenname (ARN) des AWS KMS-Schlüssels zum Verschlüsseln des Root-Volumes
  5. Deaktivieren Sie den alten AWS-KMS-Schlüssel. Weitere Informationen finden Sie unter Schlüssel aktivieren und deaktivieren.