Permitir a los usuarios de otras cuentas utilizar una clave KMS - 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.

Permitir a los usuarios de otras cuentas utilizar una clave KMS

Puede permitir que los usuarios o roles de una Cuenta de AWS usen una clave KMS en su cuenta. El acceso entre cuentas requiere permiso en la política de claves de la clave KMS y en una política de IAM en la cuenta del usuario externo.

El permiso entre cuentas solo es efectivo para las siguientes operaciones:

Si concede a un usuario de otra cuenta permiso para otras operaciones, esos permisos no surten efecto. Por ejemplo, si concedes al principal de una cuenta diferente el ListKeys permiso kms: en una política de IAM, o el ScheduleKeyDeletion permiso kms: en una clave de KMS en una política clave, los intentos del usuario de realizar esas operaciones en tus recursos seguirán fallando.

Para obtener más información sobre el uso de claves KMS en diferentes cuentas para las operaciones AWS KMS, consulte la columna Cross-account use (Uso entre cuentas) en AWS KMS permisos y Uso de claves KMS en otras cuentas. También hay una sección Cross-account use (Uso entre cuentas) en cada descripción de la API en la Referencia de la API de AWS Key Management Service.

aviso

Tenga cuidado al conceder permisos a las principales entidades para usar las claves KMS. Siempre que sea posible, siga el principio del mínimo privilegio. Proporcione a los usuarios acceso solo a las claves KMS que necesitan para las operaciones que requieren.

Además, tenga cuidado con el uso de cualquier clave KMS desconocida, especialmente una clave KMS en una cuenta diferente. Es posible que los usuarios malintencionados le den permisos para usar su clave KMS para obtener información sobre usted o su cuenta.

Para obtener más información sobre el uso de políticas de para proteger los recursos de su cuenta, consulte Prácticas recomendadas para las políticas de IAM.

Para conceder a permiso para utilizar una clave KMS a los usuarios y roles de otra cuenta, debe utilizar dos tipos diferentes de políticas:

  • La política de claves de la clave KMS debe conceder a la cuenta externa (o a los usuarios y roles de la cuenta externa) permiso para utilizar la clave KMS. La política de claves está en la cuenta propietaria de la clave KMS.

  • Las políticas de IAM de la cuenta externa debe delegar los permisos de política de claves de a sus usuarios y roles. Estas políticas se establecen en la cuenta externa y otorgan permisos para los usuarios y roles de esa cuenta.

La política de claves determina quién puede tener acceso a la clave KMS. La política de IAM determina quién tiene acceso a la clave KMS. Ni la política de claves ni la política de IAM solas son suficientes, debe cambiar ambas.

Para editar la política clave, puedes usar la vista de políticas en las AWS Management Console PutKeyPolicyoperaciones CreateKeyo. Para obtener ayuda sobre la configuración de la política de claves al crear una clave KMS, consulte Crear claves KMS que otras cuentas pueden utilizar.

Para obtener ayuda con la edición de políticas de IAM, consulte Uso de políticas de IAM con AWS KMS.

Para ver un ejemplo que muestra cómo la política de claves y las políticas de IAM se combinan para permitir el uso de una clave KMS en una cuenta diferente, consulte Ejemplo 2: El usuario asume un rol con permiso para utilizar una clave KMS en una Cuenta de AWS diferente.

Puede ver las resultantes operaciones de AWS KMS entre cuentas en la clave KMS de sus registros de AWS CloudTrail. Las operaciones que utilizan claves KMS en otras cuentas se registran tanto en la cuenta del autor de la llamada como en la cuenta del propietario de la clave KMS.

nota

En los ejemplos de este tema, se muestra cómo utilizar juntas una política de claves y una política de IAM para proporcionar y limitar el acceso a una clave KMS. Estos ejemplos genéricos no pretenden representar los permisos que ningún Servicio de AWS particular requiere en una clave KMS. Para obtener más información acerca de los permisos que requiere un Servicio de AWS, consulte el tema de cifrado en la documentación del servicio.

Paso 1: Agregar una declaración de política de claves en la cuenta local

