¿Cómo soluciono el error que recibo cuando uso AWS CloudFormation para crear una clave de AWS KMS?
Cuando creo una clave de AWS Key Management Service (AWS KMS) y defino una política de claves de AWS KMS mediante AWS CloudFormation, se produce un error en la creación de la clave.
Descripción corta
Al intentar crear y definir una clave, es posible que aparezca el siguiente mensaje de error:
"The new key policy will not allow you to update the key policy in the future."
La entidad principal que especificaste en la política de clave debe tener los permisos necesarios para realizar las operaciones de la API CreateKey y PutKeyPolicy.
Importante: Asegúrate de que la política de claves que crees permita que una entidad principal de AWS Identity and Access Management (IAM) adecuada administre la clave de AWS KMS.
Resolución
Nota: Al crear una pila de CloudFormation, CloudFormation asume un rol de IAM para realizar la operación de la API CreateStack. CloudFormation también usa el rol para crear los recursos que especificaste en la plantilla de CloudFormation.
Creación de una clave de AWS KMS
Sigue estos pasos:
- Abre la consola de CloudFormation.
- Utiliza el recurso AWS::KMS::Key para crear la clave de AWS KMS.
- Elige un usuario o rol de IAM que puedas usar para administrar tu clave.
- Incluye una entidad principal administrativa en las instrucciones Allow con la acción kms:PutKeyPolicy.
- Utiliza el parámetro de recurso BypassPolicyLockoutSafetyCheck.
En el siguiente ejemplo, el rol KeyAdmin puede modificar la política de claves cuando la política tiene el siguiente formato:
{ "Type": "AWS::KMS::Key", "Properties": { "Description": "A sample key", "KeyPolicy": { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/KeyAdmin" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/KeyUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] } } }
Importante: Si no se especifica una entidad principal válida en la política, BypassPolicyLockoutSafetyCheck puede generar una clave que no se pueda administrar. Asegúrate de usar una entidad principal válida en las políticas.
Establecimiento del administrador de claves de la entidad principal
Para configurar el administrador de claves de la entidad principal de tu proveedor de identidades federadas, utiliza el nombre de recurso de Amazon (ARN) de la sesión de rol. También puedes usar la sesión de asunción de roles de un usuario administrativo específico de tu proveedor de identidades externo como entidad principal para la administración de claves.
Ejemplo de instrucción de política:
"Principal": { "AWS": "arn:aws:sts::123456789012:assumed-role/FederatedAccess/FederatedUsername" }
Nota: Sustituye FederatedAccesspor tu rol de IAM y FederatedUsername por tu nombre de usuario.
Cuando utilices el rol de servicio de CloudFormation para crear la pila, define la entidad principal como ARN del rol de servicio.
Ejemplo de instrucción de política:
"Principal": { "AWS": "arn:aws:iam::123456789012:role/ServiceRoleName" }
Nota: Sustituye ServiceRoleName por tu rol de servicio.
Para establecer el usuario raíz de la cuenta de AWS como administrador principal de claves, incluye la siguiente instrucción en tu política:
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
Nota: Al configurar el administrador de claves de la entidad principal en el ARN raíz, cualquier entidad principal de la cuenta con suficientes permisos de IAM puede modificar la clave.
Cuando tengas una entidad principal con el permiso kms:PutKeyPolicy en la política de claves, puedes usar CloudFormation para crear la clave de AWS KMS. Establece la propiedad BypassPolicyLockoutSafetyCheck en true en tu plantilla de CloudFormation.
Ejemplo de plantilla:
myKMSKey: Type: 'AWS::KMS::Key' Properties: Description: This key is managed by the KeyAdmin role BypassPolicyLockoutSafetyCheck: true KeyPolicy: Version: 2012-10-17 Id: key-policy-1 Statement: - Sid: Allow access for Key Administrators Effect: Allow Principal: AWS: 'arn:aws:iam::123456789012:role/KeyAdmin' Action: - 'kms:Create*' - 'kms:Describe*' - 'kms:Enable*' - 'kms:List*' - 'kms:Put*' - 'kms:Update*' - 'kms:Revoke*' - 'kms:Disable*' - 'kms:Get*' - 'kms:Delete*' - 'kms:ScheduleKeyDeletion' - 'kms:CancelKeyDeletion' Resource: '*' - Sid: Allow use of the key Effect: Allow Principal: AWS: 'arn:aws:iam::123456789012:role/KeyUser' Action: - 'kms:DescribeKey' - 'kms:Encrypt' - 'kms:Decrypt' - 'kms:ReEncrypt*' - 'kms:GenerateDataKey' - 'kms:GenerateDataKeyWithoutPlaintext' Resource: '*' EnableKeyRotation: true PendingWindowInDays: 30
Información relacionada
- Etiquetas
- AWS CloudFormation
- Idioma
- Español

Contenido relevante
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace un año
- preguntada hace 7 meses
- preguntada hace 10 meses
- Respuesta aceptadapreguntada hace un año
OFICIAL DE AWSActualizada hace un año