Política de claves AWS KMS necesaria para usar con volúmenes cifrados
Amazon EC2 Auto Scaling usa roles vinculados a servicios para delegar permisos a otros Servicios de AWS. Los roles vinculados a servicios de Amazon EC2 Auto Scaling se encuentran predefinidos e incluyen los permisos que Amazon EC2 Auto Scaling requiere para llamar a otros Servicios de AWS en su nombre. Los permisos predefinidos también incluyen el acceso a sus Claves administradas por AWS. Sin embargo, no incluyen el acceso a las claves administradas por el cliente, lo que le permite mantener un control total de estas claves.
En este tema se describe cómo configurar la política de claves que necesita para iniciar instancias de Auto Scaling cuando especifica una clave administrada por el cliente para el cifrado de Amazon EBS.
nota
Amazon EC2 Auto Scaling no necesita autorización adicional para poder utilizar la Clave administrada de AWS predeterminada para proteger los volúmenes cifrados en su cuenta.
Contenido
Descripción general
Las siguientes AWS KMS keys pueden utilizarse para el cifrado de Amazon EBS cuando Amazon EC2 Auto Scaling lanza instancias:
-
Clave administrada de AWS – una clave de cifrado de su cuenta que Amazon EBS crea, posee y administra. Esta es la clave de cifrado predeterminada en las cuentas nuevas. La Clave administrada de AWS se utiliza para el cifrado, a menos que se especifique una clave administrada por el cliente.
-
Clave administrada por el cliente: una clave de cifrado personalizada que usted crea, posee y administra. Para obtener más información, consulte Creación de claves en la Guía para desarrolladores de AWS Key Management Service.
Nota: La clave debe ser simétrica. Amazon EBS no es compatible con claves asimétricas administradas por el cliente.
Puede configurar las claves administradas por el cliente al crear instantáneas cifradas o una plantilla de lanzamiento que especifique volúmenes cifrados, o habilitar el cifrado de forma predeterminada.
Configuración de las políticas de claves
Las claves de KMS deben tener una política de claves que permita que Amazon EC2 Auto Scaling inicie instancias con volúmenes de Amazon EBS cifrados con una clave administrada por el cliente.
Utilice los ejemplos de esta página para configurar una política de claves que proporcione a Amazon EC2 Auto Scaling acceso a la clave administrada por el cliente. Puede modificar la política de claves de la clave administrada por el cliente, o bien cuando se cree la clave, o bien en un momento posterior.
Como mínimo, debe agregar dos instrucciones a la política de claves para que funcione con Amazon EC2 Auto Scaling.
-
La primera instrucción permite a la identidad de IAM especificada en el elemento
Principalutilizar directamente la clave administrada por el cliente. Incluye permisos para realizar las operacionesEncrypt,Decrypt,ReEncrypt*,GenerateDataKey*yDescribeKeyde AWS KMS en la clave. -
La segunda declaración permite a la identidad de IAM especificada en el elemento
Principalutilizar la operaciónCreateGrantpara generar concesiones que delegan un subconjunto de sus propios permisos a Servicios de AWS que están integrados con AWS KMS u otra entidad principal. Esto les permite utilizar la clave para crear recursos cifrados en su nombre.
Cuando agregue las nuevas instrucciones a la política de claves, no cambie las instrucciones existentes en la política.
En cada uno de los siguientes ejemplos, los argumentos que deben reemplazarse, como los ID de clave o el nombre de un rol vinculado a servicios, aparecen como texto del marcador de usuario. En la mayoría de los casos, puede sustituir el nombre del rol vinculado a servicios por el de otro rol vinculado a servicios de Amazon EC2 Auto Scaling.
Para obtener más información, consulte los siguientes recursos:
-
Para crear una clave con la AWS CLI, consulte create-key
. -
Para actualizar una política de claves con la AWS CLI, consulte put-key-policy
. -
Para encontrar el ID y el nombre de recurso de Amazon (ARN) de una clave, consulte Encontrar el ID y el ARN de la clave en la Guía para desarrolladores de AWS Key Management Service.
-
Para obtener más información acerca de los roles vinculados a servicios de Amazon EC2 Auto Scaling, consulte Roles vinculados a servicios de Amazon EC2 Auto Scaling.
-
Para obtener más información acerca del cifrado de Amazon EBS y KMS en general, consulte Cifrado de Amazon EBS en la Guía del usuario de Amazon EBS y la Guía para desarrolladores de AWS Key Management Service.
Ejemplo 1: secciones de la política de claves que permiten el acceso a la clave administrada por el cliente
Agregue las dos instrucciones siguientes a la política de claves de la clave administrada por el cliente, sustituyendo el ARN del ejemplo por el ARN del rol vinculado a servicios correspondiente que tiene permitido el acceso a la clave. En este ejemplo, las secciones de la política conceden permisos al rol vinculado a servicios denominado AWSServiceRoleForAutoScaling para utilizar la clave administrada por el cliente.
{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
Ejemplo 2: secciones de la política de claves que permiten el acceso entre cuentas a la clave administrada por el cliente
Si crea una clave administrada por el cliente en una cuenta diferente a la del grupo de escalado automático, debe utilizar una concesión en combinación con la política de claves para permitir el acceso entre cuentas a la clave.
Hay dos pasos que deben completarse en el siguiente orden:
-
En primer lugar, agregue las dos instrucciones de política siguientes a la política clave de la clave administrada por el cliente. Reemplace el ARN de ejemplo por el ARN de la otra cuenta, asegurándose de reemplazar
111122223333con el ID de cuenta real de Cuenta de AWS en el que desea crear el grupo de escalado automático. Esto le permite otorgar a un usuario o rol de IAM en la cuenta especificada permiso para crear una concesión para la clave mediante el siguiente comando CLI. Sin embargo, esto por sí solo no otorga acceso a la clave a ningún usuario.{ "Sid": "Allow external account111122223333use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }{ "Sid": "Allow attachment of persistent resources in external account111122223333", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*" } -
Luego, desde la cuenta en la que desea crear el grupo de escalado automático, cree una concesión que delegue los permisos relevantes al rol vinculado al servicio adecuado. El elemento
Grantee Principalde la concesión es el ARN del rol vinculado al servicio pertinente. Elkey-ides el ARN de la clave.A continuación, se incluye un ejemplo del comando create-grant
de la CLI, que concede permisos al rol vinculado a servicios llamado AWSServiceRoleForAutoScaling de la cuenta 111122223333para que utilice la clave administrada por el cliente en la cuenta444455556666.aws kms create-grant \ --regionus-west-2\ --key-idarn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d\ --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling\ --operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"Para que este comando se ejecute correctamente, el usuario que realiza la solicitud debe tener permisos para la acción
CreateGrant.En la siguiente política de IAM de ejemplo se permite que una identidad de IAM (usuario o rol) en una cuenta
111122223333cree una concesión para la clave administrada por el cliente en la cuenta444455556666.Para obtener más información acerca de cómo crear una concesión para una clave KMS en una Cuenta de AWS diferente, consulte Concesiones en AWS KMS en laAWS Key Management ServiceGuía para desarrolladores.
importante
El nombre del rol vinculado al servicio especificado como principal del beneficiario debe ser el nombre de un rol existente. Tras crear la concesión, para garantizar que la concesión permita que Amazon EC2 Auto Scaling utilice la clave de KMS especificada, no elimine ni vuelva a crear el rol vinculado al servicio.
Edición de las políticas de claves en la consola de AWS KMS
En los ejemplos que aparecen en las secciones anteriores, solo se explica cómo agregar instrucciones a una política de claves, que es una de las múltiples formas de cambiar una de dichas políticas. La forma más sencilla de cambiar una política de claves es utilizar la vista predeterminada de la consola de AWS KMS con las políticas de claves y convertir a una identidad de IAM (un usuario o un rol) en uno de los usuarios de claves de la política de claves correspondiente. Para obtener más información, consulte Usar la vista predeterminada de la Consola de administración de AWS en la Guía para desarrolladores de AWS Key Management Service.
importante
Tenga cuidado. Las instrucciones de la política de la vista predeterminada de la consola incluyen permisos para realizar operaciones Revoke de AWS KMS en la clave administrada por el cliente. Si proporciona a una Cuenta de AWS acceso a una clave administrada por el cliente en su cuenta y accidentalmente revoca la concesión que le daba este permiso, los usuarios externos ya no podrán acceder a sus datos cifrados ni a la clave que se utilizó para cifrar los datos.