Subvenciones en AWS 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.

Subvenciones en AWS KMS

Una subvención es un instrumento político que permite a AWS los directores utilizar KMS claves en operaciones criptográficas. También les permite ver una KMS clave (DescribeKey) y crear y gestionar subvenciones. Al autorizar el acceso a una KMS clave, las subvenciones se tienen en cuenta junto con las políticas y IAMpolíticas clave. Las concesiones se suelen utilizar para permisos temporales, ya que puedes crear uno, usar sus permisos y eliminarlo sin cambiar tus políticas o IAM políticas clave.

Los AWS servicios que se integran AWS KMS para cifrar los datos en reposo suelen utilizar las subvenciones. El servicio crea una concesión en nombre de un usuario de la cuenta, utiliza sus permisos y retira la concesión tan pronto como finalice su tarea. Para obtener más información sobre el uso de las subvenciones por parte de los AWS servicios, consulta Cómo los servicios de AWS usan AWS KMS el tema El cifrado en reposo en la guía del usuario o en la guía para desarrolladores del servicio.

En Trabajar con concesiones puede consultar ejemplos de código que muestran cómo funcionan las concesiones en varios lenguajes de programación.

Acerca de las concesiones

Las concesiones son un mecanismo de control de acceso muy flexible y útil. Al crear una subvención para una KMS clave, la subvención permite al director de la concesión solicitar las operaciones de subvención especificadas en la KMS clave, siempre que se cumplan todas las condiciones especificadas en la subvención.

  • Cada subvención permite el acceso a exactamente una KMS clave. Puedes crear una beca para una KMS clave en otra Cuenta de AWS.

  • Una concesión puede permitir el acceso a una KMS clave, pero no denegar el acceso.

  • Cada concesión tiene una entidad principal beneficiaria. El titular de la concesión puede representar una o más identidades en la Cuenta de AWS misma KMS clave o en una cuenta diferente.

  • Una concesión solo puede permitir operaciones de concesión. Las operaciones de subvención deben estar respaldadas por la KMS clave de la subvención. Si especificas una operación no admitida, la CreateGrantsolicitud fallará con una ValidationError excepción.

  • El director del concesionario puede usar los permisos que la concesión le otorga sin especificar la concesión, tal como lo haría si los permisos procedieran de una política o política clave. IAM Sin embargo, dado que en última instancia se AWS KMS API sigue un modelo de coherencia, al crear, retirar o revocar una subvención, es posible que se produzca un breve retraso antes de que el cambio esté disponible de forma definitiva. AWS KMS Para utilizar los permisos de una concesión inmediatamente, use un token de concesión.

  • Un beneficiario principal autorizado puede eliminar la concesión (retirarla o revocarla). Al eliminar una concesión se eliminan todos los permisos permitidos por la concesión. No es necesario averiguar qué políticas se deben agregar o quitar para deshacer la concesión.

  • AWS KMS limita el número de concesiones en cada KMS clave. Para obtener más detalles, consulte Concesiones por KMS clave: 50 000.

Tenga cuidado al crear concesiones y al dar permiso a otros para crear concesiones. El permiso para crear subvenciones tiene implicaciones de seguridad, al igual que permitir el PutKeyPolicy permiso kms para establecer políticas.

  • Los usuarios con permiso para crear concesiones para una KMS clave (kms:CreateGrant) pueden usar una subvención para permitir que los usuarios y los roles, incluidos AWS los servicios, usen la KMS clave. Los principales pueden ser identidades propias Cuenta de AWS o identidades de una cuenta u organización diferente.

  • Las subvenciones solo permiten un subconjunto de AWS KMS operaciones. Puede usar las concesiones para permitir que los directores vean la KMS clave, la usen en operaciones criptográficas y creen y retiren las concesiones. Para obtener más información, consulte Operaciones de concesión. También puede utilizar restricciones de la concesión para limitar los permisos de una concesión para una clave de cifrado simétrica.

  • Los directores pueden obtener permiso para crear subvenciones a partir de una política o política clave. IAM Los directores que obtengan el kms:CreateGrant permiso de una política pueden crear subvenciones para cualquier operación de subvención basada en la KMS clave. Estas entidades principales no necesitan tener el permiso que conceden en la clave. Cuando se permite permiso kms:CreateGrant en una política, puede usar condiciones de política para limitar este permiso.

  • Los principales beneficiarios también pueden obtener permiso para crear concesiones a partir de una concesión. Estos directores solo pueden delegar los permisos que se les concedieron, incluso si tienen otros permisos de una política. Para obtener más detalles, consulte Concesión del permiso CreateGrant .

Para obtener ayuda con los conceptos relacionados con las concesiones, consulte Terminología de la concesión.

Conceptos de concesión

Para utilizar las concesiones de manera efectiva, deberá comprender los términos y conceptos que AWS KMS utiliza.

Restricción de concesiones

Condición que limita los permisos de la concesión. Actualmente, AWS KMS admite restricciones de concesión basadas en el contexto de cifrado de la solicitud de una operación criptográfica. Para obtener más detalles, consulte Uso de restricciones de concesiones.

