AWS KMS claves de condición - 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.

AWS KMS claves de condición

AWS KMS proporciona un conjunto de claves de condición que puede utilizar en las políticas clave y en las políticas de IAM. Estas claves de condición son específicas de. AWS KMS Por ejemplo, puede utilizar la clave de condición kms:EncryptionContext:context-key para exigir un determinado contexto de cifrado al controlar el acceso a una clave KMS de cifrado simétrica.

Condiciones para una solicitud de operación de la API

Muchas claves de AWS KMS condición controlan el acceso a una clave de KMS en función del valor de un parámetro de la solicitud de una AWS KMS operación. Por ejemplo, puede usar la clave de KeySpec condición kms: en una política de IAM para permitir el uso de la CreateKeyoperación solo cuando el valor del KeySpec parámetro de la CreateKey solicitud sea RSA_4096 el mismo.

Este tipo de condición funciona incluso cuando el parámetro no aparece en la solicitud, como cuando se utiliza el valor predeterminado del parámetro. Por ejemplo, puede usar la clave de KeySpec condición kms: para permitir que los usuarios usen la CreateKey operación solo cuando el valor del KeySpec parámetro seaSYMMETRIC_DEFAULT, que es el valor predeterminado. Esta condición permite las solicitudes que tienen el parámetro KeySpec con el valor SYMMETRIC_DEFAULT y las solicitudes que no tienen el parámetro KeySpec.

Condiciones para claves KMS utilizadas en operaciones de la API

Algunas claves de AWS KMS condición pueden controlar el acceso a las operaciones en función de una propiedad de la clave KMS que se utiliza en la operación. Por ejemplo, puede usar la KeyOrigin condición kms: para permitir que los directores GenerateDataKeyinvoquen una clave KMS solo cuando Origin la clave KMS lo seaAWS_KMS. Para averiguar si una clave de condición se puede utilizar de esta manera, consulte la descripción de la clave de condición.

La operación debe ser una operación de recursos de clave KMS, es decir, una operación que está autorizada para una clave KMS en particular. Para identificar las operaciones de recursos clave de KMS, en la tabla de acciones y recursos, busque un valor de KMS key en la columna Resources para la operación. Si utiliza este tipo de clave de condición con una operación que no está autorizada para un recurso clave de KMS concreto, por ejemplo ListKeys, el permiso no entra en vigor porque la condición nunca se puede cumplir. No existe ningún recurso de clave KMS involucrado en la autorización de la operación ListKeys y tampoco la propiedad KeySpec.

En los temas siguientes se describe cada clave de AWS KMS condición e incluyen ejemplos de declaraciones de política que muestran la sintaxis de las políticas.

Uso de operadores de conjuntos con claves de condición

Cuando una condición de política compara dos conjuntos de valores, como el conjunto de etiquetas de una solicitud y el conjunto de etiquetas de una política, es necesario saber AWS cómo comparar los conjuntos. IAM define dos operadores de conjunto, ForAnyValue y ForAllValues con este fin. Utilice operadores de conjunto solo con claves de condición de varios valores, que los requieren. No utilice operadores de conjunto con claves de condición de un solo valor. Como siempre, pruebe sus declaraciones de políticas minuciosamente antes de usarlas en entornos de producción.

Las claves de condición tienen un valor único o un valor múltiple. Para determinar si una clave de AWS KMS condición es de un solo valor o de varios valores, consulte la columna Tipo de valor en la descripción de la clave de condición.

  • Las claves de condiciones Single-valued (Valor único) tienen como máximo un valor en el contexto de autorización (la solicitud o el recurso). Por ejemplo, dado que cada llamada a la API solo puede originarse desde una Cuenta de AWS, kms: CallerAccount es una clave de condición de un solo valor. No utilice un operador de conjunto con una clave de condición de un solo valor.

  • Las claves de condición de múltiples valores tienen varios valores en el contexto de autorización (la solicitud o el recurso). Por ejemplo, dado que cada clave de KMS puede tener varios alias, kms: ResourceAliases puede tener varios valores. Las claves de condición de varios valores requieren un operador de conjunto.

Tenga en cuenta que la diferencia entre las claves de condición de un solo valor y de varios valores depende del número de valores en el contexto de autorización, no del número de valores de la condición de política.

aviso

El uso de un operador de conjunto con una clave de condición de un solo valor puede crear una declaración de política excesivamente permisiva (o excesivamente restrictiva). Utilice operadores de conjunto solo con claves de condición de varios valores.

Si crea o actualiza una política que incluye un operador de ForAllValues conjunto con las claves de contexto o aws:RequestTag/tag-key condición kmsEncryptionContext::, AWS KMS devuelve el siguiente mensaje de error:

OverlyPermissiveCondition: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified [encryption context or tag] or with an unspecified [encryption context or tag]. To fix, remove ForAllValues.

Para obtener información detallada acerca de los operadores de conjuntos ForAnyValue y ForAllValues, consulte Uso de múltiples claves y valores en la Guía del usuario de IAM. Para obtener información sobre el riesgo de utilizar el operador ForAllValues set con una condición de un solo valor, consulte Advertencia de seguridad: ForAllValues con clave de un solo valor en la Guía del usuario de IAM.

km: BypassPolicyLockoutSafetyCheck

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:BypassPolicyLockoutSafetyCheck

Booleano

Valor único

CreateKey

PutKeyPolicy

Solo políticas de IAM

Políticas de claves y políticas de IAM

La clave de kms:BypassPolicyLockoutSafetyCheck condición controla el acceso a PutKeyPolicylas operaciones CreateKeyy en función del valor del BypassPolicyLockoutSafetyCheck parámetro de la solicitud.

En el siguiente ejemplo, la declaración de la política de IAM impide que los usuarios eludan la comprobación de seguridad de bloqueo de la política denegándoles el permiso para crear claves KMS cuando el valor del parámetro BypassPolicyLockoutSafetyCheck de la solicitud CreateKey es true.

{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }

También puede utilizar la clave de condición kms:BypassPolicyLockoutSafetyCheck en una política de IAM o en una política de claves para controlar el acceso a la operación PutKeyPolicy. En el ejemplo siguiente, la declaración de una política de claves impide que los usuarios eludan la comprobación de seguridad de bloqueo cuando se modifica la política de una clave KMS.

En lugar de utilizar una operación Deny explícita, esta declaración de la política utiliza Allow con el operador de condición Null para permitir únicamente el acceso cuando la solicitud no contiene el parámetro BypassPolicyLockoutSafetyCheck. Cuando no se utiliza el parámetro, el valor predeterminado es false. Esta declaración de la política es algo más débil y puede anularse en el caso improbable de que sea necesario eludirla.

{ "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }

Véase también

km: CallerAccount

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:CallerAccount

Cadena

Valor único

Operaciones de recursos de claves KMS

Operaciones de almacén de claves personalizadas

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para permitir o denegar el acceso a todas las identidades (usuarios y roles) de una Cuenta de AWS. En las políticas de claves, se usa el elemento Principal para especificar las identidades a las que se aplica la declaración de política. La sintaxis del elemento Principal no proporciona una forma de especificar todas las identidades en una Cuenta de AWS. Sin embargo, puede lograr este efecto combinando esta clave de condición con un Principal elemento que especifique todas AWS las identidades.

Puede usarla para controlar el acceso a cualquier operación de recurso clave de KMS, es decir, cualquier AWS KMS operación que utilice una clave de KMS concreta. Para identificar las operaciones de recursos clave KMS, en laTabla de acciones y recursos, busque un valor de KMS key en la columna Resources para la operación. También es válido para operaciones que administran almacenes de claves personalizados.

Por ejemplo, la siguiente declaración de política de claves demuestra cómo utilizar la clave de condición kms:CallerAccount. Esta declaración de política se encuentra en la política clave Clave administrada de AWS de Amazon EBS. Combina un Principal elemento que especifica todas las AWS identidades con la clave de kms:CallerAccount condición para permitir el acceso efectivo a todas las identidades en Cuenta de AWS 111122223333. Contiene una clave de AWS KMS condición adicional (kms:ViaService) para limitar aún más los permisos al permitir únicamente las solicitudes que llegan a través de Amazon EBS. Para obtener más información, consulte kms: ViaService.

{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }

kms: CustomerMasterKeySpec (obsoleto)

La clave de condición kms:CustomerMasterKeySpec está obsoleta. En su lugar, utilice la clave de KeySpec condición kms:.

Las claves de condición kms:CustomerMasterKeySpec y kms:KeySpec funcionan de la misma forma. Solo los nombres difieren. Le recomendamos que utilice kms:KeySpec. Sin embargo, para evitar cambios irrelevantes, AWS KMS es compatible con ambas claves de condición.

kms: CustomerMasterKeyUsage (obsoleto)

La clave de condición kms:CustomerMasterKeyUsage está obsoleta. En su lugar, utilice la clave de KeyUsage condición kms:.

Las claves de condición kms:CustomerMasterKeyUsage y kms:KeyUsage funcionan de la misma forma. Solo los nombres difieren. Le recomendamos que utilice kms:KeyUsage. Sin embargo, para evitar cambios irrelevantes, AWS KMS es compatible con ambas claves de condición.

km: DataKeyPairSpec

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:DataKeyPairSpec

Cadena

Valor único

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a las GenerateDataKeyPairWithoutPlaintextoperaciones GenerateDataKeyPairy en función del valor del KeyPairSpec parámetro de la solicitud. Por ejemplo, puede permitir que un usuario genere solo determinados tipos de pares de claves de datos.

El siguiente ejemplo de declaración de política de claves utiliza la clave de condición kms:DataKeyPairSpec para permitir a los usuarios utilizar la clave KMS para generar solo pares de claves de datos RSA.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }

