GKE su AWS utilizza AWS Key Management Service (KMS) per criptare i volumi EBS. GKE su AWS 1.7 e versioni successive supporta la crittografia dei volumi con chiavi master del cliente (CMK) gestite dal cliente. Le versioni 1.6.x e precedenti di GKE su AWS supportano solo le chiavi master del cliente gestite da AWS.
Questo argomento descrive come configurare una CMK gestita dal cliente per criptare i volumi. Se non configuri la CMK gestita dal cliente, GKE su AWS utilizza le CMK gestite da AWS per impostazione predefinita.
Panoramica
I seguenti componenti di GKE su AWS supportano volumi criptati con CMK gestita dal cliente:
- Volume root del bastion host
- Volumi root del servizio di gestione
- Volumi di dati etcd del servizio di gestione
- Volumi di root del control plane del cluster utente
- Volumi di dati etcd del control plane del cluster utente
- Volumi root dei nodi del cluster utente
Specifichi le chiavi nella configurazione del servizio di gestione, del cluster e del pool di nodi.
Prerequisiti
Per utilizzare la CMK gestita dal cliente per i volumi root di GKE su AWS, devi disporre di quanto segue:
- Autorizzazioni per creare o utilizzare una policy della chiave AWS KMS. Per saperne di più, consulta Utilizzo delle policy delle chiavi in AWS KMS.
Crea una policy della chiave
Le chiavi AWS KMS devono avere un criterio della chiave che consenta a GKE su AWS di creare e leggere volumi criptati con una CMK gestita dal cliente. Nella sezione seguente viene fornito un esempio di policy. Per creare il criterio, segui questi passaggi:
Dalla directory
anthos-aws
, utilizzaterraform
per ottenere l'ID del tuo servizio di gestione. L'output include l'ID del servizio di gestione. Nell'esempio seguente, l'ID ècd anthos-aws terraform output cluster_id
gke-12345abc
.terraform output cluster_id
gke-12345abcCrea una policy della chiave AWS KMS con i seguenti contenuti:
{ "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" } } } ] }
Sostituisci quanto segue:
ACCOUNT_NUMBER
: il numero del tuo account AWS, ad esempio1234567890
.CLUSTER_ID
: l'ID del cluster di gestione GKE su AWS, ad esempiogke-12345678
.AWS_USER
: il tuo nome utente AWS.AWS_REGION
: la regione AWS in cui vengono eseguiti i cluster GKE su AWS, ad esempious-east1
.
Configurazione delle risorse per l'utilizzo di una CMK gestita dal cliente
Questa sezione spiega come configurare la CMK gestita dal cliente per i componenti GKE su AWS. Prima di eseguire l'upgrade dei componenti esistenti, consulta Utilizzo di CMK con cluster esistenti.
Servizio di gestione e bastion host
Configura una CMK gestita dal cliente per il volume root dell'bastion host, il volume root del servizio di gestione e i volumi di dati etcd del servizio di gestione in anthos-gke.yaml
prima di configurare il servizio di gestione. Per maggiori
informazioni, consulta
Integrazione dell'infrastruttura esistente
e il riferimento
AWSManagementService.
Volumi del control plane del cluster utente
Configura una CMK gestita dal cliente per il control plane del cluster utente e i volumi di dati etcd nella definizione di AWSCluster. Per saperne di più, vedi Creazione di un cluster di utenti personalizzato.
Volumi root dei nodi del cluster utente
Configura una CMK gestita dal cliente sui volumi root dei nodi del cluster utente nella definizione di AWSNodePool. Per saperne di più, vedi Creazione di un cluster di utenti personalizzato.
Utilizzo di CMK con cluster esistenti
Puoi aggiungere la configurazione CMK gestita dal cliente ai seguenti componenti esistenti:
- Volume root del bastion host
- Volumi root del servizio di gestione
- Volumi di root del control plane del cluster utente
- Volumi root dei nodi del cluster utente
GKE su AWS ricrea questi volumi dopo un upgrade o una modifica della configurazione. Per aggiungere la configurazione CMK gestita dal cliente ai componenti esistenti, segui le istruzioni riportate in Upgrade di GKE su AWS. Quando modifica la configurazione della risorsa, modifica i seguenti campi:
Risorsa | Campo |
---|---|
AWSManagementService | spec.rootVolume and spec.bastionHost.rootVolume |
AWSCluster | spec.controlPlane.rootVolume |
AWSNodePools | spec.rootVolume |
Al termine dell'upgrade, GKE su AWS crea nuove risorse con i volumi CMK gestiti dal cliente collegati.