Uso de una CMK administrada por el cliente para cifrar volúmenes

GKE en AWS utiliza el Servicio de Administración de Claves de AWS (KMS) para cifrar volúmenes EBS. GKE en AWS 1.7 y versiones posteriores admiten el cifrado de volúmenes con claves maestras de cliente (CMK) administradas por el cliente. Las versiones 1.6.x y anteriores de GKE en AWS solo admiten claves maestras de cliente administradas por AWS .

Este tema describe cómo configurar una CMK administrada por el cliente para cifrar volúmenes. Si no configura una CMK administrada por el cliente, GKE en AWS usa CMK administradas por AWS de forma predeterminada.

Descripción general

Los siguientes componentes de GKE en AWS admiten volúmenes cifrados CMK administrados por el cliente:

  • Volumen raíz del host de Bastion
  • Volúmenes raíz del servicio de administración
  • Servicio de gestión de volúmenes de datos etcd
  • Volúmenes raíz del plano de control del clúster de usuarios
  • Volúmenes de datos etcd del plano de control del clúster de usuarios
  • Volúmenes raíz del nodo del clúster de usuarios

Usted especifica las claves en la configuración de su servicio de administración, clúster y grupo de nodos.

Prerrequisitos

Para utilizar CMK administrado por el cliente para GKE en volúmenes raíz de AWS, necesita lo siguiente:

Crear una política de claves

Sus claves de AWS KMS deben tener una política de claves que permita a GKE en AWS crear y leer volúmenes cifrados con una CMK administrada por el cliente. En la siguiente sección se proporciona un ejemplo de política. Para crear la política, siga estos pasos:

  1. Desde su directorio anthos-aws , use terraform para obtener el ID de su servicio de administración.

    cd anthos-aws
    terraform output cluster_id
    La salida incluye el ID del servicio de administración. En el ejemplo siguiente, el ID es gke-12345abc .
    terraform output cluster_id
    gke-12345abc
    

  2. Cree una política de clave de AWS KMS con el siguiente contenido:

    {
        "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"
                    }
                }
            }
        ]
    }
    

    Reemplace lo siguiente:

    • ACCOUNT_NUMBER : su número de cuenta de AWS, por ejemplo, 1234567890 .
    • CLUSTER_ID : su ID de clúster de administración de GKE en AWS (por ejemplo gke-12345678 ).
    • AWS_USER : su nombre de usuario de AWS.
    • AWS_REGION : la región de AWS donde se ejecutan sus clústeres de GKE en AWS; por ejemplo, us-east1 .

Configuración de recursos para utilizar una CMK administrada por el cliente

Esta sección explica cómo configurar la CMK administrada por el cliente para los componentes de GKE en AWS. Antes de actualizar los componentes existentes, consulte "Usar CMK con clústeres existentes" .

Servicio de alojamiento y gestión de Bastion

Configure una CMK administrada por el cliente para el volumen raíz del host bastión, el volumen raíz del servicio de administración y los volúmenes de datos etcd del servicio de administración en anthos-gke.yaml antes de configurar el servicio de administración. Para obtener más información, consulte Integración de la infraestructura existente y la referencia de AWSManagementService .

Volúmenes del plano de control del clúster de usuarios

Configure una CMK administrada por el cliente para el plano de control del clúster de usuarios y los volúmenes de datos de etcd en su definición de AWSCluster . Para obtener más información, consulte "Crear un clúster de usuarios personalizado" .

Volúmenes raíz del nodo del clúster de usuarios

Configura una CMK administrada por el cliente en los volúmenes raíz de los nodos del clúster de usuarios en la definición de AWSNodePool . Para obtener más información, consulte "Crear un clúster de usuarios personalizado" .

Uso de CMK con clústeres existentes

Puede agregar la configuración de CMK administrada por el cliente a los siguientes componentes existentes:

  • Volumen raíz del host de Bastion
  • Volúmenes raíz del servicio de administración
  • Volúmenes raíz del plano de control del clúster de usuarios
  • Volúmenes raíz del nodo del clúster de usuarios

GKE en AWS recrea estos volúmenes tras una actualización o un cambio de configuración. Para añadir la configuración de CMK administrada por el cliente a los componentes existentes, siga las instrucciones de Actualización de GKE en AWS . Al modificar la configuración de recursos, modifique los siguientes campos:

Recurso Campo
Servicio de gestión de AWS spec.rootVolume and spec.bastionHost.rootVolume
Clúster de AWS spec.controlPlane.rootVolume
Grupos de nodos de AWS spec.rootVolume

Cuando completa la actualización, GKE en AWS crea nuevos recursos con los volúmenes CMK administrados por el cliente adjuntos.

¿Qué sigue?