Véase también

km: EncryptionAlgorithm

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:EncryptionAlgorithm

Cadena

Valor único

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de claves y políticas de IAM

Puede utilizar la clave de condición kms:EncryptionAlgorithm para controlar el acceso a operaciones criptográficas en función del algoritmo de cifrado que se utiliza en la operación. Para las ReEncryptoperaciones de cifrado, descifrado y, por el contrario, controla el acceso en función del valor del EncryptionAlgorithmparámetro de la solicitud. Para operaciones que generan claves de datos y pares de claves de datos, controla el acceso basado en el algoritmo de cifrado que se utiliza para cifrar la clave de datos.

Esta clave de condición no afecta a las operaciones que se realizan fuera de AWS KMS, como el cifrado con la clave pública de un par de claves KMS asimétricas fuera de. AWS KMS

EncryptionAlgorithm parámetro en una solicitud

Para permitir a los usuarios utilizar solo un algoritmo de cifrado determinado con una clave KMS, utilice una declaración de política con un efecto Deny y un operador de condición StringNotEquals. Por ejemplo, la siguiente declaración de política de claves de ejemplo prohíbe a las entidades principales que pueden asumir el rol ExampleRole utilizar esta clave KMS en las operaciones criptográficas especificadas, a menos que el algoritmo de cifrado de la solicitud sea RSAES_OAEP_SHA_256, un algoritmo de cifrado asimétrico que se usa con claves KMS RSA.

A diferencia de una declaración de política que permite a un usuario utilizar un algoritmo de cifrado determinado, una declaración de política con un doble negativo como este impide que otras políticas y concesiones para esta clave KMS permitan que este rol utilice otros algoritmos de cifrado. Deny en esta declaración de política tiene prioridad sobre cualquier otra política de claves o política de IAM con un efecto Allow y tiene prioridad sobre todas las concesiones para esta clave KMS y sus entidades principales.

{ "Sid": "Allow only one encryption algorithm with this asymmetric KMS key", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } } }

Algoritmo de cifrado utilizado para la operación

También puede utilizar la clave de condición kms:EncryptionAlgorithm para controlar el acceso a operaciones según el algoritmo de cifrado utilizado en la operación, incluso cuando el algoritmo no se especifica en la solicitud. Esto le permite requerir o prohibir el algoritmo SYMMETRIC_DEFAULT, que puede que no se especifique en una solicitud porque es el valor predeterminado.

Esta característica le permite usar la clave de condición kms:EncryptionAlgorithm para controlar el acceso a las operaciones que generan claves de datos y pares de claves de datos. Estas operaciones solo utilizan claves KMS de cifrado simétricas y el algoritmo SYMMETRIC_DEFAULT.

Por ejemplo, esta política de IAM limita sus entidades principales al cifrado simétrico. Deniega el acceso a cualquier clave KMS en la cuenta de ejemplo para operaciones criptográficas a menos que el algoritmo de cifrado especificado en la solicitud o utilizado en la operación sea SYMMETRIC_DEFAULT. Incluye GenerateDataKey* GenerateDataKeyadiciones GenerateDataKeyWithoutPlaintext, GenerateDataKeyPair, y GenerateDataKeyPairWithoutPlaintexta los permisos. La condición no tiene ningún efecto en estas operaciones porque siempre utilizan un algoritmo de cifrado simétrico.

{ "Sid": "AllowOnlySymmetricAlgorithm", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } } }

Véase también

kmsEncryptionContext: clave de contexto

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:EncryptionContext:context-key

Cadena

Valor único

CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de claves y políticas de IAM

Puede usar la clave de condición kms:EncryptionContext:context-key para controlar el acceso a una clave KMS de cifrado simétrica en función del contexto de cifrado de una solicitud para una operación criptográfica. Utilice esta clave de condición para evaluar la clave y el valor del par de contexto de cifrado. Para evaluar solo las claves de contexto de cifrado o para requerir un contexto de cifrado independientemente de las claves o los valores, utilice la clave EncryptionContextKeys condicionada kms:.

nota

Los valores de claves de condición deben ajustarse a las reglas de caracteres de políticas de claves y políticas de IAM. Algunos caracteres válidos en un contexto de cifrado no son válidos en las políticas. Es posible que no pueda utilizar esta clave de condición para expresar todos los valores de contexto de cifrado válidos. Para obtener más información sobre las reglas del documento de política de claves, consulte Formato de la política de claves. Para obtener más información sobre las reglas del documento de política de IAM, consulte Requisitos de nombres de IAM en la Guía del usuario de IAM.

No puede especificar un contexto de cifrado en una operación criptográfica con una clave KMS asimétrica o una clave KMS HMAC. Los algoritmos asimétricos y los algoritmos MAC no son compatibles con un contexto de cifrado.

Para usar la clave de condición de clave de contexto kmsEncryptionContext::, sustituya el marcador de posición de la clave de contexto por la clave de contexto de cifrado. Sustituya el marcador de posición context-value por el valor de contexto de cifrado.

"kms:EncryptionContext:context-key": "context-value"

Por ejemplo, la siguiente clave de condición especifica un contexto de cifrado en el que la clave es AppName y el valor es ExampleApp (AppName = ExampleApp).

"kms:EncryptionContext:AppName": "ExampleApp"

Esta es una clave de condición de un solo valor. La clave de la clave de condición especifica una clave de contexto de cifrado determinada (context-key). Aunque puede incluir varios pares de contexto de cifrado en cada solicitud de la API, el par de contexto de cifrado con el context-key puede tener solo un valor. Por ejemplo, la clave de condición kms:EncryptionContext:Department solo se aplica a los pares de contexto de cifrado con una clave Department, y cualquier par de contexto de cifrado dado con la clave Department solo puede tener un valor.

No utilice un operador de conjunto con la clave de condición kms:EncryptionContext:context-key. Si crea una declaración de política con una acción Allow, la clave de condición kms:EncryptionContext:context-key y el operador de conjunto ForAllValues, la condición permite solicitudes sin contexto de cifrado y solicitudes con pares de contexto de cifrado que no se especifican en la condición de política.

aviso

No utilice un operador de conjunto ForAnyValue o ForAllValues con esta clave de condición de un solo valor. Estos operadores de conjunto pueden crear una condición de política que no requiera valores que pretenda requerir y permite valores que pretende prohibir.

Si crea o actualiza una política que incluye un operador ForAllValues set con la clave de contexto kms:EncryptionContext:, devuelve el siguiente mensaje de error: AWS KMS

OverlyPermissiveCondition:EncryptionContext: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified encryption context or with an unspecified encryption context. To fix, remove ForAllValues.

Para requerir un par de contexto de cifrado concreto, utilice la clave de condición kms:EncryptionContext:context-key con el operador StringEquals.

En la siguiente declaración de política de claves de ejemplo se permite a las entidades principales que pueden asumir la función utilizar la clave KMS en una solicitud GenerateDataKey solo cuando el contexto de cifrado de la solicitud contiene el par AppName:ExampleApp. Se permiten otros pares de contexto de cifrado.

El nombre de las claves distingue entre mayúsculas y minúsculas. La distinción de mayúsculas y minúsculas del valor se determina mediante el operador de condición, como StringEquals. Para obtener más detalles, consulte Uso de mayúsculas y minúsculas en las condiciones de contexto de cifrado.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

Para exigir un par de contextos de cifrado y prohibir todos los demás pares de contextos de cifrado, utilice kms:EncryptionContext: context-key y kms:EncryptionContextKeysen la declaración de política. En la siguiente declaración de política de claves se utiliza la condición kms:EncryptionContext:AppName para requerir el par de contexto de cifrado AppName=ExampleApp en la solicitud. También utiliza una clave de condición kms:EncryptionContextKeys con el operador de conjunto ForAllValues para permitir solo la clave de contexto de cifrado AppName.

El operador de conjunto ForAllValues limita las claves de contexto de cifrado en la solicitud a AppName. Si la condición kms:EncryptionContextKeys con el operador de conjunto ForAllValues se utilizó solo en una declaración de política, este operador de conjunto permitiría solicitudes sin contexto de cifrado. Sin embargo, si la solicitud no tenía contexto de cifrado, la condición kms:EncryptionContext:AppName fallaría. Para conocer los detalles sobre el operador de conjunto ForAllValues, consulte Uso de múltiples claves y valores en la Guía del usuario de IAM.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KeyUsers" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName" ] } } }

