Utilizzo di una CMK gestita dal cliente per criptare i volumi

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 di GKE su AWS 1.6.x e precedenti supportano solo le chiavi master del cliente gestite da AWS.

Questo argomento descrive come configurare la 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 i 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 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:

Creare una policy della chiave

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

  1. Dalla directory anthos-aws, utilizza terraform per recuperare 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 una policy della chiave KMS di AWS 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 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.

Configurare le risorse per utilizzare una CMK gestita dal cliente

Questa sezione spiega come configurare la CMK gestita dal cliente per i componenti di GKE su AWS. Prima di eseguire l'upgrade dei componenti esistenti, consulta Utilizzare la CMK con i cluster esistenti.

Bastion host e servizio di gestione

Configura una CMK gestita dal cliente per il volume root del 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 saperne di più, consulta, Integrare l'infrastruttura esistente e il 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 AWSCluster. Per saperne di più, consulta Creare un cluster utente personalizzato.

Volumi root dei nodi del cluster utente

Configura una CMK gestita dal cliente sui volumi root dei nodi del cluster utente nella sua AWSNodePool definizione. Per saperne di più, consulta Creare un cluster utente personalizzato.

Utilizzare la CMK con i cluster esistenti

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

  • Volume root del bastion host
  • Volumi root del servizio di gestione
  • Volumi 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 della CMK gestita dal cliente ai componenti esistenti, segui le istruzioni riportate in Eseguire l'upgrade di GKE su AWS. Quando modifichi la configurazione delle risorse, 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.

Passaggi successivi