La política de claves de una clave KMS es el principal determinante de quién puede obtener acceso a la clave KMS y qué operaciones puede realizar. La política de claves siempre se define en la cuenta propietaria de la clave KMS. A diferencia de las políticas de IAM, las políticas de claves no especifican ningún recurso. El recurso es la clave KMS asociada a la política de claves. Al proporcionar permiso entre cuentas, la política de claves de la clave KMS debe conceder a la cuenta externa (o a los usuarios y roles de la cuenta externa) permiso para utilizar la clave KMS.

Para conceder a una cuenta externa permiso para utilizar la clave KMS, agregue una declaración a la política de claves que especifique la cuenta externa. En el elemento Principal de la política de claves, escriba el nombre de recurso de Amazon (ARN) de la cuenta externa.

Al especificar una cuenta externa en una política de claves, los administradores de IAM de la cuenta externa pueden utilizar políticas de IAM para delegar esos permisos a cualquier usuario y rol de la cuenta externa. También pueden decidir qué acciones especificadas en la política de claves pueden realizar los usuarios y roles.

Los permisos otorgados a la cuenta externa y sus entidades principales solo son efectivos si la cuenta externa está habilitada en la región que aloja la clave KMS y su política de clave. Para obtener información acerca de las regiones que no están habilitadas de forma predeterminada (“Regiones de adhesión”), consulte Administración de Regiones de AWS en la Referencia general de AWS.

Por ejemplo, suponga que desea permitir que la cuenta 444455556666 utilice una clave KMS de cifrado simétrica en la cuenta 111122223333. Para ello, agregue una declaración de política como la del siguiente ejemplo a la política de claves de la clave KMS de la cuenta 111122223333. Esta declaración de política concede a la cuenta externa, 444455556666, permiso para utilizar la clave KMS en operaciones criptográficas para claves KMS de cifrado simétricas.

nota

El siguiente ejemplo representa un ejemplo de política de claves para compartir una clave KMS con otra cuenta. Sustituya los valores de Sid, Principal y Action de ejemplo por valores válidos para el uso previsto de su clave KMS.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

En lugar de conceder permiso a la cuenta externa, puede especificar usuarios y roles externos concretos en la política de claves. Sin embargo, esos usuarios y roles de no pueden utilizar la clave KMS hasta que los administradores de IAM de la cuenta externa asocien las políticas de IAM adecuadas a sus identidades. Las políticas de IAM pueden conceder permiso a todos o a un subconjunto de los usuarios y roles externos que se especifican en la política de claves. Y pueden permitir todas o un subconjunto de las acciones especificadas en la política de claves.

Especificar identidades en una política de claves restringe los permisos que los administradores de IAM de la cuenta externa pueden proporcionar. Sin embargo, hace que la administración de políticas con dos cuentas sea más compleja. Por ejemplo, suponga que necesita agregar un usuario o rol. Debe agregar dicha identidad a la política de claves en la cuenta propietaria de la clave KMS y crear políticas de IAM en la cuenta de la identidad.

Para especificar usuarios o roles externos concretos en una política de claves, en el elemento Principal, escriba el nombre de recurso de Amazon (ARN) de un usuario o rol en la cuenta externa.

Por ejemplo, la siguiente declaración de política de claves de ejemplo permite a ExampleRole de la cuenta 444455556666 utilizar una clave KMS en la cuenta 111122223333. Esta declaración de política de claves concede a la cuenta externa, 444455556666, permiso para utilizar la clave KMS en operaciones criptográficas para claves KMS de cifrado simétricas.

nota

El siguiente ejemplo representa un ejemplo de política de claves para compartir una clave KMS con otra cuenta. Sustituya los valores de Sid, Principal y Action de ejemplo por valores válidos para el uso previsto de su clave KMS.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
nota

No establezca la Entidad principal en un asterisco (*) en ninguna declaración de política de claves que permita permisos a menos que utilice condiciones para limitar la política de claves. Un asterisco da cada identidad en cada permiso de Cuenta de AWS para utilizar la clave de KMS, a menos que otra declaración de política lo deniegue explícitamente. Los usuarios de otras Cuentas de AWS pueden usar la clave de KMS siempre que tengan los permisos correspondientes en sus propias cuentas.

