Aplicar permisos de privilegios mínimos - 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.

Aplicar permisos de privilegios mínimos

Dado que sus claves KMS protegen la información confidencial, le recomendamos que siga el principio del acceso de privilegio mínimo. Cuando defina las políticas de claves, delegue los permisos mínimos necesarios para realizar una tarea. Solo permita todas las acciones (kms:*) en una política de claves KMS si tiene previsto restringir aún más los permisos con políticas de IAM adicionales. Si tiene previsto administrar los permisos con políticas de IAM, limite quién tiene la capacidad de crear y adjuntar políticas de IAM a las entidades principales de IAM y supervise los cambios en las políticas.

Si permite todas las acciones (kms:*) tanto en la política de claves como en la política de IAM, la entidad principal tendrá permisos administrativos y de uso para la clave KMS. Como buena práctica de seguridad, se recomienda delegar estos permisos únicamente a entidades principales específicas. Puede hacerlo nombrando explícitamente a la entidad principal en la política de claves o limitando las entidades principales a las que se adjunta la política de IAM. También puede usar claves de condición para restringir los permisos. Por ejemplo, puede usar la aws:PrincipalTag para permitir todas las acciones si la entidad principal que realiza la llamada a la API tiene la etiqueta especificada en la regla de condición.

Para entender cómo se evalúan las declaraciones de políticas en AWS, consulte la Lógica de evaluación de políticas en la Guía del usuario de IAM. Recomendamos revisar este tema antes de redactar políticas para reducir la posibilidad de que su política tenga efectos no deseados, como proporcionar acceso a entidades principales que no deberían tener acceso.

sugerencia

Cuando pruebe una aplicación en un entorno que no sea de producción, utilice IAM Access Analyzer para aplicar los privilegios mínimos a sus políticas de IAM.

Si utiliza usuarios de IAM en lugar de roles de IAM, recomendamos encarecidamente habilitar la autenticación multifactor (MFA) de AWSpara mitigar la vulnerabilidad de las credenciales a largo plazo. Puede utilizar la MFA para hacer lo siguiente:

  • Requerir que los usuarios validen sus credenciales con MFA antes de realizar acciones privilegiadas, como programar la eliminación de claves.

  • Dividir la propiedad de una contraseña de cuenta de administrador y el dispositivo de MFA entre varias personas para implementar la autorización dividida.

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 es CreateGrant o una operación criptográfica simétrica de AWS KMS que toma un parámetro de EncryptionContext, como las operaciones GenerateDataKey o Decrypt. (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, como 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 de condición kms:ViaService, kms:CallerAccount y kms:EncryptionContext:context-key para vincular el permiso a un recurso de seguimiento concreto.

{ "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 permite a CloudTrail utilizar la clave KMS para generar la clave de datos que utiliza para cifrar una traza. 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 operador ArnEquals para garantizar que todos los elementos del ARN se evalúen 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/*" ] } } } ] }