Permisos para servicios de AWS en políticas de claves - 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.

Permisos para servicios de AWS en políticas de claves

Muchos servicios de AWS usan AWS KMS keys para proteger los recursos que administran. Cuando un servicio usa Claves propiedad de AWS o Claves administradas por AWS, el servicio establece y mantiene las políticas de claves para estas claves KMS.

Sin embargo, cuando usa una clave administrada personalizada con un servicio de AWS, establece y mantiene la política de claves. Esta política de claves debe permitir al servicio los permisos mínimos que necesita para proteger el recurso en su nombre. Le recomendamos que siga el principio de privilegio mínimo: otorgar al servicio solo los permisos que requiere. Puede hacerlo de manera eficaz aprendiendo qué permisos necesita el servicio y utilizando claves de condición globales de AWS y claves de condición de AWS KMS para refinar los permisos.

Para encontrar los permisos que requiere el servicio en una clave administrada por el cliente, consulte la documentación de cifrado del servicio. Por ejemplo, para obtener información sobre los permisos que requiere Amazon Elastic Block Store (Amazon EBS), consulte Permisos para los usuarios de IAM en la Guía del usuario de Amazon EC2 para instancias de Linux y la Guía del usuario de Amazon EC2 para instancias de Windows. Para obtener los permisos que requiere Secrets Manager, consulte Autorización del uso de la clave KMS en la Guía del usuario de AWS Secrets Manager.

Implementación de permisos de privilegio mínimo

Cuando otorga un permiso de servicio de AWS para utilizar una clave KMS, asegúrese de que el permiso sea válido solo para los recursos a los que el servicio debe acceder en su nombre. Esta estrategia de privilegio mínimo ayuda a evitar el uso no autorizado de una clave KMS cuando las solicitudes se transfieren entre los servicios de AWS.

Para implementar una estrategia de privilegio mínimo, recomendamos utilizar las claves de condición de contexto de cifrado AWS KMS y las claves de condición de cuenta origen o ARN origen.

Uso de claves de condición de contexto de cifrado

La forma más eficaz de implementar los permisos de privilegio mínimo cuando se utilizan recursos de AWS KMS consiste en incluir las claves de condición kms:EncryptionContext:context-key o kms:EncryptionContextKeys en la política que permite a las entidades principales llamar a las operaciones criptográficas de AWS KMS. Estas claves de condición son especialmente eficaces porque asocian el permiso al contexto de cifrado que está enlazado al texto cifrado cuando el recurso está cifrado.

Utilice las claves de condiciones de contexto de cifrado solo cuando la acción de la declaración de política CreateGrantsea una operación criptográfica AWS KMS simétrica que utilice un EncryptionContext parámetro, como operaciones como Decrypt GenerateDataKey. (Para ver una lista de las operaciones admitidas, consulte kms:EncryptionContext:context-key o kms:EncryptionContextKeys). Si utiliza estas claves de condición para permitir otras operaciones, por ejemplo DescribeKey, se denegará el permiso.

Establezca el valor en el contexto de cifrado que utiliza el servicio cuando cifra el recurso. Esta información generalmente suele estar disponible en el capítulo Seguridad de la documentación del servicio. Por ejemplo, el contexto de cifrado para AWS Proton identifica el recurso de AWS Proton y su plantilla asociada. El contexto de cifrado AWS Secrets Manager identifica el secreto y su versión. El contexto de cifrado para Amazon Location identifica el rastreador o la recopilación.

El siguiente ejemplo de declaración de política de claves permite a Amazon Location Service crear concesiones en nombre de usuarios autorizados. Esta declaración de política limita el permiso mediante el uso de las claves kms: CallerAccount, kms: y de kms:EncryptionContext:context-key condición para vincular el permiso a un recurso de rastreo concreto. ViaService

{ "Sid": "Allow Amazon Location to create grants on behalf of authorized users", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/LocationTeam" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "geo.us-west-2.amazonaws.com", "kms:CallerAccount": "111122223333", "kms:EncryptionContext:aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:tracker/SAMPLE-Tracker" } } }

Uso de claves de condición aws:SourceArn o aws:SourceAccount

Cuando la entidad principal de una declaración de política de claves es una entidad principal del servicio de AWS, recomendamos encarecidamente que utilice las claves de condición globales aws:SourceArn o aws:SourceAccount, además de la clave de condición kms:EncryptionContext:context-key. El ARN y los valores de cuenta se incluyen en el contexto de autorización solo cuando se recibe una solicitud en AWS KMS de otro servicio de AWS. Esta combinación de condiciones implementa los permisos de privilegio mínimo y evita un potencial escenario suplente confuso. Las entidades principales de servicio no se utilizan normalmente como entidades principales en una política de claves, pero algunos servicios de AWS, tales como AWS CloudTrail, las requieren.

Para utilizar las claves de condición globales aws:SourceArn o aws:SourceAccount, establezca el valor en el nombre de recurso de Amazon (ARN) o la cuenta del recurso que se está cifrando. Por ejemplo, en una declaración de política de claves que da permiso AWS CloudTrail para cifrar una traza, establezca el valor de aws:SourceArn al ARN de la traza. Siempre que sea posible, utilice aws:SourceArn, que es más específico. Establezca el valor en el ARN o un patrón ARN con caracteres comodín. Si no conoce el ARN del recurso, utilice aws:SourceAccount en su lugar.

nota

Si un ARN de recurso incluye caracteres que no están permitidos en una política de claves de AWS KMS, no puede utilizar ese ARN de recurso en el valor de la clave de condición aws:SourceArn. En cambio, utilice la clave de condición aws:SourceAccount. Para obtener más información sobre las reglas del documento de política de claves, consulte Formato de la política de claves.

En el siguiente ejemplo de política de claves, la entidad principal que obtiene los permisos es la entidad principal del servicio AWS CloudTrail, cloudtrail.amazonaws.com. Para implementar el privilegio mínimo, esta política utiliza las claves de condición aws:SourceArn y kms:EncryptionContext:context-key. La declaración de política CloudTrail permite utilizar la clave KMS para generar la clave de datos que se utiliza para cifrar un rastro. Las condiciones aws:SourceArn y kms:EncryptionContext:context-key se evalúan de forma independiente. Cualquier solicitud de uso de la clave KMS para la operación especificada debe cumplir ambas condiciones.

Para restringir el permiso del servicio a la traza finance en la cuenta de ejemplo (111122223333) y la región us-west-2, esta declaración de política establece la clave de condición aws:SourceArn del ARN de una traza concreta. La declaración de condición utiliza el ArnEqualsoperador para garantizar que cada elemento del ARN se evalúe de forma independiente al coincidir. En el ejemplo también se utiliza la clave de condición kms:EncryptionContext:context-key para limitar el permiso a las trazas de una cuenta y región en particular.

Antes de utilizar esta política de claves, reemplace el ID de la cuenta de ejemplo, la región y el nombre de traza por valores válidos de su cuenta.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CloudTrail to encrypt logs", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:cloudtrail:us-west-2:111122223333:trail/finance" ] }, "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": [ "arn:aws:cloudtrail:*:111122223333:trail/*" ] } } } ] }