También puede utilizar esta clave de condición para denegar el acceso a una clave KMS para una operación concreta. En la siguiente declaración de política de claves de ejemplo se utiliza un efecto Deny para prohibir a la entidad principal utilizar la clave KMS si el contexto de cifrado de la solicitud contiene un par de contexto de cifrado Stage=Restricted. Esta condición permite una solicitud con otros pares de contexto de cifrado, incluidos los pares de contexto de cifrado con la clave Stage y otros valores, como Stage=Test.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": "Restricted" } } }

Uso de varios pares de contexto de cifrado

Puede requerir o prohibir varios pares de contexto de cifrado. También puede requerir uno de varios pares de contexto de cifrado. Para conocer los detalles de la lógica utilizada para interpretar estas condiciones, consulte Crear una condición con varias claves o valores en la Guía del usuario de IAM.

nota

Las versiones anteriores de este tema mostraban declaraciones de política que utilizaban los operadores ForAnyValue y ForAllValues set con la clave de condición kms:EncryptionContext: context-key. Usando un operador de conjunto con una clave de condición de un solo valor puede dar lugar a políticas que permiten solicitudes sin contexto de cifrado y pares de contexto de cifrado no especificados.

Por ejemplo, una condición de política con el efecto Allow, el operador de conjunto ForAllValues y la clave de condición "kms:EncryptionContext:Department": "IT" no limita el contexto de cifrado al par "Department=IT". Permite solicitudes sin contexto de cifrado y solicitudes con pares de contexto de cifrado no especificados, como Stage=Restricted.

Revise sus políticas y elimine el operador set de cualquier condición con kms:EncryptionContext: context-key. Los intentos de crear o actualizar una política con este formato fallan con una excepción OverlyPermissiveCondition. Para resolver el error, elimine el operador de conjunto.

Para requerir varios pares de contexto de cifrado, enumere los pares en la misma condición. En la siguiente declaración de política de claves de ejemplo se requieren dos pares de contexto de cifrado, Department=IT y Project=Alpha. Debido a que las condiciones tienen diferentes claves (kms:EncryptionContext:Department y kms:EncryptionContext:Project), están implícitamente conectados por un operador AND. Otros pares de contexto de cifrado están permitidos, pero no son necesarios.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" } } }

Para requerir un par de contexto de cifrado U otro par, coloque cada clave de condición en una declaración de política independiente. En la siguiente política de claves de ejemplo se requiere Department=IT o Project=Alpha pares, o ambos. Otros pares de contexto de cifrado están permitidos, pero no son necesarios.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Project": "Alpha" } } }

Para exigir pares de cifrado específicos y excluir todos los demás pares de contextos de cifrado, utilice tanto la clave de contexto kms:EncryptionContext: como la de la declaración de política kms:EncryptionContextKeys. La siguiente declaración de política clave utiliza la condición de clave contextual kmsEncryptionContext:: para requerir un contexto de cifrado con ambos pares y. Department=IT Project=Alpha Utiliza una clave de condición kms:EncryptionContextKeys con el operador de conjuntos ForAllValues para permitir solo las claves de contexto de cifrado Department y Project.

El operador de conjuntos ForAllValues limita las claves de contexto de cifrado en la solicitud a Department y Project. Si se usara solo en una condición, este operador de conjunto permitiría solicitudes sin contexto de cifrado, pero en esta configuración, la clave de contexto kms:EncryptionContext: en esta condición fallaría.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "Department", "Project" ] } } }

También puede prohibir varios pares de contexto de cifrado. En la siguiente declaración de política de claves de ejemplo se utiliza un efecto Deny para prohibir a la entidad principal utilizar las claves KMS si el contexto de cifrado de la solicitud contiene un par Stage=Restricted o Stage=Production.

Múltiples valores (Restricted y Production) para la misma clave (kms:EncryptionContext:Stage) están implícitamente conectados por un OR. Para conocer los detalles, consulte la Lógica de evaluación para condiciones con múltiples claves o valores en la Guía del usuario de IAM.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }

Uso de mayúsculas y minúsculas en las condiciones de contexto de cifrado

El contexto de cifrado que se especifica en una operación de descifrado debe coincidir exactamente, incluido el uso de mayúsculas y minúsculas, con el contexto de cifrado que se especifica en la operación de cifrado. Solo puede variar el orden de los pares de un contexto de cifrado con varios pares.

Sin embargo, en las condiciones de políticas, la clave de condición no distingue entre mayúsculas y minúsculas. La distinción de mayúsculas y minúsculas del valor de la condición se determina por el operador de condición de política que utilice, como StringEquals o StringEqualsIgnoreCase.

Por tanto, la clave de condición, que consta del prefijo kms:EncryptionContext: y el valor sustituto de context-key, no distingue mayúsculas de minúsculas. Una política que utiliza esta condición no comprueba el uso de mayúsculas o minúsculas de ninguno de los elementos de la clave de condición. La distinción de mayúsculas y minúsculas del valor, es decir context-value, lo determina el operador de la política de condición.

Por ejemplo, la siguiente declaración de política permite la operación cuando el contexto de cifrado incluye una clave Appname, independientemente de si está en mayúsculas o minúsculas. La condición StringEquals requiere que ExampleApp esté en mayúsculas cuando se especifique.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }

Para requerir una clave de contexto de cifrado que distinga entre mayúsculas y minúsculas, utilice la condición kms: EncryptionContextKeys policy con un operador de condición que distinga entre mayúsculas y minúsculas, como. StringEquals En esta condición de política, como la clave de contexto de cifrado es el valor de la condición de política, el operador de condición determina si se distingue entre mayúsculas y minúsculas.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

Para exigir una evaluación de la clave y el valor del contexto de cifrado que distinga entre mayúsculas y minúsculas, utilice las condiciones de política kms:EncryptionContextKeys y la clave de contexto kmsEncryptionContext:: juntas en la misma declaración de política. El operador de condición sensible a mayúsculas y minúsculas (como StringEquals) siempre se aplica al valor de la condición. La clave de contexto de cifrado (como AppName) es el valor de la condición kms:EncryptionContextKeys. El valor del contexto de cifrado (por ejemploExampleApp) es el valor de la condición de clave contextual kms:EncryptionContext:.

Por ejemplo, en la siguiente declaración de política de clave de ejemplo, como el operador StringEquals distingue entre mayúsculas y minúsculas, tanto la clave de contexto de cifrado como el valor de contexto de cifrado distinguen entre mayúsculas y minúsculas.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" }, "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

Uso de variables en una condición de contexto de cifrado

La clave y el valor de un par de contexto de cifrado deben ser cadenas literales simples. No pueden ser números enteros ni objetos, ni ningún tipo que no esté totalmente resuelto. Si utiliza un tipo diferente, como un entero o un flotante, lo AWS KMS interpreta como una cadena literal.

"encryptionContext": { "department": "10103.0" }

Sin embargo, el valor de la clave de condición kms:EncryptionContext:context-key puede ser una variable de política de IAM. Estas variables de política se resuelven en tiempo de ejecución con arreglo a los valores de la solicitud. Por ejemplo, aws:CurrentTime se resuelve en la hora de la solicitud y aws:username se resuelve en el nombre descriptivo del autor de la llamada.

Puede utilizar estas variables de política para crear una declaración de política con una condición que requiera información muy específica de un contexto de cifrado, como el nombre de usuario del autor de la llamada. Como contiene una variable, puede utilizar la misma declaración de política con todos los usuarios que puedan adoptar ese rol. No tiene que escribir una declaración de política diferente para cada usuario.

Imagine una situación en la que desea que todos los usuarios que puedan adoptar un rol utilicen la misma clave KMS para cifrar y descifrar los datos. Sin embargo, solo quiere que puedan descifrar los datos que ellos han cifrado. Comience por exigir que todas las solicitudes AWS KMS incluyan un contexto de cifrado en el que la clave esté user y el valor sea el nombre de AWS usuario de la persona que llama, como el siguiente.

"encryptionContext": { "user": "bob" }

A continuación, para forzar la aplicación de este requisito, puede utilizar una declaración de política como la del siguiente ejemplo. Esta declaración de política concede al rol TestTeam permiso para cifrar y descifrar datos con la clave KMS. Sin embargo, el permiso solo es válido cuando el contexto de cifrado de la solicitud incluye un par "user": "<username>". Para representar el nombre de usuario, la condición utiliza la variable de política aws:username.

Cuando se evalúa la solicitud, la variable de condición se sustituye por el nombre de usuario del autor de la llamada. Por tanto, la condición necesita el contexto de cifrado "user": "bob" para "bob" y "user": "alice" para "alice".

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }

Puede utilizar una variable de política de IAM únicamente en el valor del par de la clave de condición kms:EncryptionContext:context-key. No puede utilizar una variable en la clave.

También puede utilizar claves de contexto específicas del proveedor en las variables. Estas claves de contexto identifican de forma exclusiva a los usuarios que han iniciado sesión AWS mediante la federación de identidades web.

Al igual que todas las variables, estas solo se pueden utilizar en la condición de política kms:EncryptionContext:context-key, no en el contexto de cifrado real. Y solo se pueden utilizar en el valor de la condición, no en la clave.

