Cette page vous explique comment faire pivoter les clés de chiffrement du disque de démarrage etcd et du plan de contrôle que vous avez configurées pour l'autorité du plan de contrôle GKE. Cette page est destinée aux administrateurs de cluster et aux ingénieurs en sécurité.
Avant de lire cette page, familiarisez-vous avec les concepts suivants concernant l'autorité du plan de contrôle GKE :
Planifier les rotations de clés
Cette page vous explique comment faire pivoter les composants d'identifiants suivants dans votre plan de contrôle :
- Clé de chiffrement pour etcd et les disques de démarrage du plan de contrôle.
- Clé de chiffrement pour la sauvegarde interne etcd que Google Cloud utilise pour la reprise après sinistre.
Vous pouvez également alterner les autorités de certification (CA) gérées par le client et les clés de signature de compte de service que vous configurez avec l'autorité du plan de contrôle GKE. Pour en savoir plus, consultez Effectuer une rotation des clés de signature et des CA du plan de contrôle géré 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-la manuellement. Pour minimiser les perturbations des charges de travail en cours d'exécution, ne configurez pas la rotation automatique des clés pour ces clés.
Lorsque vous alternez les clés de chiffrement pour les disques de démarrage et etcd de votre plan de contrôle, GKE crée un disque chiffré à l'aide de la nouvelle clé. Pour les clusters régionaux, cette opération n'entraîne aucune indisponibilité 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
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
Vous disposez d'un cluster existant qui utilise le chiffrement du disque de démarrage du plan de contrôle et d'etcd.
Identifiez les ID de projet des projets suivants : Google Cloud
- Projet de clé : projet contenant vos ressources Cloud KMS.
- Projet de cluster : projet contenant votre cluster GKE.
Pour effectuer les tâches de validation sur cette page, vérifiez que le journal d'audit
DATA_READ
Data Access 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 requis
Pour obtenir les autorisations nécessaires pour faire pivoter vos clés et CA gérés par le client, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Gérer les clés ou les versions de clé :
Administrateur Cloud KMS (
roles/cloudkms.admin
) sur votre projet de clé -
Configurez les clusters pour qu'ils utilisent les nouvelles clés :
Administrateur de cluster Kubernetes Engine (
roles/container.clusterAdmin
) sur le projet de votre cluster
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 des clés existantes, mais vous ne pouvez pas mettre à jour vos clusters pour qu'ils utilisent 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és de chiffrement KMS Kubernetes Engine (roles/container.cloudKmsKeyUser
) aux clés de chiffrement de votre projet de clés pour 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 vos disques de démarrage et vos disques etcd du 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 sur "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 projet de votre projet de clé.
Faire pivoter la clé pour les disques de démarrage et du plan de contrôle etcd
Créez une version de clé principale 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.
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, tel queus-central1
.
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 à partir du résultat de l'étape précédente.CLUSTER_PROJECT_ID
: ID de projet de votre projet de cluster.
Une fois l'opération de mise à niveau du plan de contrôle terminée, le cluster utilise la nouvelle version de la clé pour chiffrer vos disques de démarrage du plan de contrôle et tous les disques etcd.
Effectuer la rotation de la clé de chiffrement interne de sauvegarde etcd
Cette section explique comment faire tourner 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 plutôt une rotation manuelle. Une fois la clé permutée, le cluster utilise la nouvelle version de clé pour chiffrer les nouvelles sauvegardes internes etcd.
Les sauvegardes internes etcd utilisent la version principale de la clé 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 fait pivoter la clé, ne désactivez ni ne détruisez immédiatement la version précédente. Attendez que GKE ait créé de nouvelles sauvegardes internes etcd qui utilisent la nouvelle version de clé.
Créez une version de clé primaire pour la clé de chiffrement interne des sauvegardes 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 interne de sauvegarde 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 sur "Région" dans le tableau des emplacements Cloud KMS.KEY_PROJECT_ID
: ID de projet de votre projet de clé.
Étapes suivantes
- Effectuer une rotation des clés et des CA du plan de contrôle géré par le client
- Valider l'émission et l'utilisation d'identités