También debe decidir qué permisos desea conceder a la cuenta externa. Para obtener una lista de permisos en las claves KMS, consulte AWS KMS permisos.

Puede conceder a la cuenta externa permiso para utilizar la clave KMS en operaciones criptográficas y utilizar la clave KMS con servicios de AWS integrados con AWS KMS. Para ello, utilice la sección Key Users (Usuarios de claves) de la AWS Management Console. Para obtener más detalles, consulte Crear claves KMS que otras cuentas pueden utilizar.

Para especificar otros permisos en las políticas de claves, edite el documento de política de claves. Por ejemplo, es posible que desee conceder a los usuarios permiso para descifrar pero no cifrar, o permiso para ver la clave KMS pero no utilizarla. Para editar el documento de política clave, puede utilizar la vista de políticas en las AWS Management Console PutKeyPolicyoperaciones CreateKeyo.

Paso 2: Agregar políticas de IAM a la cuenta externa

La política de claves de la cuenta propietaria de la clave KMS establece el rango válido de permisos. Sin embargo, los usuarios y roles de la cuenta externa no pueden utilizar la clave KMS hasta que adjunte políticas de IAM que deleguen esos permisos o utilice concesiones para administrar el acceso a la clave KMS. Las políticas de IAM se establecen en la cuenta externa.

Si la política de claves concede permiso a la cuenta externa, puede asociar políticas de IAM a cualquier usuario o rol de la cuenta. Sin embargo, si la política de claves concede permiso a usuarios o roles especificados, la política de IAM solo puede conceder esos permisos a todos o a un subconjunto de los usuarios y roles especificados. Si una política de IAM concede a la clave KMS acceso a otros usuarios o roles externos, no tiene ningún efecto.

La política de claves también limita las acciones de la política de IAM. La política de IAM puede delegar todas o un subconjunto de las acciones especificadas en la política de claves. Si la política de IAM enumera acciones que no se especifican en la política de claves, esos permisos no son efectivos.

La siguiente política de IAM de ejemplo permite a la entidad principal utilizar la clave KMS en la cuenta de 111122223333 para operaciones criptográficas. Para conceder este permiso a los usuarios y roles de la cuenta 444455556666, asocie la política a los usuarios o roles de la cuenta 444455556666.

nota

El siguiente ejemplo representa un ejemplo de política de IAM para compartir una clave KMS con otra cuenta. Sustituya los valores de Sid, Resource y Action de ejemplo por valores válidos para el uso previsto de su clave KMS.