Por ejemplo, la siguiente declaración de política de clave es similar a la anterior. Sin embargo, la condición requiere un contexto de cifrado en el que la clave sea sub y el valor identifique de forma inequívoca a un usuario que ha iniciado sesión en un grupo de usuarios de Amazon Cognito. Para obtener más información acerca de la identificación de usuarios y roles en Amazon Cognito, consulte Roles de IAMen la Guía para desarrolladores de Amazon Cognito.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } } }

Véase también

kms: EncryptionContextKeys

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:EncryptionContextKeys

Cadena (lista)

Multivalor

CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de claves y políticas de IAM

Puede usar la clave de condición kms:EncryptionContextKeys para controlar el acceso a una clave KMS de cifrado simétrica en función del contexto de cifrado de una solicitud para una operación criptográfica. Utilice esta clave de condición para evaluar únicamente la clave de cada par de contexto de cifrado. Utilice esta clave de condición kms:EncryptionContext:context-key para evaluar la clave y el valor del par de contexto de cifrado.

No puede especificar un contexto de cifrado en una operación criptográfica con una clave KMS asimétrica o una clave KMS HMAC. Los algoritmos asimétricos y los algoritmos MAC no son compatibles con un contexto de cifrado.

nota

Los valores de las claves de condición, incluida una clave de contexto de cifrado, deben ajustarse a las reglas de caracteres y codificación de las políticas de AWS KMS claves. Es posible que no pueda utilizar esta clave de condición para expresar todas las claves de contexto de cifrado válidas. Para obtener más información sobre las reglas del documento de política de claves, consulte Formato de la política de claves. Para obtener más información sobre las reglas del documento de política de IAM, consulte Requisitos de nombres de IAM en la Guía del usuario de IAM.

Esta es una clave de condición multivalor. Puede especificar varios pares de contexto de cifrado en cada solicitud de la API. kms:EncryptionContextKeys compara las claves de contexto de cifrado de la solicitud con el conjunto de claves de contexto de cifrado de la política. Para determinar cómo se comparan estos conjuntos, debe proporcionar un operador de conjuntos ForAnyValue o ForAllValues en la condición de política. Para conocer los detalles sobre los operadores de conjuntos, consulte Uso de múltiples claves y valores en la Guía del usuario de IAM.

  • ForAnyValue: al menos una clave de contexto de cifrado en la solicitud debe coincidir con una clave de contexto de cifrado en la condición de política. Se permiten otras claves de contexto de cifrado. Si la solicitud no tiene contexto de cifrado, la condición no se cumple.

  • ForAllValues: cada clave de contexto de cifrado de la solicitud debe coincidir con una clave de contexto de cifrado en la condición de política. Este operador de conjunto limita las claves de contexto de cifrado a aquellas en la condición de política. No requiere ninguna clave de contexto de cifrado, pero prohíbe las claves de contexto de cifrado no especificadas.

En la siguiente declaración de política de claves de ejemplo se utiliza la condición kms:EncryptionContextKeys con la clave de condición del operador de conjuntos ForAnyValue. Esta declaración de la política utiliza la clave KMS para las operaciones especificadas, pero solamente cuando al menos uno de los pares de contexto de cifrado de la solicitud incluye la clave AppName, independientemente de su valor.

Por ejemplo, esta declaración de política de claves permite una solicitud GenerateDataKey con dos pares de contexto de cifrado, AppName=Helper y Project=Alpha, porque el primer par de contexto de cifrado cumple con la condición. Una solicitud con solo Project=Alpha o sin contexto de cifrado fallaría.

Como la operación de la StringEqualscondición distingue entre mayúsculas y minúsculas, esta declaración de política exige que la clave de contexto de cifrado esté escrita y escrita en mayúsculas y minúsculas. Sin embargo, puede utilizar un operador de condición que omita el uso de mayúsculas y minúsculas de la clave, como StringEqualsIgnoreCase.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

También puede utilizar la clave de condición kms:EncryptionContextKeys para solicitar un contexto de cifrado (cualquier contexto de cifrado) en las operaciones criptográficas que utilizan la clave KMS.

La siguiente declaración de política de ejemplo utiliza la clave de condición kms:EncryptionContextKeys con el operador de condición Null para permitir el acceso para utilizar una clave KMS de solo cuando el contexto de cifrado de la solicitud de la API no sea nulo. Esta condición no comprueba las claves ni los valores del contexto de cifrado. Solo verifica que existe el contexto de cifrado.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } } }

Véase también

km: ExpirationModel

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:ExpirationModel

Cadena

Valor único

ImportKeyMaterial

Políticas de claves y políticas de IAM

La clave de kms:ExpirationModel condición controla el acceso a la ImportKeyMaterialoperación en función del valor del ExpirationModelparámetro de la solicitud.

ExpirationModel es un parámetro opcional que determina si el material de claves importado vence. Los valores válidos son KEY_MATERIAL_EXPIRES y KEY_MATERIAL_DOES_NOT_EXPIRE. El valor predeterminado es KEY_MATERIAL_EXPIRES.

La fecha y la hora de caducidad vienen determinadas por el valor del ValidToparámetro. El parámetro ValidTo es necesario a menos que el valor del parámetro ExpirationModel sea KEY_MATERIAL_DOES_NOT_EXPIRE. También puede usar la clave de ValidTo condición kms: para exigir una fecha de caducidad determinada como condición de acceso.

La siguiente declaración de política de ejemplo utiliza la clave de condición kms:ExpirationModel para permitir a los usuarios importar solamente material de claves en una clave KMS cuando la solicitud incluye el parámetro ExpirationModel y su valor sea KEY_MATERIAL_DOES_NOT_EXPIRE.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } } }

También puede utilizar la clave de condición kms:ExpirationModel para que un usuario solamente pueda importar material de claves cuando expire el material de claves. En el ejemplo siguiente, la declaración de la política de clave utiliza la clave de condición kms:ExpirationModel con el operador de condición Null para que un usuario solamente pueda importar material de claves cuando la solicitud no contenga un parámetro ExpirationModel. El valor predeterminado ExpirationModel esKEY_MATERIAL_EXPIRES.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }

Véase también

kms: GrantConstraintType

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:GrantConstraintType

Cadena

Valor único

CreateGrant

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a la CreateGrantoperación en función del tipo de restricción de concesión de la solicitud.

Al crear una concesión, también puede especificar una restricción de concesión para permitir las operaciones que permite la concesión solo cuando esté presente un determinado contexto de cifrado. La restricción de concesión puede ser uno de estos dos tipos: EncryptionContextEquals o EncryptionContextSubset. Puede usar esta clave de condición para comprobar que la solicitud contiene un tipo u otro.

importante

No incluya información confidencial en este campo. Este campo puede mostrarse en texto plano en CloudTrail los registros y otros resultados.

En la siguiente declaración de política de clave utiliza la clave de condición kms:GrantConstraintType para permitir que un usuario cree concesiones solo cuando la solicitud incluya una restricción de concesión EncryptionContextEquals. En el ejemplo se muestra una declaración de política en una política de claves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }

Véase también

km: GrantIsFor AWSResource

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:GrantIsForAWSResource

Booleano

Valor único

CreateGrant

ListGrants

RevokeGrant

Políticas de claves y políticas de IAM

Permite o deniega el CreateGrantpermiso para RevokeGrantlas operaciones o solo cuando un AWS servicio integrado AWS KMS llama a la operación en nombre del usuario. ListGrants Esta condición de política no permite al usuario realizar estas operaciones de concesión directamente.

La siguiente declaración de política de ejemplo utiliza la clave de condición kms:GrantIsForAWSResource. Permite a AWS los servicios integrados AWS KMS, como Amazon EBS, crear concesiones en esta clave de KMS en nombre del principal especificado.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

Véase también

kms: GrantOperations

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:GrantOperations

Cadena

Multivalor

CreateGrant

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a la CreateGrantoperación en función de las operaciones de concesión de la solicitud. Por ejemplo, puede permitir que los usuarios creen concesiones que deleguen el permiso para cifrar pero no para descifrar. Para obtener más información acerca de concesiones, consulte Uso de concesiones.

Esta es una clave de condición de varios valores. kms:GrantOperations compara el conjunto de operaciones de concesión en la solicitud CreateGrant al conjunto de operaciones de concesión de la política. Para determinar cómo se comparan estos conjuntos, debe proporcionar un operador de conjuntos ForAnyValue o ForAllValues en la condición de política. Para conocer los detalles sobre los operadores de conjuntos, consulte Uso de múltiples claves y valores en la Guía del usuario de IAM.

  • ForAnyValue: al menos una operación de concesión en la solicitud debe coincidir con una de las operaciones de concesión en la condición de política. Se permiten otras operaciones de concesión.

  • ForAllValues: Cada operación de subvención incluida en la solicitud debe coincidir con una operación de subvención incluida en la condición de la política. Este operador de conjuntos limita las operaciones de concesión a las especificadas en la condición de política. No requiere ninguna operación de concesión, pero prohíbe operaciones de concesión no especificadas.

    ForAllValues también devuelve el valor true cuando no hay operaciones de subvención en la solicitud, pero CreateGrant no las permite. Si el parámetro Operations falta o tiene un valor nulo, la solicitud CreateGrant falla.

