GKE sur AWS utilise le service de gestion des clés AWS (KMS) pour chiffrer des volumes EBS. GKE AWS 1.7 et versions ultérieures est compatible avec le chiffrement de volumes avec les clés maîtres de client gérées par le client (CMK). GKE sur AWS versions 1.6.x et antérieures ne sont compatibles qu'avec les clés maîtres de client gérées par AWS.
Cet article explique comment configurer une clé CMK gérée par le client pour chiffrer des volumes. Si vous ne configurez pas de CMK gérée par le client, GKE sur AWS utilise par défaut les CMK gérées par AWS.
Présentation
Les composants suivants de GKE sur AWS acceptent les volumes chiffrés par des CMK gérées par le client :
- Volume racine de l'hôte bastion
- Volumes racines du service de gestion
- Volumes de données etcd du service de gestion
- Volumes racines du plan de contrôle du cluster d'utilisateur
- Volumes de données etcd du plan de contrôle du cluster d'utilisateur
- Volumes racines des nœuds du cluster d'utilisateur
Spécifiez des clés dans votre configuration de service de gestion, cluster et pool de nœuds.
Prérequis
Pour utiliser les CMK gérées par le client pour des volumes racines GKE sur AWS, vous devez disposer des éléments suivants :
- Autorisations de créer ou d'utiliser une règle de clé KMS AWS. Pour en savoir plus, consultez la section Utiliser des règles de clé dans KMS AWS.
Créer une règle de clé
Vos clés KMS AWS doivent comporter une règle de clé permettant à GKE sur AWS de créer et de lire des volumes chiffrés avec une CMK gérée par le client. Un exemple de règle est fourni dans la section suivante. Pour créer la règle, procédez comme suit :
À partir de votre répertoire
anthos-aws
, utilisezterraform
pour obtenir l'ID de votre service de gestion.cd anthos-aws terraform output cluster_id
La sortie inclut l'ID de votre service de gestion. Dans l'exemple ci-dessous, l'ID estgke-12345abc
.terraform output cluster_id
gke-12345abcCréez une règle de clé KMS AWS ayant le contenu suivant :
{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_NUMBER:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow creating encrypted EBS volumes for EC2 use", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::ACCOUNT_NUMBER:role/gke-CLUSTER_ID-management", "arn:aws:iam::ACCOUNT_NUMBER:user/AWS_USER", "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "ACCOUNT_NUMBER", "kms:ViaService": "ec2.AWS_REGION.amazonaws.com" } } }, { "Sid": "Allow attaching encrypted EBS volumes for EC2 Use", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-management", "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-controlplane", "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "ACCOUNT_NUMBER", "kms:ViaService": "ec2.AWS_REGION.amazonaws.com" } } } ] }
Remplacez les éléments suivants :
ACCOUNT_NUMBER
: votre numéro de compte AWS, par exemple1234567890
.CLUSTER_ID
: ID de votre cluster de gestion GKE sur AWS, par exemplegke-12345678
.AWS_USER
: votre nom d'utilisateur AWS.AWS_REGION
: région AWS dans laquelle vos clusters GKE sur AWS s'exécutent, par exempleus-east1
.
Configurer les ressources pour utiliser une clé CMK gérée par le client
Cette section explique comment configurer les clés CMK gérées par le client pour les composants GKE sur AWS. Avant de mettre à jour les composants existants, consultez la section Utiliser des clés CMK avec des clusters existants.
Service de gestion et d'hôte bastion
Configurez une clé CMK gérée par le client pour le volume racine de votre hôte bastion, le volume racine du service de gestion, et les volumes de données etcd du service de gestion dans le fichier anthos-gke.yaml
avant de configurer le service de gestion. Pour en savoir plus, consultez la section Intégrer l'infrastructure existante et la documentation de référence sur AWSManagementService.
Volumes du plan de contrôle du cluster d'utilisateur
Configurez une clé CMK gérée par le client pour votre plan de contrôle de cluster d'utilisateur et les volumes de données etcd associés dans votre définition AWSCluster. Pour en savoir plus, consultez la section Créer un cluster d'utilisateur personnalisé.
Volumes racines des nœuds du cluster d'utilisateur
Configurez une clé CMK gérée par le client sur les volumes racine des nœuds de cluster d'utilisateur dans votre définition AWSNodePool. Pour en savoir plus, consultez la section Créer un cluster d'utilisateur personnalisé.
Utiliser des clés CMK avec des clusters existants
Vous pouvez ajouter une configuration de CMK gérée par le client aux composants existants suivants :
- Volume racine de l'hôte bastion
- Volumes racines du service de gestion
- Volumes racines du plan de contrôle du cluster d'utilisateur
- Volumes racines des nœuds du cluster d'utilisateur
GKE sur AWS recrée ces volumes après une mise à niveau ou une modification de la configuration. Pour ajouter la configuration de CMK gérée par le client aux composants existants, suivez les instructions de la section Mettre à niveau GKE sur AWS. Lorsque vous modifiez la configuration des ressources, modifiez les champs suivants :
Ressource | Champ |
---|---|
AWSManagementService | spec.rootVolume and spec.bastionHost.rootVolume |
AWSCluster | spec.controlPlane.rootVolume |
AWSNodePools | spec.rootVolume |
Une fois la mise à niveau terminée, GKE sur AWS crée de nouvelles ressources avec les volumes CMK gérés par le client associés.