Ejemplos de políticas de IAM - AWS Key Management Service

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.

Ejemplos de políticas de IAM

En esta sección, encontrará ejemplos de políticas de IAM que conceden permisos para varias acciones de AWS KMS.

importante

Algunos de los permisos de las siguientes políticas solo se permiten cuando la política de claves de la clave KMS también los permite. Para obtener más información, consulte Referencia de permisos.

Para obtener ayuda sobre cómo escribir y dar formato a un documento de política JSON, consulte la Referencia de políticas JSON de IAM en la Guía del usuario de IAM.

Permitir a un usuario ver las claves KMS en la consola AWS KMS

La siguiente política de IAM permite a los usuarios acceso de solo lectura a la consola de AWS KMS. Los usuarios con estos permisos pueden ver todas las claves KMS en su Cuenta de AWS, pero no pueden crear ni cambiar ninguna clave KMS.

Para ver las claves KMS en las páginas Claves administradas por AWS y Claves administradas por el cliente, las entidades principales necesitan los permisos kms:ListKeys, kms:ListAliases y tag:GetResources, incluso si las claves no tienen etiquetas o alias. Los permisos restantes, en particular kms:DescribeKey, son necesarios para ver las columnas opcionales de la tabla de claves KMS y las páginas de detalles de la clave KMS. Los permisos iam:ListUsers y iam:ListRoles son necesarios para mostrar la política de clave en la vista predeterminada sin errores. Para ver los datos en la página Almacenes de claves personalizados y detalles sobre las claves KMS en los almacenes de claves personalizadas, las principales entidades también necesitan permiso kms:DescribeCustomKeyStores.

Si limita el acceso de la consola de un usuario a determinadas claves KMS, la consola muestra un error para cada clave KMS que no está visible.

Esta política incluye dos declaraciones de política. El elemento Resource en la primera declaración de política permite los permisos especificados en todas las claves KMS en todas las regiones del ejemplo Cuenta de AWS. Los lectores de la consola no necesitan acceso adicional porque la consola AWS KMS muestra solo las claves KMS en la cuenta de la entidad principal. Esto es cierto incluso si tienen permiso para ver claves KMS en otras Cuentas de AWS. El resto de los permisos de AWS KMS y de IAM requieren un elemento "Resource": "*" ya que no se aplican a ninguna clave KMS en particular.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccessForAllKMSKeysInAccount", "Effect": "Allow", "Action": [ "kms:GetPublicKey", "kms:GetKeyRotationStatus", "kms:GetKeyPolicy", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:ListResourceTags", "tag:GetResources" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ] }

Permitir a un usuario crear claves KMS

La siguiente política de IAM permite a un usuario crear todos los tipos de claves KMS. El valor del elemento Resource es * dado que la operación CreateKey no utiliza ningún recurso de AWS KMS particular (clave KMS o alias).

Para restringir al usuario a determinados tipos de claves KMS, utilice las claves de condición kms:KeySpec, kms:KeyUsage y kms:KeyOrigin.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" } }

Es posible que las principales entidades que crean claves necesiten algunos permisos relacionados.

  • kms:PutKeyPolicy: las principales entidades que tienen permiso kms:CreateKey pueden establecer la política de clave inicial para la clave KMS. Sin embargo, la persona que llama a CreateKey debe tener el permiso kms:PutKeyPolicy, que les permite cambiar la política de clave KMS, o deben especificar los parámetros BypassPolicyLockoutSafetyCheck de CreateKey, lo que no se recomienda. La persona que llama CreateKey puede obtener permiso kms:PutKeyPolicy para la clave KMS desde una política de IAM o pueden incluir este permiso en la política de claves de la clave KMS que están creando.

  • kms:TagResource: para agregar etiquetas a la clave KMS durante la operación CreateKey, la persona que llama a CreateKey debe tener kms:TagResource en una política de IAM. Incluir este permiso en la política de claves de la nueva clave KMS no es suficiente. Sin embargo, si la persona que llama a CreateKey incluye kms:TagResource en la política de clave inicial, pueden agregar etiquetas en una llamada separada después de crear la clave KMS.

  • kms:CreateAlias: las entidades principales que crean una clave KMS en la consola AWS KMS debe tener un permiso kms:CreateAlias en la clave KMS y en el alias. (La consola realiza dos llamadas; una a CreateKey y una a CreateAlias). Debe proporcionar el permiso de alias en una política de IAM. Puede proporcionar estos permisos en una política de claves, una política de IAM o una concesión. Para obtener más información, consulte Control del acceso a alias.

Además de kms:CreateKey, la siguiente política de IAM proporciona kms:TagResource en todas las claves KMS de la Cuenta de AWS y del permiso kms:CreateAlias en todos los alias de la cuenta. También incluye algunos permisos de solo lectura útiles que únicamente se pueden proporcionar en una política de IAM.

Esta política de IAM no incluye permiso kms:PutKeyPolicy ni ningún otro permiso que se pueda establecer en una política de clave. Es una práctica recomendada para establecer estos permisos en la política de claves donde se aplican exclusivamente a una clave KMS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPermissionsForParticularKMSKeys", "Effect": "Allow", "Action": "kms:TagResource", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPermissionsForParticularAliases", "Effect": "Allow", "Action": "kms:CreateAlias", "Resource": "arn:aws:kms:*:111122223333:alias/*" }, { "Sid": "IAMPermissionsForAllKMSKeys", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ] }

Permitir a un usuario cifrar y descifrar con cualquier clave KMS en una Cuenta de AWS específica

La siguiente política de IAM permite a un usuario cifrar y descifrar datos con cualquier clave KMS en la Cuenta de AWS 111122223333.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } }

Permitir a un usuario cifrar y descifrar con cualquier clave KMS en una cuenta y región de Cuenta de AWS específicas

La siguiente política de IAM permite a un usuario cifrar y descifrar datos con cualquier clave KMS en la Cuenta de AWS 111122223333 de la región EE. UU. Oeste (Oregón).

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] } }

Permitir a un usuario cifrar y descifrar con claves KMS específicas

La siguiente política de IAM permite a un usuario cifrar y descifrar datos con las dos claves KMS especificadas en el elemento Resource. Al especificar una clave KMS en una declaración de política de IAM, debe utilizar la ARN de clave de la clave KMS.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] } }

Impedir a un usuario desactivar o eliminar cualquier clave KMS

La siguiente política de IAM impide que un usuario deshabilite o elimine cualquier clave KMS, aunque otra política de IAM o política de claves conceda estos permisos. Una política que deniega de forma explícita los permisos anula todas las demás políticas, incluso aquellas que hayan permitido explícitamente los mismos permisos. Para obtener más información, consulte Solución de problemas de permisos de AWS KMS.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" } }