La siguiente declaración de política de clave de ejemplo utiliza la clave de condición kms:GrantOperations para crear concesiones solo cuando las operaciones de concesión sean Encrypt, ReEncryptTo o ambas. Si la concesión incluye cualquier otra operación, la solicitud CreateGrant falla.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }

Si cambia el operador de conjuntos en la condición de política a ForAnyValue, la declaración de política requerirá que al menos una de las operaciones de concesión sea Encrypt o ReEncryptTo, pero permitirá otras operaciones de concesión, como Decrypt o ReEncryptFrom.

Véase también

km: GranteePrincipal

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:GranteePrincipal

Cadena

Valor único

CreateGrant

Políticas de IAM y de claves

Puede utilizar esta clave de condición para controlar el acceso a la CreateGrantoperación en función del valor del GranteePrincipalparámetro de la solicitud. Por ejemplo, puede crear concesiones para utilizar una clave KMS cuando la entidad principal del beneficiario en la solicitud CreateGrant coincida con la entidad principal especificada en la declaración de la condición.

Para especificar el principal beneficiario, utilice el nombre de recurso de Amazon (ARN) de un principal. AWS Entre los principales válidos se incluyen los usuarios de IAM Cuentas de AWS, los roles de IAM, los usuarios federados y los usuarios con roles asumidos. Para obtener ayuda con la sintaxis del ARN de un principal, consulte los ARN de IAM en la Guía del usuario de IAM.

En el ejemplo siguiente, la declaración de la política de claves utiliza la clave de condición kms:GranteePrincipal para crear concesiones de una clave KMS cuando la entidad principal del beneficiario de la concesión sea LimitedAdminRole.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

Véase también

kms: KeyOrigin

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:KeyOrigin

Cadena

Valor único

CreateKey

Operaciones de recursos de claves KMS

Políticas de IAM

Políticas de claves y políticas de IAM

La clave de condición kms:KeyOrigin controla el acceso a las operaciones en función del valor de la propiedad Origin de clave KMS creada por la operación o utilizada en ella. Funciona como una condición de recurso o una condición de solicitud.

Puede utilizar esta clave de condición para controlar el acceso a la CreateKeyoperación en función del valor del parámetro Origin de la solicitud. Los valores válidos para Origin son AWS_KMS, AWS_CLOUDHSM y EXTERNAL.

Por ejemplo, puede crear una clave KMS solo cuando el material clave se genere en AWS KMS (AWS_KMS), solo cuando el material clave se genere en un AWS CloudHSM clúster asociado a un almacén de claves personalizado (AWS_CLOUDHSM) o solo cuando el material clave se importe de una fuente externa (EXTERNAL).

El siguiente ejemplo de declaración de política clave utiliza la clave de kms:KeyOrigin condición para crear una clave de KMS solo cuando se AWS KMS crea el material clave.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } } ] }

También puede utilizar la clave de condición kms:KeyOrigin para controlar el acceso a las operaciones que utilizan o administran una clave de KMS en función de la propiedad Origin de la clave de KMS utilizada para la operación. La operación debe ser una operación de recursos de clave KMS, es decir, una operación que está autorizada para una clave KMS en particular. Para identificar las operaciones de recursos clave KMS, en laTabla de acciones y recursos, busque un valor de KMS key en la columna Resources para la operación.

Por ejemplo, la siguiente política de IAM permite a las entidades principales realizar las operaciones de recursos de clave KMS especificadas, pero solo con las claves KMS de la cuenta que se crearon en un almacén de claves personalizado.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } }

Véase también

kms: KeySpec

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:KeySpec

Cadena

Valor único

CreateKey

Operaciones de recursos de claves KMS

Políticas de IAM

Políticas de claves y políticas de IAM

La clave de condición kms:KeySpec controla el acceso a las operaciones en función del valor de la propiedad KeySpec de clave KMS creada por la operación o utilizada en ella.

Puede utilizar esta clave de condición en una política de IAM para controlar el acceso a la CreateKeyoperación en función del valor del KeySpecparámetro de una CreateKey solicitud. Por ejemplo, puede utilizar esta condición para permitir a los usuarios crear solo claves KMS de cifrado simétricas o solo claves KMS HMAC.

El siguiente ejemplo la declaración de política de IAM utiliza la clave de condición kms:KeySpec para permitir a las entidades principales crear solo claves KMS asimétricas RSA. El permiso solo es válido cuando el KeySpec en la solicitud comienza con RSA_.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "RSA_*" } } }

También puede utilizar la clave de condición kms:KeySpec para controlar el acceso a las operaciones que utilizan o administran una clave de KMS en función de la propiedad KeySpec de la clave de KMS utilizada para la operación. La operación debe ser una operación de recursos de clave KMS, es decir, una operación que está autorizada para una clave KMS en particular. Para identificar las operaciones de recursos clave de KMS, en la tabla de acciones y recursos, busque un valor de KMS key en la columna Resources para la operación.

Por ejemplo, la siguiente política de IAM permite a las entidades principales realizar las operaciones de recursos de clave KMS especificadas, pero solo con las claves KMS de cifrado simétricas de la cuenta.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } }

Véase también

kms: KeyUsage

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:KeyUsage

Cadena

Valor único

CreateKey

Operaciones de recursos de claves KMS

Políticas de IAM

Políticas de claves y políticas de IAM

La clave de condición kms:KeyUsage controla el acceso a las operaciones en función del valor de la propiedad KeyUsage de clave KMS creada por la operación o utilizada en ella.

Puede utilizar esta clave de condición para controlar el acceso a la CreateKeyoperación en función del valor del KeyUsageparámetro de la solicitud. Los valores válidos para KeyUsage son ENCRYPT_DECRYPT, SIGN_VERIFY y GENERATE_VERIFY_MAC.

Por ejemplo, puede crear una clave KMS solo cuando KeyUsage sea ENCRYPT_DECRYPT o denegar un permiso de usuario cuando KeyUsage sea SIGN_VERIFY.

En el siguiente ejemplo la declaración de política de IAM utiliza la clave de condición kms:KeyUsage para crear una clave KMS solo cuando KeyUsage sea ENCRYPT_DECRYPT.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyUsage": "ENCRYPT_DECRYPT" } } }

También puede utilizar la clave de condición kms:KeyUsage para controlar el acceso a las operaciones que utilizan o administran una clave KMS en función de la propiedad KeyUsage de la clave KMS utilizada para la operación. La operación debe ser una operación de recursos de clave KMS, es decir, una operación que está autorizada para una clave KMS en particular. Para identificar las operaciones de recursos clave KMS, en laTabla de acciones y recursos, busque un valor de KMS key en la columna Resources para la operación.

Por ejemplo, la siguiente política de IAM permite a las entidades principales realizar las operaciones de recursos de clave KMS especificadas, pero solo con las claves KMS de la cuenta que se utilizan para la firma y la verificación.

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyUsage": "SIGN_VERIFY" } } }

Véase también

km: MacAlgorithm

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:MacAlgorithm

Cadena

Valor único

GenerateMac

VerifyMac

Políticas de claves y políticas de IAM

Puede utilizar la clave de kms:MacAlgorithm condición para controlar el acceso a las VerifyMacoperaciones GenerateMacy en función del valor del MacAlgorithm parámetro de la solicitud.

El siguiente ejemplo de política de claves permite a los usuarios que pueden asumir el rol de testers utilizar la clave KMS HMAC para generar y verificar etiquetas HMAC solo cuando el algoritmo MAC de la solicitud es HMAC_SHA_384 o HMAC_SHA_512. Esta política utiliza dos declaraciones de políticas independientes, cada una con su propia condición. Si especifica más de un algoritmo MAC en una única declaración de condición, la condición requiere ambos algoritmos, en lugar de uno u otro.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_384" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_512" } } } ] }

Véase también

km: MessageType

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:MessageType

Cadena

Valor único

Sign

Verify

Políticas de claves y políticas de IAM

La clave de condición kms:MessageType controla el acceso a las operaciones Sign y Verify en función del valor del parámetro MessageType de la solicitud. Los valores válidos para MessageType son RAW y DIGEST.

Por ejemplo, la siguiente declaración de política de claves utiliza la clave de condición kms:MessageType para utilizar una clave KMS asimétrica para firmar un mensaje, pero no un resumen de mensajes.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }

Véase también

km: MultiRegion

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:MultiRegion

Booleano

Valor único

CreateKey

Operaciones de recursos de claves KMS

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para permitir operaciones solo en claves de una región o solo en claves de varias regiones. La clave de kms:MultiRegion condición controla el acceso a AWS KMS las operaciones en las claves de KMS y a la CreateKeyoperación en función del valor de la MultiRegion propiedad de la clave de KMS. Los valores válidos son true (de varias regiones) y false (de una sola región). Todas las claves KMS tienen una propiedad MultiRegion.

El siguiente ejemplo la declaración de política de IAM utiliza la clave de condición kms:MultiRegion para permitir a las entidades principales crear solo claves de una sola región.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:MultiRegion": false } } }

kms: MultiRegionKeyType

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:MultiRegionKeyType

