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 su AWS 1.7 e versioni successive supporta la crittografia dei volumi con chiavi master cliente (CMK) gestite dal cliente. GKE su AWS versioni 1.6.x e precedenti supportano solo le chiavi master del cliente gestite AWS.

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

Panoramica

I seguenti componenti di GKE su AWS supportano i volumi criptati CMK gestiti dal cliente:

  • Volume root host bastion
  • Volumi root del servizio di gestione
  • Volumi di dati etcd del servizio di gestione
  • Volumi root del piano di controllo del cluster utente
  • Volumi di dati etcd del piano di controllo del cluster utente
  • Volumi radice dei nodi del cluster utente

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

Prerequisiti

Per utilizzare CMK gestito dal cliente per GKE su volumi root AWS, è necessario quanto segue:

Crea un criterio della chiave

Le chiavi KMS di AWS devono avere un criterio delle chiavi che consenta a GKE su AWS di creare e leggere volumi criptati con una chiave CMK gestita dal cliente. Un criterio di esempio viene fornito nella sezione seguente. Per creare il criterio, svolgi i seguenti passaggi:

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

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

  2. Crea un criterio delle chiavi 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 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, ad esempio us-east1.

Configurazione delle risorse per l'utilizzo di una CMK gestita dal cliente

Questa sezione spiega come configurare CMK gestito dal cliente per GKE sui componenti AWS. Prima di eseguire l'upgrade dei componenti esistenti, consulta Utilizzo di CMK con i cluster esistenti.

Bastion host e servizio di gestione

Prima di configurare il servizio di gestione, devi configurare una CMK gestita dal cliente per il volume root del bastion host, il volume del servizio di gestione e i volumi di dati etcd del servizio di gestione in anthos-gke.yaml. Per ulteriori informazioni, consulta Integrazione dell'infrastruttura esistente e la documentazione di riferimento per AWSManagementService.

Volumi del piano di controllo del cluster utente

Puoi configurare una chiave CMK gestita dal cliente per il piano di controllo del cluster utente e i volumi di dati etcd nella definizione di AWSCluster. Per maggiori informazioni, consulta la sezione sulla creazione di un cluster utente personalizzato.

Volumi radice dei nodi del cluster utente

Puoi configurare una chiave CMK gestita dal cliente sui volumi root dei nodi del cluster utente nella definizione di AWSNodePool. Per maggiori informazioni, consulta la sezione sulla creazione di un cluster utente personalizzato.

Utilizzo di CMK con i cluster esistenti

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

  • Volume root host bastion
  • Volumi root del servizio di gestione
  • Volumi root del piano di controllo del cluster utente
  • Volumi radice dei nodi del cluster utente

GKE su AWS ricrea questi volumi dopo una modifica di upgrade o configurazione. Per aggiungere la configurazione CMK gestita dal cliente ai componenti esistenti, segui le istruzioni in 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

Quando completi l'upgrade, GKE su AWS crea nuove risorse con i volumi CMK gestiti dal cliente collegati.

Passaggi successivi