Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS KMS La política de claves y los permisos para cifrar los resultados de CloudFormation Hooks están inactivos
En este tema se describe cómo configurar la política de AWS KMS claves y los permisos que necesitas cuando especificas una clave gestionada por el cliente para cifrar los datos de las anotaciones de Hooks que están disponibles en la API. GetHookResult
nota
CloudFormation Hooks no necesita autorización adicional para usar la predeterminada Clave propiedad de AWS para cifrar los datos de las anotaciones de tu cuenta.
Temas
Descripción general
Se AWS KMS keys puede utilizar lo siguiente para cifrar los datos de las anotaciones de Hook:
-
Clave propiedad de AWS— De forma predeterminada, CloudFormation utiliza un Clave propiedad de AWS para cifrar los datos. No puede ver, administrar Claves propiedad de AWS, usar ni auditar su uso. Sin embargo, no es necesario realizar una configuración explícita para proteger la clave que se utiliza para cifrar los datos. Claves propiedad de AWS se proporcionan de forma gratuita (sin cuotas mensuales ni de uso). A menos que tengas que auditar o controlar la clave de cifrado que protege los datos de tus anotaciones, an Clave propiedad de AWS es una buena opción.
-
Clave administrada por el cliente: CloudFormation admite el uso de una clave simétrica administrada por el cliente que usted crea, posee y administra para agregar una segunda capa de cifrado sobre la existente. Clave propiedad de AWS AWS KMS se aplican cargos. Para obtener más información, consulte Creación de claves en la Guía para desarrolladores de AWS Key Management Service . Para administrar tu clave, usa AWS Key Management Service (AWS KMS) en la AWS KMS consola
AWS CLI, la o la AWS KMS API. Para obtener más información, consulte la Guía para desarrolladores de AWS Key Management Service.
Puedes configurar las claves administradas por el cliente al crear y actualizar Hooks. Cuando proporciones tu clave gestionada por el cliente, CloudFormation utiliza esta clave para cifrar los datos de las anotaciones antes de almacenarlos. Cuando posteriormente se accede a los datos de las anotaciones durante la operación de la GetHookResult API, los descifra CloudFormation automáticamente. Para obtener información sobre cómo configurar la clave de cifrado para Hooks, consulte. Referencia a la sintaxis del esquema de la configuración del enlace
importante
Ten en cuenta que, actualmente, la KmsKeyId opción de especificar una clave gestionada por el cliente solo está disponible cuando la utilizas AWS CLI para configurar tu Hook.
Utilizar el contexto de cifrado para controlar el acceso a la clave administrada por el cliente
CloudFormation Hooks incluye automáticamente el contexto de cifrado en cada operación de almacenamiento y recuperación de anotaciones. Esto te permite establecer las condiciones del contexto de cifrado en tu política de claves para garantizar que la clave solo se pueda usar para Hooks específicos:
-
kms:EncryptionContext:aws:cloudformation:hooks:service— Garantiza que la clave solo la utilice el servicio CloudFormation Hooks. -
kms:EncryptionContext:aws:cloudformation:account-id— Evita el uso de claves entre cuentas al hacer coincidir tu Cuenta de AWS ID. -
kms:EncryptionContext:aws:cloudformation:arn— Restrinja el uso a Hooks específicos mediante patrones ARN.
Estas condiciones proporcionan una protección adicional contra los confusos ataques secundarios al vincular criptográficamente los datos cifrados al contexto específico de Hook.
Política de claves de KMS administradas por el cliente
Al crear su clave gestionada por el cliente, debe definir su política de claves para permitir que el servicio CloudFormation Hooks realice AWS KMS operaciones. Para utilizar la siguiente política clave, placeholder values sustitúyala por tu propia información.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableIAMUserDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "EnableIAMUserGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "EnableIAMUserDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "AllowHooksServiceDescribeKey", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "AllowHooksService", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*", "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } } ] }
Esta política concede permisos tanto a las funciones de IAM (las tres primeras instrucciones) como al servicio CloudFormation Hooks (las dos últimas instrucciones). La clave de kms:ViaService condición garantiza que la clave de KMS solo se pueda utilizar de forma continua CloudFormation, lo que impide las llamadas directas a la API de KMS. Las operaciones clave son:
-
kms:DescribeKey— Valida las propiedades y los metadatos clave. Esta operación se encuentra en instrucciones independientes porque no se puede utilizar con condiciones de contexto de cifrado. -
kms:GenerateDataKey— Genera claves de cifrado de datos para cifrar las anotaciones antes del almacenamiento. Esta operación incluye las condiciones del contexto de cifrado para el control de acceso limitado. -
kms:Decrypt— Descifra los datos de anotaciones previamente cifrados. En el caso de las funciones de IAM, esto incluye la condición.kms:ViaServicePara el principal del servicio, esto incluye las condiciones del contexto de cifrado.
Las claves de aws:SourceArn condición aws:SourceAccount y las claves de condición proporcionan la protección principal contra los confusos ataques de subalternos. Las condiciones del contexto de cifrado proporcionan capas de validación adicionales. Para obtener más información, consulte Uso aws:SourceArn o aws:SourceAccount condicionamiento de claves en la Guía para AWS Key Management Service desarrolladores.
importante
Las funciones de ejecución de enlaces no necesitan AWS KMS permisos. El director del servicio de CloudFormation Hooks realiza todas AWS KMS las operaciones.
Permisos de KMS para la SetTypeConfiguration API
Durante la llamada a la SetTypeConfigurationAPI, CloudFormation valida los permisos del usuario para cifrar los datos de las anotaciones con la clave especificada. AWS KMS Añada la siguiente política de IAM al usuario o rol que configurará el cifrado mediante la API. SetTypeConfiguration Sustitúyala por el ARN de la clave gestionada por el cliente.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:SetTypeConfiguration", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*" } } } ] }
Permisos de KMS para la API GetHookResult
GetHookResultPara solicitar Hooks que usen tu clave administrada por el cliente, los usuarios deben tener kms:Decrypt permiso para usar esa clave. Agrega la siguiente política de IAM al usuario o rol al que GetHookResult llamarás. Sustitúyala por el ARN de la clave gestionada por el cliente.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:GetHookResult", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" } ] }