Effectuer une rotation des clés de sécurité de votre cluster

Rotation des clés

La rotation des clés consiste à modifier le matériel de cryptographie sous-jacent contenu dans une clé de chiffrement de clé (KEK). Elle peut être déclenchée automatiquement dans le cadre d'une rotation planifiée, ou manuellement, généralement après un incident de sécurité où des clés ont pu être compromises. La rotation des clés ne remplace que le champ unique de la clé contenant les données brutes de la clé de chiffrement/déchiffrement.

Rotation automatique des clés

Le service de gestion des clés (KMS) AWS est compatible avec la rotation automatique des clés KMS. Lorsque cette option est activée, AWS génère automatiquement un nouveau matériel de clé cryptographique pour votre clé une fois par an. Aucune action manuelle n'est requise.

Après une rotation des clés, GKE sur AWS chiffre chaque nouveau secret à l'aide de la nouvelle clé. Tout secret précédemment créé est toujours déchiffré avec sa clé d'origine. Pour cette raison, AWS conserve indéfiniment les anciens éléments de clé de CMK, ce qui permet de déchiffrer les anciennes clés DEK.

Vous pouvez vérifier si la rotation automatique est activée pour une clé KMS à l'aide de la commande suivante :

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

Remplacez KMS_KEY_ID par votre ID de clé KMS AWS.

Vous pouvez activer la rotation automatique des clés en exécutant la commande suivante :

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

Rotation manuelle des clés

Cette section explique comment effectuer manuellement la rotation des clés de configuration de votre plan de contrôle ou de votre pool de nœuds.

Clé de configuration du plan de contrôle

Pour effectuer une rotation manuelle de votre clé de configuration du plan de contrôle, procédez comme suit :

  1. Créez une nouvelle clé Cloud Key Management Service. Enregistrez la valeur ARN de votre clé KMS. vous en aurez besoin ultérieurement.

  2. Assurez-vous que le rôle IAM associé au cluster dispose des autorisations nécessaires pour chiffrer et déchiffrer des données à l'aide de la nouvelle clé.

  3. Exécutez la commande gcloud container aws clusters update pour mettre à jour la clé de chiffrement.

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

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster.
    • GOOGLE_CLOUD_LOCATION: région Google Cloud compatible qui gère votre cluster (par exemple, us-west1)
    • CONFIG_ENCRYPTION_KMS_KEY_ARN : votre nouvel ARN de clé KMS

Volume racine du plan de contrôle

Pour effectuer manuellement la rotation de la clé du volume racine du plan de contrôle, procédez comme suit :

  1. Créez une nouvelle clé Cloud Key Management Service. Enregistrez la valeur ARN de votre clé KMS. vous en aurez besoin ultérieurement.

  2. Assurez-vous que le rôle IAM associé au cluster dispose des autorisations nécessaires pour chiffrer et déchiffrer des données à l'aide de la nouvelle clé.

  3. Exécutez la commande gcloud container aws clusters update pour mettre à jour la clé de chiffrement.

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

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster.
    • GOOGLE_CLOUD_LOCATION: région Google Cloud compatible qui gère votre cluster (par exemple, us-west1)
    • ROOT_VOLUME_KMS_KEY_ARN : nom de ressource Amazon (ARN) de la clé KMS AWS qui chiffre le volume racine

Clé de configuration du pool de nœuds

Pour effectuer une rotation manuelle de votre clé de configuration du pool de nœuds, procédez comme suit :

  1. Créez une nouvelle clé Cloud Key Management Service.

  2. Assurez-vous que le rôle IAM associé au cluster dispose des autorisations nécessaires pour chiffrer et déchiffrer des données à l'aide de la nouvelle clé.

  3. Mettez à jour l'alias KMS utilisé :

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

    Remplacez les éléments suivants :

    • KEY_ALIAS : alias de votre clé existante
    • CONFIG_ENCRYPTION_KMS_KEY_ARN : votre nouvel ARN de clé KMS
  4. Forcez le cluster à rechiffrer tous les secrets du cluster à l'aide de la nouvelle clé de chiffrement :

     kubectl get secrets --all-namespaces -o json | \
     kubectl annotate --overwrite -f - encryption-key-rotation-time=`date +"%Y%m%d-%H%M%S"`
    
  5. Désactivez l'ancienne clé KMS AWS. Pour en savoir plus, consultez la section Activer et désactiver des clés.

Volumes racines du pool de nœuds

Pour effectuer une rotation manuelle de la clé du volume racine du pool de nœuds, procédez comme suit :

  1. Créez une nouvelle clé Cloud Key Management Service.

  2. Assurez-vous que le rôle IAM associé au cluster dispose des autorisations nécessaires pour chiffrer et déchiffrer des données à l'aide de la nouvelle clé.

  3. Mettez à jour l'alias KMS utilisé :

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

    Remplacez les éléments suivants :

    • KEY_ALIAS : alias de votre clé existante
    • ROOT_ENCRYPTION_KMS_KEY_ARN : votre nouvel ARN de clé KMS
  4. Mettez à jour votre pool de nœuds :

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

    Remplacez les éléments suivants :

    • NODE_POOL_NAME : nom de votre pool de nœuds.
    • ROOT_VOLUME_KMS_KEY_ARN : nom de ressource Amazon (ARN) de la clé KMS AWS qui chiffre le volume racine
  5. Désactivez l'ancienne clé KMS AWS. Pour en savoir plus, consultez la section Activer et désactiver des clés.