El producto descrito en esta documentación, Anthos Clusters en AWS (generación anterior), se encuentra actualmente en modo de mantenimiento . Todas las nuevas instalaciones deben usar el producto de la generación actual, Anthos Clusters en AWS .
Uso de una CMK administrada por el cliente para cifrar volúmenes
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
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:
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:
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 .
{"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:
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-06-12 (UTC)."],[],[],null,["# Using a customer managed CMK to encrypt volumes\n\nGKE on AWS uses the AWS Key Management Service (KMS) to encrypt\nEBS volumes. GKE on AWS 1.7 and higher supports encrypting volumes\nwith customer managed\n[Customer Master Keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)\n(CMKs). GKE on AWS versions 1.6.x and lower support\n[AWS Managed Customer Master Keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) only.\n\nThis topic describes how to set up customer managed CMK to encrypt volumes. If\nyou don't set up customer managed CMK, GKE on AWS uses AWS managed\nCMKs by default.\n\nOverview\n--------\n\nThe following GKE on AWS components support customer managed\nCMK encrypted volumes:\n\n- Bastion host root volume\n- Management service root volumes\n- Management service etcd data volumes\n- User cluster control plane root volumes\n- User cluster control plane etcd data volumes\n- User cluster node root volumes\n\nYou specify keys in your management service, cluster, and node pool\nconfiguration.\n\nPrerequisites\n-------------\n\nTo use customer managed CMK for GKE on AWS root volumes, you need the following:\n\n- Permissions to create or use an AWS KMS key policy. For more information, see [Using key policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).\n\nCreate a key policy\n-------------------\n\nYour AWS KMS keys must have a key policy that allows GKE on AWS to\ncreate and read volumes encrypted with a customer managed CMK. An example policy\nis provided in the following section. To create the policy, perform the\nfollowing the steps:\n\n1. From your `anthos-aws` directory, use\n `terraform` to get the ID of your management service.\n\n ```sh\n cd anthos-aws\n terraform output cluster_id\n ```\n The output includes your management service ID. In the example below, the ID is `gke-12345abc`. \n\n terraform output cluster_id\n gke-12345abc\n\n \u003cbr /\u003e\n\n2. [Create an AWS KMS key policy](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)\n with the following contents:\n\n {\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-consolepolicy-3\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e:root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"Allow creating encrypted EBS volumes for EC2 use\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": [\n \"arn:aws:iam::\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e:role/gke-\u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e-management\",\n \"arn:aws:iam::\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e:user/\u003cvar translate=\"no\"\u003eAWS_USER\u003c/var\u003e\",\n \"arn:aws:iam::\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling\"\n ]\n },\n \"Action\": [\n \"kms:GenerateDataKeyWithoutPlaintext\",\n \"kms:Decrypt\"\n ],\n \"Resource\": \"*\",\n \"Condition\": {\n \"StringEquals\": {\n \"kms:CallerAccount\": \"\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e\",\n \"kms:ViaService\": \"ec2.\u003cvar translate=\"no\"\u003eAWS_REGION\u003c/var\u003e.amazonaws.com\"\n }\n }\n },\n {\n \"Sid\": \"Allow attaching encrypted EBS volumes for EC2 Use\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": [\n \"arn:aws:iam::\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e:role/\u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e-management\",\n \"arn:aws:iam::\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e:role/\u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e-controlplane\",\n \"arn:aws:iam::\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling\"\n ]\n },\n \"Action\": [\n \"kms:CreateGrant\",\n \"kms:ListGrants\",\n \"kms:RevokeGrant\"\n ],\n \"Resource\": \"*\",\n \"Condition\": {\n \"StringEquals\": {\n \"kms:CallerAccount\": \"\u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e\",\n \"kms:ViaService\": \"ec2.\u003cvar translate=\"no\"\u003eAWS_REGION\u003c/var\u003e.amazonaws.com\"\n }\n }\n }\n ]\n }\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eACCOUNT_NUMBER\u003c/var\u003e: your AWS account number--- for example, `1234567890`.\n - \u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e: your GKE on AWS management cluster ID--- for example `gke-12345678`.\n - \u003cvar translate=\"no\"\u003eAWS_USER\u003c/var\u003e: your AWS user name.\n - \u003cvar translate=\"no\"\u003eAWS_REGION\u003c/var\u003e: The AWS region where your GKE on AWS clusters run--- for example `us-east1`.\n\nConfiguring resources to use a customer managed CMK\n---------------------------------------------------\n\nThis section explains how to configure customer managed CMK for\nGKE on AWS components. Before upgrading existing components, see\n[Using CMK with existing clusters](#upgrade-existing).\n\n### Bastion host and management service\n\nYou configure a customer managed CMK for your bastion host root volume,\nmanagement service root volume, and management service etcd data volumes in your\n`anthos-gke.yaml` before setting up the management service. For more\ninformation, see,\n[Integrating existing infrastructure](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/integrating-existing-infrastructure)\nand the\n[AWSManagementService](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/reference/awsmanagementservice#rootvolume)\nreference.\n\n### User cluster control plane volumes\n\nYou configure a customer managed CMK for your user cluster control plane and\netcd data volumes in your [AWSCluster](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/reference/awscluster)\ndefinition. For more information, see\n[Creating a custom user cluster](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/creating-custom-user-cluster).\n\n### User cluster node root volumes\n\nYou configure a customer managed CMK on user cluster node root volumes in your\n[AWSNodePool](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/reference/awsnodepools)\ndefinition. For more information, see\n[Creating a custom user cluster](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/creating-custom-user-cluster).\n\n### Using CMK with existing clusters\n\n| **Caution:** If you enable a customer managed CMK on an existing management service or user cluster control plane *etcd* data volume, you will lose cluster configuration. To encrypt etcd data volumes, you must create a new management service or user clusters.\n\nYou can add customer managed CMK configuration to the following existing\ncomponents:\n\n- Bastion host root volume\n- Management service root volumes\n- User cluster control plane root volumes\n- User cluster node root volumes\n\nGKE on AWS recreates these volumes after an upgrade or configuration\nchange. To add customer managed CMK configuration to existing components,\nfollow the instructions in\n[Upgrading GKE on AWS](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/upgrading). When you\nmodify your resource configuration, modify the following fields:\n\nWhen you complete the upgrade, GKE on AWS creates new resources with\nthe customer managed CMK volumes attached.\n\nWhat's next\n-----------\n\n- [Create a custom user cluster](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/creating-custom-user-cluster).\n- [Upgrade GKE on AWS](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/upgrading)"]]