Usar una CMK administrada por el cliente para encriptar volúmenes

Los clústeres de Anthos en AWS usan AWS Key Management Service (KMS) para encriptar volúmenes de EBS. Los clústeres de Anthos en AWS 1.7 y versiones posteriores admiten la encriptación de volúmenes con claves maestras del cliente (CMK) administradas por el cliente. Las versiones 1.6.x de clústeres de Anthos en AWS y versiones anteriores solo admiten claves maestras de cliente administradas de AWS.

En este tema, se describe cómo configurar la CMK administrada por el cliente para encriptar volúmenes. Si no configuras la CMK administrada por el cliente, los clústeres de Anthos en AWS usan CMK administrada de AWS de forma predeterminada.

Descripción general

Los siguientes componentes de clústeres de Anthos en AWS admiten volúmenes encriptados por CMK administradas por el cliente:

  • Volumen raíz del host de bastión
  • Volúmenes raíz del servicio de administración
  • Volúmenes de datos etcd del servicio de administración
  • Volúmenes raíz del plano de control del clúster de usuario
  • Volúmenes de datos etcd del plano de control del clúster de usuario
  • Volúmenes raíz del nodo del clúster de usuario

Debes especificar claves en la configuración de tu servicio de administración, clúster y grupo de nodos.

Prerequisites

Para usar la CMK administrada por el cliente en los volúmenes raíz de clústeres de Anthos en AWS, necesitas lo siguiente:

Crea una política de claves

Las claves de AWS KMS deben tener una política de claves que permita que los clústeres de Anthos alojados en AWS creen y lean volúmenes encriptados con una CMK administrada por el cliente. En la siguiente sección, se proporciona un ejemplo de política. Para crear la política, sigue estos pasos:

  1. Desde tu directorio de anthos-aws, usa terraform para obtener el ID del servicio de administración.

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

  2. Crea una política de claves de KMS de AWS 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"
                    }
                }
            }
        ]
    }
    

    Reemplaza lo siguiente:

    • ACCOUNT_NUMBER: Es tu número de cuenta de AWS, por ejemplo, 1234567890.
    • CLUSTER_ID: el ID del clúster de administración de clústeres de Anthos en AWS, por ejemplo, gke-12345678.
    • AWS_USER: Es tu nombre de usuario de AWS.
    • AWS_REGION: a región de AWS en la que se ejecutan tus clústeres de clústeres de Anthos en AWS, por ejemplo us-east1.

Configura recursos para usar una CMK administrada por el cliente

En esta sección, se explica cómo configurar CMK administrada por el cliente para clústeres de Anthos alojados en componentes de AWS. Antes de actualizar componentes existentes, consulta Usa CMK con clústeres existentes.

Servicio de administración y host de bastión

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

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

Configura una CMK administrada por el cliente para el plano de control de tu clúster de usuario y volúmenes de datos etcd en tu definición de AWSCluster. Para obtener más información, consulta Crea un clúster de usuario personalizado.

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

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

Usa CMK con clústeres existentes

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

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

Los clústeres de Anthos a AWS recrean estos volúmenes después de un cambio de configuración o actualización. Para agregar la configuración de CMK administrada por el cliente a los componentes existentes, sigue las instrucciones en Actualiza clústeres de Anthos en AWS. Cuando modifiques la configuración de recursos, modifica los siguientes campos:

Recurso Campo
AWSManagementService spec.rootVolume and spec.bastionHost.rootVolume
AWSCluster spec.controlPlane.rootVolume
AWSNodePools spec.rootVolume

Cuando completes la actualización, los clústeres de Anthos en AWS crearán recursos nuevos con los volúmenes vinculados de CMK administrada por el cliente.

¿Qué sigue?