Utilizzo di una chiave CMK gestita dal cliente per criptare i volumi

GKE su AWS utilizza AWS Key Management Service (KMS) per criptare i volumi EBS. GKE on AWS 1.7 e versioni successive supportano la crittografia dei volumi con chiavi master del cliente (CMK) gestite dal cliente. GKE su AWS nelle versioni 1.6.x e precedenti supporta solo le chiavi master del cliente gestite da AWS.

Questo argomento descrive come configurare una chiave CMEK gestita dal cliente per criptare i volumi. Se non configuri una CMK gestita dal cliente, GKE su AWS utilizza per impostazione predefinita le CMK gestite da AWS.

Panoramica

I seguenti componenti di GKE su AWS supportano i volumi con crittografia CMK gestita dal cliente:

  • Volume root del bastion host
  • Volumi principali del servizio di gestione
  • Volumi di dati etcd del servizio di gestione
  • Volumi principali del control plane del cluster utente
  • Volumi di dati etcd del control plane del cluster utente
  • Volumi principali dei nodi del cluster utente

Specifica le chiavi nella configurazione del servizio di gestione, del cluster e del pool di nodi.

Prerequisiti

Per utilizzare la CMK gestita dal cliente per GKE sui volumi principali AWS, devi disporre di quanto segue:

Crea una norma per le chiavi

Le chiavi AWS KMS devono avere un criterio delle chiavi che consenta a GKE su AWS di creare e leggere volumi criptati con una CMK gestita dal cliente. Nella sezione seguente è riportato un criterio di esempio. Per creare il criterio, segui questi passaggi:

  1. Dalla directory anthos-aws, utilizza terraform per ottenere l'ID del servizio di gestione.

    cd anthos-aws
    terraform output cluster_id
    L'output include l'ID del servizio di gestione. Nell'esempio seguente, l'ID è gke-12345abc.
    terraform output cluster_id
    gke-12345abc
    

  2. Crea un criterio per le chiavi 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 esempio 1234567890.
    • CLUSTER_ID: l'ID del tuo cluster di gestione GKE su AWS, ad esempio gke-12345678.
    • AWS_USER: il tuo nome utente AWS.
    • AWS_REGION: la regione AWS in cui vengono eseguiti i cluster GKE su AWS, ad esempio us-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 Utilizzare CMK con i cluster esistenti.

Bastion host e servizio di gestione

Configura una CMK gestita dal cliente per il volume principale dell'bastion host, il volume principale 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 ulteriori informazioni, consulta Integrazione dell'infrastruttura esistente e la documentazione di riferimento di AWSManagementService.

Volumi del piano di controllo del cluster utente

Configura una CMK gestita dal cliente per il piano di controllo del cluster utente e per i volumi di dati etcd nella definizione AWSCluster. Per ulteriori informazioni, consulta Creare un cluster di utenti personalizzato.

Volumi principali dei nodi del cluster utente

Configura una CMK gestita dal cliente sui volumi principali dei nodi del cluster utente nella definizione di AWSNodePool. Per ulteriori informazioni, consulta Creare un cluster di utenti personalizzato.

Utilizzo di CMK con i cluster esistenti

Puoi aggiungere la configurazione del CMK gestita dal cliente ai seguenti componenti esistenti:

  • Volume root del bastion host
  • Volumi principali del servizio di gestione
  • Volumi principali del control plane del cluster utente
  • Volumi principali dei nodi del cluster utente

GKE su AWS ricrea questi volumi dopo un upgrade o una modifica della configurazione. Per aggiungere la configurazione delle CMK gestite dal cliente ai componenti esistenti, segui le istruzioni riportate in Upgrade di GKE su AWS. Quando modifichi 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 CMEK gestiti dal cliente collegati.

Passaggi successivi