{ "Sid": "AllowUseOfKeyInAccount111122223333", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Tenga en cuenta los siguientes detalles sobre esta política:

  • A diferencia de las políticas de claves, las declaraciones de política de IAM no contienen el elemento Principal. En las políticas de IAM, la entidad principal es la identidad a la que está asociada la política.

  • El elemento de Resource de la política de IAM identifica la clave KMS que la entidad principal puede utilizar. Para especificar una clave KMS, agregue el ARN de la clave al elemento Resource.

  • Puede especificar más de una clave KMS en el elemento Resource. Sin embargo, si no especifica determinadas claves KMS en el elemento Resource, es posible que conceda acceso de forma inadvertida a más clave KMS de las que pretendía.

  • Para permitir al usuario externo utilizar la clave KMS con servicios de AWS que se integran con AWS KMS, es posible que tenga que agregar permisos a la política de claves o a la política de IAM. Para obtener más detalles, consulte Permitir el uso de claves KMS externas con Servicios de AWS.

Para obtener más información sobre el uso de las políticas de IAM, consulte Políticas de IAM.

Crear claves KMS que otras cuentas pueden utilizar

Al usar la CreateKeyoperación para crear una clave de KMS, puede usar su Policy parámetro para especificar una política de claves que conceda permiso a una cuenta externa, o a usuarios y roles externos, para usar la clave de KMS. También debe agregar políticas de IAM en la cuenta externa que deleguen estos permisos a los usuarios y roles de la cuenta, incluso cuando los usuarios y roles estén especificados en la política de claves. Puede cambiar la política clave en cualquier momento mediante la PutKeyPolicyoperación.

Al crear una clave KMS en la AWS Management Console, también debe crear su política de claves. Al seleccionar identidades en las secciones Key Administrators (Administradores de claves) y Key Users (Usuarios de claves), AWS KMS agrega declaraciones de política para esas identidades a la política de claves de la clave KMS.

La sección Key Users (Usuarios de claves) también le permite agregar cuentas externas como usuarios de claves.

El elemento de la consola que agrega cuentas externas a la política de claves para una clave KMS.

Al escribir el ID de cuenta de una cuenta externa, AWS KMS agrega dos declaraciones a la política de claves. Esta acción solo afecta a la política de claves. Los usuarios y roles de la cuenta externa no pueden utilizar la clave KMS hasta que se asocien políticas de IAM para concederles algunos o todos estos permisos.

La primera declaración de la política de claves concede a la cuenta externa permiso para utilizar la clave KMS en operaciones criptográficas.

nota

Los siguientes ejemplos representan un ejemplo de política de claves para compartir una clave KMS con otra cuenta. Sustituya los valores de Sid, Principal y Action de ejemplo por valores válidos para el uso previsto de su clave KMS.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

La segunda declaración de la política de claves permite a la cuenta externa crear, ver y revocar concesiones en la clave KMS, pero solo cuando la solicitud proviene de un servicio de AWS integrado con AWS KMS. Estos permisos permiten que otros servicios de AWS que cifran datos de usuario utilicen la clave KMS.

Estos permisos están diseñados para claves de KMS que cifran los datos de los usuarios en AWS servicios, como Amazon WorkMail. Estos servicios suelen utilizar concesiones para obtener los permisos que necesitan para utilizar la clave KMS en nombre del usuario. Para obtener más detalles, consulte Permitir el uso de claves KMS externas con Servicios de AWS.

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }

Si estos permisos no se ajustan a sus necesidades, puede editarlos en la vista de políticas de la consola o mediante la PutKeyPolicyoperación. Puede especificar usuarios y roles externos concretos en lugar de conceder permiso a la cuenta externa. Puede cambiar las acciones que especifica la política. Además, puede utilizar condiciones globales y de políticas de AWS KMS para refinar los permisos.

Permitir el uso de claves KMS externas con Servicios de AWS

Puede conceder a un usuario de otra cuenta permiso para utilizar su clave KMS con un servicio integrado con AWS KMS. Por ejemplo, un usuario de una cuenta externa puede utilizar su clave KMS para cifrar los objetos en un bucket de Amazon S3 o para cifrar los secretos que almacenan en AWS Secrets Manager.

La política de claves debe conceder al usuario externo o a la cuenta del usuario externo permiso para utilizar la clave KMS. Además, debe asociar políticas de IAM a la identidad que concede al usuario permiso para utilizar el Servicio de AWS. Además, el servicio podría requerir que los usuarios tengan permisos adicionales en la política de claves o política de IAM. Para obtener una lista de permisos que Servicio de AWS requiere una clave administrada por el cliente, consulte el tema Protección de datos en el capítulo de Seguridad de la guía del usuario o la guía para desarrolladores del servicio.

Uso de claves KMS en otras cuentas

Si tiene permiso para usar una clave KMS en un Cuenta de AWS diferente, puede usar la clave KMS en la AWS Management Console, las SDK de AWS, AWS CLI y AWS Tools for PowerShell.

Para identificar una clave KMS en una cuenta diferente en un comando de shell o solicitud de la API, utilice los siguientes identificadores clave.

Si solo introduce un ID de clave o un nombre de alias, AWS supone que la clave KMS está en su cuenta.

La consola AWS KMS no muestra claves KMS en otras cuentas, incluso si tiene permiso para usarlas. Además, las listas de claves KMS mostradas en las consolas de otros servicios de AWS no incluyen claves KMS en otras cuentas.

Para especificar una clave KMS en una cuenta diferente de la consola de un servicio de AWS, debe introducir la clave ARN o el alias ARN de la clave KMS. El identificador de clave requerido varía según el servicio y podría diferir entre la consola de servicio y sus operaciones de API. Para conocer detalles, consulte la documentación del servicio.