Effectuer une rotation des clés de chiffrement du disque de démarrage etcd et du plan de contrôle

.

Cette page vous explique comment effectuer la rotation des clés de chiffrement du disque de démarrage etcd et du plan de contrôle que vous avez configurées pour GKE control plane authority. Ce document est destiné aux administrateurs de cluster et aux ingénieurs en sécurité.

Avant de lire ce document, familiarisez-vous avec les concepts suivants de GKE control plane authority :

Planifier la rotation des clés

Ce document vous explique comment effectuer la rotation des composants d'identifiants suivants dans votre plan de contrôle :

  • La clé de chiffrement pour etcd et les disques de démarrage du plan de contrôle.
  • Clé de chiffrement de la sauvegarde interne etcd utilisée par Google Cloud pour la reprise après sinistre.

Vous pouvez également effectuer une rotation des autorités de certification (CA) gérées par le client et des clés de signature de compte de service que vous configurez avec GKE control plane authority. Pour en savoir plus, consultez Effectuer une rotation des autorités de certification et des clés de signature du plan de contrôle gérées par le client.

Les clés de Cloud Key Management Service (Cloud KMS) n'expirent pas. Si votre organisation a une exigence de sécurité concernant la rotation des clés, effectuez une rotation manuelle des clés. Pour minimiser les perturbations des charges de travail en cours d'exécution, ne configurez pas la rotation des clés automatique de ces clés.

Lorsque vous effectuez une rotation des clés de chiffrement pour les disques de démarrage de votre plan de contrôle et etcd, GKE crée un disque chiffré à l'aide de la nouvelle clé. Pour les clusters régionaux, cette opération n'entraîne aucun temps d'arrêt en raison du plan de contrôle répliqué. Pour les clusters zonaux, le plan de contrôle devient indisponible jusqu'à ce que le nouveau disque soit disponible.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Pour utiliser la Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
  • Disposer d'un cluster existant qui utilise le chiffrement du disque de démarrage du plan de contrôle et d'etcd et qui exécute GKE version 1.35.2-gke.1842000 ou ultérieure.

  • Identifiez les ID des projets Google Cloud suivants :

    • Projet de clé : projet contenant vos ressources Cloud KMS.
    • Projet de cluster : projet contenant votre cluster GKE.
  • Pour effectuer les tâches de validation décrites dans ce document, vérifiez que le journal d'audit des accès aux données DATA_READ est activé pour l'API Cloud Key Management Service (KMS). Pour en savoir plus, consultez Activer les journaux d'audit des accès aux données.

Rôles et autorisations nécessaires

Pour obtenir les autorisations nécessaires pour effectuer la rotation de vos clés et de vos CA gérées par le client, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Limites

Vous pouvez mettre à jour vos clusters vers de nouvelles versions de clés existantes, mais vous ne pouvez pas les mettre à jour pour utiliser des clés entièrement nouvelles pour ces opérations de chiffrement.

Attribuer des rôles IAM à l'agent de service GKE

Pour effectuer la rotation de vos clés de chiffrement pour les disques de démarrage et etcd, attribuez le rôle Utilisateur de clé cryptographique KMS Kubernetes Engine (roles/container.cloudKmsKeyUser) sur les clés de chiffrement de votre projet de clé à l'agent de service GKE de votre projet de cluster :

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

Remplacez les éléments suivants :

  • KCP_DISK_KEY_NAME : nom de la clé de chiffrement pour les disques de démarrage et les disques etcd de votre plan de contrôle.
  • KEYRING_NAME : nom du trousseau de clés qui contient la clé.
  • LOCATION : emplacement Google Cloud du trousseau de clés. Il doit être identique à l'emplacement de votre cluster. Pour obtenir la liste des régions, filtrez par "Région" dans le tableau des emplacements Cloud KMS.
  • CLUSTER_PROJECT_NUMBER : numéro de projet numérique du projet de cluster.
  • KEY_PROJECT_ID : ID de votre projet de clé.

Effectuer une rotation de la clé pour etcd et les disques de démarrage du plan de contrôle

  1. Créez une version de clé primaire pour le disque de démarrage et la clé de chiffrement etcd :

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

    La propagation des modifications dans le projet peut prendre jusqu'à 10 minutes.

  2. Recherchez la version de correctif actuelle du plan de contrôle du cluster :

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

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster GKE.
    • LOCATION : emplacement du plan de contrôle du cluster GKE, par exemple us-central1.
  3. Mettez à niveau le plan de contrôle du cluster vers la même version que celle qu'il utilise déjà.

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

    Remplacez les éléments suivants :

    • CONTROL_PLANE_VERSION : version du plan de contrôle du cluster issue du résultat de l'étape précédente.
    • CLUSTER_PROJECT_ID : ID de votre projet de cluster.

Une fois la mise à niveau du plan de contrôle terminée, le cluster utilise la nouvelle version de la clé pour chiffrer les disques de démarrage du plan de contrôle et tous les disques etcd.

Effectuer une rotation de la clé de chiffrement de sauvegarde interne etcd

Cette section explique comment effectuer la rotation de la clé de chiffrement pour la sauvegarde interne etcd, que Google Cloud utilise à des fins de reprise après sinistre. Vous pouvez configurer la rotation automatique pour cette clé, mais nous vous recommandons d'effectuer une rotation manuelle. Après la rotation de la clé, le cluster utilise la nouvelle version de la clé pour chiffrer les nouvelles sauvegardes internes etcd.

Les sauvegardes internes etcd utilisent la version de clé primaire et sont effectuées aux intervalles suivants :

  • Toutes les 30 minutes pour les clusters zonaux.
  • Toutes les 10 minutes pour les clusters Autopilot et les clusters Standard régionaux.

Après avoir effectué la rotation de la clé, ne désactivez pas et ne détruisez pas immédiatement la version précédente de la clé. Attendez que GKE ait eu le temps de créer des sauvegardes internes etcd qui utilisent la nouvelle version de la clé.

  • Créez une version de clé primaire pour la clé de chiffrement de sauvegarde interne etcd :

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

    Remplacez les éléments suivants :

    • ETCD_BACKUP_KEY_NAME : nom de la clé de chiffrement de la sauvegarde interne etcd.
    • KEYRING_NAME : nom du trousseau de clés qui contient la clé.
    • LOCATION : emplacement Google Cloud du trousseau de clés. Il doit être identique à l'emplacement de votre cluster. Pour obtenir la liste des régions, filtrez par "Région" dans le tableau des emplacements Cloud KMS.
    • KEY_PROJECT_ID : ID de votre projet de clé.

Étapes suivantes