ID de concesión

El identificador único de la concesión de una KMS clave. Puedes usar un identificador de concesión, junto con un identificador clave, para identificar una concesión en una RevokeGrantsolicitud RetireGranto solicitud.

Operaciones de concesión

Las AWS KMS operaciones que puedes permitir en una subvención. Si especificas otras operaciones, la CreateGrantsolicitud fallará con una ValidationError excepción. Estas son también las operaciones que aceptan un token de concesión. Para obtener información detallada sobre estos permisos, consulte la AWS KMS permisos.

Estas operaciones de concesión representan realmente permiso para usar la operación. Por lo tanto, para la operación ReEncrypt, puede especificar ReEncryptFrom, ReEncryptTo o ambos ReEncrypt*.

Las operaciones de concesión son:

Las operaciones de subvención que permita deben estar respaldadas por la KMS clave de la subvención. Si especificas una operación no admitida, la CreateGrantsolicitud fallará con una ValidationError excepción. Por ejemplo, las concesiones de KMS claves de cifrado simétricas no pueden permitir las operaciones Sign, Verify GenerateMacu VerifyMac. Las concesiones de KMS claves asimétricas no pueden permitir ninguna operación que genere claves de datos o pares de claves de datos.

Token de concesión

A AWS KMS API continuación se presenta un modelo de coherencia eventual. Al crear una concesión, es posible que haya un breve retraso antes de que el cambio esté disponible a través de AWS KMS. Por lo general, el cambio tarda menos de unos segundos en propagarse por todo el sistema, pero en algunos casos puede tardar varios minutos. Si intenta utilizar una concesión antes de que se propague por completo por el sistema, es posible que obtenga un error de acceso denegado. Un token de concesión le permite hacer referencia a la concesión y utilizar los permisos de concesión inmediatamente.

Un token de concesión es una cadena única, no secreta, de longitud variable, codificada en base64 que representa una concesión. Puede usar el token de concesión para identificar la concesión en cualquier operación de concesión. Sin embargo, debido a que el valor del token es un resumen hash, no revela ningún detalle sobre la concesión.

Un token de concesión está diseñado para utilizarse solo hasta que la concesión se haya propagado por completo a través de AWS KMS. Después de eso, el principal beneficiario puede utilizar el permiso de la concesión sin proporcionar un token de concesión ni cualquier otra prueba de la concesión. Puedes usar un token de concesión en cualquier momento, pero una vez que la concesión sea coherente, AWS KMS utiliza la concesión para determinar los permisos, no el token de concesión.

Por ejemplo, el siguiente comando llama a la GenerateDataKeyoperación. Utiliza un token de concesión para representar la concesión que da permiso a la persona que llama (el destinatario principal) para invocar GenerateDataKey la clave especificada. KMS

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --grant-token $token

También puede utilizar un token de concesión para identificar una concesión en operaciones que administran concesiones. Por ejemplo, el director que se retira puede usar un token de concesión en una llamada a la operación. RetireGrant

$ aws kms retire-grant \ --grant-token $token

CreateGrant es la única operación que devuelve un token de concesión. No puede obtener un token de concesión de ninguna otra AWS KMS operación ni del evento de CloudTrail registro de la CreateGrant operación. Las ListRetirableGrantsoperaciones ListGrantsy devuelven el ID de concesión, pero no un token de concesión.

Para obtener más detalles, consulte Uso de un token de concesión.

Principal beneficiario

Las identidades que obtienen los permisos especificados en la concesión. Cada concesión tiene una entidad principal beneficiaria, pero la entidad principal beneficiaria puede representar varias identidades.

El cesionario principal puede ser cualquier AWS principal, incluido un Cuenta de AWS (root), un IAMusuario, un rol, un IAMrol o usuario federado o un usuario con un rol asumido. El principal beneficiario puede estar en la misma cuenta que la KMS clave o en una cuenta diferente. Sin embargo, el principal concesionario no puede ser un director de servicio, un IAMgrupo o una organización.AWS

nota

IAMlas mejores prácticas desalientan el uso de IAM usuarios con credenciales a largo plazo. Siempre que sea posible, utilice IAM roles, que proporcionan credenciales temporales. Para obtener más información, consulte las prácticas recomendadas de seguridad IAM en la Guía del IAM usuario.

Retiro (de una concesión)

Termina una concesión. Retire una concesión cuando termine de usar los permisos.

La revocación y el retiro de una concesión eliminan la concesión. Sin embargo, el retiro se realiza por medio de una entidad principal especificada en la concesión. La revocación suele realizarla un administrador de claves. Para obtener más detalles, consulte Retiro y revocación de concesiones.

Entidad principal que se va a dar de baja

Una entidad principal que puede retirar una concesión. Puede especificar una entidad principal que se va a dar de baja en una concesión, pero no es necesario. El principal que se jubila puede ser cualquier AWS principal, incluidos IAM los usuarios Cuentas de AWS, los IAM roles, los usuarios federados y los usuarios con roles asumidos. El principal que se retira puede estar en la misma cuenta que la KMS clave o en una cuenta diferente.