Cadena

Valor único

CreateKey

Operaciones de recursos de claves KMS

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para permitir operaciones solo en claves principales de varias regiones o solo en claves de réplicas de varias regiones. La clave de kms:MultiRegionKeyType condición controla el acceso a AWS KMS las operaciones en las claves de KMS y la CreateKeyoperación en función de la MultiRegionKeyType propiedad de la clave de KMS. Los valores válidos son PRIMARY y REPLICA. Solo las claves de varias regiones tienen una propiedad MultiRegionKeyType.

Normalmente, utilice la clave de condición kms:MultiRegionKeyType en una política de IAM para controlar el acceso a varias claves KMS. Sin embargo, dado que una clave de varias regiones puede cambiar a principal o réplica, es posible que desee utilizar esta condición en una política de clave para permitir una operación solo cuando la clave de varias regiones concreta sea una clave principal o de réplica.

Por ejemplo, la siguiente declaración de política de IAM utiliza la clave de condición kms:MultiRegionKeyType para permitir que las principales entidades programen y cancelen la eliminación de claves solo en claves de réplica de varias regiones en la Cuenta de AWS especificada.

{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "kms:MultiRegionKeyType": "REPLICA" } } }

Para permitir o denegar el acceso a todas las claves de varias regiones, puede usar ambos valores o un valor nulo con kms:MultiRegionKeyType. Sin embargo, se recomienda utilizar la clave de MultiRegion condición kms: para ello.

kms: PrimaryRegion

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:PrimaryRegion

Cadena (lista)

Valor único

UpdatePrimaryRegion

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para limitar las regiones de destino de una UpdatePrimaryRegionoperación. Estas son las Regiones de AWS que pueden alojar las claves principales de varias regiones.

La clave de kms:PrimaryRegion condición controla el acceso a la UpdatePrimaryRegionoperación en función del valor del PrimaryRegion parámetro. El PrimaryRegion parámetro especifica la clave Región de AWS de réplica multirregional que se va a convertir en principal. El valor de la condición es uno o más Región de AWS nombres, como us-east-1 oap-southeast-2, o patrones de nombres de regiones, como eu-*

Por ejemplo, la siguiente declaración de política utiliza la clave de condición kms:PrimaryRegion para permitir que las entidades principales actualicen la región principal de una clave de varias regiones a una de las cuatro regiones especificadas.

{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Developer" }, "Resource": "*", "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-east-1", "us-west-2", "eu-west-3", "ap-southeast-2" ] } } }

km: ReEncryptOnSameKey

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:ReEncryptOnSameKey

Booleano

Valor único

ReEncrypt

Políticas de claves y políticas de IAM

Puede usar esta clave de condición para controlar el acceso a la ReEncryptoperación en función de si la solicitud especifica una clave KMS de destino que sea la misma que se utilizó para el cifrado original.

Por ejemplo, la siguiente declaración de política de clave utiliza la clave de condición kms:ReEncryptOnSameKey para volver a cifrar únicamente cuando la clave KMS de destino sea la misma que se utilizó para el cifrado original.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }

kms: RequestAlias

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:RequestAlias

Cadena (lista)

Valor único

Operaciones criptográficas

DescribeKey

GetPublicKey

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para permitir una operación solo cuando la solicitud utiliza un alias determinado para identificar la clave KMS. La clave de condición kms:RequestAlias controla el acceso a una clave KMS utilizada en una operación criptográfica, GetPublicKey, o bien DescribeKey en función del alias que identifica esa clave KMS en la solicitud. (Esta condición de política no afecta a la GenerateRandomoperación porque la operación no utiliza una clave o alias de KMS).

Esta condición admite el control de acceso basado en atributos (ABAC) AWS KMS, que permite controlar el acceso a las claves de KMS en función de las etiquetas y los alias de una clave de KMS. Puede utilizar etiquetas y alias para permitir o denegar el acceso a una clave KMS sin cambiar las políticas o las concesiones. Para obtener más detalles, consulte ABAC para AWS KMS.