nota

IAMlas mejores prácticas desaconsejan el uso de IAM usuarios con credenciales de larga duración. Siempre que sea posible, utilice IAM roles, que proporcionan credenciales temporales. Para obtener más información, consulte las prácticas recomendadas de seguridad IAM en la Guía del IAM usuario.

Además de retirar el director especificado en la subvención, una subvención puede retirarse antes de la fecha Cuenta de AWS en que se creó la subvención. El principal beneficiario puede retirar la concesión, si la concesión admite la operación RetireGrant. Además, el director Cuenta de AWS o un director Cuenta de AWS que se jubila puede delegar el permiso para retirar una subvención a un IAM director de la misma. Cuenta de AWS Para obtener más detalles, consulte Retiro y revocación de concesiones.

Revocación (de una concesión)

Termina una concesión. Puede revocar una concesión para denegar activamente los permisos que permite la concesión.

La revocación y el retiro de una concesión eliminan la concesión. Sin embargo, el retiro se realiza por medio de una entidad principal especificada en la concesión. La revocación suele realizarla un administrador de claves. Para obtener más detalles, consulte Retiro y revocación de concesiones.

Consistencia final (para las concesiones)

El AWS KMS API siguiente es un modelo de coherencia eventual. Al crear, retirar o revocar una concesión, es posible que haya un breve retraso antes de que el cambio esté disponible a través de AWS KMS. Por lo general, el cambio tarda menos de unos segundos en propagarse por todo el sistema, pero en algunos casos puede tardar varios minutos.

Puede darse cuenta de este breve retraso si recibe errores inesperados. Por ejemplo, si intentas gestionar una nueva concesión o utilizas los permisos de una nueva concesión antes de que se conozca la concesión en su totalidad AWS KMS, es posible que se produzca un error de acceso denegado. Si retira o revoca una concesión, es posible que el principal beneficiario pueda seguir utilizando sus permisos durante un breve período hasta que la concesión se elimine por completo. La estrategia habitual consiste en volver a intentar la solicitud, y algunas AWS SDKs incluyen una lógica automática de rechazo y reintento.

AWS KMS tiene funciones para mitigar este breve retraso.

nota

Los tokens de concesión reemplazan la validez de la concesión hasta que todos los puntos de conexión del servicio se hayan actualizado con el nuevo estado de concesión. En la mayoría de los casos, la consistencia final se logrará en cinco minutos.

Para obtener más información, consulte Coherencia final de AWS KMS.

Mejores prácticas para las subvenciones AWS KMS

AWS KMS recomienda las siguientes prácticas recomendadas a la hora de crear, utilizar y gestionar las subvenciones.

  • Limite los permisos de la concesión a los que requiere el principal beneficiario. Utilice el principio de acceso menos privilegiado.

  • Utiliza un cesionario principal específico, como un IAM rol, y dale permiso al cesionario principal para que utilice únicamente las API operaciones que necesite.

  • Utilice las restricciones de concesión del contexto de cifrado para asegurarse de que las personas que llaman utilizan la KMS clave para el propósito previsto. Para obtener más información sobre cómo utilizar el contexto de cifrado en una solicitud para proteger sus datos, consulte Cómo proteger la integridad de los datos cifrados mediante el uso AWS Key Management Service y EncryptionContext en el blog sobre AWS seguridad.

    sugerencia

    Utilice la restricción de EncryptionContextEqualconcesión siempre que sea posible. La restricción de EncryptionContextSubsetconcesión es más difícil de usar correctamente. Si necesita usarlo, lea detenidamente la documentación y pruebe la limitación de concesión para asegurarse de que funciona según lo previsto.

  • Suprima concesiones duplicadas. Las subvenciones duplicadas tienen la misma claveARN, API las mismas acciones, el mismo destinatario, el mismo contexto de cifrado y el mismo nombre. Si retira o revoca la concesión original pero deja los duplicados, las concesiones duplicadas sobrantes constituyen escaladas no intencionadas de privilegios. Para evitar duplicar concesiones al volver a intentar una solicitud CreateGrant, utilice el parámetro Name. Para detectar concesiones duplicadas, utilice la ListGrantsoperación. Si crea accidentalmente una concesión duplicada, retírela o revóquela lo antes posible.

    nota

    Las concesiones para las claves administradas por AWS podrían parecer duplicados, pero tienen diferentes beneficiarios principales.

    El campo GranteePrincipal de la respuesta ListGrants generalmente contiene el principal beneficiario de la concesión. Sin embargo, cuando el principal beneficiario de la subvención es un AWS servicio, el GranteePrincipal campo contiene el principal del servicio, que puede representar a varios directores distintos del concesionario.

  • Recuerde que las concesiones no caducan automáticamente. Retire o revoque la concesiones ni bien el permiso ya no sea necesario. Las concesiones que no se eliminan pueden crear un riesgo de seguridad para los recursos cifrados.