Para especificar el alias en esta condición de política, utilice un nombre del alias, como, por ejemplo, alias/project-alpha, o un patrón de nombre de alias, como alias/*test*. No puede especificar una ARN de alias en el valor de esta clave de condición.

Para satisfacer esta condición, el valor del parámetro KeyId de la solicitud debe tener un nombre de alias o ARN de alias coincidente. Si la solicitud utiliza un identificador de clave diferente, no cumple con la condición, incluso si identifica la misma clave KMS.

Por ejemplo, la siguiente declaración de política clave permite al director llamar a la GenerateDataKeyoperación mediante la clave KMS. Sin embargo, esto solo está permitido cuando el valor del parámetro KeyId de la solicitud es alias/finance-key o un ARN de alias con ese nombre de alias, como por ejemplo arn:aws:kms:us-west-2:111122223333:alias/finance-key.

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/developer" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:RequestAlias": "alias/finance-key" } } }

No puede usar esta clave de condición para controlar el acceso a las operaciones de alias, como CreateAliaso DeleteAlias. Para obtener más información sobre cómo controlar el acceso a operaciones de alias, consulte Control del acceso a alias.

km: ResourceAliases

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:ResourceAliases

Cadena (lista)

Multivalor Operaciones de recursos de claves KMS

Solo políticas de IAM

Utilice esta clave de condición para controlar el acceso a una clave KMS según los alias que estén asociados a la clave KMS. La operación debe ser una operación de recursos de clave KMS, es decir, una operación que está autorizada para una clave KMS en particular. Para identificar las operaciones de recursos clave de KMS, en la tabla de acciones y recursos, busque un valor de KMS key en la columna Resources para la operación.

Esta condición admite el control de acceso basado en atributos (ABAC) en AWS KMS. Con ABAC, puede controlar el acceso a las claves KMS en función de las etiquetas asignadas a una clave KMS y los alias asociados a una clave KMS. Puede utilizar etiquetas y alias para permitir o denegar el acceso a una clave KMS sin cambiar las políticas o las concesiones. Para obtener más detalles, consulte ABAC para AWS KMS.

El alias debe ser único en una región Cuenta de AWS y, pero esta condición le permite controlar el acceso a varias claves de KMS de la misma región (mediante el operador de StringLike comparación) o a varias claves Regiones de AWS de KMS en distintas cuentas.

nota

La ResourceAliases condición kms: solo entra en vigor cuando la clave KMS se ajusta a la cuota de alias por clave de KMS. Si una clave KMS supera esta cuota, las entidades principales que están autorizadas a usar la clave KMS mediante la condición kms:ResourceAliases se deniega el acceso a la clave KMS.

Para especificar el alias en esta condición de política, utilice un nombre del alias, como, por ejemplo, alias/project-alpha, o un patrón de nombre de alias, como alias/*test*. No puede especificar una ARN de alias en el valor de esta clave de condición. Para satisfacer la condición, la clave KMS utilizada en la operación debe tener el alias especificado. No importa si la clave KMS se identifica o cómo se identifica en la solicitud de la operación.

Se trata de una clave de condición multivalor que compara el conjunto de alias asociado a una clave KMS con el conjunto de alias de la política. Para determinar cómo se comparan estos conjuntos, debe proporcionar un operador de conjuntos ForAnyValue o ForAllValues en la condición de política. Para conocer los detalles sobre los operadores de conjuntos, consulte Uso de múltiples claves y valores en la Guía del usuario de IAM.

  • ForAnyValue: Al menos un alias asociado a la clave de KMS debe coincidir con un alias de la condición de la política. Se permiten otros alias. Si la clave KMS no tiene alias, la condición no se cumple.

  • ForAllValues: Todos los alias asociados a la clave de KMS deben coincidir con un alias de la política. Este operador de conjuntos limita los alias asociados con la clave KMS a los que se encuentran en la condición de política. No requiere ningún alias, pero prohíbe los alias no especificados.

Por ejemplo, la siguiente declaración de política de IAM permite al director llamar a la GenerateDataKeyoperación desde cualquier clave de KMS especificada Cuenta de AWS que esté asociada al finance-key alias. (Las políticas de clave de las claves KMS afectadas también deben permitir que la cuenta de la entidad principal las utilice para esta operación.) Para indicar que la condición se cumple cuando uno de los muchos alias que podrían estar asociados con la clave KMS es alias/finance-key, la condición utiliza el operador de conjuntos ForAnyValue.

Ya que la condición kms:ResourceAliases se basa en el recurso, no en la solicitud, se realiza con éxito una llamada a GenerateDataKey para cualquier clave KMS asociada con el alias finance-key, incluso si la solicitud utiliza un ID de clave o ARN de clave para identificar la clave KMS.

{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringEquals": { "kms:ResourceAliases": "alias/finance-key" } } }

El siguiente ejemplo de declaración de política de IAM permite que la principal entidad habilite y deshabilite las claves KMS, pero solo cuando todos los alias de las claves KMS incluyen “Test“. Esta declaración de política utiliza dos condiciones. La condición con el operador de conjuntos ForAllValues requiere que todos los alias asociados con la clave KMS incluyan “Test” (Prueba). La condición con el operador de conjuntos ForAnyValue requiere que la clave KMS tenga al menos un alias con “Test” (Prueba). Sin la condición ForAnyValue, esta declaración de política habría permitido a la entidad principal utilizar claves KMS que no tenían alias.

{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKey", "kms:DisableKey" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] }, "ForAnyValue:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] } } }

kms: ReplicaRegion

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:ReplicaRegion

Cadena (lista)

Valor único

ReplicateKey

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para limitar el número de Regiones de AWS veces que un principal puede replicar una clave multirregional. La clave de kms:ReplicaRegion condición controla el acceso a la ReplicateKeyoperación en función del valor del ReplicaRegionparámetro de la solicitud. Este parámetro especifica la Región de AWS para la nueva clave de réplica.

El valor de la condición es uno o más Región de AWS nombres, como us-east-1 oap-southeast-2, o patrones de nombres, comoeu-*. Para obtener una lista de los nombres de Regiones de AWS esos AWS KMS soportes, consulte los AWS Key Management Service puntos finales y las cuotas en. Referencia general de AWS

Por ejemplo, la siguiente declaración de política clave utiliza la clave de kms:ReplicaRegion condición para permitir que los directores llamen a la ReplicateKeyoperación solo cuando el valor del ReplicaRegion parámetro es una de las regiones especificadas.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey" "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }

Esta clave de condición controla el acceso únicamente a la ReplicateKeyoperación. Para controlar el acceso a la UpdatePrimaryRegionoperación, utilice la clave de PrimaryRegion condición kms:.

km: RetiringPrincipal

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:RetiringPrincipal

Cadena (lista)

Valor único

CreateGrant

Políticas de claves y políticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a la CreateGrantoperación en función del valor del RetiringPrincipalparámetro de la solicitud. Por ejemplo, puede crear concesiones para utilizar una clave KMS cuando el RetiringPrincipal de la solicitud CreateGrant coincida con el RetiringPrincipal de la declaración de la condición.

Para especificar el principal que se retira, utilice el nombre de recurso de Amazon (ARN) de AWS un principal. Entre los principales válidos se incluyen los usuarios de IAM Cuentas de AWS, los roles de IAM, los usuarios federados y los usuarios con roles asumidos. Para obtener ayuda con la sintaxis del ARN de un principal, consulte los ARN de IAM en la Guía del usuario de IAM.

El siguiente ejemplo de declaración de política clave permite a un usuario crear concesiones para la clave de KMS. La clave de kms:RetiringPrincipal condición restringe el permiso a CreateGrant las solicitudes en las que el principal de la concesión que se retira es el. LimitedAdminRole

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

Véase también

km: RotationPeriodInDays

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:RotationPeriodInDays

Numérico

Valor único

EnableKeyRotation

Políticas de claves y políticas de IAM

Puede usar esta clave de condición para limitar los valores que los directores pueden especificar en el RotationPeriodInDays parámetro de una EnableKeyRotationsolicitud.

RotationPeriodInDaysEspecifica el número de días entre cada fecha de rotación automática de claves. AWS KMS permite especificar un período de rotación de entre 90 y 2560 días, pero puede utilizar la clave de kms:RotationPeriodInDays condición para restringir aún más el período de rotación, por ejemplo, imponiendo un período de rotación mínimo dentro del rango válido.

Por ejemplo, la siguiente declaración de política clave utiliza la clave de kms:RotationPeriodInDays condición para impedir que los directores habiliten la rotación de claves si el período de rotación es inferior o igual a 180 días.

{ "Effect": "Deny", "Action": "kms:EnableKeyRotation", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:RotationPeriodInDays" : "180" } } }

km: ScheduleKeyDeletionPendingWindowInDays

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:ScheduleKeyDeletionPendingWindowInDays

Numérico

Valor único

ScheduleKeyDeletion

Políticas de claves y políticas de IAM

Puede usar esta clave de condición para limitar los valores que los directores pueden especificar en el PendingWindowInDays parámetro de una ScheduleKeyDeletionsolicitud.

PendingWindowInDaysEspecifica el número de días que deben AWS KMS transcurrir antes de eliminar una clave. AWS KMS permite especificar un período de espera de entre 7 y 30 días, pero puede usar la clave de kms:ScheduleKeyDeletionPendingWindowInDays condición para restringir aún más el período de espera, por ejemplo, imponiendo un período de espera mínimo dentro del rango válido.

Por ejemplo, la siguiente declaración de política de claves utiliza la clave de condición kms:ScheduleKeyDeletionPendingWindowInDays para impedir que las entidades principales programen la eliminación de claves si el periodo de espera es inferior o igual a 21 días.

{ "Effect": "Deny", "Action": "kms:ScheduleKeyDeletion", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:ScheduleKeyDeletionPendingWindowInDays" : "21" } } }

km: SigningAlgorithm

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:SigningAlgorithm

Cadena

Valor único

Sign

Verify

Políticas de claves y políticas de IAM

Puede usar la clave de kms:SigningAlgorithm condición para controlar el acceso a las operaciones de firma y verificación en función del valor del SigningAlgorithmparámetro de la solicitud. Esta clave de condición no afecta a las operaciones realizadas fuera de AWS KMS, como la verificación de firmas con la clave pública en un par de claves KMS asimétricas fuera de. AWS KMS

La siguiente política de claves de ejemplo permite a los usuarios que puedan asumir el rol testers utilizar la clave KMS para firmar mensajes solo cuando el algoritmo de firma utilizado para la solicitud sea un algoritmo RSASSA_PSS, como RSASSA_PSS_SHA512.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } } }

Véase también

kms: ValidTo

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:ValidTo

Timestamp

Valor único

ImportKeyMaterial

Políticas de claves y políticas de IAM

La clave de kms:ValidTo condición controla el acceso a la ImportKeyMaterialoperación en función del valor del ValidToparámetro de la solicitud, que determina cuándo caduca el material clave importado. El valor se expresa en tiempo Unix.

De forma predeterminada, el parámetro ValidTo es obligatorio en las solicitudes ImportKeyMaterial. Sin embargo, si el valor del ExpirationModelparámetro esKEY_MATERIAL_DOES_NOT_EXPIRE, no es válido. ValidTo También puede usar la clave de ExpirationModel condición kms: para requerir el ExpirationModel parámetro o un valor de parámetro específico.

La siguiente declaración de política de ejemplo permite a un usuario importar material de claves en una clave KMS. La clave de condición kms:ValidTo limita el permiso a las solicitudes ImportKeyMaterial en las que el valor ValidTo sea menor o igual que 1546257599.0 (31 de diciembre de 2018 11:59:59 p. m.).

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }

Véase también

kms: ViaService

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:ViaService

Cadena

Valor único

Operaciones de recursos de claves KMS

Políticas de claves y políticas de IAM

La clave de kms:ViaService condición limita el uso de una clave KMS a las solicitudes de AWS servicios específicos. Puede especificar uno o varios servicios en cada clave de condición kms:ViaService. La operación debe ser una operación de recursos de clave KMS, es decir, una operación que está autorizada para una clave KMS en particular. Para identificar las operaciones de recursos clave KMS, en laTabla de acciones y recursos, busque un valor de KMS key en la columna Resources para la operación.

Por ejemplo, la siguiente declaración de una política de claves utiliza la clave de condición kms:ViaService para permitir que se use una clave administrada por el cliente para las acciones especificadas solo cuando la solicitud provenga de Amazon EC2 o Amazon RDS en la región EE. UU. Oeste (Oregón) en nombre de ExampleRole.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } } }

También puede utilizar un clave de condición kms:ViaService para denegar permisos para usar una clave KMS cuando la solicitud provenga de determinados servicios. Por ejemplo, la siguiente declaración de una política de claves utiliza una clave de condición kms:ViaService para impedir que se utilice una clave administrada por el cliente para las operaciones Encrypt cuando la solicitud provenga de AWS Lambda en nombre de ExampleRole.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } } }
importante

Cuando se utiliza la clave de condición kms:ViaService, el servicio realiza la solicitud en nombre de una entidad principal de la Cuenta de AWS. Estas entidades principales deben tener los siguientes permisos:

  • Permiso para usar la clave KMS. La entidad principal debe conceder estos permisos al servicio integrado para que pueda utilizar la clave administrada por el cliente en nombre de la entidad principal. Para obtener más información, consulte Cómo los servicios de AWS usan AWS KMS.

  • Permiso para utilizar el servicio integrado. Para obtener más información sobre cómo dar a los usuarios acceso a un AWS servicio que se integra con él AWS KMS, consulte la documentación del servicio integrado.

Todas las Claves administradas por AWS utilizan una clave de condición kms:ViaService incluida en su documento de política de claves. Esta condición permite que solo se utilice la clave KMS para las solicitudes que proceden del servicio que ha creado la clave KMS. Para ver la política clave de un Clave administrada de AWS, utilice la GetKeyPolicyoperación.

La clave de condición kms:ViaService es válida en IAM y las declaraciones de políticas de clave. Los servicios que especifique deben estar integrados con AWS KMS y admitir la clave de condición kms:ViaService.

Servicios que admiten la clave de condición kms:ViaService

En la siguiente tabla se enumeran AWS los servicios que están integrados con la clave de kms:ViaService condición en las claves administradas por el cliente AWS KMS y que permiten su uso. Es posible que los servicios de esta tabla no estén disponibles en todas las regiones. Utilice el .amazonaws.com sufijo del AWS KMS ViaService nombre en todas las AWS particiones.

nota

Es posible que deba desplazarse horizontal o verticalmente para ver todos los datos de esta tabla.

Nombre del servicio AWS KMS ViaService nombre
AWS App Runner apprunner.AWS_region.amazonaws.com
AWS AppFabric appfabric.AWS_region.amazonaws.com
Amazon AppFlow appflow.AWS_region.amazonaws.com
AWS Application Migration Service mgn.AWS_region.amazonaws.com
Amazon Athena athena.AWS_region.amazonaws.com
AWS Audit Manager auditmanager.AWS_region.amazonaws.com
Amazon Aurora rds.AWS_region.amazonaws.com
AWS Backup backup.AWS_region.amazonaws.com
AWS Backup Gateway backup-gateway.AWS_region.amazonaws.com
Amazon Chime SDK chimevoiceconnector.AWS_region.amazonaws.com
AWS CodeArtifact codeartifact.AWS_region.amazonaws.com
CodeGuru Revisor de Amazon codeguru-reviewer.AWS_region.amazonaws.com
Amazon Comprehend comprehend.AWS_region.amazonaws.com
Amazon Connect connect.AWS_region.amazonaws.com
Perfiles de clientes de Amazon Connect profile.AWS_region.amazonaws.com
Amazon Q in Connect wisdom.AWS_region.amazonaws.com
AWS Database Migration Service (AWS DMS) dms.AWS_region.amazonaws.com
AWS Directory Service directoryservice.AWS_region.amazonaws.com
Amazon DynamoDB dynamodb.AWS_region.amazonaws.com
Amazon DocumentDB docdb-elastic.AWS_region.amazonaws.com
Amazon EC2 Systems Manager (SSM) ssm.AWS_region.amazonaws.com
Amazon Elastic Block Store (Amazon EBS) ec2.AWS_region.amazonaws.com (EBS solo)
Amazon Elastic Container Registry (Amazon ECR) ecr.AWS_region.amazonaws.com
Amazon Elastic File System (Amazon EFS) elasticfilesystem.AWS_region.amazonaws.com
Amazon ElastiCache

Incluye ambos ViaService nombres en el valor de la clave de condición:

  • elasticache.AWS_region.amazonaws.com

  • dax.AWS_region.amazonaws.com

AWS Elemental MediaTailor mediatailor.AWS_region.amazonaws.com
AWS Resolución de la entidad entityresolution.AWS_region.amazonaws.com
Amazon FinSpace finspace.AWS_region.amazonaws.com
Amazon Forecast forecast.AWS_region.amazonaws.com
Amazon FSx fsx.AWS_region.amazonaws.com
AWS Glue glue.AWS_region.amazonaws.com
AWS Ground Station groundstation.AWS_region.amazonaws.com
Amazon GuardDuty malware-protection.AWS_region.amazonaws.com
AWS HealthLake healthlake.AWS_region.amazonaws.com
AWS IoT SiteWise iotsitewise.AWS_region.amazonaws.com
Amazon Kendra kendra.AWS_region.amazonaws.com
Amazon Keyspaces (para Apache Cassandra) cassandra.AWS_region.amazonaws.com
Amazon Kinesis kinesis.AWS_region.amazonaws.com
Amazon Data Firehose firehose.AWS_region.amazonaws.com
Amazon Kinesis Video Streams kinesisvideo.AWS_region.amazonaws.com
AWS Lambda lambda.AWS_region.amazonaws.com
Amazon Lex lex.AWS_region.amazonaws.com
AWS License Manager license-manager.AWS_region.amazonaws.com
Amazon Location Service geo.AWS_region.amazonaws.com
Amazon Lookout for Equipment lookoutequipment.AWS_region.amazonaws.com
Amazon Lookout for Metrics lookoutmetrics.AWS_region.amazonaws.com
Amazon Lookout for Vision lookoutvision.AWS_region.amazonaws.com
Amazon Macie macie.AWS_region.amazonaws.com
AWS Mainframe Modernization m2.AWS_region.amazonaws.com
Amazon Managed Blockchain managedblockchain.AWS_region.amazonaws.com
Amazon Managed Streaming for Apache Kafka (Amazon MSK) kafka.AWS_region.amazonaws.com
Flujos de trabajo administrados por Amazon Managed Workflows for Apache Airflow (MWAA) airflow.AWS_region.amazonaws.com
Amazon MemoryDB para Redis memorydb.AWS_region.amazonaws.com
Amazon Monitron monitron.AWS_region.amazonaws.com
Amazon MQ mq.AWS_region.amazonaws.com
Amazon Neptune rds.AWS_region.amazonaws.com
Amazon Nimble Studio nimble.AWS_region.amazonaws.com
AWS HealthOmics omics.AWS_region.amazonaws.com
OpenSearch Servicio Amazon es.AWS_region.amazonaws.com, aoss.AWS_region.amazonaws.com
AWS Proton proton.AWS_region.amazonaws.com
Amazon Quantum Ledger Database (Amazon QLDB) qldb.AWS_region.amazonaws.com
Amazon RDS Performance Insights rds.AWS_region.amazonaws.com
Amazon Redshift redshift.AWS_region.amazonaws.com
Editor de consultas de Amazon Redshift V2 sqlworkbench.AWS_region.amazonaws.com
Amazon Redshift Serverless redshift-serverless.AWS_region.amazonaws.com
Amazon Rekognition rekognition.AWS_region.amazonaws.com
Amazon Relational Database Service (Amazon RDS) rds.AWS_region.amazonaws.com
Almacén de datos replicados de Amazon ards.AWS_region.amazonaws.com
Amazon SageMaker sagemaker.AWS_region.amazonaws.com
AWS Secrets Manager secretsmanager.AWS_region.amazonaws.com
Amazon Security Lake securitylake.AWS_region.amazonaws.com
Amazon Simple Email Service (Amazon SES) ses.AWS_region.amazonaws.com
Amazon Simple Notification Service (Amazon SNS) sns.AWS_region.amazonaws.com
Amazon Simple Queue Service (Amazon SQS) sqs.AWS_region.amazonaws.com
Amazon Simple Storage Service (Amazon S3) s3.AWS_region.amazonaws.com
AWS Snowball importexport.AWS_region.amazonaws.com
AWS Storage Gateway storagegateway.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager ssm-incidents.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager Contactos ssm-contacts.AWS_region.amazonaws.com
Amazon Timestream timestream.AWS_region.amazonaws.com
Amazon Translate translate.AWS_region.amazonaws.com
Acceso verificado de AWS verified-access.AWS_region.amazonaws.com
Amazon WorkMail workmail.AWS_region.amazonaws.com
Amazon WorkSpaces workspaces.AWS_region.amazonaws.com
Amazon WorkSpaces Thin Client thinclient.AWS_region.amazonaws.com
Amazon WorkSpaces Web workspaces-web.AWS_region.amazonaws.com
AWS X-Ray xray.AWS_region.amazonaws.com

km: WrappingAlgorithm

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:WrappingAlgorithm

Cadena

Valor único

GetParametersForImport

Políticas de claves y políticas de IAM

Esta clave de condición controla el acceso a la GetParametersForImportoperación en función del valor del WrappingAlgorithmparámetro de la solicitud. Puede utilizar esta condición para exigir que las entidades principales usen un algoritmo para cifrar el material durante el proceso de importación. Las solicitudes de la clave pública y el token de importación necesarios no se realizan cuando especifican un algoritmo de encapsulamiento diferente.

La siguiente declaración de política de clave de ejemplo utiliza la clave de condición kms:WrappingAlgorithm para conceder al usuario de ejemplo permiso para llamar a la operación GetParametersForImport, pero le impide utilizar el algoritmo de encapsulamiento RSAES_OAEP_SHA_1. Cuando WrappingAlgorithm en la solicitud GetParametersForImport es RSAES_OAEP_SHA_1, se produce un error en la operación.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }

Véase también

km: WrappingKeySpec

AWS KMS claves de condición Tipo de condición Tipo de valor Operaciones de la API Tipo de política

kms:WrappingKeySpec

Cadena

Valor único

GetParametersForImport

Políticas de claves y políticas de IAM

Esta clave de condición controla el acceso a la GetParametersForImportoperación en función del valor del WrappingKeySpecparámetro de la solicitud. Puede utilizar esta condición para exigir que las entidades principales usen un determinado tipo de clave pública durante el proceso de importación. Si la solicitud especifica un tipo de clave diferente, produce un error.

Como el único valor válido del parámetro WrappingKeySpec es RSA_2048, al impedir que los usuarios utilicen este valor, se evita que utilicen la operación GetParametersForImport.

En el ejemplo siguiente, la declaración de la política utiliza la clave de condición kms:WrappingAlgorithm para requerir que el parámetro WrappingKeySpec de la solicitud sea RSA_4096.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_4096" } } }

Véase también