

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Permisos y acceso a claves KMS
<a name="control-access"></a>

Para usarlo AWS KMS, debe tener credenciales que AWS pueda usar para autenticar sus solicitudes. Las credenciales deben incluir permisos para acceder a AWS los recursos AWS KMS keys y [alias](kms-alias.md). Ningún AWS director tiene permisos para acceder a una clave de KMS a menos que dicho permiso se otorgue de forma explícita y nunca se deniegue. No hay permisos implícitos ni automáticos para usar o administrar una clave KMS. 

Para controlar el acceso a las claves KMS, puede utilizar los siguientes mecanismos de políticas.
+ [Política de claves](key-policies.md): cada clave KMS tiene una política de claves. Es el mecanismo principal para controlar el acceso a una clave KMS. Puede utilizar solo la política de claves para controlar el acceso, lo que significa que el ámbito completo de acceso a la clave KMS se define en un único documento (la política de claves). Para obtener más información sobre el uso de políticas de claves, consulte [Políticas de claves](key-policies.md).
+ [Políticas de IAM](iam-policies.md): puede utilizar políticas de IAM en combinación con la política de claves y subvenciones para controlar el acceso a una clave KMS. Este modo de controlar el acceso le permite administrar todos los permisos de las identidades de IAM en IAM. Para utilizar una política de IAM a fin de permitir el acceso a una clave KMS, la política de claves debe permitirlo explícitamente. Para obtener más información sobre el uso de políticas de IAM, consulte [Políticas de IAM](iam-policies.md). 
+ [Concesiones](grants.md): puede utilizar concesiones en combinación con la política de claves y políticas de IAM para permitir el acceso a una clave KMS. Con este modo de controlar el acceso, puede permitir el acceso a la clave KMS en la política de claves y permitir que las identidades deleguen su acceso a otros. Para obtener más información sobre cómo usar concesiones, consulte [Subvenciones en AWS KMS](grants.md).

## Políticas de clave de KMS
<a name="intro-key-policy"></a>

La forma principal de administrar el acceso a AWS KMS los recursos es mediante *políticas*. Las políticas son documentos que describen qué entidades principales pueden acceder a qué recursos. *Las políticas asociadas a una identidad de IAM se denominan *políticas basadas en la identidad (o políticas* de *IAM) y las políticas* asociadas a otros tipos de recursos se denominan políticas de recursos.* AWS KMS *las políticas de recursos para las claves de KMS se denominan políticas clave.*

Todas las claves KMS tienen una política de claves. Si no proporciona una, AWS KMS crea una para usted. La [política de claves predeterminada](key-policy-default.md) que se AWS KMS utiliza varía en función de si se crea la clave en la AWS KMS consola o se utiliza la AWS KMS API. Le recomendamos que edite la política de claves predeterminada para adaptarla a los requisitos de su organización en materia de [permisos de privilegio mínimo](least-privilege.md). 

Puede utilizar únicamente la política de claves para controlar el acceso si la clave y la entidad principal de IAM están en la misma AWS cuenta, lo que significa que todo el alcance del acceso a la clave de KMS se define en un único documento (la política de claves). Sin embargo, cuando una persona que llama desde una cuenta tiene que acceder a una clave de otra cuenta, no puede utilizar únicamente la política de claves para conceder el acceso. En un escenario de varias cuentas, se debe adjuntar al usuario o rol de la persona que llama una política de IAM que permita explícitamente a dicha persona que llama realizar la llamada a la API.

También puede utilizar políticas de IAM en combinación con las concesiones y las políticas de claves para controlar el acceso a una clave KMS. Para utilizar una política de IAM a fin de controlar el acceso a una clave KMS, la política de claves debe conceder permiso a la cuenta para utilizar políticas de IAM. Puede especificar una [declaración de política de claves que habilite las políticas de IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam) o puede [especificar explícitamente la entidad principal permitida](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying) en la política de claves.

Al redactar las políticas, asegúrese de contar con controles estrictos que restrinjan quién puede realizar las siguientes acciones:
+ Actualizar, crear y eliminar las políticas de claves de IAM y KMS
+ Adjuntar y separar políticas de IAM de los usuarios, los roles y los grupos
+ Adjuntar y separar las políticas de claves KMS de sus claves KMS

## Concesiones de claves de KMS
<a name="intro-kms-grants"></a>

[Además de la IAM y las políticas clave, AWS KMS apoya las subvenciones.](grants.md) Las concesiones proporcionan una forma flexible y eficaz de delegar permisos. Puede utilizar las subvenciones para conceder claves de acceso KMS con un límite de tiempo limitado a los directores de IAM de su AWS cuenta o de otras cuentas. AWS Le recomendamos otorgar un acceso temporal si no conoce los nombres de las entidades principales en el momento de crear las políticas o si las entidades principales que requieren acceso cambian con frecuencia. La [entidad principal del beneficiario](grants.md#terms-grantee-principal) puede estar en la misma cuenta que la clave KMS o en otra cuenta. Si la entidad principal y la clave KMS están en cuentas diferentes, debe especificar una política de IAM además de la concesión. Las concesiones requieren una administración adicional, ya que debe llamar a una API para crear la concesión y para retirarla o revocarla cuando ya no sea necesaria. 

# Políticas clave en AWS KMS
<a name="key-policies"></a>

Una política clave es una política de recursos para un. AWS KMS key Las políticas de claves son la forma principal de controlar el acceso a las claves KMS. Cada clave KMS debe tener exactamente una política de claves. Las declaraciones de políticas de claves determinan quién tiene permiso para usar la clave KMS y cómo debe usar dicho permiso. También puede utilizar [políticas de IAM](iam-policies.md) y [concesiones](grants.md) para controlar el acceso a la clave KMS, pero cada clave KMS debe tener un documento de política de claves. 

Ningún responsable AWS , ni siquiera el usuario raíz de la cuenta o el creador de la clave, tiene permisos para acceder a una clave de KMS, a menos que se autorice explícitamente, y nunca se deniegue, en una política de claves, una política de IAM o una concesión. 

A menos que la política de claves lo permita explícitamente, no puede utilizar las políticas de IAM para *permitir* el acceso a una clave KMS. Sin el permiso de la política de claves, las políticas de IAM que conceden permisos no tienen ningún efecto. (Puede utilizar una política de IAM para *denegar* un permiso a una clave KMS sin el permiso de una política de claves). La política de claves predeterminada habilita las políticas de IAM. Para habilitar las políticas de IAM en la política de claves, agregue la declaración de política descrita en [Permite el acceso a las políticas de IAM Cuenta de AWS y las habilita](key-policy-default.md#key-policy-default-allow-root-enable-iam).

A diferencia de las políticas de IAM, que son globales, las políticas de claves son regionales. Una política de claves controla el acceso solo a una clave KMS en la misma región. No tiene ningún efecto sobre las claves KMS de otras regiones.

**Topics**
+ [Creación de una política de claves](key-policy-overview.md)
+ [Política de claves predeterminada](key-policy-default.md)
+ [Visualización de políticas de claves](key-policy-viewing.md)
+ [Cambio de una política de claves](key-policy-modifying.md)
+ [Permisos para AWS los servicios](key-policy-services.md)

# Creación de una política de claves
<a name="key-policy-overview"></a>

Puede crear y administrar políticas clave en la AWS KMS consola o mediante operaciones de AWS KMS API, como [CreateKey[ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), y [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html). 

Al crear una clave de KMS en la AWS KMS consola, la consola le explicará los pasos necesarios [para crear una política de claves basada en la política de claves predeterminada de la consola](key-policy-default.md). Al utilizar la política de claves `CreateKey` o `ReplicateKey` APIs, si no se especifica, APIs se aplica la política de [claves predeterminada a las claves creadas mediante programación](key-policy-default.md). Al usar la API `PutKeyPolicy`, es necesario especificar una política de claves.

Cada documento de política puede tener una o varias declaraciones de política. En el siguiente ejemplo se muestra un documento válido de política de claves con una declaración de política.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DescribePolicyStatement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/Alice"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:KeySpec": "SYMMETRIC_DEFAULT"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [Formato de la política de claves](#key-policy-format)
+ [Elementos de una política de claves](#key-policy-elements)
+ [Ejemplo de política de claves de](#key-policy-example)

## Formato de la política de claves
<a name="key-policy-format"></a>

Un documento de política de claves debe cumplir las siguientes reglas:
+ Pesar hasta 32 kilobytes (32 768 bytes)
+ El elemento `Sid` de una declaración de política de claves puede incluir espacios. (Se prohíben los espacios en el elemento `Sid` de un documento de política de IAM).

Un documento de política de claves solo puede incluir los siguientes caracteres:
+ Caracteres ASCII imprimibles
+ Caracteres imprimibles del conjunto de caracteres Basic Latin y Latin-1 Supplement
+ Caracteres especiales como la pestaña (`\u0009`), la fuente de línea (`\u000A`) y retorno de carro (`\u000D`)

## Elementos de una política de claves
<a name="key-policy-elements"></a>

Un documento de política de claves debe tener los siguientes elementos:

**Versión**  
Especifica la versión del documento de política de claves. Configure la versión en `2012-10-17` (la última versión).

**Instrucción**  
Contiene las declaraciones de la política. Un documento de política de claves debe tener al menos una declaración.  
Cada declaración de política de claves consta de hasta seis elementos. Los elementos `Effect`,`Principal`,`Action`, y `Resource` son necesarios.    
**Sid **  
(Opcional) El identificador de la declaración (`Sid`) una cadena arbitraria que puede utilizar para describir la declaración. El `Sid` en una política de claves puede incluir espacios. (No puede incluir espacios en un elemento `Sid` de política de IAM).  
**Efecto**  
(Obligatorio) Determina si desea permitir o denegar los permisos en la declaración de política. Los valores válidos son `Allow` o `Deny`. Si no permite el acceso de forma explícita a una clave KMS, el acceso se deniega implícitamente. También puede denegar explícitamente el acceso a una clave KMS. Puede hacer esto para asegurarse de que un usuario no pueda tener acceso a ella, aunque otra política le permita el acceso.  
**Principal**  
(Obligatorio) La [entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying) es la identidad que obtiene los permisos especificados en la declaración de política. Puede especificar Cuentas de AWS los usuarios de IAM, las funciones de IAM y algunos AWS servicios como principales en una política clave. Los [grupos de usuarios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) de IAM no son una entidad principal válida en ningún tipo de política.  
Un valor de asterisco, como `"AWS": "*"`, representa todas las identidades de AWS de todas las cuentas.  
No establezca la Entidad principal en un asterisco (\$1) en ninguna declaración de política de claves que permita permisos a menos que utilice [condiciones](policy-conditions.md) para limitar la política de claves. Un asterisco indica todas las identidades de cada Cuenta de AWS permiso para usar la clave de KMS, a menos que otra declaración de política lo deniegue explícitamente. Los usuarios de otros Cuentas de AWS pueden usar su clave de KMS siempre que tengan los permisos correspondientes en su propia cuenta.
Las prácticas recomendadas de IAM desalientan el uso de usuarios de IAM con credenciales a largo plazo. Siempre que sea posible, utilice los roles de IAM, que proporcionan credenciales temporales. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM;*.
Cuando la entidad principal en una declaración de política de claves es una [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) se expresa como `arn:aws:iam::111122223333:root"`, la declaración de la política no concede permisos a ninguna entidad principal de IAM. En su lugar, otorga Cuenta de AWS permiso para usar las políticas de IAM para delegar los permisos especificados en la política clave. (Una entidad principal en formato `arn:aws:iam::111122223333:root"` *no* representa al [usuario raíz de la cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html), a pesar del uso de “root” en el identificador de la cuenta. Sin embargo, la entidad principal de la cuenta representa a la cuenta y a sus administradores, incluido el usuario raíz de la cuenta).  
Cuando el principal es otro Cuenta de AWS o sus directores, los permisos solo entran en vigor cuando la cuenta está habilitada en la región con la clave y la política de claves de KMS. Para obtener información acerca de las regiones que no están habilitadas de forma predeterminada (“Regiones de adhesión”), consulte [Administración de Regiones de AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) en la *Referencia general de AWS*.  
Para permitir que otro Cuenta de AWS o sus principales usuarios utilicen una clave de KMS, debes conceder el permiso en una política de claves y en una política de IAM en la otra cuenta. Para obtener más información, consulte [Permitir a los usuarios de otras cuentas utilizar una clave KMS](key-policy-modifying-external-accounts.md).  
**Action**  
(Obligatorio) Especifique las operaciones de la API que se permitirán o denegarán. Por ejemplo, la `kms:Encrypt` acción corresponde a la operación de AWS KMS [cifrado](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html). Puede enumerar varias acciones en una declaración de política. Para obtener más información, consulte [Referencia de permisos](kms-api-permissions-reference.md).  
Si falta el elemento `Action` requerido en una declaración de política de claves, la declaración de la política no tiene efecto. Una declaración de política de claves sin un elemento `Action` no se aplica a ninguna clave KMS.   
Cuando a una declaración de política clave le falta su `Action` elemento, la AWS KMS consola informa correctamente de un error, pero lo [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)hace correctamente [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs , aunque la declaración de política no sea efectiva.  
**Recurso**  
(Obligatorio) En una política de claves, el valor del elemento Recurso es `"*"`, que significa “esta clave KMS”. El asterisco (`"*"`) identifica la clave KMS a la que se adjunta la política de clave.  
Si falta el elemento `Resource` requerido en una declaración de política de claves, la declaración de la política no tiene efecto. Una declaración de política de claves sin un elemento `Resource` no se aplica a ninguna clave KMS.   
Cuando a una declaración de política clave le falta su `Resource` elemento, la AWS KMS consola informa correctamente de un error, pero lo hace [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)correctamente, [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs a pesar de que la declaración de política no es efectiva.  
**Condición**  
(Opcional) Las condiciones especifican requisitos que deben cumplirse para que se aplique una política de claves. Con condiciones, AWS puede evaluar el contexto de una solicitud de API para determinar si la declaración de política se aplica o no.   
Para especificar las condiciones, se utilizan *claves de condición* predefinidas. AWS KMS admite claves de [condición AWS globales y claves](conditions-aws.md) [de AWS KMS condición](conditions-kms.md). Para admitir el control de acceso basado en atributos (ABAC), AWS KMS proporciona claves de condición que controlan el acceso a una clave KMS en función de etiquetas y alias. Para obtener más información, consulte [ABAC para AWS KMS](abac.md).  
El formato de una condición es:  

```
"Condition": {"condition operator": {"condition key": "condition value"}}
```
por ejemplo:  

```
"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}
```

*Para obtener más información sobre la sintaxis de las AWS políticas, consulte la [Referencia de políticas de AWS IAM en la Guía del usuario](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) de IAM.*

## Ejemplo de política de claves de
<a name="key-policy-example"></a>

En el siguiente ejemplo se muestra una política de claves completa para una clave KMS de cifrado simétrica. Puede utilizarlo como referencia mientras lee acerca de los conceptos de política de claves de este capítulo. Esta política de claves combina los ejemplos de declaraciones de política de la sección [política de claves predeterminada](key-policy-default.md) anterior en una sola política de claves que lleva a cabo lo siguiente:
+ Permite al ejemplo Cuenta de AWS 111122223333 tener acceso total a la clave KMS. Permite que la cuenta y sus administradores, incluido el usuario raíz de la cuenta (para emergencias), utilicen las políticas de IAM en la cuenta para permitir el acceso a la clave KMS.
+ Permite que el rol de IAM `ExampleAdminRole` administre la clave de KMS.
+ Permite que el rol de IAM `ExampleUserRole` utilice la clave KMS.

------
#### [ JSON ]

****  

```
{
    "Id": "key-consolepolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministratorsAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleAdminRole"
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion",
                "kms:RotateKeyOnDemand"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyUse",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAttachmentPersistentResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}
```

------

# Política de claves predeterminada
<a name="key-policy-default"></a>

Al crear una clave KMS, puede especificar la política de claves para la nueva clave KMS. Si no la proporciona, AWS KMS crea una para usted. La política de claves predeterminada que se AWS KMS utiliza varía en función de si se crea la clave en la AWS KMS consola o se utiliza la AWS KMS API.

**Política de claves predeterminada al crear una clave KMS mediante programación**  
Cuando se crea una clave de KMS mediante programación con la [AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) (incluso mediante el uso de [AWS SDKs](https://aws.amazon.com/tools/#sdk), [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/)o [Herramientas de AWS para PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)) y no se especifica una política de claves, AWS KMS se aplica una política de claves predeterminada muy simple. Esta política de claves predeterminada tiene una declaración de política que otorga al propietario de la Cuenta de AWS clave de KMS permiso para usar las políticas de IAM a fin de permitir el acceso a todas las AWS KMS operaciones de la clave de KMS. Para obtener más información sobre esta declaración de política, consulte [Permite el acceso a las políticas de IAM Cuenta de AWS y las habilita](#key-policy-default-allow-root-enable-iam).

**Política de claves predeterminada al crear una clave KMS con Consola de administración de AWS**  
Al [crear una clave de KMS con la Consola de administración de AWS, la](create-keys.md) política clave comienza con la declaración de política que [permite el acceso a las políticas de IAM Cuenta de AWS y las habilita](#key-policy-default-allow-root-enable-iam). A continuación, la consola añade una [declaración del administrador clave](#key-policy-default-allow-administrators), una [declaración de los usuarios clave](#key-policy-default-allow-users) y (para la mayoría de los tipos de claves) una declaración que permite a los directores utilizar la clave de KMS con [otros AWS](#key-policy-service-integration) servicios. Puede utilizar las funciones de la AWS KMS consola para especificar los usuarios de IAM, las funciones de IAM y Cuentas de AWS quiénes son los administradores clave y los usuarios clave (o ambos).

**Permisos**
+ [Permite el acceso a las políticas de IAM Cuenta de AWS y las habilita](#key-policy-default-allow-root-enable-iam)
+ [Permite que los administradores de claves administren la clave KMS](#key-policy-default-allow-administrators)
+ [Permite a los usuarios de claves utilizar la clave KMS](#key-policy-default-allow-users)
  + [Permite a los usuarios de claves utilizar una clave KMS para las operaciones criptográficas](#key-policy-users-crypto)
  + [Permite a los usuarios clave utilizar la clave KMS con AWS los servicios](#key-policy-service-integration)

## Permite el acceso a las políticas de IAM Cuenta de AWS y las habilita
<a name="key-policy-default-allow-root-enable-iam"></a>

La siguiente declaración de política de claves predeterminada es fundamental. 
+ Otorga al Cuenta de AWS propietario de la clave KMS acceso completo a la clave KMS. 

  A diferencia de otras políticas de AWS recursos, una política AWS KMS clave no otorga automáticamente permisos a la cuenta ni a ninguna de sus identidades. Para conceder permisos a los administradores de cuentas, la política de claves debe incluir una declaración explícita que proporcione este permiso, de forma similar a ésta.
+ Permite que la cuenta utilice las políticas de IAM para permitir el acceso a la clave KMS, además de la política de claves.

  Sin este permiso, las políticas de IAM que permiten el acceso a la clave son ineficaces, aunque las políticas de IAM que deniegan el acceso a la clave siguen siendo eficaces. 
+ Reduce el riesgo de que la clave deje de poder administrarse dando permiso de control de acceso a los administradores de la cuenta, incluido el usuario raíz de la cuenta, que no se puede eliminar. 

La siguiente declaración de política de claves es toda la política de claves predeterminada para las claves KMS creadas mediante programación. Es la primera declaración de política de la política de claves predeterminada para las claves de KMS que se crean en la AWS KMS consola.

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:root"
   },
  "Action": "kms:*",
  "Resource": "*"
}
```

**Permite que las políticas de IAM permitan el acceso a la clave KMS.**  <a name="allow-iam-policies"></a>
La declaración de política clave Cuenta de AWS que se muestra arriba otorga al propietario de la clave permiso para usar las políticas de IAM, así como las políticas clave, para permitir todas las acciones (`kms:*`) en la clave de KMS.   
La entidad principal en esta declaración de política de claves es la [entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) de la cuenta, que está representada por un ARN en este formato: `arn:aws:iam::account-id:root`. El principal de la cuenta representa a la AWS cuenta y a sus administradores.   
Cuando la entidad principal de una declaración de política de claves es la entidad principal de la cuenta, la declaración de política no concede permisos a ninguna entidad principal de IAM para utilizar la clave KMS. En su lugar, permite que la cuenta utilice las políticas de IAM para *delegar* los permisos especificados en la declaración de la política. Esta declaración de política de claves predeterminada permite a la cuenta utilizar las políticas de IAM para delegar el permiso para todas las acciones (`kms:*`) en la clave KMS.

** reduce el riesgo de que la clave KMS deje de poder administrarse.**  
A diferencia de otras políticas de AWS recursos, una política AWS KMS clave no otorga automáticamente permisos a la cuenta ni a ninguno de sus directores. Para dar permisos a cualquier entidad principal, incluida la [entidad principal de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts), debe utilizar una declaración de política de claves que proporcione los permisos de forma explícita. No es necesario dar a la entidad principal de la cuenta, ni a ninguna entidad principal, acceso a la clave KMS. Sin embargo, dar acceso a la entidad principal de la cuenta le ayuda a evitar que la clave deje de poder administrarse.  
Por ejemplo, supongamos que se crea una política de claves que da acceso a la clave KMS a un solo usuario. Si posteriormente elimina ese usuario, la clave deja de poder administrarse y deberá [ponerse en contacto con el servicio de asistencia de AWS](https://console.aws.amazon.com/support/home#/case/create) para recuperar el acceso a la clave KMS.   
La declaración de política de claves que se muestra arriba otorga a la [entidad principal de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) permiso para controlar la clave. El principal de la cuenta representa al usuario raíz de la cuenta Cuenta de AWS y a sus administradores, incluido el [usuario raíz de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html). La cuenta de usuario raíz es la única entidad principal que no se puede eliminar a menos que se elimine la cuenta de Cuenta de AWS. Las prácticas recomendadas de IAM desaconsejan actuar en nombre del usuario raíz de la cuenta, excepto en caso de emergencia. Sin embargo, es posible que tenga que actuar como usuario raíz de la cuenta si elimina todos los demás usuarios y funciones con acceso a la clave KMS. 

## Permite que los administradores de claves administren la clave KMS
<a name="key-policy-default-allow-administrators"></a>

La política de claves predeterminada creada por la consola le permite elegir usuarios y roles de IAM de la cuenta y convertirlos en *administradores de claves*. Esta declaración se denomina la *declaración de los administradores de claves*. Los administradores de claves tienen permisos para administrar la clave KMS, pero no para utilizar la clave KMS en [operaciones criptográficas](kms-cryptography.md#cryptographic-operations). Puede agregar usuarios y roles de IAM a la lista de administradores de claves al crear la clave KMS en la vista predeterminada o en la vista de política. 

**aviso**  
Como los administradores de claves tienen permiso para cambiar la política de claves y crear concesiones, pueden concederse a sí mismos y a otras personas AWS KMS permisos no especificados en esta política.  
Las entidades principales que tienen permiso para administrar etiquetas y alias también pueden controlar el acceso a una clave KMS. Para obtener más información, consulte [ABAC para AWS KMS](abac.md).

**nota**  
Las prácticas recomendadas de IAM desalientan el uso de usuarios de IAM con credenciales a largo plazo. Siempre que sea posible, utilice los roles de IAM, que proporcionan credenciales temporales. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM;*.

En el siguiente ejemplo se muestra la declaración de los administradores de claves en la vista predeterminada de la consola de AWS KMS .

![\[Administradores de claves en la política de claves predeterminada de la consola, vista predeterminada\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/images/console-key-policy-administrators-60.png)


A continuación se muestra un ejemplo de declaración de los administradores de claves en la vista de política de la consola de AWS KMS . Esta declaración de los administradores de claves es para una clave de KMS de cifrado simétrica de una sola región.

**nota**  
La AWS KMS consola agrega administradores clave a la política clave bajo el identificador de la declaración`"Allow access for Key Administrators"`. La modificación de este identificador de declaración puede afectar a la forma en que la consola muestra las actualizaciones que realice en la declaración.

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS":"arn:aws:iam::111122223333:role/ExampleAdminRole"},
  "Action": [
    "kms:Create*",
    "kms:Describe*",
    "kms:Enable*",
    "kms:List*",
    "kms:Put*",
    "kms:Update*",
    "kms:Revoke*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:TagResource",
    "kms:UntagResource",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion",
    "kms:RotateKeyOnDemand"
  ],
  "Resource": "*"
}
```

La declaración de los administradores de claves predeterminada para la clave KMS más común, una clave KMS de cifrado simétrica de una región única, permite los siguientes permisos. Para obtener información detallada sobre cada permiso, consulte la [AWS KMS permisos](kms-api-permissions-reference.md).

Al usar la AWS KMS consola para crear una clave KMS, la consola agrega los usuarios y roles que especifique al `Principal` elemento en la declaración del administrador clave.

Muchos de estos permisos contienen el carácter comodín (`*`), que permite todos los permisos que empiezan por el verbo especificado. Como resultado, cuando se AWS KMS añaden nuevas operaciones de API, los administradores de claves pueden utilizarlas automáticamente. No es necesario actualizar las políticas de claves para incluir las nuevas operaciones. Si prefiere limitar sus administradores de claves a un conjunto fijo de operaciones de API, puede [cambiar la política de claves](key-policy-modifying.md).

**`kms:Create*`**  
Permite [`kms:CreateAlias`](kms-alias.md) y [`kms:CreateGrant`](grants.md). (El permiso `kms:CreateKey` solo es válido en una política de IAM).

**`kms:Describe*`**  
Permite [`kms:DescribeKey`](viewing-keys.md). Se requiere el permiso `kms:DescribeKey` para ver la página de detalles de clave de una clave KMS en la Consola de administración de AWS.

**`kms:Enable*`**  
Permite [`kms:EnableKey`](enabling-keys.md). Para las claves KMS de cifrado simétricas, también se permite [`kms:EnableKeyRotation`](rotate-keys.md).

**`kms:List*`**  
Permite [`kms:ListGrants`](grants.md), [https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html) y [`kms:ListResourceTags`](tagging-keys.md). (Los permisos `kms:ListAliases` y `kms:ListKeys`, necesarios para ver las claves KMS en la Consola de administración de AWS, solo son válidos en las políticas de IAM.)

**`kms:Put*`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html). Este permiso permite a los administradores de claves cambiar la política de claves de esta clave KMS.

**`kms:Update*`**  
Permite [`kms:UpdateAlias`](alias-update.md) y [https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html). Para las claves de varias regiones, permite [`kms:UpdatePrimaryRegion`](multi-region-update.md#update-primary-console) en esta clave KMS.

**`kms:Revoke*`**  
Permite [`kms:RevokeGrant`](grant-delete.md), que permite a los administradores de claves [eliminar una concesión](grant-delete.md) incluso si no son una [entidad principal retirada](grants.md#terms-retiring-principal) en la concesión. 

**`kms:Disable*`**  
Permite [`kms:DisableKey`](enabling-keys.md). Para las claves KMS de cifrado simétricas, también se permite [`kms:DisableKeyRotation`](rotate-keys.md).

**`kms:Get*`**  
Permite [`kms:GetKeyPolicy`](key-policy-viewing.md) y [`kms:GetKeyRotationStatus`](rotate-keys.md). Para claves KMS con material de claves importado, permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html). Para claves KMS asimétricas, permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html). Se requiere el permiso `kms:GetKeyPolicy` para ver la política de claves de una clave KMS en la Consola de administración de AWS.

**`kms:Delete*`**  
Permite [`kms:DeleteAlias`](kms-alias.md). Para claves con material de claves importado, permite [`kms:DeleteImportedKeyMaterial`](importing-keys.md). El permiso `kms:Delete*` no permite a los administradores de claves eliminar la clave KMS (`ScheduleKeyDeletion`).

**`kms:TagResource`**  
Permite [`kms:TagResource`](tagging-keys.md), que permite a los administradores de claves agregar etiquetas a la clave KMS. Dado que las etiquetas también se pueden utilizar para controlar el acceso a la clave KMS, este permiso permite a los administradores permitir o denegar el acceso a la clave KMS. Para obtener más información, consulte [ABAC para AWS KMS](abac.md).

**`kms:UntagResource`**  
Permite [`kms:UntagResource`](tagging-keys.md), que permite a los administradores de claves eliminar etiquetas de la clave KMS. Dado que las etiquetas se pueden utilizar para controlar el acceso a la clave, este permiso permite a los administradores permitir o denegar el acceso a la clave KMS. Para obtener más información, consulte [ABAC para AWS KMS](abac.md).

**`kms:ScheduleKeyDeletion`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html), que permite a los administradores de claves [eliminar esta clave KMS](deleting-keys.md). Para eliminar este permiso, desactive la opción **Allow key administrators to delete this key** (Permitir a los administradores de claves eliminar esta clave).

**`kms:CancelKeyDeletion`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html), que permite a los administradores de claves [cancelar la eliminación de esta clave KMS](deleting-keys.md). Para eliminar este permiso, desactive la opción **Allow key administrators to delete this key** (Permitir a los administradores de claves eliminar esta clave).

**`kms:RotateKeyOnDemand`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html), que permite a los administradores de claves [realizar la rotación bajo demanda del material de claves de esta clave KMS](rotating-keys-on-demand.md).

 

AWS KMS añade los siguientes permisos a la declaración de administradores de claves predeterminada al crear claves de uso especial.

**`kms:ImportKeyMaterial`**  
El permiso [https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) permite a los administradores de claves importar material de claves KMS. Este permiso solo se incluye en la política de claves cuando [crea una clave KMS sin material de claves](importing-keys-create-cmk.md).

**`kms:ReplicateKey`**  
El [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)permiso permite a los administradores de claves [crear una réplica de una clave principal multirregional en otra región](multi-region-keys-replicate.md). AWS Este permiso solo se incluye en la política de claves cuando crea una clave principal o de réplica de varias regiones.

**`kms:UpdatePrimaryRegion`**  
El permiso [https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) permite a los administradores de claves [cambiar una clave de réplica de varias regiones a una clave principal de varias regiones](multi-region-update.md). Este permiso solo se incluye en la política de claves cuando crea una clave principal o de réplica de varias regiones.

## Permite a los usuarios de claves utilizar la clave KMS
<a name="key-policy-default-allow-users"></a>

*La política de claves predeterminada que la consola crea para las claves de KMS permite elegir los usuarios y roles de IAM en la cuenta y los externos Cuentas de AWS, y convertirlos en usuarios clave.* 

La consola agrega dos declaraciones de política a la política de claves para los usuarios de claves.
+ [Utilice la clave KMS directamente](#key-policy-users-crypto): la primera declaración de política de claves da a los usuarios de claves permiso para usar la clave KMS directamente para todas las [operaciones criptográficas](kms-cryptography.md#cryptographic-operations) de ese tipo de clave KMS.
+ [Use la clave de KMS con AWS los servicios](#key-policy-service-integration): la segunda declaración de política otorga a los usuarios clave permiso para permitir que los AWS servicios que están integrados usen la clave de KMS en su nombre para proteger los recursos, como los buckets de Amazon S3 y las tablas de Amazon DynamoDB. AWS KMS 

Puede añadir usuarios de IAM, funciones de IAM y otros Cuentas de AWS a la lista de usuarios clave al crear la clave de KMS. También puede editar la lista con la vista predeterminada de la consola para las políticas de claves, tal como se muestra en la siguiente imagen. La vista predeterminada de las políticas de claves está disponible en la página de detalles de clave. Para obtener más información sobre cómo permitir que los usuarios de otros países Cuentas de AWS usen la clave de KMS, consulte. [Permitir a los usuarios de otras cuentas utilizar una clave KMS](key-policy-modifying-external-accounts.md)

**nota**  
Las prácticas recomendadas de IAM desalientan el uso de usuarios de IAM con credenciales a largo plazo. Siempre que sea posible, utilice los roles de IAM, que proporcionan credenciales temporales. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM;*.

![\[Usuarios de claves en la política de claves predeterminada de la consola, vista predeterminada\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/images/console-key-policy-users-sm.png)


Las *declaraciones de usuarios de claves* predeterminadas para una clave simétrica de región única permite los siguientes permisos. Para obtener información detallada sobre cada permiso, consulte la [AWS KMS permisos](kms-api-permissions-reference.md).

Cuando usa la AWS KMS consola para crear una clave KMS, la consola agrega los usuarios y roles que especifique al `Principal` elemento en la declaración de cada usuario clave.

**nota**  
La AWS KMS consola agrega los usuarios clave a la política clave bajo los identificadores de la declaración `"Allow use of the key"` y`"Allow attachment of persistent resources"`. La modificación de estos identificadores de declaración puede afectar a la forma en que la consola muestra las actualizaciones que realice en la declaración.

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*"
},
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```

## Permite a los usuarios de claves utilizar una clave KMS para las operaciones criptográficas
<a name="key-policy-users-crypto"></a>

Los usuarios de claves tienen permiso para usar la clave KMS directamente en todas las [operaciones criptográficas](kms-cryptography.md#cryptographic-operations) admitidas en la clave KMS. También pueden usar la [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operación para obtener información detallada sobre la clave de KMS en la AWS KMS consola o mediante las operaciones de la AWS KMS API.

De forma predeterminada, la AWS KMS consola agrega las declaraciones de los usuarios clave, como las de los ejemplos siguientes, a la política de claves predeterminada. Debido a que son compatibles con diferentes operaciones de la API, las acciones en las declaraciones de la política para las claves KMS de cifrado simétricas, claves KMS HMAC, claves KMS asimétricas para el cifrado de claves público y las claves KMS asimétricas para la firma y la verificación son ligeramente diferentes.

**Claves KMS de cifrado simétricas**  
La consola agrega la siguiente declaración a la política de claves para claves KMS de cifrado simétricas.  

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

**Claves KMS HMAC**  
La consola agrega la siguiente declaración a la política de claves para claves KMS HMAC.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",  
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateMac",
    "kms:VerifyMac"
  ],
  "Resource": "*"
}
```

**Claves KMS asimétricas para el cifrado de claves públicas**  
La consola agrega la siguiente declaración a la política de claves para claves KMS asimétricas con un uso de claves de **Encrypt and decrypt (Cifrar y descifrar)**.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:DescribeKey",
    "kms:GetPublicKey"
  ],
  "Resource": "*"
}
```

**Claves KMS asimétricas para la firma y la verificación**  
La consola agrega la siguiente declaración a la política de claves para claves KMS asimétricas con un uso de claves de **Sign and verify (Firmar y verificar)**.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:Sign",
    "kms:Verify"
  ],
  "Resource": "*"
}
```

**Claves KMS asimétricas para la obtención de secretos compartidos**  
La consola agrega la siguiente declaración a la política de claves para claves KMS asimétricas con un uso de claves de **Key agreement (Acuerdo de claves)**.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:DeriveSharedSecret"
  ],
  "Resource": "*"
}
```

Las acciones de estas declaraciones proporcionan a los usuarios de clave los siguientes permisos.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)  
Permite a los usuarios de claves cifrar datos con esta clave KMS.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)  
Permite a los usuarios de claves descifrar los datos con esta clave KMS.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)  
Permite a los usuarios de claves obtener secretos compartidos con esta clave KMS.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)  
Permite a los usuarios de claves recuperar información sobre esta clave KMS, incluidos sus identificadores, fecha de creación, estado y mucho más. También permite a los usuarios clave mostrar detalles sobre la clave KMS en la AWS KMS consola.

`kms:GenerateDataKey*`  
Permite a los usuarios de claves solicitar una clave de datos simétrica o un par de claves de datos asimétricos para operaciones criptográficas del cliente. La consola utiliza el carácter comodín \$1 para representar el permiso para las siguientes operaciones de API: [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), y [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html). Estos permisos solo son válidos en las claves KMS simétricas que cifran las claves de datos.

[kms: GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)  
Permite a los usuarios de claves utilizar una clave KMS HMAC para generar una etiqueta HMAC.

[km: GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  
Permite a los usuarios de claves descargar la clave pública de la clave KMS asimétrica. Las partes con las que compartes esta clave pública pueden cifrar los datos fuera de AWS KMS. Sin embargo, esos textos cifrados solo se pueden descifrar llamando a la operación [Descifrar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) en AWS KMS.

[km: \$1 ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)   
Permite a los usuarios de claves volver a cifrar los datos que se habían cifrado originalmente con esta clave KMS, o utilizar esta clave KMS para volver a cifrar los datos cifrados anteriormente. La [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operación requiere acceso a las claves KMS de origen y destino. Para lograr esto, puede habilitar el permiso `kms:ReEncryptFrom` en la clave KMS fuente y el permiso `kms:ReEncryptTo` en la clave KMS de destino. Sin embargo, para simplificar, la consola permite `kms:ReEncrypt*` (con el carácter comodín `*`) en ambas claves KMS.

[kms:Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)  
Permite a los usuarios de claves firmar mensajes con esta clave KMS.

[kms:Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)  
Permite a los usuarios de claves verificar las firmas con esta clave KMS.

[kms: VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)  
Permite a los usuarios de claves utilizar una clave KMS HMAC para verificar una etiqueta HMAC.

## Permite a los usuarios clave utilizar la clave KMS con AWS los servicios
<a name="key-policy-service-integration"></a>

La política de claves predeterminada de la consola también proporciona a los usuarios clave los permisos de concesión que necesitan para proteger sus datos en AWS los servicios que utilizan concesiones. AWS los servicios suelen utilizar las concesiones para obtener un permiso específico y limitado para usar una clave de KMS.

Esta declaración de política clave permite al usuario clave crear, ver y revocar concesiones en la clave de KMS, pero solo cuando la solicitud de operación de concesión proviene de un [AWS servicio integrado](https://aws.amazon.com/kms/features/#AWS_Service_Integration) en ella. AWS KMS La condición de GrantIsFor AWSResource política [kms:](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) no permite al usuario llamar directamente a estas operaciones de concesión. Cuando el usuario clave lo permite, un AWS servicio puede crear una concesión en nombre del usuario que permita al servicio utilizar la clave KMS para proteger los datos del usuario. 

Los usuarios de claves requieren estos permisos de concesiones para utilizar la clave KMS con los servicios integrados, pero estos permisos no son suficientes. Los usuarios de claves también necesitan permiso para utilizar los servicios integrados. 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.

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

Por ejemplo, los usuarios de claves pueden utilizar estos permisos en la clave KMS de las siguientes maneras.
+ Utilice esta clave KMS con Amazon Elastic Block Store (Amazon EBS) y Amazon Elastic Compute Cloud (Amazon EC2) para adjuntar un volumen de EBS cifrado a una instancia EC2. El usuario de claves concede implícitamente a Amazon EC2 permiso para utilizar la clave KMS con el fin de asociar el volumen cifrado a la instancia. Para obtener más información, consulte [Cómo utiliza Amazon Elastic Block Store (Amazon EBS) AWS KMS](services-ebs.md).
+ Utilice esta clave KMS con Amazon Redshift para lanzar un clúster cifrado. El usuario de claves concede implícitamente a Amazon Redshift permiso para utilizar la clave KMS con el fin de lanzar el clúster cifrado y crear instantáneas cifradas. Para obtener más información, consulte [Cómo utiliza Amazon Redshift AWS KMS](services-redshift.md).
+ Utilice esta clave KMS con otros [servicios de AWS integrados con AWS KMS](service-integration.md), que utilizan concesiones, para crear, administrar o usar recursos cifrados con esos servicios.

La política de claves predeterminada permite a los usuarios de claves delegar su permiso de concesión a *todos* los servicios integrados que utilizan concesiones. Sin embargo, puede crear una política de claves personalizada que restrinja el permiso a AWS servicios específicos. Para obtener más información, consulte la clave de condición [kms: ViaService](conditions-kms.md#conditions-kms-via-service).

# Visualización de políticas de claves
<a name="key-policy-viewing"></a>

Puedes ver la política clave de una [clave gestionada por el AWS KMS cliente](concepts.md#customer-mgn-key) o [Clave administrada de AWS](concepts.md#aws-managed-key)de una de tu cuenta mediante la AWS KMS consola o la [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operación de la AWS KMS API. No puede utilizar estas técnicas para ver la política de claves de una clave KMS en una cuenta de Cuenta de AWS distinta. 

Para obtener más información sobre las políticas AWS KMS clave, consulta[Políticas clave en AWS KMS](key-policies.md). Para obtener información acerca de cómo determinar qué usuarios y roles tienen acceso a un clave KMS, consulte [Determinar el acceso a AWS KMS keys](determining-access.md).

## Uso de la AWS KMS consola
<a name="key-policy-viewing-console"></a>

Los usuarios autorizados pueden ver la política de claves para una [Clave administrada de AWS](concepts.md#aws-managed-key) o una [clave administrada por el cliente](concepts.md#customer-mgn-key) en la pestaña **Key policy** (Política de claves) de la Consola de administración de AWS. 

[Para ver la política clave de una clave de KMS en Consola de administración de AWS, debe tener los GetKeyPolicy permisos [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), kms: y [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html). ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)

1. Inicie sesión en la consola AWS Key Management Service (AWS KMS) Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Para cambiarla Región de AWS, usa el selector de regiones en la esquina superior derecha de la página.

1. 

   Para ver las claves de la cuenta que se AWS crean y administran para usted, en el panel de navegación, seleccione las claves **AWS administradas**. Si desea ver las claves de la cuenta que usted crea y administra, elija en el panel de navegación, **Claves administradas por el cliente**.

1. En la lista de claves KMS, elija el alias o ID de clave de la clave KMS que desea examinar.

1. Seleccione la pestaña **Key policy (Política de claves)**.

   En la pestaña **Key policy (Política de claves)**, es posible que vea el documento de política de claves. Esta es la *vista de política*. En las declaraciones de políticas de claves, puede ver las entidades principales a las que la política de claves ha dado acceso a la clave KMS y las acciones que pueden realizar.

   En el ejemplo siguiente se muestra la vista de política de la [política de claves predeterminada](key-policy-default.md).   
![\[Consulta la política clave predeterminada en la vista de políticas de la AWS KMS consola\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/images/console-key-policy-view.png)

   O bien, si creó la clave KMS en Consola de administración de AWS, verá la *vista predeterminada* con secciones para **los administradores de claves**, la **eliminación de claves** y **los usuarios clave**. Para ver el documento de políticas de claves, elija **Switch to policy view (Cambiar a la vista de política)**.

   En el ejemplo siguiente se muestra la vista predeterminada de la [política de claves predeterminada](key-policy-default.md).   
![\[Vista de la política de claves predeterminada en la vista predeterminada de la AWS KMS consola\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/images/console-key-policy-full-vsm.png)

## Uso de la AWS KMS API
<a name="key-policy-viewing-api"></a>

Para obtener la política de claves de una clave de KMS Cuenta de AWS, usa la [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operación de la AWS KMS API. No puede utilizar esta operación para ver una política de claves en una cuenta distinta.

En el siguiente ejemplo, se usa el [get-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)comando de AWS Command Line Interface (AWS CLI), pero puedes usar cualquier AWS SDK para realizar esta solicitud. 

Tenga en cuenta que el parámetro `PolicyName` es obligatorio aunque `default` sea su único valor válido. Además, este comando solicita la salida en texto, en lugar de en JSON, para que sea más fácil de ver.

Antes de ejecutar este comando, reemplace el ID de clave de ejemplo por uno válido de su cuenta.

```
$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text
```

La respuesta debe ser similar a la siguiente, que devuelve la [política de claves predeterminada](key-policy-default.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "key-consolepolicy-3",
  "Statement" : [ {
  "Sid" : "EnableIAMUserPermissions",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::111122223333:root"
    },
    "Action" : "kms:*",
    "Resource" : "*"
  } ]
}
```

------

# Cambio de una política de claves
<a name="key-policy-modifying"></a>

Puede cambiar la política de claves de una clave de KMS suya Cuenta de AWS mediante la [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operación Consola de administración de AWS o. No puede utilizar estas técnicas para cambiar la política de claves de una clave KMS en una cuenta de Cuenta de AWS distinta.

Cuando cambie una política de claves, tenga en cuenta las siguientes reglas:
+ Puede ver la política de claves para una [Clave administrada de AWS](concepts.md#aws-managed-key) o una [clave administrada por el cliente](concepts.md#customer-mgn-key), pero solo puede cambiar la política de claves para una clave KMS administrada por el cliente. Claves administradas por AWS Las políticas de las crea y administra el AWS servicio que creó la clave KMS en su cuenta. No puede ver ni modificar la política de claves de una [Clave propiedad de AWS](concepts.md#aws-owned-key).
+ Puede añadir o eliminar usuarios de IAM, funciones de IAM y Cuentas de AWS en la política clave, así como cambiar las acciones que se permiten o deniegan a esos responsables. Para obtener más información sobre las formas de especificar entidades principales y permisos en una política de claves, consulte [Políticas de claves](key-policies.md).
+ No puede agregar grupos de IAM a una política de claves, aunque puede agregar varios usuarios de IAM y roles de IAM. Para obtener más información, consulte [Conceder permiso a varias entidades principales de IAM para acceder a una clave KMS](iam-policies.md#key-policy-modifying-multiple-iam-users).
+ Si añades una política externa Cuentas de AWS a una política clave, también debes usar políticas de IAM en las cuentas externas para conceder permisos a los usuarios, grupos o roles de IAM en esas cuentas. Para obtener más información, consulte [Permitir a los usuarios de otras cuentas utilizar una clave KMS](key-policy-modifying-external-accounts.md).
+ El documento de política de claves resultante no puede superar los 32 KB (32 768 bytes).

## Cómo cambiar una política de claves
<a name="key-policy-modifying-how-to"></a>

Puede cambiar una política de claves de tres formas diferentes, tal como se explica en las siguientes secciones.

**Topics**
+ [Uso de la vista predeterminada Consola de administración de AWS](#key-policy-modifying-how-to-console-default-view)
+ [Uso de la vista Consola de administración de AWS de políticas](#key-policy-modifying-how-to-console-policy-view)
+ [Uso de la AWS KMS API](#key-policy-modifying-how-to-api)

### Uso de la vista predeterminada Consola de administración de AWS
<a name="key-policy-modifying-how-to-console-default-view"></a>

Puede utilizar la consola para cambiar una política de claves con una interfaz gráfica denominada la *vista predeterminada*.

Si estos pasos no se corresponden con lo que aparece en la consola, puede significar que la consola no ha creado esta política de claves. O bien que la política de claves se ha modificado de un modo que no admite la vista predeterminada de la consola. En ese caso, siga los pasos de [Uso de la vista Consola de administración de AWS de políticas](#key-policy-modifying-how-to-console-policy-view) o [Uso de la AWS KMS API](#key-policy-modifying-how-to-api).

1. Vea la política de claves para una clave administrada por el cliente tal y como se indica en [Uso de la AWS KMS consola](key-policy-viewing.md#key-policy-viewing-console). (No puede cambiar las políticas clave de Claves administradas por AWS.)

1. Decida lo que desea cambiar.
   + Para agregar o eliminar [administradores de claves](key-policy-default.md#key-policy-default-allow-administrators) y para permitir o evitar que los administradores de claves [eliminen la clave KMS](deleting-keys.md), utilice los controles de la sección **Key administrators (Administradores de claves)** de la página. Los administradores de claves administran la clave KMS, incluida su activación y desactivación, estableciendo la política de claves y [habilitando la rotación de claves](rotate-keys.md).
   + Para añadir o eliminar [usuarios clave](key-policy-default.md#key-policy-default-allow-users) y permitir o impedir que un usuario externo Cuentas de AWS utilice la clave KMS, utilice los controles de la sección **Usuarios clave** de la página. Los usuarios de claves pueden usar la clave KMS en [operaciones criptográficas](kms-cryptography.md#cryptographic-operations), como cifrar, descifrar, volver a cifrar y generar claves de datos.

### Uso de la vista Consola de administración de AWS de políticas
<a name="key-policy-modifying-how-to-console-policy-view"></a>

Puede utilizar la consola para cambiar un documento de política de claves con la *vista de políticas* de la consola.

1. Vea la política de claves para una clave administrada por el cliente tal y como se indica en [Uso de la AWS KMS consola](key-policy-viewing.md#key-policy-viewing-console). (No puede cambiar las políticas clave de Claves administradas por AWS.)

1. En la sección **Política de claves**, elija **Cambiar a la vista de política**.

1. Elija **Edit (Edición de)**.

1. Decida lo que desea cambiar.
   + Para agregar una nueva declaración, seleccione **Agregar nueva declaración**. A continuación, puede seleccionar las acciones, las entidades principales y las condiciones de su nueva declaración de política de claves entre las opciones que se muestran en el panel del creador de declaraciones, o bien introducir manualmente los elementos de la declaración de política.
   + Para eliminar una declaración de su política de claves, selecciónela y, a continuación, elija **Eliminar**. Revise la declaración de política seleccionada y confirme que desea eliminarla. Si decide que no desea continuar con la eliminación de la declaración, seleccione **Cancelar**.
   + Para editar una declaración de política de claves existente, selecciónela. A continuación, puede utilizar el panel generador de declaraciones para elegir los elementos específicos que desee modificar o editar de manera manual la declaración.

1. Seleccione **Save changes (Guardar cambios)**.

### Uso de la AWS KMS API
<a name="key-policy-modifying-how-to-api"></a>

Puede utilizar la [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operación para cambiar la política de claves de una clave de KMS en su Cuenta de AWS. No puede utilizar esta API en una clave KMS en una cuenta de Cuenta de AWS diferente.

1. Utilice la [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operación para obtener el documento de política clave existente y, a continuación, guárdelo en un archivo. Para obtener un código de ejemplo en varios lenguajes de programación, consulte [Úselo `GetKeyPolicy` con un AWS SDK o CLI](example_kms_GetKeyPolicy_section.md).

1. Abra el documento de políticas de claves en el editor de textos que prefiera, edítelo y, a continuación, guarde el archivo.

1. Utilice la [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operación para aplicar el documento de política clave actualizado a la clave de KMS. Para obtener un código de ejemplo en varios lenguajes de programación, consulte [Úselo `PutKeyPolicy` con un AWS SDK o CLI](example_kms_PutKeyPolicy_section.md).

Para ver un ejemplo de cómo copiar una política clave de una clave de KMS a otra, consulte el [GetKeyPolicy ejemplo](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html#examples) en la Referencia de AWS CLI comandos.

# Permisos para AWS los servicios en las políticas clave
<a name="key-policy-services"></a>

Muchos AWS servicios se utilizan AWS KMS keys para proteger los recursos que administran. Cuando un servicio usa [Claves propiedad de AWS](concepts.md#aws-owned-key) o [Claves administradas por AWS](concepts.md#aws-managed-key), el servicio establece y mantiene las políticas de claves para estas claves KMS. 

Sin embargo, cuando usa una [clave administrada personalizada](concepts.md#customer-mgn-key) con un servicio de AWS , establece y mantiene la política de claves. Esta política de claves debe permitir al servicio los permisos mínimos que necesita para proteger el recurso en su nombre. Le recomendamos que siga el principio de privilegio mínimo: otorgar al servicio solo los permisos que requiere. Puede hacerlo de manera eficaz aprendiendo qué permisos necesita el servicio y utilizando [claves de condición globales de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) y [claves de condición de AWS KMS](policy-conditions.md) para refinar los permisos. 

Para encontrar los permisos que requiere el servicio en una clave administrada por el cliente, consulte la documentación de cifrado del servicio. La siguiente lista incluye enlaces a la documentación de algunos servicios:
+ **AWS CloudTrail**permisos: [configure políticas AWS KMS clave para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail.html#create-kms-key-policy-for-cloudtrail-decrypt)
+ Permisos de **Amazon Elastic Block Store**: guía del usuario de [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#ebs-encryption-permissions) y [Guía del usuario de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EBSEncryption.html#ebs-encryption-permissions)
+ Permisos de **AWS Lambda**: [cifrado de datos en reposo para Lambda](https://docs.aws.amazon.com/lambda/latest/dg/security-encryption-at-rest.html)
+ Permisos de **Amazon Q**: [cifrado de datos para Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/data-encryption.html)
+ Permisos de **servicio de base de datos relacional de Amazon**: [administración de claves de AWS KMS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.Keys.html)
+ Permisos de **AWS Secrets Manager**: [autoriza el uso de la clave de KMS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-authz)
+ Permisos de **Amazon Simple Queue Service**: [administración de claves de Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)

# Uso de políticas de IAM con AWS KMS
<a name="iam-policies"></a>

Puedes usar las políticas de IAM, junto con las [políticas clave, las](key-policies.md) [subvenciones](grants.md) y las políticas de puntos finales de [VPC,](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy) para controlar el acceso a AWS KMS keys tu entrada. AWS KMS

**nota**  
Para utilizar una política de IAM a fin de controlar el acceso a una clave KMS, la política de claves de la clave KMS debe conceder permiso a la cuenta para utilizar políticas de IAM. En concreto, la política de claves debe incluir la [declaración de política que habilita las políticas de IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).  
En esta sección se explica cómo utilizar las políticas de IAM para controlar el acceso a las operaciones. AWS KMS Para obtener más información sobre IAM, consulte la [Guía del usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

Todas las claves KMS deben tener una política de claves. Las políticas de IAM son opcionales. Para utilizar una política de IAM a fin de controlar el acceso a una clave KMS, la política de claves de la clave KMS debe conceder permiso a la cuenta para utilizar políticas de IAM. En concreto, la política de claves debe incluir la [declaración de política que habilita las políticas de IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).

Las políticas de IAM pueden controlar el acceso a cualquier AWS KMS operación. A diferencia de las políticas clave, las políticas de IAM pueden controlar el acceso a varias claves de KMS y proporcionar permisos para las operaciones de varios servicios relacionados AWS . Sin embargo, las políticas de IAM son especialmente útiles para controlar el acceso a las operaciones [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), por ejemplo, que no pueden controlarse mediante una política clave porque no implican ninguna clave de KMS en particular.

Si accede a AWS KMS través de un punto de enlace de Amazon Virtual Private Cloud (Amazon VPC), también puede utilizar una política de punto de enlace de VPC para limitar el acceso a sus AWS KMS recursos cuando utilice el punto de enlace. Por ejemplo, cuando utilices el punto final de la VPC, es posible que solo permitas que los principales de tu cuenta accedan Cuenta de AWS a las claves gestionadas por el cliente. Para obtener más información, consulte las [políticas de punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy).

Para obtener ayuda sobre cómo escribir y dar formato a un documento de política JSON, consulte la [Referencia de políticas JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) en la *Guía del usuario de IAM*.

Puede las políticas de IAM de las siguientes formas:
+ **Adjuntar una política de permisos a un rol para federación o permisos en varias cuentas**: puede adjuntar una política de IAM a un rol de IAM para habilitar la identidad federada, permitir los permisos en varias cuentas o conceder permisos a las aplicaciones que se ejecutan en instancias EC2. Para obtener más información sobre los diferentes casos de uso para roles de IAM, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) en la *Guía del usuario de IAM*.
+ **Asociar una política de permisos a un usuario o grupo**: puede adjuntar una política que permita a un usuario o grupo de usuarios llamar a las operaciones de AWS KMS . Sin embargo, las prácticas recomendadas de IAM recomiendan utilizar identidades con credenciales temporales, como roles de IAM, siempre que sea posible.

En el siguiente ejemplo, se muestra una política de IAM con permisos. AWS KMS Esta política permite a las identidades de IAM a las que está asociada obtener todas las claves KMS y alias.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:ListKeys",
      "kms:ListAliases"
    ],
    "Resource": "*"
  }
}
```

------

Al igual que todas las políticas de IAM, esta política no tiene ningún elemento `Principal`. Cuando asocia una política de IAM a una identidad de IAM, esa identidad obtiene los permisos especificados en la política.

Para ver una tabla en la que se muestran todas las acciones de la AWS KMS API y los recursos a los que se aplican, consulte la[Referencia de permisos](kms-api-permissions-reference.md).

## Conceder permiso a varias entidades principales de IAM para acceder a una clave KMS
<a name="key-policy-modifying-multiple-iam-users"></a>

Los grupos de IAM no son entidades principales válidas en una política de claves. Para permitir que varios usuarios y roles obtengan acceso a una clave KMS, realice una de las acciones siguientes:
+ Utilice un rol de IAM como entidad principal en la política clave. Varios usuarios autorizados pueden asumir el rol según sea necesario. Para obtener más información, consulte la sección [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) en la *Guía del usuario de IAM*.

  Si bien puede incluir varios usuarios de IAM en una política clave, no se recomienda esta práctica porque requiere que actualice la política clave cada vez que cambia la lista de usuarios autorizados. Además, las mejores prácticas de IAM desaconsejan el uso de usuarios de IAM con credenciales a largo plazo. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM;*.
+ Utilice una política de IAM para conceder permisos a un grupo de IAM. Para ello, asegúrese de que la política de claves incluya la declaración que [permite a las políticas de IAM permitir el acceso a la clave KMS](key-policy-default.md#key-policy-default-allow-root-enable-iam), [cree una política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#create-managed-policy-console) que permita el acceso a la clave KMS y, a continuación, [adjunte dicha política a un grupo de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) que contenga los usuarios de IAM autorizados. Con este enfoque, no es necesario cambiar ninguna política cuando cambie la lista de usuarios autorizados. En su lugar, solo debe agregar o eliminar dichos usuarios del grupo de IAM apropiado. Para obtener más información, consulte los [grupos de usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) en la *Guía del usuario de IAM*

Para obtener más información sobre cómo funcionan juntas las políticas AWS KMS clave y las políticas de IAM, consulte[Solución de problemas de AWS KMS permisos](policy-evaluation.md).

# Prácticas recomendadas para las políticas de IAM
<a name="iam-policies-best-practices"></a>

Asegurar el acceso a AWS KMS keys es fundamental para la seguridad de todos sus AWS recursos. Las claves KMS se utilizan para proteger muchos de los recursos más sensibles de su Cuenta de AWS. Tómese el tiempo para diseñar las [políticas de claves](key-policies.md), las políticas de IAM, las [concesiones ](grants.md) y las políticas de punto de conexión de VPC que controlan el acceso a sus claves KMS.

En las declaraciones de política de IAM que controlan el acceso a las claves KMS, utilice el [principio del menos privilegiado](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Proporcione a las entidades principales de IAM solo los permisos que necesitan y únicamente en las claves de KMS que deben usar o administrar. 

Las siguientes prácticas recomendadas se aplican a las políticas de IAM que controlan el acceso a AWS KMS las claves y los alias. Para obtener información general sobre las prácticas recomendadas de política de IAM, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

**Use políticas de claves**  
Siempre que sea posible, proporcione permisos en las políticas de clave que afecten a una clave KMS, en lugar de en una política de IAM que se pueda aplicar a muchas claves KMS, incluidas las de otras Cuentas de AWS. Esto es especialmente importante para los permisos confidenciales, como [kms: PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) y [kms: ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html), pero también para las operaciones criptográficas que determinan cómo se protegen los datos.

**Limite el permiso CreateKey **  
Conceda permiso para crear claves ([kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)) solo a los directores que lo necesiten. Las principales entidades que crean una clave KMS también establecen su política de claves, de modo que puedan concederse a sí mismos y a otros permisos para usar y administrar las claves KMS que crean. Cuando permita este permiso, considere limitarlo mediante el uso de [condiciones de política](policy-conditions.md). Por ejemplo, puede usar la KeySpec condición [kms:](conditions-kms.md#conditions-kms-key-spec) para limitar el permiso a las claves KMS de cifrado simétrico.

**Especifique claves KMS en una política de IAM**  
Como práctica recomendada, especifique la [ARN de clave](concepts.md#key-id-key-ARN) de cada clave KMS a la que se aplica el permiso en el elemento `Resource`de la declaración de política. Esta práctica restringe el permiso a las claves KMS que requiere la entidad principal. Por ejemplo, este elemento `Resource` muestra solo las claves KMS que la entidad principal necesita usar.  

```
"Resource": [
    "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"
]
```
Si no es práctico especificar las claves de KMS, utilice un `Resource` valor que Cuenta de AWS limite el acceso a las claves de KMS en una región de confianza, como. `arn:aws:kms:region:account:key/*` O limite el acceso a las claves de KMS en todas las regiones (\$1) de una región de confianza Cuenta de AWS, por ejemplo. `arn:aws:kms:*:account:key/*`  
No puede utilizar un [ID de clave](concepts.md#key-id-key-id), [nombre de alias](concepts.md#key-id-alias-name) o bien [ARN de alias](concepts.md#key-id-alias-ARN) para representar una clave de KMS en el campo `Resource` de una política de IAM. Si especifica un alias ARN, la política se aplica al alias, no a la clave KMS. Para obtener información general sobre las políticas de IAM, consulte [Control del acceso a alias](alias-access.md).

**Evite “Recurso”: “\$1” en una política de IAM**  <a name="avoid-resource-star"></a>
Utilice los caracteres de comodín (\$1) con juicio. En una política de claves, el carácter de comodín en el elemento `Resource` representa la clave KMS a la que se adjunta la política de clave. Sin embargo, en una política de IAM, un carácter comodín solo en el `Resource` elemento (`"Resource": "*"`) aplica los permisos a todas las claves de KMS en todos los casos en los Cuentas de AWS que la cuenta del principal tenga permiso de uso. Esto puede incluir [las claves de KMS en otras cuentas Cuentas de AWS](key-policy-modifying-external-accounts.md), así como las claves de KMS de la cuenta del principal.  
Por ejemplo, para usar una clave de KMS en otra Cuenta de AWS, el principal necesita el permiso de la política de claves de la clave de KMS de la cuenta externa y de una política de IAM de su propia cuenta. Supongamos que una cuenta arbitraria le dio a su Cuenta de AWS el permiso [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) en sus claves KMS. Si es así, una política de IAM en su cuenta que le asigne permiso `kms:Decrypt` a un rol en todas las claves KMS (`"Resource": "*"`) satisfaría la parte de IAM del requisito. Como resultado, las principales entidades que pueden asumir ese rol ahora pueden descifrar textos cifrados utilizando la clave KMS en la cuenta que no es de confianza. Las entradas de sus operaciones aparecen en los CloudTrail registros de ambas cuentas.  
En particular, evite usar `"Resource": "*"` en una declaración de política que permita las siguientes operaciones de API. Estas operaciones se pueden realizar en las claves de KMS de otras Cuentas de AWS.  
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [Operaciones criptográficas](kms-cryptography.md#cryptographic-operations) [([cifrar, [descifrar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html),,,,, [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html),, [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html), [firmar [GetPublicKey[ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), verificar)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html), [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html), [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html), [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)

**Cuándo usar “Recurso”: “\$1”**  <a name="require-resource-star"></a>
En una política de IAM, utilice un carácter comodín en el elemento `Resource` solo para los permisos que lo requieran. Solo los siguientes permisos requieren el elemento `"Resource": "*"`.  
+ [kilómetros: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)
+ [km: GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)
+ [km: ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)
+ [km: ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)
+ Permisos para almacenes de claves personalizados, como [kms: CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html) y [kms: ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html).
Los permisos para las operaciones de alias ([kms: CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)[, kms: UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html), [kms: DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)) deben adjuntarse al alias y a la clave KMS. Puede utilizar `"Resource": "*"` en una política de IAM para representar los alias y las claves KMS, o especificar los alias y las claves KMS en el elemento `Resource`. Para ver ejemplos, consulte [Control del acceso a alias](alias-access.md).

 

Los ejemplos de este tema proporcionan más información y orientación para diseñar políticas de IAM para claves KMS. Para conocer las prácticas recomendadas de IAM para todos los AWS recursos, consulte [las prácticas recomendadas de seguridad en IAM en](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) la Guía del usuario de *IAM*.

# Especificación de claves KMS en declaraciones de políticas de IAM
<a name="cmks-in-iam-policies"></a>

Puede utilizar una política de IAM para permitir que una entidad principal utilice o administre claves KMS. Las claves KMS se especifican en el elemento `Resource` de la declaración de política. 
+ Para especificar una clave KMS en una declaración de política de IAM, debe utilizar su [ARN de clave](concepts.md#key-id-key-ARN). No puede utilizar un [ID de clave](concepts.md#key-id-key-id), un [nombre de alias](concepts.md#key-id-alias-name) ni un [ARN de alias](concepts.md#key-id-alias-ARN) para identificar una clave KMS en una declaración de política de IAM. 

  Por ejemplo: "`Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`"

  Para controlar el acceso a una clave de KMS en función de sus alias, utilice las claves de condición [kms: RequestAlias](conditions-kms.md#conditions-kms-request-alias) o [kms](conditions-kms.md#conditions-kms-resource-aliases):. ResourceAliases Para obtener más información, consulte [ABAC para AWS KMS](abac.md).

  Utilice un ARN de alias como recurso solo en una declaración de política que controle el acceso a las operaciones de alias, como [CreateAlias[UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/UpdateAlias.html)](https://docs.aws.amazon.com/kms/latest/APIReference/CreateAlias.html), o. [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/DeleteAlias.html) Para obtener más información, consulte [Control del acceso a alias](alias-access.md).
+ Para especificar varias claves KMS en la cuenta y la región, utilice caracteres de comodín (\$1) en las posiciones de ID de región o recurso del ARN de clave. 

  Por ejemplo, para especificar todas las claves KMS de la región EE. UU. Oeste (Oregón) de una cuenta, utilice “`Resource": "arn:aws:kms:us-west-2:111122223333:key/*`”. Para especificar todas las claves KMS en todas las regiones de la cuenta, utilice “`Resource": "arn:aws:kms:*:111122223333:key/*`”.
+ Para representar todas las claves KMS, utilice un carácter de comodín solo (`"*"`). Utilice este formato para las operaciones que no utilicen ninguna clave de KMS concreta, es decir [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), [GenerateRandom[ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html), y [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html).

Al escribir sus declaraciones de política, se trata de una [práctica recomendada](iam-policies-best-practices.md) para especificar solo las claves KMS que la entidad principal necesita usar, en lugar de darles acceso a todas las claves KMS. 

Por ejemplo, la siguiente declaración de política de IAM permite al director llamar a las operaciones [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) únicamente con las claves de KMS que figuran en el `Resource` elemento de la declaración de política. La especificación de claves KMS por ARN clave, que es una práctica recomendada, garantiza que los permisos estén limitados únicamente a las claves KMS especificadas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": [
     "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
     "arn:aws:kms:us-west-2:111122223333:key/01234abcd-12ab-34cd-56ef-1234567890ab"
    ]
  }
}
```

------

Para aplicar el permiso a todas las claves de KMS de una entidad de confianza concreta Cuenta de AWS, puede utilizar caracteres comodín (\$1) en las posiciones de la región y de los ID de las claves. Por ejemplo, la siguiente declaración de política permite a la entidad principal llamar a las operaciones especificadas en cualquier clave KMS de las dos cuentas de ejemplo de confianza.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:GenerateDataKeyPair"
    ],
    "Resource": [
      "arn:aws:kms:*:111122223333:key/*",
      "arn:aws:kms:*:444455556666:key/*"
    ]
  }
}
```

------

También puede utilizar un carácter comodín (`"*"`) solo en el elemento `Resource`. Debido a que permite el acceso a todas las claves KMS que la cuenta tiene permiso para usar, se recomienda principalmente para operaciones sin una clave KMS concreta y declaraciones `Deny`. También puede utilizarlo en declaraciones de política que solo permiten operaciones de solo lectura menos sensibles. Para determinar si una AWS KMS operación implica una clave de KMS concreta, busque el valor de la **clave de KMS** en la columna **Recursos** de la tabla de. [AWS KMS permisos](kms-api-permissions-reference.md)

Por ejemplo, la siguiente declaración de política utiliza un efecto `Deny` para prohibir que las principales entidades utilicen las operaciones especificadas en cualquier clave KMS. Utiliza un carácter comodín en el elemento `Resource` para representar todas las claves KMS.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": [
      "kms:CreateKey",
      "kms:PutKeyPolicy",
      "kms:CreateGrant",
      "kms:ScheduleKeyDeletion"
    ],
    "Resource": "*"
  }
}
```

------

La siguiente declaración de política utiliza un carácter comodín solo para representar todas las claves KMS. Pero solo permite operaciones de solo lectura menos sensibles y operaciones que no se aplican a ninguna clave KMS en particular.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:CreateKey",
      "kms:ListKeys",
      "kms:ListAliases",
      "kms:ListResourceTags"
    ],
    "Resource": "*"
  }
}
```

------

# Ejemplos de políticas de IAM
<a name="customer-managed-policies"></a>

En esta sección, encontrará ejemplos de políticas de IAM que conceden permisos para varias acciones de AWS KMS .

**importante**  
Algunos de los permisos de las siguientes políticas solo se permiten cuando la política de claves de la clave KMS también los permite. Para obtener más información, consulte [Referencia de permisos](kms-api-permissions-reference.md).

Para obtener ayuda sobre cómo escribir y dar formato a un documento de política JSON, consulte la [Referencia de políticas JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) en la *Guía del usuario de IAM*.

**Topics**
+ [Permita que un usuario vea las claves de KMS en la AWS KMS consola](#iam-policy-example-read-only-console)
+ [Permitir a un usuario crear claves KMS](#iam-policy-example-create-key)
+ [Permita que un usuario cifre y descifre con cualquier clave KMS de una clave específica Cuenta de AWS](#iam-policy-example-encrypt-decrypt-one-account)
+ [Permite a un usuario cifrar y descifrar con cualquier clave de KMS de una región específica Cuenta de AWS](#iam-policy-example-encrypt-decrypt-one-account-one-region)
+ [Permitir a un usuario cifrar y descifrar con claves KMS específicas](#iam-policy-example-encrypt-decrypt-specific-cmks)
+ [Impedir a un usuario desactivar o eliminar cualquier clave KMS](#iam-policy-example-deny-disable-delete)

## Permita que un usuario vea las claves de KMS en la AWS KMS consola
<a name="iam-policy-example-read-only-console"></a>

La siguiente política de IAM permite a los usuarios el acceso de solo lectura a la consola. AWS KMS Los usuarios con estos permisos pueden ver todas las claves de KMS que contienen Cuenta de AWS, pero no pueden crear ni cambiar ninguna clave de KMS. 

[Para ver las claves de KMS en las páginas de **claves administradas por el cliente **Claves administradas por AWS****y las claves administradas por el clienteListKeys, los directores necesitan GetResources los permisos [kms: ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)[, kms: y tag:](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html), incluso si las claves no tienen etiquetas ni alias.](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) Los permisos restantes, especialmente [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), son necesarios para ver las columnas y los datos opcionales de la tabla de claves de KMS en las páginas de detalles clave de KMS. Los ListRoles permisos [iam: ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) e [iam:](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) son necesarios para mostrar la política clave en la vista predeterminada sin errores. Para ver los datos de la página de **almacenes de claves personalizados** y los detalles sobre las claves de KMS en los almacenes de claves personalizados, los directores también necesitan el permiso [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html):. DescribeCustomKeyStores

Si limita el acceso de la consola de un usuario a determinadas claves KMS, la consola muestra un error para cada clave KMS que no está visible. 

Esta política incluye dos declaraciones de política. El elemento `Resource` en la primera declaración de política permite los permisos especificados en todas las claves KMS en todas las regiones del ejemplo Cuenta de AWS. Los lectores de la consola no necesitan acceso adicional porque la consola AWS KMS muestra solo las claves KMS en la cuenta de la entidad principal. Esto es cierto incluso si tienen permiso para ver las claves de KMS en otros Cuentas de AWS. Los permisos restantes AWS KMS y de IAM requieren un `"Resource": "*"` elemento porque no se aplican a ninguna clave de KMS en particular.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ReadOnlyAccessForAllKMSKeysInAccount",
      "Effect": "Allow",
      "Action": [
        "kms:GetPublicKey",        
        "kms:GetKeyRotationStatus",
        "kms:GetKeyPolicy",
        "kms:DescribeKey",
        "kms:ListKeyPolicies",
        "kms:ListResourceTags",
        "tag:GetResources"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    },
    {
      "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey",
      "Effect": "Allow",
      "Action": [
        "kms:ListKeys",
        "kms:ListAliases",
        "iam:ListRoles",
        "iam:ListUsers"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Permitir a un usuario crear claves KMS
<a name="iam-policy-example-create-key"></a>

La siguiente política de IAM permite a un usuario crear todos los tipos de claves KMS. El valor del `Resource` elemento se `*` debe a que la `CreateKey` operación no utiliza ningún AWS KMS recurso concreto (claves o alias de KMS).

[Para restringir al usuario a determinados tipos de claves de KMS, utilice las claves de KeyOrigin condición [kms: KeyUsage](conditions-kms.md#conditions-kms-key-usage), kms: y [kms:](conditions-kms.md#conditions-kms-key-origin). KeySpec](conditions-kms.md#conditions-kms-key-spec)

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "kms:CreateKey",
    "Resource": "*"
  }
}
```

------

Es posible que las principales entidades que crean claves necesiten algunos permisos relacionados.
+ **kms: PutKeyPolicy** — Los directores que tengan `kms:CreateKey` permiso pueden establecer la política de claves inicial para la clave de KMS. Sin embargo, la `CreateKey` persona que llama debe tener el PutKeyPolicy permiso [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html), que le permite cambiar la política de claves de KMS, o debe especificar el `BypassPolicyLockoutSafetyCheck` parámetro de`CreateKey`, lo cual no es recomendable. La persona que llama `CreateKey` puede obtener permiso `kms:PutKeyPolicy` para la clave KMS desde una política de IAM o pueden incluir este permiso en la política de claves de la clave KMS que están creando.
+ **kms: TagResource** — Para añadir etiquetas a la clave KMS durante la `CreateKey` operación, la persona que `CreateKey` llama debe tener el TagResource permiso [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) en una política de IAM. Incluir este permiso en la política de claves de la nueva clave KMS no es suficiente. Sin embargo, si la persona que llama a `CreateKey` incluye `kms:TagResource` en la política de clave inicial, pueden agregar etiquetas en una llamada separada después de crear la clave KMS.
+ **kms: CreateAlias** — Los responsables que creen una clave KMS en la AWS KMS consola deben tener el CreateAlias permiso [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) en la clave KMS y en el alias. (La consola realiza dos llamadas; una a `CreateKey` y una a `CreateAlias`). Debe proporcionar el permiso de alias en una política de IAM. Puede proporcionar estos permisos en una política de claves, una política de IAM o una concesión. Para obtener más información, consulte [Control del acceso a alias](alias-access.md).

Además`kms:CreateKey`, la siguiente política de IAM otorga `kms:TagResource` permisos a todas las claves de KMS de la cuenta Cuenta de AWS y `kms:CreateAlias` a todos los alias de la cuenta. También incluye algunos permisos de solo lectura útiles que únicamente se pueden proporcionar en una política de IAM. 

Esta política de IAM no incluye permiso `kms:PutKeyPolicy` ni ningún otro permiso que se pueda establecer en una política de clave. Es una [práctica recomendada](iam-policies-best-practices.md) para establecer estos permisos en la política de claves donde se aplican exclusivamente a una clave KMS.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPermissionsForParticularKMSKeys",
      "Effect": "Allow",
      "Action": "kms:TagResource",
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    },
    {
      "Sid": "IAMPermissionsForParticularAliases",
      "Effect": "Allow",
      "Action": "kms:CreateAlias",
      "Resource": "arn:aws:kms:*:111122223333:alias/*"
    },
    {
      "Sid": "IAMPermissionsForAllKMSKeys",
      "Effect": "Allow",
      "Action": [
        "kms:CreateKey",
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Permita que un usuario cifre y descifre con cualquier clave KMS de una clave específica Cuenta de AWS
<a name="iam-policy-example-encrypt-decrypt-one-account"></a>

La siguiente política de IAM permite a los usuarios cifrar y descifrar datos con cualquier clave de KMS en 111122223333. Cuenta de AWS 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:*:111122223333:key/*"
  }
}
```

------

## Permite a un usuario cifrar y descifrar con cualquier clave de KMS de una región específica Cuenta de AWS
<a name="iam-policy-example-encrypt-decrypt-one-account-one-region"></a>

La siguiente política de IAM permite a los usuarios cifrar y descifrar datos con cualquier clave KMS Cuenta de AWS `111122223333` en la región EE.UU. Oeste (Oregón).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/*"
    ]
  }
}
```

------

## Permitir a un usuario cifrar y descifrar con claves KMS específicas
<a name="iam-policy-example-encrypt-decrypt-specific-cmks"></a>

La siguiente política de IAM permite a un usuario cifrar y descifrar datos con las dos claves KMS especificadas en el elemento `Resource`. Al especificar una clave KMS en una declaración de política de IAM, debe utilizar la [ARN de clave](concepts.md#key-id-key-ARN) de la clave KMS.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "arn:aws:kms:us-west-2:111122223333:key/01234abc-d12a-b34c-d56e-f1234567890a'"
    ]
  }
}
```

------

## Impedir a un usuario desactivar o eliminar cualquier clave KMS
<a name="iam-policy-example-deny-disable-delete"></a>

La siguiente política de IAM impide que un usuario deshabilite o elimine cualquier clave KMS, aunque otra política de IAM o política de claves conceda estos permisos. Una política que deniega de forma explícita los permisos anula todas las demás políticas, incluso aquellas que hayan permitido explícitamente los mismos permisos. Para obtener más información, consulte [Solución de problemas de AWS KMS permisos](policy-evaluation.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": [
      "kms:DisableKey",
      "kms:ScheduleKeyDeletion"
    ],
    "Resource": "*"
  }
}
```

------

# Políticas de control de recursos en AWS KMS
<a name="resource-control-policies"></a>

Las políticas de control de recursos (RCPs) son un tipo de política organizacional que puede usar para aplicar controles preventivos a AWS los recursos de su organización. RCPs le ayudan a restringir de forma centralizada y a gran escala el acceso externo a sus AWS recursos. RCPs complementar las políticas de control de servicios (SCPs). Si bien se SCPs puede utilizar para establecer de forma centralizada los permisos máximos para las funciones y los usuarios de IAM de su organización, se RCPs puede utilizar para establecer de forma centralizada los permisos máximos sobre los AWS recursos de su organización.

Puede usarlo RCPs para administrar los permisos de las claves de KMS administradas por el cliente en su organización. RCPs por sí solos no son suficientes para conceder permisos a las claves administradas por el cliente. Una RCP no concede ningún permiso. Una RCP define una barrera de protección de permisos o establece límites a las acciones que las identidades pueden llevar a cabo en los recursos de las cuentas afectadas. El administrador aún debe adjuntar políticas basadas en identidad a los usuarios o roles de IAM, o políticas de claves para conceder permisos realmente.

**nota**  
Las políticas de control de recursos de su organización no se aplican a las [Claves administradas por AWS](concepts.md#aws-managed-key).  
Claves administradas por AWS si son creadas, administradas y utilizadas en su nombre por un AWS servicio, no puede cambiar ni administrar sus permisos.

**Más información**
+ Para obtener más información general RCPs, consulte [las políticas de control de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) en la *Guía del AWS Organizations usuario*.
+ Para obtener detalles sobre cómo definir RCPs, incluidos ejemplos, consulte la [sintaxis de RCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps_syntax.html) en la *Guía del AWS Organizations usuario*.

En el siguiente ejemplo, se muestra cómo utilizar una RCP para evitar que las entidades principales externas tengan acceso a las claves administradas por los clientes de su organización. Esta política es solo un ejemplo y debe modificarla para que se adapte a sus necesidades empresariales y de seguridad específicas. Por ejemplo, es posible que desee personalizar la política para permitir el acceso de sus socios comerciales. Para obtener más información, consulte el [repositorio de ejemplos de políticas de perímetro de datos](https://github.com/aws-samples/data-perimeter-policy-examples/tree/main/resource_control_policies).

**nota**  
El permiso `kms:RetireGrant` no es efectivo en una RCP, incluso si el elemento `Action` especifica un asterisco (\$1) como comodín.  
Para obtener más información sobre cómo se determina el permiso para `kms:RetireGrant`, consulte [Retiro y revocación de concesiones](grant-delete.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RCPEnforceIdentityPerimeter",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "kms:*",
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:PrincipalOrgID": "my-org-id"
                },
                "Bool": {
                    "aws:PrincipalIsAWSService": "false"
                }
            }
        }
    ]
}
```

------

El siguiente ejemplo de RCP exige que los directores de AWS servicio solo puedan acceder a las claves de KMS administradas por el cliente cuando la solicitud se origine en su organización. Esta política aplica el control solo a las solicitudes que tienen `aws:SourceAccount` presente. Esto garantiza que las integraciones de servicios que no requieren el uso de `aws:SourceAccount` no se vean afectadas. Si la `aws:SourceAccount` está presente en el contexto de la solicitud, se evaluará la condición `Null` como `true`, lo que provocará que se aplique la clave `aws:SourceOrgID`.

Para obtener información general sobre el problema del suplente confuso, consulte [El problema del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) en la *Guía del usuario de IAM*.

```
```

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RCPEnforceConfusedDeputyProtection",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "kms:*",
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:SourceOrgID": "my-org-id"
                },
                "Bool": {
                    "aws:PrincipalIsAWSService": "true"
                },
                "Null": {
                    "aws:SourceAccount": "false"
                }
            }
        }
    ]
}
```

------

# Subvenciones en AWS KMS
<a name="grants"></a>

Una *concesión* es un instrumento de política que permite que las [principales entidades de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) usen claves KMS en operaciones criptográficas. También puede permitirles ver una clave KMS (`DescribeKey`) y crear y administrar concesiones. Al autorizar el acceso a una clave KMS, se consideran concesiones junto con [políticas de claves](key-policies.md) y [políticas de IAM](iam-policies.md). Las concesiones se utilizan a menudo para permisos temporales, ya que puede crear uno, utilizar sus permisos y eliminarlo sin cambiar las políticas de claves o las políticas de IAM.

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

Las concesiones son un mecanismo de control de acceso muy flexible y útil. Al crear una concesión para una clave de KMS, la concesión permite a las entidades principales beneficiarias llamar a las operaciones de concesión especificadas en la clave de KMS siempre que se cumplan todas las condiciones especificadas en la concesión. 
+ Cada concesión permite el acceso a exactamente una clave KMS. Puede crear una concesión para una clave KMS en una Cuenta de AWS diferente.
+ Una concesión puede permitir el acceso a una clave KMS, pero no denegar el acceso.
+ Cada concesión tiene una [entidad principal beneficiaria](#terms-grantee-principal). El titular de la subvención puede representar una o más identidades en la Cuenta de AWS misma clave de KMS o en una cuenta diferente.
+ Una concesión solo puede permitir [operaciones de concesión](#terms-grant-operations). Las operaciones de concesión deben estar respaldadas por la clave KMS de la concesión. Si especificas una operación no admitida, la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)solicitud fallará con una excepción. `ValidationError`
+ La entidad principal beneficiaria puede utilizar los permisos que la concesión le otorga sin especificar la concesión, tal como lo haría si los permisos procedieran de una política de clave o de una política de IAM. Sin embargo, dado que la AWS KMS API sigue un modelo de [coherencia eventual](#terms-eventual-consistency), al crear, retirar o revocar una subvención, es posible que se produzca un breve retraso antes de que el cambio esté disponible de forma definitiva. AWS KMS Para utilizar los permisos de una concesión inmediatamente, [use un token de concesión](using-grant-token.md).
+ Un beneficiario principal autorizado puede eliminar la concesión ([retirarla](#terms-retire-grant) o [revocarla](#terms-revoke-grant)). Al eliminar una concesión se eliminan todos los permisos permitidos por la concesión. No es necesario averiguar qué políticas se deben agregar o quitar para deshacer la concesión. 
+ AWS KMS limita el número de concesiones en cada clave de KMS. Para obtener más información, consulte [Concesiones por clave KMS: 50 000](resource-limits.md#grants-per-key).

Tenga cuidado al crear concesiones y al dar permiso a otros para crear concesiones. El permiso para crear subvenciones tiene implicaciones de seguridad, al igual que permitir el PutKeyPolicy permiso de [KMS](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) para establecer políticas.
+ Los usuarios con permiso para crear concesiones para una clave de KMS (`kms:CreateGrant`) pueden usar una concesión para permitir que los usuarios y los roles, incluidos los AWS servicios, usen la clave de KMS. Los elementos principales pueden ser identidades propias Cuenta de AWS o identidades de una cuenta u organización diferente.
+ Las subvenciones solo permiten un subconjunto de AWS KMS operaciones. Puede utilizar concesiones para permitir a los principales beneficiarios ver la clave KMS, utilizarla en operaciones criptográficas y crear y retirar concesiones. Para obtener más información, consulte [Operaciones de concesión](#terms-grant-operations). También puede utilizar [restricciones de la concesión](create-grant-overview.md#grant-constraints) para limitar los permisos de una concesión para una clave de cifrado simétrica.
+ Las entidades principales pueden obtener permiso para crear concesiones a partir de una política de claves o de una política de IAM. Las entidades principales que reciben el permiso `kms:CreateGrant` de una política puede crear concesiones para cualquier [operación de concesión](#terms-grant-operations) en la clave KMS. Estas entidades principales no necesitan tener el permiso que conceden en la clave. Cuando se permite permiso `kms:CreateGrant` en una política, puede usar [condiciones de política](grant-authorization.md) para limitar este permiso.
+ Los principales beneficiarios también pueden obtener permiso para crear concesiones a partir de una concesión. Estas entidades principales solo pueden delegar los permisos que se les concedieron, incluso si tienen otros permisos de una política. Para obtener más información, consulte [Concesión del permiso CreateGrant](create-grant-overview.md#grant-creategrant).

## Conceptos de concesión
<a name="grant-concepts"></a>

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

**Restricción de concesiones**  <a name="terms-grant-constraint"></a>
Condición que limita los permisos de la concesión. Actualmente, AWS KMS admite restricciones de concesión basadas en el [contexto de cifrado](encrypt_context.md) de la solicitud de una operación criptográfica. Para obtener más información, consulte [Uso de restricciones de concesiones](create-grant-overview.md#grant-constraints).

**ID de concesión**  <a name="terms-grant-id"></a>
El identificador único de una concesión de una clave KMS. Puede usar un identificador de concesión, junto con un [identificador clave](concepts.md#key-id), para identificar una concesión en una [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)solicitud [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)o solicitud.

**Operaciones de concesión**  <a name="terms-grant-operations"></a>
Las AWS KMS operaciones que puedes permitir en una subvención. Si especificas otras operaciones, la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)solicitud fallará con una `ValidationError` excepción. Estas son también las operaciones que aceptan un [token de concesión](#grant_token). Para obtener información detallada sobre estos permisos, consulte la [AWS KMS permisos](kms-api-permissions-reference.md).  
Estas operaciones de concesión representan realmente permiso para usar la operación. Por lo tanto, para la operación `ReEncrypt`, puede especificar `ReEncryptFrom`, `ReEncryptTo` o ambos `ReEncrypt*`.  
Las operaciones de concesión son:  
+ Operaciones criptográficas
  + [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
  + [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
  + [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
  + [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
  + [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)
  + [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)
  + [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
  + [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)
  + [ReEncryptFrom](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
  + [ReEncryptTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
  + [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
  + [Verificar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
  + [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)
+ Otras operaciones
  + [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
  + [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
  + [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
  + [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
Las operaciones de concesión que usted permita deben ser compatibles con la clave KMS de la concesión. Si especificas una operación no admitida, la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)solicitud fallará con una `ValidationError` excepción. Por ejemplo, las concesiones para claves KMS de cifrado simétricas no pueden permitir las operaciones [Firmar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), [Verificar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html) o [https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html). Las concesiones para claves CMK asimétricas no pueden permitir operaciones que generen claves de datos o pares de claves de datos.

**Token de concesión**  <a name="grant_token"></a>
La AWS KMS API sigue un modelo de [coherencia eventual](#terms-eventual-consistency). Al crear una concesión, es posible que haya un breve retraso antes de que el cambio esté disponible a través de AWS KMS. Por lo general, el cambio tarda menos de unos segundos en propagarse por todo el sistema, pero en algunos casos puede tardar varios minutos. Si intenta utilizar una concesión antes de que se propague por completo por el sistema, es posible que obtenga un error de acceso denegado. Un token de concesión le permite hacer referencia a la concesión y utilizar los permisos de concesión inmediatamente.   
Un *token de concesión* es una cadena única, no secreta, de longitud variable, codificada en base64 que representa una concesión. Puede usar el token de concesión para identificar la concesión en cualquier [operación de concesión](#terms-grant-operations). Sin embargo, debido a que el valor del token es un resumen hash, no revela ningún detalle sobre la concesión.  
Un token de concesión está diseñado para utilizarse solo hasta que la concesión se haya propagado por completo a través de AWS KMS. Después de eso, el [principal beneficiario](#terms-grantee-principal) puede utilizar el permiso de la concesión sin proporcionar un token de concesión ni cualquier otra prueba de la concesión. Puedes usar un token de concesión en cualquier momento, pero una vez que la concesión sea coherente, AWS KMS utiliza la concesión para determinar los permisos, no el token de concesión.  
Por ejemplo, el siguiente comando llama a la [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operación. Utiliza un token de concesión para representar la concesión que da a la persona que llama (el principal beneficiario) permiso para llamar a `GenerateDataKey` en la clave KMS especificada.  

```
$ aws kms generate-data-key \
        --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
        --key-spec AES_256 \
        --grant-token $token
```
También puede utilizar un token de concesión para identificar una concesión en operaciones que administran concesiones. Por ejemplo, el [director que se retira](#terms-retiring-principal) puede usar un token de concesión en una llamada a la [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operación.   

```
$ aws kms retire-grant \
        --grant-token $token
```
`CreateGrant` es la única operación que devuelve un token de concesión. No puede obtener un token de concesión de ninguna otra AWS KMS operación ni del [evento de CloudTrail registro](ct-creategrant.md) de la CreateGrant operación. Las [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html)operaciones [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)y devuelven el [ID de concesión](#terms-grant-id), pero no un token de concesión.  
Para obtener más información, consulte [Uso de un token de concesión](using-grant-token.md).

**Principal beneficiario**  <a name="terms-grantee-principal"></a>
Las identidades que obtienen los permisos especificados en la concesión. Cada concesión tiene una entidad principal beneficiaria, pero la entidad principal beneficiaria puede representar varias identidades.   
El cesionario principal puede ser cualquier AWS principal, incluido un usuario Cuenta de AWS (root), un [usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html), un rol de [IAM, un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) o usuario [federado o un usuario con un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) asumido. El principal del beneficiario puede estar en la misma cuenta que la clave KMS o en una cuenta diferente. Sin embargo, el principal beneficiario no puede ser una [entidad principal del servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), un [grupo de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) o una [organización de AWS](https://docs.aws.amazon.com/organizations/latest/userguide/).  
Las prácticas recomendadas de IAM desalientan el uso de usuarios de IAM con credenciales a largo plazo. Siempre que sea posible, utilice los roles de IAM, que proporcionan credenciales temporales. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM;*.

**Retiro (de una concesión)**  <a name="terms-retire-grant"></a>
Termina una concesión. Retire una concesión cuando termine de usar los permisos.  
La revocación y el retiro de una concesión eliminan la concesión. Sin embargo, el retiro se realiza por medio de una entidad principal especificada en la concesión. La revocación suele realizarla un administrador de claves. Para obtener más información, consulte [Retiro y revocación de concesiones](grant-delete.md).

**Entidad principal que se va a dar de baja**  <a name="terms-retiring-principal"></a>
Una entidad principal que puede [retirar una concesión](#terms-retire-grant). Puede especificar una entidad principal que se va a dar de baja en una concesión, pero no es necesario. El principal que se jubila puede ser cualquier AWS principal, incluidos Cuentas de AWS los usuarios de IAM, los roles de IAM, los usuarios federados y los usuarios con roles asumidos. La entidad principal que se va a dar de baja puede estar en la misma cuenta de que la clave KMS o en una cuenta diferente.  
Las prácticas recomendadas de IAM desalientan el uso de usuarios de IAM con credenciales a largo plazo. Siempre que sea posible, utilice los roles de IAM, que proporcionan credenciales temporales. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM;*.
Además de retirar el principal especificado en la subvención, se puede retirar una subvención antes de la fecha Cuenta de AWS en que se creó la subvención. El [principal beneficiario](#terms-grantee-principal) puede retirar la concesión, si la concesión admite la operación `RetireGrant`. Además, el director Cuenta de AWS o un director Cuenta de AWS que se jubila puede delegar el permiso para retirar una subvención a un director de la IAM en el mismo país. Cuenta de AWS Para obtener más información, consulte [Retiro y revocación de concesiones](grant-delete.md).

**Revocación (de una concesión)**  <a name="terms-revoke-grant"></a>
Termina una concesión. Puede revocar una concesión para denegar activamente los permisos que permite la concesión.   
La revocación y el retiro de una concesión eliminan la concesión. Sin embargo, el retiro se realiza por medio de una entidad principal especificada en la concesión. La revocación suele realizarla un administrador de claves. Para obtener más información, consulte [Retiro y revocación de concesiones](grant-delete.md).

**Consistencia final (para las concesiones)**  <a name="terms-eventual-consistency"></a>
La AWS KMS API sigue un modelo de [coherencia eventual](https://en.wikipedia.org/wiki/Eventual_consistency). Al crear, retirar o revocar una concesión, es posible que haya un breve retraso antes de que el cambio esté disponible a través de AWS KMS. Por lo general, el cambio tarda menos de unos segundos en propagarse por todo el sistema, pero en algunos casos puede tardar varios minutos.  
Puede darse cuenta de este breve retraso si recibe errores inesperados. Por ejemplo, si intentas gestionar una nueva concesión o utilizas los permisos de una nueva concesión antes de que se conozca la concesión en su totalidad AWS KMS, es posible que se produzca un error de acceso denegado. Si retira o revoca una concesión, es posible que el principal beneficiario pueda seguir utilizando sus permisos durante un breve período hasta que la concesión se elimine por completo. La estrategia habitual consiste en volver a intentar la solicitud, y algunas AWS SDKs incluyen una lógica automática de rechazo y reintento.  
AWS KMS tiene funciones para mitigar este breve retraso.   
+ Para utilizar los permisos de una nueva concesión inmediatamente, utilice un [token de concesión](using-grant-token.md). Puede usar un token de concesión para referirse a una concesión en cualquier [operación de concesión](#terms-grant-operations). Para obtener instrucciones, consulte [Uso de un token de concesión](using-grant-token.md). 
+ La [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación tiene un `Name` parámetro que impide que las operaciones de reintento generen concesiones duplicadas.
Los tokens de concesión reemplazan la validez de la concesión hasta que todos los puntos de conexión del servicio se hayan actualizado con el nuevo estado de concesión. En la mayoría de los casos, la consistencia final se logrará en cinco minutos.
Para obtener más información, consulte [Coherencia final de AWS KMS](accessing-kms.md#programming-eventual-consistency).

# Mejores prácticas para las subvenciones AWS KMS
<a name="grant-best-practices"></a>

AWS KMS recomienda las siguientes prácticas recomendadas a la hora de crear, utilizar y gestionar las subvenciones.
+ Limite los permisos de la concesión a los que requiere el principal beneficiario. Utilice el principio de [acceso menos privilegiado](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Utilice un principal beneficiario específico, como un rol de IAM, y otorgue permiso al principal beneficiario para usar solo las operaciones de API que requieran. 
+ Use el contexto de cifrado de [restricciones de concesión](grants.md#terms-grant-constraint) para asegurarse de que las personas que llaman utilizan la clave KMS para el propósito previsto. Para obtener más información sobre cómo utilizar el contexto de cifrado en una solicitud para proteger sus datos, consulte [Cómo proteger la integridad de sus datos cifrados mediante el uso AWS Key Management Service y EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) en el *blog sobre AWS seguridad*.
**sugerencia**  
Utilice la restricción de [EncryptionContextEqual](create-grant-overview.md#grant-constraints)concesión siempre que sea posible. La restricción de [EncryptionContextSubset](create-grant-overview.md#grant-constraints)concesión es más difícil de usar correctamente. Si necesita usarlo, lea detenidamente la documentación y pruebe la limitación de concesión para asegurarse de que funciona según lo previsto.
+ Suprima concesiones duplicadas. Las concesiones duplicadas tienen la misma clave ARN, acciones de API, principal beneficiario, contexto de cifrado y nombre. Si retira o revoca la concesión original pero deja los duplicados, las concesiones duplicadas sobrantes constituyen escaladas no intencionadas de privilegios. Para evitar duplicar concesiones al volver a intentar una solicitud `CreateGrant`, utilice el [parámetro `Name`](create-grant-overview.md#grant-create). Para detectar concesiones duplicadas, utilice la [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operación. Si crea accidentalmente una concesión duplicada, retírela o revóquela lo antes posible. 
**nota**  
Las concesiones para las [claves administradas por AWS](concepts.md#aws-managed-key) podrían parecer duplicados, pero tienen diferentes beneficiarios principales.  
El campo `GranteePrincipal` de la respuesta `ListGrants` generalmente contiene el principal beneficiario de la concesión. Sin embargo, cuando el principal beneficiario de la subvención es un AWS servicio, el `GranteePrincipal` campo contiene el [principal del servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), que puede representar a varios directores distintos del concesionario.
+ Recuerde que las concesiones no caducan automáticamente. [Retire o revoque la concesiones](grant-delete.md) ni bien el permiso ya no sea necesario. Las concesiones que no se eliminan pueden crear un riesgo de seguridad para los recursos cifrados.

# Control del acceso a las concesiones
<a name="grant-authorization"></a>

Puede controlar el acceso a las operaciones que crean y administran concesiones en políticas de claves, políticas de IAM y concesiones. Las principales entidades que reciben el permiso `CreateGrant` de una concesión tienen [permisos de concesión más limitados](create-grant-overview.md#grant-creategrant). 


| Operación de la API | Política de claves o política de IAM | Concesión | 
| --- | --- | --- | 
| CreateGrant | ✓ | ✓ | 
| ListGrants | ✓ | - | 
| ListRetirableGrants | ✓ | - | 
| Retiro de concesiones | (Limitado. Consulte [Retiro y revocación de concesiones](grant-delete.md)) | ✓ | 
| RevokeGrant | ✓ | - | 

Si utiliza una política clave o una política de IAM para controlar el acceso a las operaciones que crean y gestionan las subvenciones, puede utilizar una o varias de las siguientes condiciones de política para limitar el permiso. AWS KMS admite todas las siguientes claves de condición relacionadas con la concesión. Para obtener más detalles y ejemplos, consulte [AWS KMS claves de condición](conditions-kms.md).

[km: GrantConstraintType](conditions-kms.md#conditions-kms-grant-constraint-type)  
Permite a las entidades principales crear una concesión solo cuando la concesión incluye la [restricción de concesiones](create-grant-overview.md#grant-constraints) especificada.

[km: GrantIsFor AWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource)  
Permite que los directores `CreateGrant` llamen o `RevokeGrant` solo cuando [un AWS servicio integrado AWS KMS envía](https://aws.amazon.com/kms/features/#AWS_Service_Integration) la solicitud en nombre del director. `ListGrants`

[km: GrantOperations](conditions-kms.md#conditions-kms-grant-operations)  
Permite a las entidades principales crear una concesión, pero limita la concesión a las operaciones especificadas.

[km: GranteePrincipal](conditions-kms.md#conditions-kms-grantee-principal)  
Permite a las entidades principales crear una concesión solo para el [beneficiario principal](grants.md#terms-grantee-principal).

[km: RetiringPrincipal](conditions-kms.md#conditions-kms-retiring-principal)  
Permite a las entidades principales crear una concesión solo cuando la concesión especifica una [entidad principal que se retira](grants.md#terms-retiring-principal) en particular.

# Creación de concesiones
<a name="create-grant-overview"></a>

Antes de crear una concesión, obtenga información sobre las opciones para personalizar su concesión. Puede usar *restricciones de concesión* para limitar los permisos de la concesión. Además, obtenga más información sobre la concesión de permiso `CreateGrant`. Las principales entidades que obtienen permiso para crear concesiones a partir de una concesión están limitadas en las concesiones que pueden crear.

**Topics**
+ [Crear una concesión](#grant-create)
+ [Concesión del permiso CreateGrant](#grant-creategrant)

## Crear una concesión
<a name="grant-create"></a>

Para crear una subvención, llame a la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación. Especifique una clave KMS, un [beneficiario principal](grants.md#terms-grantee-principal) y una lista de [operaciones de concesión](grants.md#terms-grant-operations) permitidas. También puede designar una [entidad principal que se retira](grants.md#terms-retiring-principal). Para personalizar la concesión, utilice los parámetros opcionales `Constraints` para definir [restricciones de concesión](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html).

Al crear, retirar o revocar una concesión, es posible que haya un breve retraso, normalmente menos de cinco minutos, antes de que el cambio esté disponible a través de AWS KMS. Para obtener más información, consulte [Eventual consistency (for grants)](grants.md#terms-eventual-consistency).

Por ejemplo, el siguiente comando `CreateGrant` crea una concesión que permite a los usuarios que están autorizados a asumir el rol `keyUserRole` para llamar a la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) en la [clave KMS simétrica](symm-asymm-choose-key-spec.md#symmetric-cmks) especificada. La concesión utiliza el parámetro `RetiringPrincipal` para designar una entidad principal que puede retirar la concesión. También incluye una restricción de concesión que permite el permiso únicamente cuando el [contexto de cifrado](encrypt_context.md) de la solicitud incluye `"Department": "IT"`.

```
$  aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

Si su código vuelve a intentar la operación `CreateGrant`, o utiliza una [AWS SDK que reintenta automáticamente las solicitudes](https://docs.aws.amazon.com/general/latest/gr/api-retries.html), utilice el parámetro opcional [Name](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-Name) (Nombre) para evitar la creación de concesiones duplicadas. Si AWS KMS recibe una `CreateGrant` solicitud de concesión con las mismas propiedades que una subvención existente, incluido el nombre, reconoce la solicitud como un reintento y no crea una nueva concesión. No puede usar el valor `Name` para identificar la concesión en cualquier operación de AWS KMS .

**importante**  
No incluya información confidencial en el nombre de la concesión. Puede aparecer en texto plano en CloudTrail los registros y otros resultados.

```
$ aws kms create-grant \
    --name IT-1234abcd-keyUserRole-decrypt \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

En [Úselo `CreateGrant` con un AWS SDK o CLI](example_kms_CreateGrant_section.md), puede consultar ejemplos de código que muestran cómo crear concesiones en varios lenguajes de programación.

### Uso de restricciones de concesiones
<a name="grant-constraints"></a>

Las [restricciones de concesión](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) establecen condiciones sobre los permisos que la concesión otorga a entidad principal beneficiaria. Las restricciones de concesión sustituyen a las [claves de condición](policy-conditions.md) en una [política de claves](key-policies.md) o una [política de IAM](iam-policies.md). Cada valor de restricción de concesión puede incluir hasta 8 pares de contexto de cifrado. El valor de contexto de cifrado en cada restricción de concesión no puede superar los 384 caracteres.

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

AWS KMS admite dos restricciones de concesión `EncryptionContextEquals` y `EncryptionContextSubset` ambas establecen los requisitos para el [contexto de cifrado](encrypt_context.md) en una solicitud de una operación criptográfica. 

Las restricciones de concesión de contexto de cifrado están diseñadas para ser utilizadas con [operaciones de concesión](grants.md#terms-grant-operations) que tienen un parámetro de contexto de cifrado. 
+ Las restricciones de contexto de cifrado solo son válidas en una concesión para una clave KMS de cifrado simétrica. Las operaciones criptográficas con otras claves KMS no son compatibles con un contexto de cifrado.
+ La restricción de contexto de cifrado se omite para las operaciones `DescribeKey` y `RetireGrant`. `DescribeKey` y `RetireGrant` no tienen un parámetro de contexto de cifrado, pero puede incluir estas operaciones en una concesión que tenga una restricción de contexto de cifrado.
+ Puede usar una restricción de contexto de cifrado en una concesión para la operación `CreateGrant`. La restricción de contexto de cifrado requiere que cualquier concesión creada con el permiso `CreateGrant` tenga una restricción de contexto de cifrado igualmente estricta o más estricta.

AWS KMS admite las siguientes restricciones de concesión del contexto de cifrado.

**EncryptionContextEquals**  
Use `EncryptionContextEquals` para especificar el contexto de cifrado exacto para las solicitudes permitidas.   
`EncryptionContextEquals` requiere que los pares de contexto de cifrado de la solicitud coincidan exactamente, incluido el uso de mayúsculas y minúsculas, con los pares de contexto de cifrado de la restricción de concesión. Los pares pueden aparecer en cualquier orden, pero las claves y los valores de cada par no pueden variar.   
Por ejemplo, si la limitación de la concesión `EncryptionContextEquals` requiere el par de restricción de concesión `"Department": "IT"`, la concesión permite solicitudes del tipo especificado cuando el contexto de cifrado de la solicitud es exactamente `"Department": "IT"`.

**EncryptionContextSubset**  
Use `EncryptionContextSubset` para requerir que las solicitudes incluyan pares de contexto de cifrado particulares.  
`EncryptionContextSubset` requiere que la solicitud incluya todos los pares de contexto de cifrado de la restricción de concesión (una coincidencia exacta, incluido el uso de mayúsculas y minúsculas), pero la solicitud también puede tener pares de contexto de cifrado adicionales. Los pares pueden aparecer en cualquier orden, pero las claves y los valores de cada par no pueden variar.   
Por ejemplo, si la limitación de la concesión `EncryptionContextSubset` requiere el par de contexto de concesión de `Department=IT`, la concesión permite solicitudes del tipo especificado cuando el contexto de cifrado de la solicitud es `"Department": "IT"`, o incluye `"Department": "IT"` junto con otros pares de contexto de cifrado, como `"Department": "IT","Purpose": "Test"`.

Para especificar una restricción de contexto de cifrado en la concesión de una clave KMS de cifrado simétrico, utilice el `Constraints` parámetro en la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación. La concesión que crea este comando concede a los usuarios autorizados asumir el permiso del rol `keyUserRole` para llamar a la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Sin embargo, ese permiso solo es efectivo cuando el contexto de cifrado de la solicitud `Decrypt` es un par de contexto de cifrado `"Department": "IT"`.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextEquals={Department=IT}
```

La concesión resultante se parece a la siguiente. Tenga en cuenta que el permiso concedido al rol `keyUserRole` solo es efectivo cuando la solicitud `Decrypt` utiliza el mismo par de contexto de cifrado especificado en la restricción de concesiones. Para encontrar las concesiones de una clave KMS, utilice la [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operación.

```
$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "Decrypt"
            ],
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
            "CreationDate": 1568565290.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole"
        }
    ]
}
```

Para satisfacer la limitación de concesión `EncryptionContextEquals`, el contexto de cifrado en la solicitud para la operación `Decrypt` debe ser un par `"Department": "IT"`. Una solicitud como la siguiente del principal beneficiario satisfaría la restricción de concesiones `EncryptionContextEquals`.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

Cuando la restricción de concesión es `EncryptionContextSubset`, los pares de contexto de cifrado de la solicitud deben incluir los pares de contexto de cifrado de la restricción de concesión, pero la solicitud también puede incluir otros pares de contexto de cifrado. La siguiente restricción de concesión requiere que uno de los pares de contexto de cifrado en la solicitud sea `"Deparment": "IT"`.

```
"Constraints": {
   "EncryptionContextSubset": {
       "Department": "IT"
   }
}
```

La siguiente solicitud del principal beneficiario sería capaz de satisfacer tanto las restricciones de concesión `EncryptionContextEqual` y `EncryptionContextSubset` en este ejemplo.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

Sin embargo, una solicitud como la siguiente del principal beneficiario podría satisfacer la limitación de concesión `EncryptionContextSubset`, pero se produciría un error en la restricción de concesiones `EncryptionContextEquals`.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT,Purpose=Test
```

AWS los servicios suelen utilizar restricciones de contexto de cifrado en las concesiones que les dan permiso para usar las claves de KMS en su Cuenta de AWS. Por ejemplo, Amazon DynamoDB utiliza una concesión como la siguiente para obtener permiso para utilizar la [Clave administrada de AWS](concepts.md#aws-managed-key) para DynamoDB de su cuenta. La restricción `EncryptionContextSubset` de esta concesión hace que los permisos de la concesión solo sean efectivos cuando el contexto de cifrado de la solicitud contiene pares `"tableName": "Services"` y `"subscriberID": "111122223333"`. Esta restricción de concesión significa que la concesión permite a DynamoDB utilizar la clave KMS especificada solo en una determinada tabla de su Cuenta de AWS.

Para obtener este resultado, ejecute la [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operación en DynamoDB de su cuenta. Clave administrada de AWS 

```
$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

{
    "Grants": [
        {
            "Operations": [
                "Decrypt",
                "Encrypt",
                "GenerateDataKey",
                "ReEncryptFrom",
                "ReEncryptTo",
                "RetireGrant",
                "DescribeKey"
            ],
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "Constraints": {
                "EncryptionContextSubset": {
                    "aws:dynamodb:tableName": "Services",
                    "aws:dynamodb:subscriberId": "111122223333"
                }
            },
            "CreationDate": 1518567315.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321",
            "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com",
            "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com",
            "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a",
            "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59"
        }
    ]
}
```

## Concesión del permiso CreateGrant
<a name="grant-creategrant"></a>

Una concesión puede incluir permiso para llamar a la operación `CreateGrant`. Pero cuando un [principal beneficiario](grants.md#terms-grantee-principal) obtiene permiso para llamar a `CreateGrant` desde una concesión, en lugar de una política, ese permiso es limitado. 
+ El principal beneficiario solo puede crear concesiones que permitan algunas o todas las operaciones de la concesión principal.
+ Las [restricciones de concesión](#grant-constraints) en las concesiones que crean deben ser al menos tan estrictas como las de la concesión principal.

Estas limitaciones no se aplican a las entidades principales que obtienen permito `CreateGrant` de una política, aunque sus permisos pueden estar limitados por [condiciones de política](grant-authorization.md).

Por ejemplo, supongamos que existe una concesión que permite a la entidad principal beneficiaria llamar a las operaciones `GenerateDataKey`, `Decrypt` y `CreateGrant`. Llamamos a una concesión que permita un permiso `CreateGrant` una *concesión principal*.

```
# The original grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "GenerateDataKey",
                "Decrypt",
                "CreateGrant
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

La entidad principal beneficiaria, exampleUser, puede utilizar este permiso para crear una concesión que incluya cualquier subconjunto de las operaciones especificadas en la concesión principal, como `CreateGrant` y `Decrypt`. La *concesión secundaria* no puede incluir otras operaciones, como `ScheduleKeyDeletion` o `ReEncrypt`.

Además, las [restricciones de concesión](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) de las concesiones secundarias deben ser restrictivas o más restrictivas que las de la concesión principal. Por ejemplo, la concesión secundaria puede agregar pares a una restricción `EncryptionContextSubset` de la concesión principal, pero no puede eliminarlos. La concesión secundaria puede cambiar una restricción `EncryptionContextSubset` por una restricción `EncryptionContextEquals`, pero no al revés.

Las prácticas recomendadas de IAM desalientan el uso de usuarios de IAM con credenciales a largo plazo. Siempre que sea posible, utilice los roles de IAM, que proporcionan credenciales temporales. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM;*.

Por ejemplo, el principal beneficiario puede usar el permiso `CreateGrant` que obtuvo de la concesión principal para crear la siguiente concesión secundaria. Las operaciones del subsidio por hijos son un subconjunto de las operaciones del subsidio parental y las restricciones de la concesión son más restrictivas.

```
# The child grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572249600.0,
            "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f",
            "Operations": [
                "CreateGrant"
                "Decrypt"
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

El principal beneficiario en la concesión secundaria, `anotherUser`, puede usar su permiso `CreateGrant` para crear concesiones. Sin embargo, las concesiones que `anotherUser` crea deben incluir las operaciones en su concesión principal o en un subconjunto, y las restricciones de concesión deben ser las mismas o más estrictas. 

# Visualización de concesiones
<a name="grant-view"></a>

Para ver la concesión, utilice la [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operación. Debe especificar la clave KMS a la que se aplican las concesiones. También puede filtrar la lista de concesiones por ID de concesión o entidad beneficiaria principal. Para obtener más ejemplos, consulte [Úselo `ListGrants` con un AWS SDK o CLI](example_kms_ListGrants_section.md).

Para ver todas las subvenciones de la región Cuenta de AWS y con un [principal saliente](grants.md#terms-retiring-principal) en particular, utilice [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html). Las respuestas incluyen detalles sobre cada concesión.

**nota**  
El campo `GranteePrincipal` de la respuesta `ListGrants` generalmente contiene el principal beneficiario de la concesión. Sin embargo, cuando el principal beneficiario de la subvención es un AWS servicio, el `GranteePrincipal` campo contiene el [principal del servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), que puede representar a varios directores distintos del concesionario.

Por ejemplo, el siguiente comando muestra todas las concesiones de una clave KMS.

```
$  aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Operations": [
                "Decrypt"
            ]
        }
    ]
}
```

# Uso de un token de concesión
<a name="using-grant-token"></a>

[La AWS KMS API sigue un modelo de coherencia eventual.](grants.md#terms-eventual-consistency) Al crear una concesión, es posible que la concesión no sea efectiva inmediatamente. Es posible que haya un breve retraso antes de que el cambio esté disponible a través de AWS KMS. Por lo general, el cambio tarda menos de unos segundos en propagarse por todo el sistema, pero en algunos casos puede tardar varios minutos. Una vez que el cambio se haya propagado totalmente a través del sistema, la entidad principal beneficiaria puede utilizar los permisos de la concesión sin especificar el token de concesión ni ninguna prueba de la concesión. Sin embargo, si una concesión es tan nueva que aún no la conocen todos AWS KMS, es posible que la solicitud no se realice correctamente y se produzca un `AccessDeniedException` error.

Para utilizar los permisos de una nueva concesión inmediatamente, utilice el [token de concesión](grants.md#grant_token) para la concesión. Guarde el token de concesión que devuelve la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación. A continuación, envíe el token de concesión en la solicitud de la AWS KMS operación. Puedes enviar un token de subvención a cualquier [operación de AWS KMS subvención](grants.md#terms-grant-operations) y puedes enviar varios tokens de subvención en la misma solicitud.



En el siguiente ejemplo, se utiliza la `CreateGrant` operación para crear una concesión que permita las operaciones de [descifrado [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)y descifrado.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) Guarda el token de concesión que `CreateGrant` devuelve en la variable `token`. Luego, en una llamada a la operación `GenerateDataKey`, utiliza el token de concesión en la variable `token`.

```
# Create a grant; save the grant token 
$ token=$(aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/appUser \
    --retiring-principal arn:aws:iam::111122223333:user/acctAdmin \
    --operations GenerateDataKey Decrypt \
    --query GrantToken \
    --output text)

# Use the grant token in a request
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    –-key-spec AES_256 \
    --grant-tokens $token
```

Las entidades principales con permiso también pueden usar un token de concesión para retirar una nueva concesión incluso antes de que la concesión esté disponible en AWS KMS. (La operación `RevokeGrant` no acepta un token de concesión). Para obtener más información, consulte [Retiro y revocación de concesiones](grant-delete.md).

```
# Retire the grant
$ aws kms retire-grant --grant-token $token
```

# Retiro y revocación de concesiones
<a name="grant-delete"></a>

Para eliminar una concesión, retírela o revoquela.

Las [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)operaciones [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)y son muy similares entre sí. Ambas operaciones eliminan una concesión, lo que elimina los permisos que permite la concesión. La principal diferencia entre estas operaciones es cómo se autorizan.

**RevokeGrant**  
Como la mayoría de AWS KMS las operaciones, el acceso a la `RevokeGrant` operación se controla mediante [políticas clave y políticas](key-policies.md) de [IAM](iam-policies.md). Cualquier director puede llamar a la [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)API con `kms:RevokeGrant` permiso. Este permiso está incluido en los permisos estándar otorgados a los administradores de claves. Normalmente, los administradores revocan una concesión para denegar los permisos que permite la concesión.

**RetireGrant**  
La concesión determina quién puede retirarla. Este diseño le permite controlar el ciclo de vida de una concesión sin cambiar las políticas de claves o las políticas de IAM. Normalmente, usted retira una concesión cuando ha terminado de usar sus permisos.  
Una [entidad principal que se retira](grants.md#terms-retiring-principal) opcional especificada puede retirar una concesión. La [entidad beneficiaria principal](grants.md#terms-grantee-principal) también puede retirar la concesión, pero solo si también se trata de una entidad principal que se retira o si la concesión incluye la operación `RetireGrant`. Como alternativa, la entidad Cuenta de AWS en la que se creó la subvención puede retirarla.  
Hay un permiso `kms:RetireGrant` que se puede utilizar en las políticas de IAM, pero tiene una utilidad limitada. Las entidades principales especificadas en la concesión pueden retirar una concesión sin el permiso `kms:RetireGrant`. El permiso `kms:RetireGrant` por sí solo no permite a las entidades principales retirar una concesión. El permiso `kms:RetireGrant` no entra en vigor en una [política clave](key-policies.md) o en [una políticade control de recursos](resource-control-policies.md).  
+ Para denegar el permiso de retirar una concesión, puede usar una acción `Deny` con el permiso `kms:RetireGrant` en sus políticas de IAM.
+ El Cuenta de AWS propietario de la clave KMS puede delegar el `kms:RetireGrant` permiso a un principal de IAM de la cuenta. 
+ Si el principal que se retira es otro Cuenta de AWS, los administradores de la otra cuenta pueden delegar el permiso `kms:RetireGrant` para retirar la concesión a un director de IAM de esa cuenta.

La AWS KMS API sigue un modelo de [coherencia eventual](grants.md#terms-eventual-consistency). Al crear, retirar o revocar una concesión, es posible que haya un breve retraso antes de que el cambio esté disponible a través de AWS KMS. Por lo general, el cambio tarda menos de unos segundos en propagarse por todo el sistema, pero en algunos casos puede tardar varios minutos. Si necesitas eliminar una nueva subvención inmediatamente, antes de que esté disponible en todo momento AWS KMS, [usa un token de subvención](using-grant-token.md) para retirarla. No puede usar un token de concesión para revocar una concesión.

# Claves de estado para AWS KMS
<a name="policy-conditions"></a>

Puede especificar las condiciones en las [políticas clave y en las políticas](key-policies.md) de [IAM](iam-policies.md) que controlan el acceso a AWS KMS los recursos. La declaración de política solo será efectiva si se cumplen las condiciones. Por ejemplo, es posible que desee que solo entre en vigor una declaración de política después de una fecha específica. O puede que desee que una declaración de política controle el acceso solo cuando aparezca un valor específico en una solicitud de la API.

Para especificar condiciones, se utilizan *claves de condición* en el [elemento `Condition`](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) de la declaración de una política con [operadores de condiciones de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Algunas claves de condición se aplican de forma general AWS; otras son específicas de AWS KMS.

Los valores de las claves de condición deben cumplir las reglas de caracteres y codificación de las políticas AWS KMS clave y las políticas de IAM. Para obtener más información sobre las reglas del documento de política de claves, consulte [Formato de la política de claves](key-policy-overview.md#key-policy-format). Para obtener más información sobre las reglas del documento de política de IAM, consulte [Requisitos de nombres de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) en la *Guía del usuario de IAM*.

**Topics**
+ [AWS claves de condición globales](conditions-aws.md)
+ [AWS KMS claves de condición](conditions-kms.md)
+ [AWS KMS claves de condición para plataformas certificadas](conditions-attestation.md)

# AWS claves de condición globales
<a name="conditions-aws"></a>

AWS define [las claves de condición globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys), un conjunto de claves de condiciones de política para todos los AWS servicios que utilizan IAM para el control de acceso. AWS KMS admite todas las claves de condición globales. Puede utilizarlas en políticas AWS KMS clave y políticas de IAM.

Por ejemplo, puede usar la clave de condición PrincipalArn global [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) para permitir el acceso a una AWS KMS key (clave KMS) solo cuando el principal de la solicitud esté representado por el nombre de recurso de Amazon (ARN) en el valor de la clave de condición. Para respaldar el [control de acceso basado en atributos](abac.md) (ABAC) AWS KMS, puede utilizar la clave de condición global [aws:ResourceTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) en una política de IAM para permitir el acceso a las claves de KMS con una etiqueta determinada.

Para evitar que un AWS servicio se utilice de forma confusa en una política en la que el director es el director del [AWS servicio, puede utilizar las claves](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services) de condición o globales. [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) Para obtener más información, consulte [Uso de claves de condición `aws:SourceArn` o `aws:SourceAccount`](least-privilege.md#least-privilege-source-arn).

Para obtener información sobre las claves de condición AWS globales, incluidos los tipos de solicitudes en las que están disponibles, consulte [las claves de contexto de condición AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*. Para obtener ejemplos del uso de claves de condición globales en las políticas de IAM, consulte [Control del acceso a las solicitudes](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests) y [Control de claves de etiqueta](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys) en la *Guía del usuario de IAM*.

En los temas siguientes se proporcionan instrucciones especiales para el uso de claves de condición basadas en direcciones IP y puntos de conexión de VPC.

**Topics**
+ [Uso de la condición de dirección IP en políticas con permisos AWS KMS](#conditions-aws-ip-address)
+ [Uso de condiciones de punto final de VPC en políticas con permisos AWS KMS](#conditions-aws-vpce)
+ [Uso de IPv6 direcciones en IAM y en las políticas clave AWS KMS](#KMS-IPv6-policies)

## Uso de la condición de dirección IP en políticas con permisos AWS KMS
<a name="conditions-aws-ip-address"></a>

Puede utilizarla AWS KMS para proteger sus datos en un [AWS servicio integrado](service-integration.md). Sin embargo, tenga cuidado al especificar la [dirección IP, la condición, los operadores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress) o la clave de `aws:SourceIp` condición en la misma declaración de política a la que se permite o deniega el acceso AWS KMS. Por ejemplo, la política de [Denega el acceso en AWSAWS función de la IP de origen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html) restringe AWS las acciones a las solicitudes del rango de IP especificado.

Considere esta situación:

1. Adjunta a una identidad de IAM una política como la que se muestra en [AWS: Denega el acceso a una identidad de IAM en AWS función de la IP de origen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html). A continuación, establece el valor de la clave de condición `aws:SourceIp` en el rango de direcciones IP de la empresa del usuario. Esta identidad de IAM tiene otras políticas adjuntadas que le permiten usar Amazon EBS, Amazon EC2 y AWS KMS.

1. La identidad intenta asociar un volumen de EBS cifrado a una instancia de EC2. Esta acción falla con un error de autorización a pesar de que el usuario tiene permiso para utilizar todos los servicios pertinentes.

El paso 2 falla porque la solicitud AWS KMS para descifrar la clave de datos cifrados del volumen proviene de una dirección IP asociada a la infraestructura de Amazon EC2. Para que la solicitud se realice correctamente, debe provenir de la dirección IP del usuario que la origina. Dado que la política del paso 1 deniega explícitamente todas las solicitudes de las direcciones IP que no sean las especificadas, a Amazon EC2 se le deniega el permiso para descifrar la clave de datos cifrada del volumen de EBS.

Además, la clave de condición `aws:SourceIP` no es efectiva si la solicitud procede de un [punto de conexión de Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html). Para restringir las solicitudes a un punto de conexión de VPC, incluido un [punto de conexión de VPC de AWS KMS](kms-vpc-endpoint.md), utilice las claves de condición `aws:SourceVpce` o `aws:SourceVpc`. Para obtener más información, consulte [Puntos de conexión de VPC - Control del uso de los puntos de conexión](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html#vpc-endpoints-iam-access) en la *Guía del usuario de Amazon VPC*. 

## Uso de condiciones de punto final de VPC en políticas con permisos AWS KMS
<a name="conditions-aws-vpce"></a>

[AWS KMS es compatible con los puntos de conexión de Amazon Virtual Private Cloud (Amazon VPC) que funcionan](kms-vpc-endpoint.md) con la tecnología de. [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html#what-is-privatelink) Puede usar las siguientes [claves de condición globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys) en las políticas clave y en las políticas de IAM para controlar el acceso a AWS KMS los recursos cuando la solicitud proviene de una VPC o utiliza un punto de enlace de la VPC. Para obtener más información, consulte [Utilice los puntos finales de VPC para controlar el acceso a los recursos AWS KMS](vpce-policy-condition.md).
+ `aws:SourceVpc` limita el acceso a las solicitudes procedentes de la VPC especificada. 
+ `aws:SourceVpce` limita el acceso a las solicitudes procedentes del punto de conexión de VPC especificado. 

Si utilizas estas claves de condición para controlar el acceso a las claves de KMS, podrías denegar inadvertidamente el acceso a los AWS servicios que se utilizan en tu nombre. AWS KMS 

Procure evitar una situación como la del ejemplo de [claves de condición de dirección IP](#conditions-aws-ip-address). Si restringes las solicitudes de una clave de KMS a una VPC o un punto final de VPC, es posible que se produzcan errores en las llamadas AWS KMS desde un servicio integrado, como Amazon S3 o Amazon EBS. Esto puede ocurrir incluso si la solicitud de origen procede en última instancia de la VPC o del punto de conexión de VPC. 

## Uso de IPv6 direcciones en IAM y en las políticas clave AWS KMS
<a name="KMS-IPv6-policies"></a>

Antes de intentar acceder IPv6, asegúrese AWS KMS de que todas las políticas clave y de IAM que contengan restricciones de direcciones IP estén actualizadas para incluir los rangos de IPv6 direcciones. Las políticas basadas en IP que no se actualizan para gestionar IPv6 las direcciones pueden provocar que los clientes pierdan o obtengan el acceso de forma incorrecta cuando empiecen a IPv6 utilizarlas. Para obtener información general sobre los controles de acceso de KMS, consulte [Permisos y acceso a claves KMS](control-access.md). Para obtener más información sobre la compatibilidad de KMS y la doble pila, consulte [Compatibilidad con puntos de conexión de doble pila](ipv6-kms.md).

**importante**  
Estas declaraciones no permiten ninguna acción. Utilice estas declaraciones en combinación con otras declaraciones que permiten acciones específicas.

La siguiente declaración deniega explícitamente el acceso a todos los permisos de KMS a las solicitudes que se originen en el `192.0.2.*` rango de IPv4 direcciones. Cualquier dirección IP fuera de este rango no recibe permisos de KMS de forma explícita. Como todas IPv6 las direcciones están fuera del rango denegado, esta declaración no deniega explícitamente los permisos de KMS para ninguna IPv6 dirección.

```
{
     "Sid": "DenyKMSPermissions",
     "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24"
            ]
        }
    }
}
```

Puede modificar el `Condition` elemento para denegar los rangos de direcciones IPv4 (`192.0.2.0/24`) y IPv6 (`2001:db8:1234::/32`), como se muestra en el siguiente ejemplo.

```
{
    "Sid": "DenyKMSPermissions",
    "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24",
                "2001:db8:1234::/32"
            ]
        }
    }
}
```

# AWS KMS claves de condición
<a name="conditions-kms"></a>

AWS KMS proporciona un conjunto de claves de condición que puede utilizar en políticas clave y 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](encrypt_context.md) 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:](#conditions-kms-key-spec) en una política de IAM para permitir el uso de la [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operació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:](#conditions-kms-key-spec) para permitir que los usuarios usen la `CreateKey` operación solo cuando el valor del `KeySpec` parámetro sea`SYMMETRIC_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:](#conditions-kms-key-origin) para permitir que los directores [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)invoquen una clave KMS solo cuando `Origin` la clave KMS lo sea`AWS_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](kms-api-permissions-reference.md#kms-api-permissions-reference-table), 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](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html), 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](#conditions-kms-caller-account) 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](#conditions-kms-resource-aliases) 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 la *clave de contexto* o las claves de `aws:RequestTag/tag-key` condición, AWS KMS devuelve el siguiente mensaje de error kms:EncryptionContext:  
`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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) en la *Guía del usuario de IAM*. Para obtener información sobre el riesgo de utilizar el operador de `ForAllValues` conjunto con una condición de un solo valor, consulte [Advertencia de seguridad: ForAllValues con clave de un solo valor](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html#access-analyzer-reference-policy-checks-security-warning-forallvalues-with-single-valued-key) en la Guía del usuario de *IAM*.

**Topics**
+ [km: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [km: CallerAccount](#conditions-kms-caller-account)
+ [kms: CustomerMasterKeySpec (obsoleto)](#conditions-kms-key-spec-replaced)
+ [kms: CustomerMasterKeyUsage (obsoleto)](#conditions-kms-key-usage-replaced)
+ [km: DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [km: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kmsEncryptionContext: clave de *contexto*](#conditions-kms-encryption-context)
+ [kms: EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [km: ExpirationModel](#conditions-kms-expiration-model)
+ [kms: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms: KeyAgreementAlgorithm](#conditions-kms-key-agreement-algorithm)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [kms: KeySpec](#conditions-kms-key-spec)
+ [kms: KeyUsage](#conditions-kms-key-usage)
+ [km: MacAlgorithm](#conditions-kms-mac-algorithm)
+ [km: MessageType](#conditions-kms-message-type)
+ [km: MultiRegion](#conditions-kms-multiregion)
+ [kms: MultiRegionKeyType](#conditions-kms-multiregion-key-type)
+ [kms: PrimaryRegion](#conditions-kms-primary-region)
+ [km: ReEncryptOnSameKey](#conditions-kms-reencrypt-on-same-key)
+ [kms: RequestAlias](#conditions-kms-request-alias)
+ [km: ResourceAliases](#conditions-kms-resource-aliases)
+ [kms: ReplicaRegion](#conditions-kms-replica-region)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)
+ [kms: RotationPeriodInDays](#conditions-kms-rotation-period-in-days)
+ [km: ScheduleKeyDeletionPendingWindowInDays](#conditions-kms-schedule-key-deletion-pending-window-in-days)
+ [km: SigningAlgorithm](#conditions-kms-signing-algorithm)
+ [kms: ValidTo](#conditions-kms-valid-to)
+ [kms: ViaService](#conditions-kms-via-service)
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## km: BypassPolicyLockoutSafetyCheck
<a name="conditions-kms-bypass-policy-lockout-safety-check"></a>


| 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 [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)las operaciones [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)y 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_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**
+ [kms: KeySpec](#conditions-kms-key-spec)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [kms: KeyUsage](#conditions-kms-key-usage)

## km: CallerAccount
<a name="conditions-kms-caller-account"></a>


| 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 la[Tabla de acciones y recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), 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](key-store-overview.md#custom-key-store-overview).

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](#conditions-kms-via-service).

```
{
  "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)
<a name="conditions-kms-key-spec-replaced"></a>

La clave de condición `kms:CustomerMasterKeySpec` está obsoleta. En su lugar, utilice la clave de KeySpec condición [kms:](#conditions-kms-key-spec).

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 admite ambas claves de condición.

## kms: CustomerMasterKeyUsage (obsoleto)
<a name="conditions-kms-key-usage-replaced"></a>

La clave de condición `kms:CustomerMasterKeyUsage` está obsoleta. En su lugar, utilice la clave de KeyUsage condición [kms:](#conditions-kms-key-usage).

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 admite ambas claves de condición.

## km: DataKeyPairSpec
<a name="conditions-kms-data-key-spec"></a>


| 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 [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)operaciones [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)y 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**
+ [kms: KeySpec](#conditions-kms-key-spec)
+ [km: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kmsEncryptionContext: clave de *contexto*](#conditions-kms-encryption-context)
+ [kms: EncryptionContextKeys](#conditions-kms-encryption-context-keys)

## km: EncryptionAlgorithm
<a name="conditions-kms-encryption-algorithm"></a>


| 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 [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operaciones de [cifrado, descifrado](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) y, por el contrario, controla el acceso en función del valor del [EncryptionAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#KMS-Decrypt-request-EncryptionAlgorithm)parámetro de la solicitud.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 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 realizadas 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\$1DEFAULT. Incluye `GenerateDataKey*` [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)adiciones [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html), y [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)a 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**
+ [km: MacAlgorithm](#conditions-kms-mac-algorithm)
+ [km: SigningAlgorithm](#conditions-kms-signing-algorithm)

## kmsEncryptionContext: clave de *contexto*
<a name="conditions-kms-encryption-context"></a>


| 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` `RetireGrant`  |  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](symm-asymm-choose-key-spec.md#symmetric-cmks) en función del [contexto de cifrado](encrypt_context.md) de una solicitud para una [operación criptográfica](kms-cryptography.md#cryptographic-operations). 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:](#conditions-kms-encryption-context-keys).

**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](key-policy-overview.md#key-policy-format). Para obtener más información sobre las reglas del documento de política de IAM, consulte [Requisitos de nombres de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) 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](symmetric-asymmetric.md) o una [clave KMS HMAC](hmac.md). Los algoritmos asimétricos y los algoritmos MAC no son compatibles con un contexto de cifrado.

Para usar la clave de condición kms:EncryptionContext: *clave de contexto*, sustituya el *context-key* marcador de posición 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](#set-operators). 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 de `ForAllValues` conjunto con la *clave de contexto kms: EncryptionContext*:, AWS KMS devuelve el siguiente mensaje de error:  
`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 información, consulte [Uso de mayúsculas y minúsculas en las condiciones de contexto de cifrado](#conditions-kms-encryption-context-case).

```
{
  "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 tanto kms: EncryptionContext la *clave de contexto* como la declaración de política. [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) 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
<a name="conditions-kms-encryption-context-many"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) 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` establecían con la clave de condición kms:EncryptionContext: clave de *contexto*. Usando un operador de conjunto con una [clave de condición de un solo valor](#set-operators) 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 de conjunto de cualquier condición con kms:EncryptionContext: clave de contexto.* 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 kms: EncryptionContext la *clave de contexto* como la declaración de política [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys). *La siguiente declaración de política clave utiliza la condición kms:EncryptionContext: *clave de contexto* 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multiple-conditions-eval) 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
<a name="conditions-kms-encryption-context-case"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) 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](#conditions-kms-encryption-context-keys) 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 kms:EncryptionContext: *clave de contexto* 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 ejemplo`ExampleApp`) es el valor de la condición kms:EncryptionContext: clave de contexto.*

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
<a name="conditions-kms-encryption-context-variables"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html). 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 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse).

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_user-id.html) 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 IAM](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html)en la [Guía para desarrolladores de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

```
{
  "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](#conditions-kms-encryption-context-keys)
+ [kms: GrantConstraintType](#conditions-kms-grant-constraint-type)

## kms: EncryptionContextKeys
<a name="conditions-kms-encryption-context-keys"></a>


| 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` `RetireGrant`  |  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](symm-asymm-choose-key-spec.md#symmetric-cmks) en función del [contexto de cifrado](encrypt_context.md) 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](symmetric-asymmetric.md) o una [clave KMS HMAC](hmac.md). 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](key-policy-overview.md#key-policy-format). Para obtener más información sobre las reglas del documento de política de IAM, consulte [Requisitos de nombres de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) en la *Guía del usuario de IAM*.

Esta es una [clave de condición multivalor](#set-operators). 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) 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 [StringEquals](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)condició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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_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**
+ [kmsEncryptionContext: clave de *contexto*](#conditions-kms-encryption-context)
+ [kms: GrantConstraintType](#conditions-kms-grant-constraint-type)

## km: ExpirationModel
<a name="conditions-kms-expiration-model"></a>


| 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 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)operación en función del valor del [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel)pará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 [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo)pará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:](#conditions-kms-valid-to) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para que un usuario solamente pueda importar material de claves cuando la solicitud no contenga un parámetro `ExpirationModel`. El valor predeterminado ExpirationModel es`KEY_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: ValidTo](#conditions-kms-valid-to)
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms: GrantConstraintType
<a name="conditions-kms-grant-constraint-type"></a>


| 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` `RetireGrant`  |  Políticas de claves y políticas de IAM  | 

Puede utilizar esta clave de condición para controlar el acceso a la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación en función del tipo de [restricción de concesión](create-grant-overview.md#grant-constraints) 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](encrypt_context.md). 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**
+ [kmsEncryptionContext: clave de *contexto*](#conditions-kms-encryption-context)
+ [kms: EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## km: GrantIsFor AWSResource
<a name="conditions-kms-grant-is-for-aws-resource"></a>


| 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 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)permiso para [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)las operaciones o solo cuando un [AWS servicio integrado AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) llama a la operación en nombre del usuario. [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 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: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## kms: GrantOperations
<a name="conditions-kms-grant-operations"></a>


| 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 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación en función de [las operaciones de concesión](grants.md#terms-grant-operations) 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](grants.md).

Esta es una [clave de condición de varios valores](#set-operators). `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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) 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**
+ [kms: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## km: GranteePrincipal
<a name="conditions-kms-grantee-principal"></a>


| 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 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación en función del valor del [GranteePrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-GranteePrincipal)pará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 la entidad principal del beneficiario utilice el nombre de recurso de Amazon (ARN) de una entidad principal de AWS . Entre los principales válidos se incluyen Cuentas de AWS los usuarios de IAM, 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 [IAM ARNs en la Guía del usuario de *IAM*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns).

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: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms: GrantOperations](#conditions-kms-grant-operations)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## kms: KeyAgreementAlgorithm
<a name="conditions-kms-key-agreement-algorithm"></a>


| AWS KMS claves de condición | Tipo de condición | Tipo de valor | Operaciones de la API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyAgreementAlgorithm`  |  Cadena  | Valor único | `DeriveSharedSecret` |  Políticas de claves y políticas de IAM  | 

Puede utilizar la clave de `kms:KeyAgreementAlgorithm` condición para controlar el acceso a la [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)operación en función del valor del `KeyAgreementAlgorithm` parámetro de la solicitud. Para `KeyAgreementAlgorithm`, el único valor válido es `ECDH`.

Por ejemplo, la siguiente declaración de política clave utiliza la clave de `kms:KeyAgreementAlgorithm` condición para denegar todo acceso a DeriveSharedSecret menos que lo `KeyAgreementAlgorithm` sea`ECDH`.

```
{
       "Effect": "Deny",
       "Principal": {
         "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
       },
       "Action": "kms:DeriveSharedSecret",
       "Resource": "*",
       "Condition": {
            "StringNotEquals": {
               "kms:KeyAgreementAlgorithm": "ECDH"
         }
       }
}
```

**Véase también**
+ [kms: KeyUsage](#conditions-kms-key-usage)

## km: KeyOrigin
<a name="conditions-kms-key-origin"></a>


| 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 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operación en función del valor del parámetro [Origin](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Origin) de la solicitud. Los valores válidos para `Origin` son `AWS_KMS`, `AWS_CLOUDHSM`, `EXTERNAL_KEY_STORE` 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 que esté asociado a un almacén de [claves personalizado de CloudHSM](key-store-overview.md#custom-key-store-overview) `AWS_CLOUDHSM` (), solo cuando el material clave se genere en [un almacén de claves externo](key-store-overview.md#custom-key-store-overview) `EXTERNAL_KEY_STORE` () o solo cuando [el material clave se](importing-keys.md) importe de una fuente externa (). `EXTERNAL` 

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

------
#### [ JSON ]

****  

```
{
  "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 la[Tabla de acciones y recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), 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**
+ [km: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms: KeySpec](#conditions-kms-key-spec)
+ [kms: KeyUsage](#conditions-kms-key-usage)

## kms: KeySpec
<a name="conditions-kms-key-spec"></a>


| 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 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operación en función del valor del [KeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeySpec)pará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](kms-api-permissions-reference.md#kms-api-permissions-reference-table), 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**
+ [km: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms: CustomerMasterKeySpec (obsoleto)](#conditions-kms-key-spec-replaced)
+ [km: DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [kms: KeyUsage](#conditions-kms-key-usage)

## kms: KeyUsage
<a name="conditions-kms-key-usage"></a>


| 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 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operación en función del valor del [KeyUsage](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeyUsage)parámetro de la solicitud. Los valores válidos para `KeyUsage` son `ENCRYPT_DECRYPT`, `SIGN_VERIFY`, `GENERATE_VERIFY_MAC` y `KEY_AGREEMENT`.

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 la[Tabla de acciones y recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), 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: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms: CustomerMasterKeyUsage (obsoleto)](#conditions-kms-key-usage-replaced)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [kms: KeySpec](#conditions-kms-key-spec)

## km: MacAlgorithm
<a name="conditions-kms-mac-algorithm"></a>


| 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 [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)operaciones [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)y 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.

------
#### [ JSON ]

****  

```
{
  "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: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [km: SigningAlgorithm](#conditions-kms-signing-algorithm)

## km: MessageType
<a name="conditions-kms-message-type"></a>


| 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](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) y [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) 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: SigningAlgorithm](#conditions-kms-signing-algorithm)

## km: MultiRegion
<a name="conditions-kms-multiregion"></a>


| 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](multi-region-keys-overview.md). La clave de `kms:MultiRegion` condición controla el acceso a AWS KMS las operaciones en las claves de KMS y a la [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operació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
<a name="conditions-kms-multiregion-key-type"></a>


| 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](multi-region-keys-overview.md#mrk-primary-key) o solo en [claves de réplicas de varias regiones](multi-region-keys-overview.md#mrk-replica-key). La clave de `kms:MultiRegionKeyType` condición controla el acceso a AWS KMS las operaciones en las claves de KMS y la [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operació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:](#conditions-kms-multiregion) para ello.

## kms: PrimaryRegion
<a name="conditions-kms-primary-region"></a>


| 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 [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operació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 [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operació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](multi-region-keys-overview.md#mrk-replica-key) 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` o`ap-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
<a name="conditions-kms-reencrypt-on-same-key"></a>


| 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 [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operació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
<a name="conditions-kms-request-alias"></a>


| 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](kms-cryptography.md#cryptographic-operations) [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  |  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](kms-alias.md) que identifica esa clave KMS en la solicitud. (Esta condición de política no afecta a la [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)operació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.md) (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 información, consulte [ABAC para AWS KMS](abac.md).

Para especificar el alias en esta condición de política, utilice un [nombre del alias](concepts.md#key-id-alias-name), como, por ejemplo, `alias/project-alpha`, o un patrón de nombre de alias, como `alias/*test*`. No puede especificar una [ARN de alias](concepts.md#key-id-alias-ARN) 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](concepts.md#key-id) 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 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operació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 [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)o [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html). Para obtener más información sobre cómo controlar el acceso a operaciones de alias, consulte [Control del acceso a alias](alias-access.md).

## km: ResourceAliases
<a name="conditions-kms-resource-aliases"></a>


| 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](kms-alias.md) 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](kms-api-permissions-reference.md#kms-api-permissions-reference-table), 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 información, consulte [ABAC para AWS KMS](abac.md).

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:](#conditions-kms-resource-aliases) solo entra en vigor cuando la clave KMS se ajusta a la cuota de [alias por clave de KMS](resource-limits.md#aliases-per-key). 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](concepts.md#key-id-alias-name), como, por ejemplo, `alias/project-alpha`, o un patrón de nombre de alias, como `alias/*test*`. No puede especificar una [ARN de alias](concepts.md#key-id-alias-ARN) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) 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 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operació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 de KMS asociada con el alias `finance-key`, incluso si la solicitud utiliza un [ID de clave](concepts.md#key-id-key-id) o [ARN de clave](concepts.md#key-id-key-ARN) para identificar la clave de 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
<a name="conditions-kms-replica-region"></a>


| 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](multi-region-keys-overview.md). La clave de `kms:ReplicaRegion` condición controla el acceso a la [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación en función del valor del [ReplicaRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal)parámetro de la solicitud. Este parámetro especifica la Región de AWS para la nueva [clave de réplica](multi-region-keys-overview.md#mrk-replica-key). 

El valor de la condición es uno o más Región de AWS nombres, como `us-east-1` o`ap-southeast-2`, o patrones de nombres, como`eu-*`. 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](https://docs.aws.amazon.com/general/latest/gr/kms.html) 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 [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)operació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 [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)operación. Para controlar el acceso a la [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operación, utilice la clave de PrimaryRegion condición [kms:](#conditions-kms-primary-region).

## km: RetiringPrincipal
<a name="conditions-kms-retiring-principal"></a>


| 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 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación en función del valor del [RetiringPrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal)pará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 la entidad principal de retirada utilice el nombre de recurso de Amazon (ARN) de una entidad principal de AWS . Entre los principales válidos se incluyen Cuentas de AWS los usuarios de IAM, 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 [IAM ARNs en la Guía del usuario de *IAM*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns).

El siguiente ejemplo de declaración de política de claves permite a un usuario crear concesiones para la clave KMS. La clave de condición `kms:RetiringPrincipal` restringe el permiso a las solicitudes `CreateGrant` en las que la entidad principal a la cual se va a retirar la concesión sea 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**
+ [kms: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)

## kms: RotationPeriodInDays
<a name="conditions-kms-rotation-period-in-days"></a>


| 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 [EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKeyRotation.html)solicitud.

`RotationPeriodInDays`Especifica 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 de claves utiliza la clave de condición `kms:RotationPeriodInDays` para impedir que las entidades principales habiliten rotación de claves si el periodo 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
<a name="conditions-kms-schedule-key-deletion-pending-window-in-days"></a>


| 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 [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html)solicitud.

`PendingWindowInDays`Especifica 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
<a name="conditions-kms-signing-algorithm"></a>


| 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](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) y [verificación](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) en función del valor del [SigningAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-SigningAlgorithm)pará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\$1PSS, 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**
+ [km: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [km: MacAlgorithm](#conditions-kms-mac-algorithm)
+ [km: MessageType](#conditions-kms-message-type)

## kms: ValidTo
<a name="conditions-kms-valid-to"></a>


| 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 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)operación en función del valor del [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo)parámetro de la solicitud, que determina cuándo caduca el material clave importado. El valor se expresa en [tiempo Unix](https://en.wikipedia.org/wiki/Unix_time).

De forma predeterminada, el parámetro `ValidTo` es obligatorio en las solicitudes `ImportKeyMaterial`. Sin embargo, si el valor del [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel)parámetro es`KEY_MATERIAL_DOES_NOT_EXPIRE`, no es válido. `ValidTo` También puede usar la clave de ExpirationModel condición [kms:](#conditions-kms-expiration-model) 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**
+ [km: ExpirationModel](#conditions-kms-expiration-model) 
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms: ViaService
<a name="conditions-kms-via-service"></a>


| 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 especificadas Servicios de AWS. Esta clave de condición solo se aplica a las [sesiones de acceso directo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 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 la[Tabla de acciones y recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), 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](concepts.md#customer-mgn-key) 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 [Uso del AWS KMS cifrado con AWS servicios](service-integration.md).
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](concepts.md#aws-managed-key) 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 [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operació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](https://aws.amazon.com/kms/features/#AWS_Service_Integration) y admitir la clave de condición `kms:ViaService`.

### Servicios que admiten la clave de condición `kms:ViaService`
<a name="viaService_table"></a>

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 | 
| --- | --- | 
| Amazon AI Operations | aiops.AWS\$1region.amazonaws.com | 
| AWS App Runner | apprunner.AWS\$1region.amazonaws.com | 
| AWS AppFabric | appfabric.AWS\$1region.amazonaws.com | 
| Amazon AppFlow | appflow.AWS\$1region.amazonaws.com | 
| AWS Application Migration Service | mgn.AWS\$1region.amazonaws.com | 
| Amazon Athena | athena.AWS\$1region.amazonaws.com | 
| AWS Audit Manager | auditmanager.AWS\$1region.amazonaws.com | 
| Amazon Aurora | rds.AWS\$1region.amazonaws.com | 
| AWS Backup | backup.AWS\$1region.amazonaws.com | 
| AWS Backup Gateway | backup-gateway.AWS\$1region.amazonaws.com | 
| Copia del modelo de Amazon Bedrock | bedrock.AWS\$1region.amazonaws.com | 
| Amazon Chime SDK | chimevoiceconnector.AWS\$1region.amazonaws.com | 
| AWS Clean Rooms ML | cleanrooms-ml.AWS\$1region.amazonaws.com | 
| AWS CodeArtifact | codeartifact.AWS\$1region.amazonaws.com | 
|  CodeGuru Revisor de Amazon | codeguru-reviewer.AWS\$1region.amazonaws.com | 
| Amazon Comprehend | comprehend.AWS\$1region.amazonaws.com | 
| Amazon Connect | connect.AWS\$1region.amazonaws.com | 
| Perfiles de clientes de Amazon Connect | profile.AWS\$1region.amazonaws.com | 
| Amazon Q en Connect | wisdom.AWS\$1region.amazonaws.com | 
| AWS Database Migration Service (AWS DMS) | dms.AWS\$1region.amazonaws.com | 
| AWS DeepRacer | deepracer.AWS\$1region.amazonaws.com | 
| AWS Directory Service | directoryservice.AWS\$1region.amazonaws.com | 
| Amazon DocumentDB | docdb-elastic.AWS\$1region.amazonaws.com | 
| Amazon DynamoDB | dynamodb.AWS\$1region.amazonaws.com | 
| Amazon EC2 Systems Manager (SSM) | ssm.AWS\$1region.amazonaws.com | 
| Amazon Elastic Block Store (Amazon EBS) | ec2.AWS\$1region.amazonaws.com (EBS solo) | 
| Amazon Elastic Container Registry (Amazon ECR) | ecr.AWS\$1region.amazonaws.com | 
| Amazon Elastic File System (Amazon EFS) | elasticfilesystem.AWS\$1region.amazonaws.com | 
| Amazon ElastiCache |  Incluye ambos ViaService nombres en el valor de la clave de condición: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/conditions-kms.html)  | 
| AWS Elemental MediaTailor | mediatailor.AWS\$1region.amazonaws.com | 
| AWS Resolución de la entidad | entityresolution.AWS\$1region.amazonaws.com | 
| Amazon EventBridge | events.AWS\$1region.amazonaws.com | 
| Amazon FinSpace | finspace.AWS\$1region.amazonaws.com | 
| Amazon Forecast | forecast.AWS\$1region.amazonaws.com | 
| Amazon FSx | fsx.AWS\$1region.amazonaws.com | 
| AWS Glue | glue.AWS\$1region.amazonaws.com | 
| AWS Ground Station | groundstation.AWS\$1region.amazonaws.com | 
| Amazon GuardDuty | malware-protection.AWS\$1region.amazonaws.com | 
| AWS HealthLake | healthlake.AWS\$1region.amazonaws.com | 
| AWS IoT SiteWise | iotsitewise.AWS\$1region.amazonaws.com | 
| Amazon Kendra | kendra.AWS\$1region.amazonaws.com | 
| Amazon Keyspaces (para Apache Cassandra) | cassandra.AWS\$1region.amazonaws.com | 
| Amazon Kinesis | kinesis.AWS\$1region.amazonaws.com | 
| Amazon Data Firehose | firehose.AWS\$1region.amazonaws.com | 
| Amazon Kinesis Video Streams | kinesisvideo.AWS\$1region.amazonaws.com | 
| AWS Lambda | lambda.AWS\$1region.amazonaws.com | 
| Amazon Lex | lex.AWS\$1region.amazonaws.com | 
| AWS License Manager | license-manager.AWS\$1region.amazonaws.com | 
| Amazon Location Service | geo.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Equipment | lookoutequipment.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Metrics | lookoutmetrics.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Vision | lookoutvision.AWS\$1region.amazonaws.com | 
| Amazon Macie | macie.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization | m2.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization Pruebas de aplicaciones | apptest.AWS\$1region.amazonaws.com | 
| Amazon Managed Blockchain | managedblockchain.AWS\$1region.amazonaws.com | 
| Amazon Managed Streaming for Apache Kafka (Amazon MSK) | kafka.AWS\$1region.amazonaws.com | 
| Amazon Managed Workflows para Apache Airflow (MWAA) | airflow.AWS\$1region.amazonaws.com | 
| Amazon MemoryDB | memorydb.AWS\$1region.amazonaws.com | 
| Amazon Monitron | monitron.AWS\$1region.amazonaws.com | 
| Amazon MQ | mq.AWS\$1region.amazonaws.com | 
| Amazon Neptune | rds.AWS\$1region.amazonaws.com | 
| Amazon Nimble Studio | nimble.AWS\$1region.amazonaws.com | 
| AWS HealthOmics | omics.AWS\$1region.amazonaws.com | 
|  OpenSearch Servicio Amazon | es.AWS\$1region.amazonaws.com, aoss.AWS\$1region.amazonaws.com | 
| Paquetes OpenSearch personalizados de Amazon | custom-packages.AWS\$1region.amazonaws.com | 
| AWS Proton | proton.AWS\$1region.amazonaws.com | 
| Amazon Quantum Ledger Database (Amazon QLDB) | qldb.AWS\$1region.amazonaws.com | 
| Información de rendimiento de Amazon RDS | rds.AWS\$1region.amazonaws.com | 
| Amazon Redshift | redshift.AWS\$1region.amazonaws.com | 
| Editor de consultas de Amazon Redshift V2 | sqlworkbench.AWS\$1region.amazonaws.com | 
| Amazon Redshift Serverless | redshift-serverless.AWS\$1region.amazonaws.com | 
| Amazon Rekognition | rekognition.AWS\$1region.amazonaws.com | 
| Amazon Relational Database Service (Amazon RDS) | rds.AWS\$1region.amazonaws.com | 
| Almacén de datos replicados de Amazon | ards.AWS\$1region.amazonaws.com | 
| Amazon SageMaker AI | sagemaker.AWS\$1region.amazonaws.com | 
| AWS Secrets Manager | secretsmanager.AWS\$1region.amazonaws.com | 
| Amazon Security Lake | securitylake.AWS\$1region.amazonaws.com | 
| Amazon Simple Email Service (Amazon SES) | ses.AWS\$1region.amazonaws.com | 
| Amazon Simple Notification Service (Amazon SNS) | sns.AWS\$1region.amazonaws.com | 
| Amazon Simple Queue Service (Amazon SQS) | sqs.AWS\$1region.amazonaws.com | 
| Amazon Simple Storage Service (Amazon S3) | s3.AWS\$1region.amazonaws.com | 
| Tablas de Amazon S3 | s3tables.AWS\$1region.amazonaws.com | 
| AWS Snowball Edge | importexport.AWS\$1region.amazonaws.com | 
| AWS Step Functions | states.AWS\$1region.amazonaws.com | 
| AWS Storage Gateway | storagegateway.AWS\$1region.amazonaws.com | 
| Administrador de incidentes de AWS Systems Manager | ssm-incidents.AWS\$1region.amazonaws.com | 
| Administrador de incidentes de AWS Systems Manager Contactos | ssm-contacts.AWS\$1region.amazonaws.com | 
| Amazon Timestream | timestream.AWS\$1region.amazonaws.com | 
| Amazon Translate | translate.AWS\$1region.amazonaws.com | 
| Acceso verificado de AWS | verified-access.AWS\$1region.amazonaws.com | 
| Amazon WorkMail | workmail.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces | workspaces.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces Thin Client | thinclient.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces Web | workspaces-web.AWS\$1region.amazonaws.com | 
| AWS X-Ray | xray.AWS\$1region.amazonaws.com | 

## km: WrappingAlgorithm
<a name="conditions-kms-wrapping-algorithm"></a>


| 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 [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html)operación en función del valor del [WrappingAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingAlgorithm)pará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: ExpirationModel](#conditions-kms-expiration-model)
+ [kms: ValidTo](#conditions-kms-valid-to)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## km: WrappingKeySpec
<a name="conditions-kms-wrapping-key-spec"></a>


| 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 [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html)operación en función del valor del [WrappingKeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingKeySpec)pará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**
+ [km: ExpirationModel](#conditions-kms-expiration-model)
+ [kms: ValidTo](#conditions-kms-valid-to)
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)

# AWS KMS claves de condición para plataformas certificadas
<a name="conditions-attestation"></a>

AWS KMS proporciona claves de condición para respaldar la certificación criptográfica para Nitro Enclaves y [AWS NitroTPM](https://docs.aws.amazon.com/enclaves/latest/user/). AWS Nitro Enclaves es una funcionalidad de Amazon EC2 que le permite crear entornos informáticos aislados [denominados](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-concepts.html#term-enclave) enclaves para proteger y procesar datos altamente confidenciales. NitroTPM extiende una funcionalidad de certificación similar a las instancias de EC2.

Cuando llama a las operaciones de [descifrado](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), [DeriveSharedSecret[GenerateDataKey[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret), o [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)API con un documento de certificación firmado, estas APIs cifran el texto sin formato de la respuesta con la clave pública del documento de certificación y devuelven texto cifrado en lugar de texto simple. Este texto cifrado solo se puede descifrar con la clave privada del enclave. Para obtener más información, consulte [Soporte de atestación criptográfica en AWS KMS](cryptographic-attestation.md).

**nota**  
Si no proporciona una política de claves al crear una clave, crea una para usted. AWS KMS AWS Esta [política de claves predeterminada](key-policy-default.md) concede a las Cuentas de AWS propietarias de la clave de KMS acceso completo a ella y permite que la cuenta utilice políticas de IAM para permitir el acceso a la clave. Esta política permite realizar todas las acciones, como [desencriptar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). AWS recomienda aplicar la entidad principal de [Aplicar permisos de privilegios mínimos](least-privilege.md) a las políticas de claves de KMS. También puede restringir el acceso al [modificar la acción de la política de claves de KMS](key-policy-modifying.md) para `kms:*` en `[NotAction:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notaction.html)kms:Decrypt`.

Las siguientes claves de condición permiten limitar los permisos para estas operaciones en función del contenido del documento de conformidad firmado. Antes de permitir una operación, AWS KMS compara el documento de certificación con los valores de estas claves de AWS KMS condición.

# Claves de condición para Nitro Enclaves
<a name="conditions-nitro-enclave"></a>

Las siguientes claves de condición son específicas de la certificación de Nitro Enclaves:

## km: 384 RecipientAttestation ImageSha
<a name="conditions-kms-recipient-image-sha"></a>


| AWS KMS Claves de estado | Tipo de condición | Tipo de valor | Operaciones de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:ImageSha384`  |  Cadena  | Valor único |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Políticas de claves y políticas de IAM  | 

La clave de condición `kms:RecipientAttestation:ImageSha384` controla el acceso a `Decrypt`, `DeriveSharedSecret`, `GenerateDataKey`, `GenerateDataKeyPair` y `GenerateRandom` con una clave KMS cuando el resumen de la imagen del documento de certificación firmado de la solicitud coincide con el valor de la clave de condición. El `ImageSha384` valor corresponde al PCR0 del documento de certificación. Esta clave de condición solo entra en vigor cuando el `Recipient` parámetro de la solicitud especifica un documento de certificación firmado para un enclave de Nitro. AWS 

Este valor también se incluye en los [CloudTraileventos](ct-nitro-enclave.md) relacionados con las solicitudes de enclaves de AWS KMS Nitro.

Por ejemplo, la siguiente declaración de política clave permite al `data-processing` rol usar la clave KMS para [descifrar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), [DeriveSharedSecret[GenerateDataKey[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret), y las operaciones. [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html) La clave de `kms:RecipientAttestation:ImageSha384` condición permite las operaciones solo cuando el valor de resumen de la imagen (PCR0) del documento de certificación de la solicitud coincide con el valor de resumen de la imagen de la condición. Esta clave de condición solo entra en vigor cuando el `Recipient` parámetro de la solicitud especifica un documento de certificación firmado para un enclave de Nitro. AWS 

Si la solicitud no incluye un documento de certificación válido de un enclave de AWS Nitro, se deniega el permiso porque no se cumple esta condición.

```
{
  "Sid" : "Enable enclave data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": [
    "kms:Decrypt",
    "kms:DeriveSharedSecret",
    "kms:GenerateDataKey",
    "kms:GenerateDataKeyPair",
    "kms:GenerateRandom"
  ],
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99"
    }
  }
}
```

## kms ::PCR RecipientAttestation <PCR\$1ID>
<a name="conditions-kms-recipient-pcrs"></a>


| AWS KMS Claves de condición | Tipo de condición | Tipo de valor | Operaciones de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:PCR<PCR_ID>`  |  Cadena  | Valor único |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Políticas de claves y políticas de IAM  | 

La clave de `kms:RecipientAttestation:PCR<PCR_ID>` condición controla el acceso a `Decrypt``DeriveSharedSecret`, `GenerateDataKey``GenerateDataKeyPair`, y `GenerateRandom` con una clave KMS solo cuando los registros de configuración de la plataforma (PCRs) del documento de certificación firmado de la solicitud coinciden con los de la PCRs clave de condición. Esta clave de condición solo entra en vigor cuando el `Recipient` parámetro de la solicitud especifica un documento de certificación firmado desde un enclave de Nitro. AWS 

Este valor también se incluye en los [CloudTraileventos](ct-nitro-enclave.md) que representan solicitudes de acceso a AWS KMS enclaves de Nitro.

Para especificar un valor de PCR, utilice el siguiente formato. Concatene el ID de PCR con el nombre de la clave de condición. Puede especificar un ID de PCR que identifique una de las [seis mediciones del enclave](https://docs.aws.amazon.com/enclaves/latest/user/set-up-attestation.html#where) o un ID de PCR personalizado que haya definido para un caso de uso específico. El valor de PCR debe ser una cadena hexadecimal en minúsculas de hasta 96 bytes.

```
"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"
```

Por ejemplo, la siguiente clave de condición especifica un valor concreto para PCR1, que corresponde al hash del núcleo utilizado para el enclave y el proceso de arranque.

```
kms:RecipientAttestation:PCR1: "abc1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"
```

Por ejemplo, la siguiente declaración de política de claves permite al rol `data-processing` utilizar la clave de KMS para la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

La clave de `kms:RecipientAttestation:PCR` condición de esta declaración permite la operación solo cuando el PCR1 valor del documento de certificación firmado de la solicitud coincide con el `kms:RecipientAttestation:PCR1` valor de la condición. Use el operador de política `StringEqualsIgnoreCase` para requerir una comparación entre mayúsculas y minúsculas de los valores de PCR.

Si la solicitud no incluye un documento de certificación, se deniega el permiso porque esta condición no se cumple.

```
{
  "Sid" : "Enable enclave data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": "kms:Decrypt",
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:PCR1": "abc1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87"
    }
  }
}
```

# Claves de condición de NitroTPM
<a name="conditions-nitro-tpm"></a>

Las siguientes claves de condición son específicas de la certificación de NitroTPM:

## kms ::NitrotPMPCR RecipientAttestation <PCR\$1ID>
<a name="conditions-kms-recipient-nitro-tpm-pcrs"></a>


| AWS KMS Claves de condición | Tipo de condición | Tipo de valor | Operaciones de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:NitroTPMPCR<PCR_ID>`  |  Cadena  | Valor único |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Políticas de claves y políticas de IAM  | 

La clave de `kms:RecipientAttestation:NitroTPMPCR<PCR_ID>` condición controla el acceso a `Decrypt``DeriveSharedSecret`, `GenerateDataKey``GenerateDataKeyPair`, y `GenerateRandom` con una clave KMS solo cuando los registros de configuración de la plataforma (PCRs) del documento de certificación firmado de la solicitud coinciden con los de la PCRs clave de condición. Esta clave de condición solo entra en vigor cuando el parámetro `Recipient` de la solicitud especifica un documento de certificación firmado de NitroTPM.

Este valor también se incluye en [CloudTraillos eventos](ct-nitro-tpm.md) que representan las solicitudes dirigidas a AWS KMS NitroTPM.

Para especificar un valor de PCR, utilice el siguiente formato. Concatene el ID de PCR con el nombre de la clave de condición. El valor de PCR debe ser una cadena hexadecimal en minúsculas de hasta 96 bytes.

```
"kms:RecipientAttestation:NitroTPMPCRPCR_ID": "PCR_value"
```

Por ejemplo, la siguiente clave de condición especifica un valor concreto para: PCR4

```
kms:RecipientAttestation:NitroTPMPCR4: "abc1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"
```

Por ejemplo, la siguiente declaración de política de claves permite al rol `data-processing` utilizar la clave de KMS para la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

La clave de `kms:RecipientAttestation:NitroTPMPCR` condición de esta declaración permite la operación solo cuando el PCR4 valor del documento de certificación firmado de la solicitud coincide con el `kms:RecipientAttestation:NitroTPMPCR4` valor de la condición. Use el operador de política `StringEqualsIgnoreCase` para requerir una comparación entre mayúsculas y minúsculas de los valores de PCR.

Si la solicitud no incluye un documento de certificación, se deniega el permiso porque esta condición no se cumple.

```
{
  "Sid" : "Enable NitroTPM data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": "kms:Decrypt",
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:NitroTPMPCR4": "abc1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87"
    }
  }
}
```

# Aplicar permisos de privilegios mínimos
<a name="least-privilege"></a>

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](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html#cloudwatch-alarms-for-cloudtrail-iam-policy-changes).

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 práctica recomendada 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](policy-conditions.md) para restringir los permisos. Por ejemplo, puede usar la [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-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 obtener ayuda para comprender cómo se evalúan las declaraciones de políticas AWS, consulte la [lógica de evaluación de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) 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 [Analizador de acceso de IAM](https://aws.amazon.com/iam/features/analyze-access/) para aplicar los privilegios mínimos a sus políticas de IAM.

Si utiliza usuarios de IAM en lugar de funciones de IAM, le recomendamos encarecidamente que habilite la autenticación AWS [multifactor (](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)MFA) para 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.

**Más información**
+ [AWS políticas gestionadas para las funciones laborales](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)
+ [Techniques for writing least privilege IAM policies](https://aws.amazon.com//blogs/security/techniques-for-writing-least-privilege-iam-policies/)

## Implementación de permisos de privilegio mínimo
<a name="key-policy-least-privilege"></a>

Cuando concedas permiso a un AWS servicio para usar una clave de KMS, asegúrate de que el permiso sea válido solo para los recursos a los que el servicio debe acceder en tu nombre. Esta estrategia de privilegios mínimos ayuda a evitar el uso no autorizado de una clave KMS cuando las solicitudes se transfieren entre AWS servicios.

Para implementar una estrategia de privilegios mínimos, se recomienda utilizar las claves de condición del contexto de AWS KMS cifrado y las claves de condición del ARN de origen global o de la cuenta de origen.

### Uso de claves de condición de contexto de cifrado
<a name="least-privilege-encryption-context"></a>

La forma más eficaz de implementar los permisos con privilegios mínimos cuando se utilizan AWS KMS recursos es incluir las claves [kms:EncryptionContext:*context-key*](conditions-kms.md#conditions-kms-encryption-context)o [kms:EncryptionContextKeys](conditions-kms.md#conditions-kms-encryption-context-keys)condicionales en la política que permite a los directores realizar operaciones AWS KMS criptográficas. Estas claves de condición son especialmente eficaces porque asocian el permiso al [contexto de cifrado](encrypt_context.md) que está enlazado al texto cifrado cuando el recurso está cifrado. 

[Utilice las claves de condiciones del contexto de cifrado únicamente cuando la acción de la declaración de política [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)sea una operación criptográfica AWS KMS simétrica que utilice un `EncryptionContext` parámetro, como operaciones como Decrypt. [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) (Para ver una lista de las operaciones admitidas, consulte [kms:EncryptionContext:*context-key*](conditions-kms.md#conditions-kms-encryption-context) o [kms:EncryptionContextKeys](conditions-kms.md#conditions-kms-encryption-context-keys)). Si utiliza estas claves de condición para permitir otras operaciones, por ejemplo [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), 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 de AWS Proton](https://docs.aws.amazon.com/proton/latest/adminguide/data-protection.html#encryption-context) identifica el recurso AWS Proton y su plantilla asociada. El [contexto de cifrado AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-encryption-context) identifica el secreto y su versión. El [contexto de cifrado para Amazon Location](https://docs.aws.amazon.com/location/latest/developerguide/encryption-at-rest.html#location-encryption-context) identifica el rastreador o la recopilación. 

El siguiente ejemplo de declaración de política de claves permite a Amazon Location Service crear concesiones en nombre de usuarios autorizados. Esta declaración de política limita el permiso mediante el uso de las claves [kms: ViaService](conditions-kms.md#conditions-kms-via-service), [kms: CallerAccount](conditions-kms.md#conditions-kms-caller-account) y `kms:EncryptionContext:context-key` condition para vincular el permiso a un recurso de rastreo 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`
<a name="least-privilege-source-arn"></a>

Cuando la entidad principal de una declaración de política de claves es una [entidad principal del servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), recomendamos encarecidamente que utilice las claves de condición globales [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) o [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount), además de la clave de condición `kms:EncryptionContext:context-key`. El ARN y los valores de la cuenta se incluyen en el contexto de autorización solo cuando una solicitud proviene AWS KMS de otro AWS servicio. Esta combinación de condiciones implementa los permisos de privilegio mínimo y evita un potencial [escenario suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Las entidades principales de servicio no suelen utilizarse como entidades principales en una política clave, pero algunos AWS servicios, como AWS CloudTrail por ejemplo, sí lo 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 el ARN de un recurso incluye caracteres que no están permitidos en una política de AWS KMS claves, no puede usar 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](key-policy-overview.md#key-policy-format).

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 CloudTrail utilizar la clave KMS para [generar la clave de datos](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) que se utiliza para cifrar un rastro. Las condiciones `aws:SourceArn` y `kms:EncryptionContext:context-key` se evalúan de forma independiente. Cualquier solicitud de uso de la clave KMS para la operación especificada debe cumplir ambas condiciones.

Para restringir el permiso del servicio a la traza `finance` en la cuenta de ejemplo (111122223333) y la región `us-west-2`, esta declaración de política establece la clave de condición `aws:SourceArn` del ARN de una traza concreta. La declaración de condición utiliza el [ArnEquals](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN)operador para garantizar que cada elemento del ARN se evalúe de forma independiente al coincidir. En el ejemplo también se utiliza la clave de condición `kms:EncryptionContext:context-key` para limitar el permiso a las trazas de una cuenta y región en particular. 

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCloudTrailToEncryptLogs",
      "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/*"
          ]
        }
      }
    }
  ]
}
```

------

# ABAC para AWS KMS
<a name="abac"></a>

El control de acceso basado en atributos (ABAC) es una estrategia de autorización que define los permisos en función de los atributos. AWS KMS es compatible con ABAC, ya que le permite controlar el acceso a las claves gestionadas por sus clientes en función de las etiquetas y los alias asociados a las claves del KMS. Las claves de condición de etiqueta y alias que permiten a ABAC AWS KMS ofrecer una forma eficaz y flexible de autorizar a los directores a utilizar las claves de KMS sin necesidad de modificar las políticas ni gestionar las concesiones. Pero debe usar esta característica con cuidado para que a las principales entidades no se les permita o se les deniegue el acceso inadvertidamente. 

Si utiliza ABAC, tenga en cuenta que el permiso para administrar etiquetas y alias es ahora un permiso de control de acceso. Asegúrese de conocer las etiquetas y alias existentes en todas las claves KMS antes de implementar una política que dependa de etiquetas o alias. Tome las precauciones razonables al agregar, eliminar y actualizar alias, y al etiquetar y desetiquetar claves. Otorgue permisos para administrar etiquetas y alias solo a las principales entidades que los necesiten y limite las etiquetas y alias que puedan administrar. 

**Notas**  
Cuando utilices ABAC para AWS KMS, ten cuidado a la hora de dar permiso a los directores para gestionar etiquetas y alias. Cambiar una etiqueta o alias podría permitir o denegar el permiso a una clave KMS. Los administradores de claves que no tienen permiso para cambiar políticas de claves o crear concesiones pueden controlar el acceso a claves KMS si tienen permiso para administrar etiquetas o alias.   
Puede que transcurran cinco minutos hasta que los cambios de etiqueta y alias afecten a la autorización de clave KMS. Los cambios recientes pueden ser visibles en las operaciones de API antes de que afecten a la autorización.  
Para controlar el acceso a una clave KMS basándose en su alias, debe utilizar una clave de condición. No puede utilizar un alias para representar una clave KMS en el elemento `Resource` de una declaración de política. Cuando aparece un alias en el elemento `Resource`, la declaración de política se aplica al alias, no a la clave KMS asociada.

**Más información**
+ Para obtener más información sobre la AWS KMS compatibilidad con ABAC, incluidos ejemplos, consulte y. [Uso de alias para controlar el acceso a las claves KMS](alias-authorization.md) [Uso de etiquetas para controlar el acceso a las claves KMS](tag-authorization.md)
+ Para obtener más información general sobre el uso de etiquetas para controlar el acceso a AWS los recursos, consulte [¿Para qué sirve ABAC? AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) y Cómo [controlar el acceso a AWS los recursos mediante etiquetas de recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) en la Guía del *usuario de IAM*.

## Claves de condición ABAC para AWS KMS
<a name="about-abac-kms"></a>

Para autorizar el acceso a claves KMS en función de sus etiquetas y alias, utilice las siguientes claves de condición en una política de claves o política de IAM.


| Clave de condición de ABAC | Description (Descripción) | Tipo de política | AWS KMS operaciones | 
| --- | --- | --- | --- | 
| [leyes: ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) | La etiqueta (clave y valor) en la clave KMS coincide con la etiqueta (clave y valor) o el patrón de etiqueta en la política | Política de IAM únicamente | Operaciones de recursos clave KMS 2 | 
| [aws:RequestTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag) | La etiqueta (clave y valor) en la solicitud coincide con la etiqueta (clave y valor) o el patrón de etiqueta en la política | Políticas de claves y políticas de IAM1 | [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html), [UntagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_UntagResource.html) | 
| [leyes: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) | Las claves de etiqueta de la solicitud coinciden con las claves de etiqueta de la política. | Políticas de claves y políticas de IAM1 | [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html), [UntagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_UntagResource.html) | 
| [km: ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) | Los alias asociados a la clave KMS coinciden con los alias o patrones de alias de la política | Política de IAM únicamente | Operaciones de recursos clave KMS 2 | 
| [km: RequestAlias](conditions-kms.md#conditions-kms-request-alias) | El alias que representa la clave KMS en la solicitud coincide con los patrones de alias o alias de la política. | Políticas de clavessss y políticas de IAM1 | [Operaciones criptográficas](kms-cryptography.md#cryptographic-operations), [DescribeKey[GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) | 

1Cualquier clave de condición que se pueda utilizar en una política de clave también se puede utilizar en una política de IAM, pero solo si [la política de claves lo permite](key-policy-default.md#key-policy-default-allow-root-enable-iam).

2Una *operación de recursos de clave KMS* es una operación autorizada para una clave KMS en particular. Para identificar las operaciones de recursos clave KMS, en la [tabla de permisos AWS KMS](kms-api-permissions-reference.md#kms-api-permissions-reference-table), busque un valor de la clave KMS en la columna `Resources` para la operación. 

Por ejemplo, puede utilizar estas claves de condición para crear las siguientes políticas.
+ Una política de IAM con `kms:ResourceAliases` que habilita el permiso para usar claves KMS con un alias o patrón de alias en particular. Esto es un poco diferente de las políticas que se basan en etiquetas: aunque puede utilizar patrones de alias en una política, cada alias debe ser único en una región Cuenta de AWS y. Esto le permite aplicar una política a un conjunto selecto de claves de KMS sin incluir la clave ARNs de las claves de KMS en la declaración de política. Para agregar o quitar claves KMS del conjunto, cambie el alias de la clave KMS.
+ Una política de claves con `kms:RequestAlias` que permite a las principales entidades usar una clave KMS en una operación `Encrypt`, pero solo cuando la solicitud `Encrypt` utiliza ese alias para identificar la clave KMS.
+ Una política de IAM con `aws:ResourceTag/tag-key` que deniega permiso para utilizar claves KMS con una clave de etiqueta y un valor de etiqueta en concreto. Esto le permite aplicar una política a un conjunto selecto de claves de KMS sin incluir la clave ARNs de las claves de KMS en la declaración de política. Para agregar o quitar claves KMS del conjunto, etiqueta o desmarca de la clave KMS.
+ Una política de IAM con `aws:RequestTag/tag-key` que permite a las principales entidades eliminar solo etiquetas de claves KMS de `"Purpose"="Test"` 
+ Una política de IAM con `aws:TagKeys` que deniega el permiso para etiquetar o desetiquetar una clave KMS con una clave de etiqueta `Restricted`.

ABAC hace que la administración de accesos sea flexible y escalable. Por ejemplo, puede utilizar la clave de condición `aws:ResourceTag/tag-key` para crear una política de IAM que permita a las principales entidades utilizar una clave KMS para operaciones especificadas solo cuando la clave KMS tenga una etiqueta `Purpose=Test`. La política se aplica a todas las claves KMS de todas las regiones de la Cuenta de AWS.

Cuando se adjunta a un usuario o rol, la siguiente política de IAM permite a las principales entidades utilizar todas las claves KMS existentes con una etiqueta `Purpose=Test` para las operaciones especificadas. Para proporcionar este acceso a claves KMS nuevas o existentes, no es necesario cambiar la política. Solo tiene que adjuntar la etiqueta `Purpose=Test` a las claves KMS. Del mismo modo, para eliminar este acceso de las claves KMS con una etiqueta `Purpose=Test`, edite o elimine la etiqueta. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AliasBasedIAMPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Purpose": "Test"
        }
      }
    }
  ]
}
```

------

Sin embargo, si utiliza esta función, tenga cuidado al administrar etiquetas y alias. Agregar, cambiar o eliminar una etiqueta o alias puede permitir o denegar inadvertidamente el acceso a una clave KMS. Los administradores de claves que no tienen permiso para cambiar políticas de claves o crear concesiones pueden controlar el acceso a claves KMS si tienen permiso para administrar etiquetas y alias. Para mitigar este riesgo, considere [limitar permisos para administrar etiquetas](tag-permissions.md#tag-permissions-conditions) y [alias](alias-access.md#alias-access-limiting). Por ejemplo, es posible que exija solo las principales entidades administren etiquetas `Purpose=Test`. Para más detalles, consulte [Uso de alias para controlar el acceso a las claves KMS](alias-authorization.md) y [Uso de etiquetas para controlar el acceso a las claves KMS](tag-authorization.md).

## ¿Etiquetas o alias?
<a name="abac-tag-or-alias"></a>

AWS KMS admite ABAC con etiquetas y alias. Ambas opciones proporcionan una estrategia de control de acceso flexible y escalable, pero son ligeramente diferentes entre sí. 

Puede decidir usar etiquetas o alias en función de sus patrones de uso particulares AWS . Por ejemplo, si ya ha otorgado permisos de etiquetado a la mayoría de los administradores, podría ser más fácil controlar una estrategia de autorización basada en alias. O bien, si está cerca de la cuota de [alias por clave KMS](resource-limits.md#aliases-per-key), es posible que prefiera una estrategia de autorización basada en etiquetas. 

Los siguientes beneficios son de interés general.

**Beneficios del control de acceso basado en etiquetas**
+ El mismo mecanismo de autorización para distintos tipos de AWS recursos. 

  Puede utilizar la misma etiqueta o clave de etiqueta para controlar el acceso a varios tipos de recursos, como un clúster de Amazon Relational Database Service (Amazon RDS), un volumen de Amazon Elastic Block Store (Amazon EBS) y una clave KMS. Esta función permite varios modelos de autorización diferentes que son más flexibles que el control de acceso basado en roles tradicional.
+ Autorizar el acceso a un grupo de claves KMS.

  Puede utilizar etiquetas para administrar el acceso a un grupo de claves KMS en la misma región y Cuenta de AWS . Asigne la misma etiqueta o clave de etiqueta a las claves KMS que elija. A continuación, cree una declaración easy-to-maintain de política sencilla que se base en la etiqueta o la clave de la etiqueta. Para agregar o quitar una clave KMS de su grupo de autorización, agregue o elimine la etiqueta; no necesita editar la política.

**Beneficios del control de acceso basado en alias**
+ Autorizar el acceso a operaciones criptográficas basadas en alias.

  La mayoría de las condiciones políticas de atributos basadas en solicitudes, incluida [aws:RequestTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), solo afectan a las operaciones que agregan, editan o eliminan el atributo. Sin embargo, la clave de RequestAlias condición [kms:](conditions-kms.md#conditions-kms-request-alias) controla el acceso a las operaciones criptográficas en función del alias utilizado para identificar la clave KMS de la solicitud. Por ejemplo, puede concederle permiso a una entidad principal para usar una clave KMS en una operación `Encrypt` pero solo cuando el valor del parámetro `KeyId` sea `alias/restricted-key-1`. Para satisfacer esta condición se requiere todo lo siguiente:
  + La clave KMS debe estar asociada a ese alias.
  + La solicitud debe utilizar el alias para identificar la clave KMS.
  + La entidad principal debe tener permiso para utilizar la clave KMS en función de la condición `kms:RequestAlias`. 

  Esto resulta especialmente útil si las aplicaciones suelen utilizar nombres de alias o alias ARNs para hacer referencia a las claves de KMS.
+ Proporcione permisos muy limitados.

  Un alias debe ser único en una región Cuenta de AWS y. Como resultado, dar acceso a las principales entidades a una clave KMS basada en un alias puede ser mucho más restrictivo que darles acceso basado en una etiqueta. A diferencia de los alias, las etiquetas se pueden asignar a varias claves KMS de la misma cuenta y región. Si lo desea, puede usar un patrón de alias, como `alias/test*`, para dar acceso a las entidades principales a un grupo de claves KMS en la misma cuenta y Región. Sin embargo, permitir o denegar acceso a un alias en concreto permite un control muy estricto de claves KMS.

# Solución de problemas de ABAC para AWS KMS
<a name="troubleshooting-tags-aliases"></a>

Controlar el acceso a las claves KMS en función de sus etiquetas y alias es conveniente y potente. Sin embargo, es propenso a algunos errores predecibles que querrá evitar.

## Acceso cambiado debido al cambio de etiqueta
<a name="access-denied-tag"></a>

Si se elimina una etiqueta o se cambia su valor, se denegará el acceso a la clave KMS a las principales entidades que tengan acceso a una clave KMS basada únicamente en esa etiqueta. Esto también puede ocurrir cuando una etiqueta incluida en una declaración de política de denegación se agrega a una clave KMS. Agregar una etiqueta relacionada con la política a una clave KMS puede permitir el acceso a entidades principales a las que se debe denegar el acceso a una clave KMS.

Por ejemplo, supongamos que una entidad principal tiene acceso a una clave KMS basada en la etiqueta `Project=Alpha`, como el permiso proporcionado por la siguiente declaración de política de IAM de ejemplo. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyWithResourceTag",
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Project": "Alpha"
        }
      }
    }
  ]
}
```

------

Si se elimina la etiqueta de esa clave KMS o se cambia el valor de la etiqueta, la entidad principal ya no tiene permiso para usar la clave KMS para las operaciones especificadas. Esto puede resultar evidente cuando el director intenta leer o escribir datos en un AWS servicio que utiliza una clave gestionada por el cliente. Para rastrear el cambio de etiqueta, revise CloudTrail los registros [TagResource](ct-tagresource.md)o [UntagResource las entradas](ct-untagresource.md).

Para restaurar el acceso sin actualizar la política, cambie las etiquetas de la clave KMS. Esta acción tiene un impacto mínimo aparte de un breve período de tiempo mientras está surtiendo efecto a lo largo de AWS KMS. Para evitar un error como este, otorgue permisos de etiquetado y desetiquetado solo a las principales entidades que lo necesiten y[limite sus permisos de etiquetado](tag-permissions.md#tag-permissions-conditions) a las etiquetas que necesitan administrar. Antes de cambiar una etiqueta, busque políticas para detectar el acceso que depende de la etiqueta y obtenga claves KMS en todas las regiones que tengan la etiqueta. Podrías considerar la posibilidad de crear una CloudWatch alarma de Amazon cuando cambies determinadas etiquetas.

## Cambio de acceso debido al cambio de alias
<a name="access-denied-alias"></a>

Si se elimina un alias o se asocia a una clave KMS diferente, se denegará el acceso a la clave KMS a las principales entidades que tengan acceso a la clave KMS basándose únicamente en ese alias. Esto también puede ocurrir cuando se incluye un alias asociado con una clave KMS en una declaración de política de denegación. Agregar un alias relacionado con la política a una clave KMS también puede permitir el acceso a entidades principales a las que se debe denegar el acceso a una clave KMS.

Por ejemplo, la siguiente declaración de política de IAM utiliza la clave de ResourceAliases condición [kms:](conditions-kms.md#conditions-kms-resource-aliases) para permitir el acceso a las claves de KMS en distintas regiones de la cuenta con cualquiera de los alias especificados.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AliasBasedIAMPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:List*",
        "kms:Describe*",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "kms:ResourceAliases": [
            "alias/ProjectAlpha",
            "alias/ProjectAlpha_Test",
            "alias/ProjectAlpha_Dev"
          ]
        }
      }
    }
  ]
}
```

------

Para rastrear el cambio de alias, revise CloudTrail los registros y [DeleteAlias](ct-deletealias.md)las [CreateAlias[UpdateAlias](ct-updatealias.md)](ct-createalias.md)entradas.

Para restaurar el acceso sin actualizar la política, cambie el alias asociado con la clave KMS. Dado que cada alias se puede asociar a una sola clave KMS en una cuenta y región, administrar alias es un poco más difícil que administrar etiquetas. Restaurar el acceso a algunas entidades principales en una clave KMS puede denegar el acceso a la misma u otras entidades principales a una clave KMS diferente. 

Para evitar este error, otorgue permisos de administración de alias solo a las principales entidades que lo necesiten y [limite sus permisos de administración de alias](alias-access.md#alias-access-limiting) a los alias que necesitan administrar. Antes de actualizar o eliminar un alias, busque políticas para detectar el acceso que depende del alias y busque claves KMS en todas las regiones asociadas al alias.

## Acceso denegado debido a la cuota de alias
<a name="access-denied-alias-quota"></a>

Los usuarios que estén autorizados a usar una clave de KMS con una ResourceAliases condición de [kms:](conditions-kms.md#conditions-kms-resource-aliases) recibirán una `AccessDenied` excepción si la clave de KMS supera los [alias predeterminados por cuota de claves de KMS](resource-limits.md#aliases-per-key) para esa cuenta y región. 

Para restaurar el acceso, elimine los alias asociados a la clave KMS para que cumpla con la cuota. O utilice un mecanismo alternativo para dar a los usuarios acceso a la clave KMS. 

## Cambio de autorización retrasado
<a name="tag-alias-auth-delay"></a>

Los cambios que realice en las etiquetas y alias pueden tardar hasta cinco minutos en afectar a la autorización de claves KMS. Como resultado, un cambio de etiqueta o alias podría reflejarse en las respuestas de las operaciones de API antes de que afecten a la autorización. Es probable que este retraso sea superior al breve retraso de coherencia que, eventualmente, afecta a la mayoría de AWS KMS las operaciones. 

Por ejemplo, puede que tenga una política de IAM que permita a ciertas entidades principales utilizar cualquier clave KMS con una etiqueta `"Purpose"="Test"`. Luego, agrega la etiqueta `"Purpose"="Test"` de una clave KMS. Aunque la [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html)operación se complete y la [ListResourceTags](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListResourceTags.html)respuesta confirme que la etiqueta está asignada a la clave de KMS, es posible que las entidades principales no tengan acceso a la clave de KMS durante un máximo de cinco minutos.

Para evitar errores, construya este retraso esperado en su código. 

## Solicitudes fallidas debido a actualizaciones de alias
<a name="failed-requests"></a>

Cuando se actualiza un alias, se asocia un alias existente con una clave KMS diferente. 

El [descifrado](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) y [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)las solicitudes que especifican el [nombre del alias](concepts.md#key-id-alias-name) [o el ARN](concepts.md#key-id-alias-ARN) del alias pueden fallar porque el alias ahora está asociado a una clave KMS que no cifró el texto cifrado. Esta situación normalmente devuelve un `IncorrectKeyException` o `NotFoundException`. O si la solicitud no tiene parámetro `KeyId` o `DestinationKeyId`, la operación puede fallar con la excepción `AccessDenied` dado que la persona que llama ya no tiene acceso a la clave KMS que cifró el texto cifrado. 

Puede rastrear el cambio consultando los CloudTrail registros y las entradas de [CreateAlias](ct-createalias.md)registro. [UpdateAlias[DeleteAlias](ct-deletealias.md)](ct-updatealias.md) También puede usar el valor del `LastUpdatedDate` campo en la [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)respuesta para detectar un cambio. 

Por ejemplo, en el siguiente [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)ejemplo de respuesta se muestra que se actualizó el `ProjectAlpha_Test` alias de la `kms:ResourceAliases` condición. Como resultado, las principales entidades que tienen acceso basado en el alias pierden el acceso a la clave KMS previamente asociada. En su lugar, tienen acceso a la clave KMS recién asociada. 

```
$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/ProjectAlpha`)]'

{
    "Aliases": [
        {
            "AliasName": "alias/ProjectAlpha_Test",
            "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Test",
            "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321",
            "CreationDate": 1566518783.394,
            "LastUpdatedDate": 1605308931.903
        },
        {
            "AliasName": "alias/ProjectAlpha_Restricted",
            "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Restricted",
            "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1553410800.010,
            "LastUpdatedDate": 1553410800.010
        }
    ]
}
```

La solución para este cambio no es simple. Puede actualizar el alias nuevamente para asociarlo a la clave KMS original. Sin embargo, antes de actuar, debe considerar el efecto de ese cambio en la clave KMS asociada actualmente. Si las principales entidades utilizan la última clave KMS en operaciones criptográficas, es posible que necesiten acceso continuo a ella. En este caso, es posible que desee actualizar la política para asegurarse de que las principales entidades tienen permiso para usar ambas claves KMS. 

Puede evitar un error como el siguiente: antes de actualizar un alias, busque políticas para detectar el acceso que depende del alias. A continuación, obtenga claves KMS en todas las regiones asociadas con el alias. De permisos de administración de alias solo a las principales entidades que lo necesiten y [limite sus permisos de administración de alias](alias-access.md#alias-access-limiting) a los alias que necesitan administrar.

# RBAC para AWS KMS
<a name="rbac"></a>

El control de acceso basado en roles (RBAC) es una estrategia de autorización que solo proporciona a los usuarios los permisos necesarios para realizar sus tareas laborales, y nada más. AWS KMS es compatible con el RBAC, ya que le permite controlar el acceso a sus claves especificando permisos detallados sobre el uso de las claves dentro de las [políticas de claves](key-policies.md). Las políticas de claves especifican un recurso, una acción, un efecto, una entidad principal y unas condiciones opcionales para conceder el acceso a las claves.

Para implementar el RBAC en AWS KMS, recomendamos separar los permisos de los usuarios clave de los administradores clave.

------
#### [ Key users ]

El siguiente ejemplo de política de claves permite al rol de IAM de `ExampleUserRole` utilizar la clave KMS.

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

 Es posible que sus usuarios de claves necesiten menos permisos que el usuario de este ejemplo. Asigne solo los permisos que necesite el usuario. Utilice las siguientes preguntas para ajustar con más precisión los permisos.
+ ¿Qué entidades principales de IAM (roles o usuarios) necesitan acceder a la clave?
+ ¿Qué acciones debe realizar cada entidad principal con la clave? Por ejemplo, ¿la entidad principal solo necesita permisos de cifrado y firma?
+ ¿El usuario es una persona o un servicio? AWS Si se trata de un AWS servicio, puede usar la [clave de condición](conditions-kms.md#conditions-kms-via-service) para restringir el uso de la clave a un AWS servicio específico.

------
#### [ Key administrators ]



El siguiente ejemplo de política de claves permite al rol de IAM de `ExampleAdminRole` administrar la clave KMS. 

```
{
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws: iam::111122223333:role/ExampleAdminRole"
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion"
            ],
            "Resource": "*"
    }
```

 Es posible que los administradores de claves necesiten menos permisos que el administrador de este ejemplo. Asigne únicamente los permisos que necesiten sus administradores de claves.

------

Otorgue a los usuarios únicamente los permisos que necesitan para cumplir con sus roles. Los permisos de un usuario pueden variar en función de si la clave se utiliza en entornos de prueba o de producción. Si utiliza permisos menos restrictivos en determinados entornos que no son de producción, implemente un proceso para probar las políticas antes de lanzarlas a producción.

**Más información**
+ [Identidades de IAM (usuarios, grupos de usuarios y roles)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)
+ [Tipos de control de acceso](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/access-control-types.html)

# Permitir a los usuarios de otras cuentas utilizar una clave KMS
<a name="key-policy-modifying-external-accounts"></a>

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

El permiso entre cuentas solo es efectivo para las siguientes operaciones:
+ [Operaciones criptográficas](kms-cryptography.md#cryptographic-operations)
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
+ [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)
+ [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
+ [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)

Si concede a un usuario de otra cuenta permiso para otras operaciones, esos permisos no surten efecto. Por ejemplo, si concedes a un responsable de otra cuenta el ListKeys permiso [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) en una política de IAM, o el ScheduleKeyDeletion permiso [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) en una política de IAM, en una clave de KMS, los intentos del usuario de realizar esas operaciones con tus recursos seguirán fallando. 

Para obtener más información sobre el uso de claves de KMS en distintas cuentas para AWS KMS realizar operaciones, consulta la columna **Uso multicuenta** en los [AWS KMS permisos](kms-api-permissions-reference.md) campos y. [Uso de claves KMS en otras cuentas](#cross-account-use) También hay una sección **Cross-account use (Uso entre cuentas)** en cada descripción de la API en la [Referencia de la API de AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/APIReference/).

**aviso**  
Tenga cuidado al conceder permisos a las principales entidades para usar las claves KMS. Siempre que sea posible, siga el principio del *mínimo privilegio*. Proporcione a los usuarios acceso solo a las claves KMS que necesitan para las operaciones que requieren.  
Además, tenga cuidado con el uso de cualquier clave KMS desconocida, especialmente una clave KMS en una cuenta diferente. Es posible que los usuarios malintencionados le den permisos para usar su clave KMS para obtener información sobre usted o su cuenta.   
Para obtener más información sobre el uso de políticas de para proteger los recursos de su cuenta, consulte [Prácticas recomendadas para las políticas de IAM](iam-policies-best-practices.md).

Para conceder a permiso para utilizar una clave KMS a los usuarios y roles de otra cuenta, debe utilizar dos tipos diferentes de políticas:
+ La **política de claves** de la clave KMS debe conceder a la cuenta externa (o a los usuarios y roles de la cuenta externa) permiso para utilizar la clave KMS. La política de claves está en la cuenta propietaria de la clave KMS.
+ Las **políticas de IAM** de la cuenta externa debe delegar los permisos de política de claves de a sus usuarios y roles. Estas políticas se establecen en la cuenta externa y otorgan permisos para los usuarios y roles de esa cuenta.

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

Para editar la política clave, puede usar la [vista de políticas](key-policy-modifying.md#key-policy-modifying-how-to-console-policy-view) en las [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operaciones Consola de administración de AWS [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)o usar.

Para obtener ayuda con la edición de políticas de IAM, consulte [Uso de políticas de IAM con AWS KMS](iam-policies.md). 

Para ver un ejemplo que muestra cómo la política de claves y las políticas de IAM se combinan para permitir el uso de una clave KMS en una cuenta diferente, consulte [Ejemplo 2: El usuario asume el rol con permiso para usar una clave de KMS en otro Cuenta de AWS](policy-evaluation.md#example-cross-acct).

Puede ver las AWS KMS operaciones entre cuentas resultantes en la clave KMS de sus [AWS CloudTrail registros](logging-using-cloudtrail.md). Las operaciones que utilizan claves KMS en otras cuentas se registran tanto en la cuenta del autor de la llamada como en la cuenta del propietario de la clave KMS.

**Topics**
+ [Paso 1: Agregar una declaración de política de claves en la cuenta local](#cross-account-key-policy)
+ [Paso 2: Agregar políticas de IAM a la cuenta externa](#cross-account-iam-policy)
+ [Permitir el uso de claves KMS externas con Servicios de AWS](#cross-account-service)
+ [Uso de claves KMS en otras cuentas](#cross-account-use)

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

## Paso 1: Agregar una declaración de política de claves en la cuenta local
<a name="cross-account-key-policy"></a>

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

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

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

Los permisos otorgados a la cuenta externa y sus entidades principales solo son efectivos si la cuenta externa está habilitada en la región que aloja la clave KMS y su política de clave. Para obtener información acerca de las regiones que no están habilitadas de forma predeterminada (“Regiones de adhesión”), consulte [Administración de Regiones de AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) en la *Referencia general de AWS*.

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

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

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

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

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

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

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

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

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

**nota**  
No establezca la Entidad principal en un asterisco (\$1) en ninguna declaración de política de claves que permita permisos a menos que utilice [condiciones](policy-conditions.md) para limitar la política de claves. Un asterisco indica todas las identidades de cada uno de los Cuenta de AWS permisos para usar la clave KMS, a menos que otra declaración de política lo deniegue explícitamente. Los usuarios de otros usuarios Cuentas de AWS pueden usar su clave de KMS siempre que tengan los permisos correspondientes en su propia cuenta.

También debe decidir qué permisos desea conceder a la cuenta externa. Por ejemplo, es posible que desee conceder a los usuarios permiso para descifrar pero no cifrar, o permiso para ver la clave KMS pero no utilizarla. Para obtener una lista de permisos sobre las claves KMS, consulte [AWS KMS permisos](kms-api-permissions-reference.md).

**Definición de la política de claves predeterminada al crear una clave KMS**  
Cuando usas la [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operación para crear una clave de KMS, puedes usar su `Policy` parámetro para especificar una política de claves que conceda permiso a una cuenta externa, o a usuarios y roles externos, para usar la clave de KMS.  
Al crear una clave de KMS en Consola de administración de AWS, también se crea su política de claves. Al seleccionar identidades en las secciones **Key Administrators** (Administradores de claves) y **Key Users** (Usuarios de claves), AWS KMS agrega declaraciones de política para esas identidades a la política de claves de la clave KMS. La sección **Key Users (Usuarios de claves)** también le permite agregar cuentas externas como usuarios de claves.  
Al introducir el identificador de cuenta de una cuenta externa, se AWS KMS añaden dos declaraciones a la política clave. Esta acción solo afecta a la política de claves. Los usuarios y roles de la cuenta externa no pueden utilizar la clave KMS hasta que se asocien políticas de IAM para concederles algunos o todos estos permisos.  
La primera declaración de la política de claves concede a la cuenta externa permiso para utilizar la clave KMS en operaciones criptográficas. La segunda declaración de política clave permite a la cuenta externa crear, ver y revocar las concesiones en la clave de KMS, pero solo cuando la solicitud proviene de un [AWS servicio que esté integrado con AWS KMS ella](https://aws.amazon.com/kms/features/#AWS_Service_Integration). Estos permisos permiten que otros AWS servicios que cifran los datos de los usuarios utilicen la clave KMS. Estos permisos están diseñados para las claves KMS que cifran los datos de usuario en los servicios de AWS 

## Paso 2: Agregar políticas de IAM a la cuenta externa
<a name="cross-account-iam-policy"></a>

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

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

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

La siguiente política de IAM de ejemplo permite a la entidad principal utilizar la clave KMS en la cuenta de `111122223333` para operaciones criptográficas. Para conceder este permiso a los usuarios y roles de la cuenta `444455556666`, [asocie la política](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) a los usuarios o roles de la cuenta `444455556666`.

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

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

Tenga en cuenta los siguientes detalles sobre esta política:
+ A diferencia de las políticas de claves, las declaraciones de política de IAM no contienen el elemento `Principal`. En las políticas de IAM, la entidad principal es la identidad a la que está asociada la política. 
+ El elemento de `Resource` de la política de IAM identifica la clave KMS que la entidad principal puede utilizar. Para especificar una clave KMS, agregue el [ARN de la clave](concepts.md#key-id-alias-ARN) al elemento `Resource`.
+ Puede especificar más de una clave KMS en el elemento `Resource`. Sin embargo, si no especifica determinadas claves KMS en el elemento `Resource`, es posible que conceda acceso de forma inadvertida a más clave KMS de las que pretendía.
+ Para permitir al usuario externo utilizar la clave KMS con [servicios de AWS que se integran con AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration), es posible que tenga que agregar permisos a la política de claves o a la política de IAM. Para obtener más información, consulte [Permitir el uso de claves KMS externas con Servicios de AWS](#cross-account-service).

Para obtener más información sobre el uso de las políticas de IAM, consulte [Políticas de IAM](iam-policies.md).

## Permitir el uso de claves KMS externas con Servicios de AWS
<a name="cross-account-service"></a>

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

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

## Uso de claves KMS en otras cuentas
<a name="cross-account-use"></a>

Si tiene permiso para usar una clave de KMS en otra Cuenta de AWS, puede usar la clave de KMS en Consola de administración de AWS AWS SDKs, AWS CLI, y Herramientas de AWS para PowerShell. 

Para identificar una clave KMS en una cuenta diferente en un comando de shell o solicitud de la API, utilice los siguientes [identificadores clave](concepts.md#key-id).
+ Para [las operaciones criptográficas [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)](kms-cryptography.md#cryptographic-operations), y [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html), utilice la [clave ARN](concepts.md#key-id-key-ARN) o el [alias ARN](concepts.md#key-id-alias-ARN) de la clave KMS.
+ Para [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [GetKeyRotationStatus[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/ListGrants.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html), y [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/RevokeGrant.html), utilice la clave ARN de la clave KMS.

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

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

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

# Control del acceso a claves de varias regiones
<a name="multi-region-keys-auth"></a>

Puede usar claves de varias regiones en escenarios de conformidad, recuperación de desastres y copia de seguridad que serían más complejos con claves de una sola región. Sin embargo, dado que las propiedades de seguridad de las claves de varias regiones son significativamente diferentes de las de las claves de una sola región, recomendamos tener precaución al autorizar la creación, la administración y el uso de claves de varias regiones.

**nota**  
Las declaraciones de la política de IAM existentes con caracteres comodín en el campo `Resource` ahora se aplican a las claves de una sola región y de varias regiones. Para restringirlas a claves KMS de una sola región o claves de varias regiones, utilice la clave de MultiRegion condición [kms:](conditions-kms.md#conditions-kms-multiregion).

Utilice las herramientas de autorización para evitar la creación y el uso de claves de varias regiones en cualquier escenario en el que una sola región sea suficiente. Permita que los directores repliquen una clave multirregional solo en Regiones de AWS aquellos lugares donde las necesiten. De permiso para las claves de varias regiones solo a las entidades principales que las necesiten y solo para las tareas que las requieran.

Puedes usar políticas clave, políticas de IAM y subvenciones para permitir que los directores de IAM administren y usen tus claves multirregionales. Cuenta de AWS Cada clave de varias regiones es un recurso independiente con un ARN clave única y una política clave. Debe establecer y mantener una política clave para cada clave y asegurarse de que las políticas de IAM nuevas y existentes implementen su estrategia de autorización. 

Para admitir claves multirregionales, AWS KMS utiliza un rol vinculado al servicio de IAM. Este rol le da a AWS KMS los permisos que necesita para sincronizar [propiedades compartidas](multi-region-keys-overview.md#mrk-sync-properties). Para obtener más información, consulte [Autoriza la sincronización de claves AWS KMS multirregionales](multi-region-auth-slr.md).

**Topics**
+ [Conceptos básicos de autorización para claves de varias regiones](#multi-region-auth-about)
+ [Autorización de administradores y usuarios clave de varias regiones](#multi-region-auth-users)

## Conceptos básicos de autorización para claves de varias regiones
<a name="multi-region-auth-about"></a>

Al diseñar políticas de claves y políticas de IAM para claves de varias regiones, tenga en cuenta los siguientes principios.
+ **Política de claves**: cada clave de varias regiones es un recurso clave KMS independiente con su propia [política de claves](key-policies.md). Puede aplicar la misma política de clave o una política de clave diferente para cada clave del conjunto de claves de varias regiones relacionadas. Las políticas clave *no* son [propiedades compartidas de las](multi-region-keys-overview.md#mrk-sync-properties) claves multirregionales. AWS KMS no copia ni sincroniza las políticas clave entre las claves multirregionales relacionadas. 

  Al crear una clave de réplica en la AWS KMS consola, la consola muestra la política de claves actual de la clave principal para mayor comodidad. Puede utilizar esta política de claves, editarla o eliminarla y reemplazarla. Pero incluso si acepta la política de clave principal sin cambios, AWS KMS no sincroniza las políticas. Por ejemplo, si cambia la política de clave de la clave principal, la política de clave de la clave de réplica sigue siendo la misma.
+ **Política de claves predeterminada**: al crear claves multirregionales mediante las `ReplicateKey` operaciones [CreateKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateKey.html)y, se aplica la [política de claves predeterminada](key-policy-default.md), a menos que especifique una política de claves en la solicitud. Esta es la misma política de clave predeterminada que se aplica a las claves de una sola región.
+ **Políticas de IAM**: al igual que con todas las claves KMS, puede usar políticas de IAM para controlar el acceso a las claves de varias regiones solo cuando la [política clave lo permite](key-policy-default.md#key-policy-default-allow-root-enable-iam). [Las políticas de IAM](iam-policies.md) se aplican a todos de forma Regiones de AWS predeterminada. Sin embargo, puede utilizar claves de condición, como [aws: RequestedRegion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion), para limitar los permisos a una región concreta. 

  Para crear claves primarias y de réplica, las entidades principales deben tener permiso `kms:CreateKey` en una política de IAM que se aplica a la región donde se crea la clave. 
+ **Subvenciones**: AWS KMS [las subvenciones](grants.md) son regionales. Cada concesión da permisos para una clave KMS. Puede utilizar concesiones para dar permisos a una clave principal de varias regiones o clave de réplica. Sin embargo, no puede utilizar una sola concesión para dar permisos a varias claves KMS, incluso si se trata de claves de varias regiones relacionadas.
+ **ARN de clave**: cada clave de varias regiones tiene un [ARN de clave única](mrk-how-it-works.md). La clave ARNs de las claves multirregionales relacionadas tiene la misma partición, cuenta e ID de clave, pero diferentes regiones.

  Para aplicar una declaración de política de IAM a una clave concreta de varias regiones, utilice su ARN clave o un patrón ARN clave que incluya la región. Para aplicar una declaración de política de IAM a todas las claves de varias regiones, utilice un comodín (\$1) en el elemento Región del ARN, como se muestra en el siguiente ejemplo.

  ```
  {
    "Effect": "Allow",  
    "Action": [
      "kms:Describe*",
      "kms:List*"
    ],
    "Resource": {
        "arn:aws:kms:*::111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab"
    }
  }
  ```

  Para aplicar una declaración de política a todas las claves multirregionales de su país Cuenta de AWS, puede utilizar la condición de MultiRegion política [kms:](conditions-kms.md#conditions-kms-multiregion) o un patrón de identificador de clave que incluya el prefijo distintivo`mrk-`.
+ **Función vinculada al servicio**[: los directores que crean claves principales multirregionales deben tener el permiso iam:. CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)

  [Para sincronizar las propiedades compartidas de las claves multirregionales relacionadas, asume una función vinculada al servicio de IAM. AWS KMS](multi-region-auth-slr.md) AWS KMS crea el rol vinculado al servicio Cuenta de AWS cada vez que se crea una clave principal multirregional. (Si la función existe, AWS KMS lo recrea, que no tiene ningún efecto nocivo). El rol es válido en todas las regiones. [Para poder crear (o volver AWS KMS a crear) el rol vinculado al servicio, los directores que creen claves principales multirregionales deben tener el permiso iam:. CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)

## Autorización de administradores y usuarios clave de varias regiones
<a name="multi-region-auth-users"></a>

Las entidades principales que crean y administran claves de varias regiones necesitan los siguientes permisos en las regiones principal y de réplica:
+ `kms:CreateKey`
+ `kms:ReplicateKey`
+ `kms:UpdatePrimaryRegion`
+ `iam:CreateServiceLinkedRole`

### Creación de una clave principal
<a name="mrk-auth-create-primary"></a>

Para [crear una clave principal multirregional](create-primary-keys.md), el director necesita CreateServiceLinkedRole permisos [kms: CreateKey e iam:](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) [en una política de IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) que sea efectiva en la región de la clave principal. Las entidades principales que tienen estos permisos pueden crear claves de una sola región y de varias regiones a menos que restrinja sus permisos. 

El `iam:CreateServiceLinkedRole` permiso permite crear el [**AWSServiceRoleForKeyManagementServiceMultiRegionKeys**rol AWS KMS](multi-region-auth-slr.md) para sincronizar las [propiedades compartidas de las claves multirregionales relacionadas](multi-region-keys-overview.md#mrk-sync-properties).

Por ejemplo, esta política de IAM permite a una entidad principal crear claves de varias regiones, adjuntar políticas para esas claves y asignar funciones vinculadas al servicio para las claves de varias regiones.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action": [
        "kms:CreateKey",
        "iam:CreateServiceLinkedRole"
      ],
      "Effect":"Allow",
      "Resource":"*"
  }
}
```

------

Para permitir o denegar el permiso para crear claves principales multirregionales, utilice la clave de condición [kms: MultiRegion](conditions-kms.md#conditions-kms-multiregion). Los valores válidos son `true` (clave de varias regiones) o `false` (clave de una sola región). Por ejemplo, la siguiente declaración de política de IAM utiliza una acción `Deny` con la clave de condición `kms:MultiRegion` para evitar que las entidades principales creen claves de varias regiones. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"kms:CreateKey",
      "Effect":"Deny",
      "Resource":"*",
      "Condition": {
          "Bool": {
            "kms:MultiRegion": true
          }
      }
  }
}
```

------

### Claves de replicación
<a name="mrk-auth-replicate"></a>

Para [crear una clave de réplica de varias regiones](#mrk-auth-replicate), la entidad principal necesita los siguientes permisos:
+  [kms: ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html) permiso en la política de claves de la clave principal.
+ [kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) permiso en una política de IAM que está en vigor en la región de claves réplicas.

Tenga cuidado al permitir estos permisos. Permiten a las entidades principales crear claves KMS y las políticas de claves que autorizan su uso. El permiso `kms:ReplicateKey` también autoriza la transferencia de material clave a través de los límites de la región dentro de AWS KMS.

Para restringir los campos Regiones de AWS en los que se puede replicar una clave multirregional, utilice la clave de condición [kms: ReplicaRegion](conditions-kms.md#conditions-kms-replica-region). Limita solo el permiso `kms:ReplicateKey`. De lo contrario, no tiene ningún efecto. Por ejemplo, la siguiente política de claves permite a la entidad principal replicar esta clave principal, pero solo en 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"
      ]
    }
  }
}
```

### Actualización de la región principal
<a name="mrk-auth-update"></a>

Las entidades principales autorizadas pueden convertir una clave de réplica en una clave principal, lo que cambia la clave principal anterior en una réplica. Esta acción se denomina [actualización de la región principal](multi-region-update.md). Para actualizar la región principal, el director necesita el UpdatePrimaryRegion permiso [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) en ambas regiones. Puede proporcionar estos permisos en una política de claves o una política de IAM.
+ `kms:UpdatePrimaryRegion` en la clave principal. Este permiso debe ser efectivo en la región de clave principal.
+ `kms:UpdatePrimaryRegion` en la clave de réplica. Este permiso debe ser efectivo en la región clave de réplica.

Por ejemplo, la siguiente política de clave otorga a los usuarios que pueden asumir el permiso de rol de Administrador para actualizar la región principal de la clave KMS. Esta clave KMS puede ser la clave principal o una clave de réplica en esta operación.

```
{
  "Effect": "Allow",
  "Resource": "*",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:UpdatePrimaryRegion"
}
```

Para restringir Regiones de AWS lo que puede alojar una clave principal, utilice la clave de PrimaryRegion condición [kms:](conditions-kms.md#conditions-kms-primary-region). Por ejemplo, la siguiente declaración de política de IAM permite a los directores actualizar la región principal de las claves multirregionales de la región Cuenta de AWS, pero solo cuando la nueva región principal sea una de las regiones especificadas.

```
{
  "Effect": "Allow",  
  "Action": "kms:UpdatePrimaryRegion",
  "Resource": {
      "arn:aws:kms:*:111122223333:key/*"
  },
  "Condition": {
    "StringEquals": {
      "kms:PrimaryRegion": [ 
         "us-west-2",
         "sa-east-1",
         "ap-southeast-1"
      ]
    }
  }
}
```

### Uso y administración de claves de varias regiones
<a name="mrk-auth-using"></a>

De forma predeterminada, las principales entidades que tienen permiso para usar y administrar claves KMS en una Cuenta de AWS y Región también tienen permiso para usar y administrar claves de varias regiones. Sin embargo, puede utilizar la clave de MultiRegion condición [kms:](conditions-kms.md#conditions-kms-multiregion) para permitir solo las claves de una sola región o solo las claves de varias regiones. O bien, utilice la clave de MultiRegionKeyType condición [kms:](conditions-kms.md#conditions-kms-multiregion-key-type) para permitir solo las claves principales de varias regiones o solo las claves de réplica. Ambas claves de condición controlan el acceso a la [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operación y a cualquier operación que utilice una clave KMS existente, como [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) o. [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)

En el siguiente ejemplo de declaración de política de IAM se utiliza la clave de condición `kms:MultiRegion` para evitar que las entidades principales utilicen o administren cualquier clave de varias regiones.

```
{
  "Effect": "Deny",  
  "Action": "kms:*",
  "Resource": "*",
  "Condition": {
    "Bool": "kms:MultiRegion": true
  }
}
```

Esta declaración de política de IAM de ejemplo utiliza la condición `kms:MultiRegionKeyType` para permitir que las entidades principales programen y cancelen la eliminación de claves, pero solo en las claves de réplica de varias regiones.

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

# Determinar el acceso a AWS KMS keys
<a name="determining-access"></a>

Para determinar el alcance total de quién o qué tiene acceso actualmente a una clave AWS KMS key, debes examinar la política clave de la clave de KMS, todas las [concesiones](grants.md) que se aplican a la clave de KMS y, posiblemente, todas las políticas AWS Identity and Access Management (de IAM). Puede hacerlo para determinar el ámbito del uso potencial de una clave KMS o como ayuda para cumplir los requisitos de conformidad o auditoría. Los siguientes temas pueden ayudarle a generar una lista completa de las entidades principales de AWS (identidades) que actualmente tienen acceso a una clave KMS.

**Topics**
+ [Examinar la política de claves](determining-access-key-policy.md)
+ [Examen de las políticas de IAM](determining-access-iam-policies.md)
+ [Examinar concesiones](determining-access-grants.md)

# Examinar la política de claves
<a name="determining-access-key-policy"></a>

Las [políticas de claves](key-policies.md) son la forma principal de controlar el acceso a las claves KMS. Cada clave KMS tiene exactamente una política de claves.

Cuando una política de claves consta de la [política de claves predeterminada](key-policy-default.md#key-policy-default-allow-root-enable-iam) o la incluye, la política de claves permite a los administradores de IAM de la cuenta utilizar políticas de IAM para controlar el acceso a la clave KMS. Además, si la política de claves da permiso a [otra Cuenta de AWS](key-policy-modifying-external-accounts.md) para que utilice la clave KMS, los administradores de IAM de la cuenta externa pueden utilizar políticas de IAM para delegar dichos permisos. Para determinar la lista completa de entidades principales que pueden obtener acceso a la clave KMS, [examine las políticas de IAM](determining-access-iam-policies.md). 

Para ver la política clave de una [clave gestionada por el AWS KMS cliente](concepts.md#customer-mgn-key) o [Clave administrada de AWS](concepts.md#aws-managed-key)de tu cuenta, utiliza la [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operación Consola de administración de AWS o la de la AWS KMS API. Para ver la política de claves, debe tener permisos `kms:GetKeyPolicy` para la clave KMS. Para obtener declaraciones acerca de cómo ver la política de claves para una clave KMS, consulte [Visualización de políticas de claves](key-policy-viewing.md).

Examine el documento de políticas de claves y anote todas las entidades principales especificadas en el elemento `Principal` de cada declaración de política. En una declaración de política que `Allow` surta efecto, los usuarios de IAM, las funciones de IAM y Cuentas de AWS el `Principal` elemento tienen acceso a esta clave de KMS.

**nota**  
No establezca la Entidad principal en un asterisco (\$1) en ninguna declaración de política de claves que permita permisos a menos que utilice [condiciones](policy-conditions.md) para limitar la política de claves. Un asterisco indica todas las identidades de cada Cuenta de AWS permiso para usar la clave de KMS, a menos que otra declaración de política lo deniegue explícitamente. Los usuarios de otros usuarios Cuentas de AWS pueden usar su clave de KMS siempre que tengan los permisos correspondientes en su propia cuenta.

En los siguientes ejemplos se utilizan las declaraciones de política existentes en la [política de claves predeterminada](key-policy-default.md) para demostrar cómo hacerlo.

**Example Declaración de política 1**  

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
  "Action": "kms:*",
  "Resource": "*"
}
```
En la declaración de política 1, `arn:aws:iam::111122223333:root` es un [principal de AWS cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) que hace referencia al Cuenta de AWS 111122223333. (No es el usuario raíz de la cuenta). De forma predeterminada, una declaración de política como esta se incluye en el documento de política clave cuando se crea una nueva clave de KMS con la o se crea una nueva clave de KMS mediante programación Consola de administración de AWS, pero no se proporciona una política clave.  
Un documento de política clave con una declaración que permite el acceso a las [políticas de IAM de la cuenta Cuenta de AWS permite el acceso a la](key-policy-default.md#key-policy-default-allow-root-enable-iam) clave de KMS. Esto significa que los usuarios y las roles de la cuenta podrían tener acceso a la clave KMS aunque no se indiquen explícitamente como entidades principales en el documento de políticas de claves. Asegúrese de [examinar todas las políticas de IAM](determining-access-iam-policies.md) de todas las que Cuentas de AWS figuran como principales para determinar si permiten el acceso a esta clave de KMS.

**Example Declaración de política 2**  

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"},
  "Action": [
    "kms:Describe*",
    "kms:Put*",
    "kms:Create*",
    "kms:Update*",
    "kms:Enable*",
    "kms:Revoke*",
    "kms:List*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "*"
}
```
En la declaración de política 2, `arn:aws:iam::111122223333:role/KMSKeyAdmins` hace referencia a la función de IAM denominada KMSKey Administradores en 111122223333. Cuenta de AWS Los usuarios que están autorizados a asumir este rol pueden realizar las acciones enumeradas en la declaración de política, que son las acciones administrativas para administrar una clave KMS.

**Example Declaración de política 3**  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:ReEncrypt*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```
En la declaración de política 3, `arn:aws:iam::111122223333:role/EncryptionApp` hace referencia a la función de IAM nombrada en 111122223333. EncryptionApp Cuenta de AWS Las entidades principales que están autorizadas a asumir este rol tienen permiso para realizar las acciones enumeradas en la declaración de política, que incluyen las [operaciones criptográficas](kms-cryptography.md#cryptographic-operations) para una clave KMS de cifrado simétrico.

**Example Declaración de política 4**  

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:ListGrants",
    "kms:CreateGrant",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```
En la declaración de política 4, `arn:aws:iam::111122223333:role/EncryptionApp` hace referencia a la función de IAM nombrada en 111122223333. EncryptionApp Cuenta de AWS Las entidades principales que están autorizadas a asumir este rol tienen permiso para realizar las acciones enumeradas en la declaración de política. Estas acciones, cuando se combinan con las acciones permitidas en **Ejemplo de declaración de política 3**, son las necesarias para delegar el uso de la clave KMS a la mayoría de los servicios de [AWS que se integran con AWS KMS](service-integration.md), específicamente los servicios que usan [concesiones](grants.md). El GrantIsFor AWSResource valor [kms:](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) del `Condition` elemento garantiza que la delegación solo esté permitida cuando el delegado sea un AWS servicio que se integre con las concesiones de autorización AWS KMS y las utilice.

Para conocer las distintas formas en las que puede especificar una entidad principal en un documento de políticas de claves, consulte [Especificación de un elemento principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal_specifying) en la *Guía del usuario de IAM*.

Para obtener más información sobre las políticas AWS KMS clave, consulte[Políticas clave en AWS KMS](key-policies.md).

# Examen de las políticas de IAM
<a name="determining-access-iam-policies"></a>

Además de la política de claves y concesiones, también puede utilizar [políticas de IAM](iam-policies.md) para permitir el acceso a una clave KMS. Para obtener más información sobre cómo funcionan las políticas de IAM y las políticas de claves de forma conjunta, consulte [Solución de problemas de AWS KMS permisos](policy-evaluation.md).

Para determinar qué entidades principales tienen acceso a una clave KMS a través de las políticas de IAM, puede utilizar la herramienta del [simulador de políticas de IAM](https://policysim.aws.amazon.com/) o puede realizar solicitudes a la API de IAM.

**Contents**
+ [Examen de las políticas de IAM con el simulador de políticas de IAM](#determining-access-iam-policy-simulator)
+ [Examen de políticas de IAM con la API de IAM](#determining-access-iam-api)

## Examen de las políticas de IAM con el simulador de políticas de IAM
<a name="determining-access-iam-policy-simulator"></a>

El simulador de políticas de IAM puede ayudarle a saber qué entidades principales tienen acceso a una clave KMS mediante una política de IAM.

**Para utilizar el simulador de políticas de IAM para determinar el acceso a una clave KMS**

1. Inicie sesión en el simulador de políticas de IAM Consola de administración de AWS y, a continuación, abra el simulador de políticas de IAM en[https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/).

1. En el panel **Users, Groups, and Roles**, elija el usuario, grupo o rol cuyas políticas desee simular.

1. (Opcional) Desactive la casilla de verificación situada junto a la política que desee omitir en la simulación. Para simular todas las políticas, deje todas las políticas seleccionadas.

1. En el panel **Policy Simulator**, haga lo siguiente:

   1. En **Select service**, elija **Key Management Service**.

   1. Para simular AWS KMS acciones específicas, en **Seleccionar acciones**, elija las acciones que desee simular. Para simular todas AWS KMS las acciones, elija **Seleccionar todo**.

1. (Opcional) El simulador de políticas simula el acceso a todas las claves KMS de forma predeterminada. Para simular el acceso a una clave KMS específica, elija **Simulation Settings (Configuraciones de simulación)** y, a continuación, escriba el nombre de recurso de Amazon (ARN) de la clave KMS que se simulará.

1. Elija **Run Simulation (Ejecutar la simulación)**.

Puede ver los resultados de la simulación en la sección **Results**. Repita los pasos del 2 al 6 por cada usuario, grupo y rol de la Cuenta de AWS.

## Examen de políticas de IAM con la API de IAM
<a name="determining-access-iam-api"></a>

Puede utilizar la API de IAM para examinar políticas de IAM mediante programación. En los pasos siguientes se ofrece información general sobre cómo hacerlo:

1. Utilice las [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)operaciones y de la API de IAM para obtener todos los usuarios [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)y funciones de la [AWS cuenta para cada entidad que Cuenta de AWS figure como principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) en la política clave (es decir, cada principal de cuenta especificado en este formato`"Principal": {"AWS": "arn:aws:iam::111122223333:root"}`).

1. Para cada usuario y rol de la lista, usa la [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html)operación en la API de IAM e introduce los siguientes parámetros:
   + Para `PolicySourceArn`, especifique el nombre de recurso de Amazon (ARN) de un usuario o rol de la lista. Puede especificar solo un `PolicySourceArn` para cada solicitud `SimulatePrincipalPolicy`, de modo que debe llamar a esta operación varias veces, una vez por cada usuario y rol de la lista.
   + En la `ActionNames` lista, especifique todas las acciones de la AWS KMS API que desee simular. Para simular todas las acciones de la AWS KMS API, utilice`kms:*`. Para probar las acciones individuales de la AWS KMS API, ponga "`kms:`«, por ejemplo,"» antes de cada acción de la API`kms:ListKeys`. Si desea ver una lista completa de las acciones de la API de AWS KMS , consulte [Acciones](https://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html) en la *Referencia de la API de AWS Key Management Service *.
   + (Opcional) Para determinar si los usuarios o los roles tienen acceso a claves de KMS específicas, utilice el `ResourceArns` parámetro para especificar una lista de los nombres de recursos de Amazon (ARNs) de las claves de KMS. Para determinar si los usuarios o roles tienen acceso a cualquier clave KMS, no use el parámetro `ResourceArns`.

IAM responde a cada solicitud de `SimulatePrincipalPolicy` con una decisión de evaluación: `allowed`, `explicitDeny` o `implicitDeny`. Para cada respuesta que contenga una decisión de evaluación sobre`allowed`, la respuesta incluye el nombre de la operación de AWS KMS API específica que está permitida. También incluye el ARN de la clave KMS utilizado en la evaluación, si se ha realizado.

# Examinar concesiones
<a name="determining-access-grants"></a>

Las concesiones son mecanismos avanzados para especificar los permisos que usted o un AWS servicio integrado AWS KMS pueden usar para especificar cómo y cuándo se puede usar una clave de KMS. Las concesiones están asociadas a una clave KMS, y cada concesión contiene la entidad principal que recibe el permiso de usar la clave KMS y una lista de las operaciones permitidas. Las concesiones son una alternativa a la política de claves, y son útiles para casos de uso específicos. Para obtener más información, consulte [Subvenciones en AWS KMS](grants.md).

Para obtener una lista de las concesiones de una clave KMS, utilice la AWS KMS [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operación. Puede examinar las concesiones de una clave KMS para determinar quién o qué tiene acceso actualmente para utilizar la clave KMS a través de dichas concesiones. Por ejemplo, a continuación se ofrece una representación JSON de una concesión que se ha obtenido del comando [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) en la AWS CLI.

```
{"Grants": [{
  "Operations": ["Decrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "0d8aa621-43ef-4657-b29c-3752c41dc132",
  "RetiringPrincipal": "arn:aws:iam::123456789012:root",
  "GranteePrincipal": "arn:aws:sts::111122223333:assumed-role/aws:ec2-infrastructure/i-5d476fab",
  "GrantId": "dc716f53c93acacf291b1540de3e5a232b76256c83b2ecb22cdefa26576a2d3e",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151834E9,
  "Constraints": {"EncryptionContextSubset": {"aws:ebs:id": "vol-5cccfb4e"}}
}]}
```

Para averiguar quién o qué tiene acceso para utilizar la clave KMS, busque el elemento `"GranteePrincipal"`. En el ejemplo anterior, la entidad principal beneficiaria es un usuario de rol asumido que está asociado con la instancia EC2 i-5d476fab, que la infraestructura de EC2 usa para asociar el volumen de EBS cifrado vol-5cccfb4e a la instancia. En este caso, el rol de infraestructura EC2 tiene permiso para usar la clave KMS porque anteriormente ha creado un volumen de EBS cifrado que está protegido por esta clave KMS y, después, ha asociado el volumen a una instancia EC2.

A continuación, se ofrece otro ejemplo de una representación JSON de una concesión que se ha obtenido del comando [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) en la AWS CLI. En el siguiente ejemplo, el cesionario principal es otro. Cuenta de AWS

```
{"Grants": [{
  "Operations": ["Encrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "",
  "GranteePrincipal": "arn:aws:iam::444455556666:root",
  "GrantId": "f271e8328717f8bde5d03f4981f06a6b3fc18bcae2da12ac38bd9186e7925d11",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151269E9
}]}
```

# Contexto de cifrado
<a name="encrypt_context"></a>

**nota**  
No puede especificar un contexto de cifrado en una operación criptográfica con una [clave KMS asimétrica](symmetric-asymmetric.md) o una [clave KMS HMAC](hmac.md). Los algoritmos asimétricos y los algoritmos MAC no son compatibles con un contexto de cifrado.

Todas [las operaciones AWS KMS criptográficas](kms-cryptography.md#cryptographic-operations) con [claves KMS de cifrado simétrico](symm-asymm-choose-key-spec.md#symmetric-cmks) aceptan un *contexto de cifrado*, un conjunto opcional de pares clave-valor no secretos que pueden contener información contextual adicional sobre los datos. Puede insertar el contexto de cifrado en `Encrypt` las operaciones AWS KMS para mejorar la autorización y la auditabilidad de las llamadas de descifrado de la API. AWS KMS AWS KMS utiliza el contexto de cifrado como datos autenticados adicionales (AAD) para respaldar el cifrado autenticado. El contexto de cifrado se vincula criptográficamente al texto cifrado, de tal forma que se requiera el mismo contexto de cifrado para descifrar los datos.

El contexto de cifrado no es secreto y no está cifrado. Aparece en texto no cifrado en los [registros de AWS CloudTrail](logging-using-cloudtrail.md) para que pueda utilizarlo para identificar y clasificar las operaciones criptográficas. El contexto de cifrado no debe incluir información confidencial. Le recomendamos que el contexto de cifrado describa los datos que se van a cifrar o descifrar. Por ejemplo, cuando cifre un archivo, puede usar parte de la ruta del archivo como contexto de cifrado.

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

Por ejemplo, al cifrar volúmenes e instantáneas creados con la operación Amazon [Elastic Block Store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) (Amazon EBS) [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html), Amazon EBS utiliza el ID del volumen como valor de contexto de cifrado.

```
"encryptionContext": {
  "aws:ebs:id": "vol-abcde12345abc1234"
}
```

También puede usar el contexto de cifrado para refinar o limitar el acceso a su AWS KMS keys cuenta. Puede utilizar el contexto de cifrado [como una restricción en concesiones](grants.md) y como una *[condición en declaraciones de política](policy-conditions.md)*. Las claves de contexto de cifrado y sus valores pueden ser cadenas arbitrarias con `aws`. Estos valores contrastan con las [etiquetas generadas por AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html#tag-conventions), como [aws:cloudformation:stack-name](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-resource-tags.html). Para obtener más información, consulte [kmsEncryptionContext: clave de *contexto*](conditions-kms.md#conditions-kms-encryption-context) 

Para obtener información sobre cómo utilizar el contexto de cifrado para proteger la integridad de los datos cifrados, consulte la publicación [Cómo proteger la integridad de sus datos cifrados mediante el uso AWS Key Management Service y EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) en el blog sobre AWS seguridad.

## Reglas de contexto de cifrado
<a name="encryption-context-rules"></a>

AWS KMS aplica las siguientes reglas para las claves y los valores del contexto de cifrado.
+ La clave y el valor de un par de contexto de cifrado deben ser cadenas literales simples. Si utiliza un tipo diferente, como un número entero o flotante, AWS KMS lo interpretará como una cadena.
+ Las claves y los valores de un contexto de cifrado pueden incluir caracteres Unicode. Si un contexto de cifrado incluye caracteres que no están permitidos en las políticas clave o en las políticas de IAM, no podrá especificar el contexto de cifrado en las claves de condición de la política, como [`kms:EncryptionContext:context-key`](conditions-kms.md#conditions-kms-encryption-context) y [`kms:EncryptionContextKeys`](conditions-kms.md#conditions-kms-encryption-context-keys). Para obtener más información sobre las reglas clave de los documentos de política de claves, consulte [Formato de la política de claves](key-policy-overview.md#key-policy-format). Para obtener más información sobre las reglas de documentos de políticas de IAM, consulte [Requisitos de nombres de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) en la *Guía del usuario de IAM*.

## Contexto de cifrado de las políticas
<a name="encryption-context-authorization"></a>

El contexto de cifrado se utiliza principalmente para verificar la integridad y la autenticidad. Sin embargo, también puede utilizar el contexto de cifrado para controlar el acceso a AWS KMS keys de cifrado simétricas en las políticas de claves y las políticas de IAM. 

Las claves [EncryptionContextKeyscondicionales kmsEncryptionContext:](conditions-kms.md#conditions-kms-encryption-context): y [kms:](conditions-kms.md#conditions-kms-encryption-context) permiten (o deniegan) un permiso solo cuando la solicitud incluye claves de contexto de cifrado o pares clave-valor determinados. 

Por ejemplo, la siguiente declaración de política de claves permite al rol `RoleForExampleApp` utilizar la KMS en operaciones `Decrypt`. Utiliza la clave de condición `kms:EncryptionContext:context-key` para conceder este permiso solo cuando el contexto de cifrado de la solicitud incluye un par de contexto de cifrado `AppName:ExampleApp`.

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

Para obtener más información sobre estas claves de condición de contexto de cifrado, consulte [Claves de estado para AWS KMS](policy-conditions.md).

## Contexto de cifrado de las concesiones
<a name="encryption-context-grants"></a>

Al [crear una concesión](grants.md), puede incluir [restricciones de concesión](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) que establezcan las condiciones para la concesión de permisos. AWS KMS admite dos restricciones de concesión `EncryptionContextEquals` y `EncryptionContextSubset` ambas implican el [contexto de cifrado](#encrypt_context) en una solicitud de una operación criptográfica. Al utilizar estas restricciones de concesión, los permisos de la concesión solo son efectivos cuando el contexto de cifrado de la solicitud de la operación criptográfica cumple los requisitos de las restricciones de concesión. 

Por ejemplo, puede añadir una restricción de `EncryptionContextEquals` concesión a una concesión que permita la [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operación. Con esta restricción, la concesión solo permite la operación cuando el contexto de cifrado de la solicitud coincide con mayúsculas y minúsculas con el contexto de cifrado de la restricción de concesión.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/exampleUser \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --operations GenerateDataKey \
    --constraints EncryptionContextEquals={Purpose=Test}
```

Una solicitud como la siguiente del principal beneficiario satisfaría la restricción de `EncryptionContextEquals`.

```
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --key-spec AES_256 \
    --encryption-context Purpose=Test
```

Para obtener más detalles sobre las restricciones de concesiones y , consulte [Uso de restricciones de concesiones](create-grant-overview.md#grant-constraints). Para obtener información detallada sobre las concesiones, consulte [Subvenciones en AWS KMS](grants.md).

## Registrar el contexto de cifrado
<a name="encryption-context-auditing"></a>

AWS KMS AWS CloudTrail se utiliza para registrar el contexto de cifrado para que pueda determinar a qué claves y datos del KMS se ha accedido. La entrada de registro muestra exactamente qué clave KMS se ha usado para cifrar o descifrar los datos específicos a los que hace referencia el contexto de cifrado en la entrada de registro.

**importante**  
Como el contexto de cifrado se ha registrado, no debe contener información confidencial.

## Almacenar el contexto de cifrado
<a name="encryption-context-storing"></a>

Para simplificar el uso de cualquier contexto de cifrado al llamar a las operaciones [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) o [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html), puede almacenar el contexto de cifrado junto con los datos cifrados. Es recomendable que almacene solo la parte suficiente del contexto de cifrado para crear todo el contexto cuando sea necesario para el cifrado o el descifrado. 

Por ejemplo, si el contexto de cifrado es la ruta completa a un archivo, almacene solo parte de esa ruta con el contenido del archivo cifrado. A continuación, cuando necesite todo el contexto de cifrado, reconstrúyalo a partir del fragmento almacenado. Si alguien intenta manipular el archivo (por ejemplo, cambiarlo de nombre o moverlo a otra ubicación), el valor de contexto de cifrado cambia y la solicitud de descifrado produce un error.

# Prueba de los permisos
<a name="testing-permissions"></a>

Para poder AWS KMS utilizarlas, debes tener credenciales que AWS puedas utilizar para autenticar tus solicitudes de API. Las credenciales deben incluir permisos para obtener acceso a las claves de KMS y alias. Los permisos vienen determinados por las políticas de claves, las políticas de IAM, las concesiones y los controles de acceso entre cuentas. Además de controlar el acceso a las claves de KMS, puede controlar el acceso a su CloudHSM y a los almacenes de claves personalizados.

Puede especificar el parámetro `DryRun` de la API para comprobar que dispone de los permisos necesarios para utilizar las claves de AWS KMS . También puedes utilizarlas `DryRun` para comprobar que los parámetros de la solicitud en una llamada a la AWS KMS API estén especificados correctamente. 

**Topics**
+ [¿Cuál es el DryRun parámetro?](#what-is-dryrun)
+ [Especificar DryRun con la API](#dryrun-api)

## ¿Cuál es el DryRun parámetro?
<a name="what-is-dryrun"></a>

 `DryRun` es un parámetro de API opcional que se especifica para comprobar que las llamadas a la API de AWS KMS se realizan correctamente. Use `DryRun` para probar la llamada a la API antes de hacer una llamada a AWS KMS. Puede comprobar lo siguiente: 
+ Que cuenta con los permisos necesarios para utilizar las claves de AWS KMS .
+ Que ha especificado correctamente los parámetros de la llamada.

AWS KMS admite el uso del `DryRun` parámetro en determinadas acciones de la API: 
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
+ [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
+ [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
+ [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)
+ [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)
+ [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
+ [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)
+ [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
+ [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
+ [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)
+ [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
+ [Verificar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
+ [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)

El uso del parámetro `DryRun` generará cargos y se facturará como una solicitud a la API estándar. Para obtener más información sobre AWS KMS los precios, consulta [AWS Key Management Service Precios](https://aws.amazon.com/kms/pricing/).

 Todas las solicitudes a la API que utilizan el parámetro `DryRun` se aplican a la cuota de solicitudes a la API y pueden dar lugar a una excepción de limitación si se supera una cuota de solicitudes a la API. Por ejemplo, llamar a [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) con `DryRun` o sin `DryRun` cuenta para la misma cuota de operaciones criptográficas. Consulte [Limitar las solicitudes AWS KMS](throttling.md) para obtener más información.

Cada llamada a una operación de AWS KMS API se captura como un evento y se registra en un AWS CloudTrail registro. El resultado de cualquier operación que especifique el `DryRun` parámetro aparece en el CloudTrail registro. Para obtener más información, consulte [Registrar llamadas a la AWS KMS API con AWS CloudTrail](logging-using-cloudtrail.md).

## Especificar DryRun con la API
<a name="dryrun-api"></a>

Para usarlo`DryRun`, especifique el `—dry-run` parámetro en los AWS CLI comandos y las llamadas a la AWS KMS API que admiten el parámetro. Cuando lo hagas, AWS KMS verificará si la llamada se ha realizado correctamente. AWS KMS las llamadas que utilice siempre `DryRun` fallarán y devolverán un mensaje con información sobre el motivo por el que se produjo el error en la llamada. El mensaje puede incluir las siguientes excepciones:
+ `DryRunOperationException`: la solicitud se realizaría correctamente si `DryRun` no se especificara. 
+ `ValidationException`: se produjo un error en la solicitud al especificar un parámetro de API incorrecto.
+ `AccessDeniedException`: no tiene permisos para realizar la acción de API especificada en el recurso de KMS.

Por ejemplo, el siguiente comando usa la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación y crea una concesión que permite a los usuarios autorizados a asumir la `keyUserRole` función llamar a la operación de [descifrado](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) con una clave [KMS simétrica](symm-asymm-choose-key-spec.md#symmetric-cmks) especificada. Se especifica el parámetro `DryRun`.

```
$  aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --dry-run
```

# Solución de problemas de AWS KMS permisos
<a name="policy-evaluation"></a><a name="security_iam_troubleshoot"></a>

Al autorizar el acceso a una clave KMS, AWS KMS evalúa lo siguiente:
+ La [política de claves](determining-access-key-policy.md) asociada a la clave KMS. La política de claves siempre se define en la región Cuenta de AWS y propietaria de la clave de KMS. 
+ Todas las [políticas de IAM](determining-access-iam-policies.md) asociadas al usuario o rol que realiza la solicitud. Las políticas de IAM que rigen el uso de una clave KMS por una entidad principal siempre se definen en la Cuenta de AWS.
+ Todas las [concesiones](determining-access-grants.md) que afectan a la clave KMS.
+ Otros tipos de políticas que podrían aplicarse a la solicitud de usar la clave KMS, como [Políticas de control de servicios de AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_type-auth.html#orgs_manage_policies_scp) y [Políticas de punto de enlace de la VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy). Estas políticas son opcionales y permiten todas las acciones de forma predeterminada, pero puede usarlas para restringir los permisos otorgados a las entidades principales.

AWS KMS evalúa estos mecanismos de política en conjunto para determinar si se permite o deniega el acceso a la clave de KMS. Para ello, AWS KMS utiliza un proceso similar al que se muestra en el siguiente diagrama de flujo. El siguiente diagrama de flujo ofrece una representación visual del proceso de evaluación de las políticas.

![\[Diagrama de flujo que describe el proceso de evaluación de las políticas\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/images/updated-kms-authz-diagram.png)


Este diagrama de flujo se divide en dos partes. Las partes parecen secuenciales, pero se suelen evaluar al mismo tiempo.
+ *El use de la autorización* determina si puede utilizar una clave KMS en función de su política de claves, sus políticas de IAM, sus concesiones y otras políticas aplicables.
+ La *confianza en la clave* determina si debe confiar en una clave KMS que se le ha permitido utilizar. En general, usted confía en los recursos que tiene. Cuenta de AWS Sin embargo, también puede estar seguro de utilizar las claves de KMS de otra forma Cuenta de AWS si una política de concesión o de IAM de su cuenta le permite utilizar la clave de KMS.

Puede utilizar este diagrama de flujo para saber por qué se ha permitido o denegado que un intermediario utilice una clave KMS. También puede utilizarlo para evaluar sus políticas y concesiones. Por ejemplo, el diagrama de flujo muestra que se puede negar el acceso a un intermediario mediante una declaración `DENY` explícita, o por la ausencia de una declaración `ALLOW` explícita, en la política de claves, la política de IAM o la concesión.

El diagrama de flujo puede explicar algunos escenarios comunes de permisos.

**Topics**
+ [Ejemplo 1: Se deniega al usuario el acceso a una clave KMS de su Cuenta de AWS](#example-no-iam)
+ [Ejemplo 2: El usuario asume el rol con permiso para usar una clave de KMS en otro Cuenta de AWS](#example-cross-acct)

## Ejemplo 1: Se deniega al usuario el acceso a una clave KMS de su Cuenta de AWS
<a name="example-no-iam"></a>

Alice es una usuaria de IAM en el Cuenta de AWS 111122223333. Se le ha denegado al acceso a una clave KMS en la misma Cuenta de AWS. ¿Por qué no puede utilizar Alice la clave KMS?

En este caso, se le deniega el acceso a Alice a la clave KMS porque no hay ninguna política de claves, política de IAM o concesión que proporcione los permisos necesarios. La política clave de la clave de KMS permite utilizar políticas de IAM Cuenta de AWS para controlar el acceso a la clave de KMS, pero ninguna política de IAM permite a Alice usar la clave de KMS.

![\[Diagrama de flujo que describe el proceso de evaluación de las políticas\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/images/kms-auth-flow-Alice.png)


Considere las políticas relevantes para este ejemplo.
+ La clave KMS que Alice quiere utilizar tiene la [política de claves predeterminada](key-policy-default.md). Esta política [permite que la Cuenta de AWS](key-policy-default.md#key-policy-default-allow-root-enable-iam) que posee la clave KMS para utilizar políticas de IAM para controlar el acceso a la clave KMS. Esta política de claves satisface la condición *¿PERMITE la política de claves que la cuenta de los intermediarios utilice políticas de IAM para controlar el acceso a clave?* del diagrama de flujo.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Id" : "key-test-1",
    "Statement" : [ {
      "Sid" : "DelegateToIAMPolicies",
      "Effect" : "Allow",
      "Principal" : {
        "AWS" : "arn:aws:iam::111122223333:root"
      },
      "Action" : "kms:*",
      "Resource" : "*"
    } ]
  }
  ```

------
+ Sin embargo, no hay ninguna política de claves, política de IAM ni concesión que conceda a Alice permiso para usar la clave KMS. Por lo tanto, se deniega a Alice el permiso para utilizar la clave KMS.

## Ejemplo 2: El usuario asume el rol con permiso para usar una clave de KMS en otro Cuenta de AWS
<a name="example-cross-acct"></a>

Roberto es un usuario de la cuenta 1 (111122223333). Se le permite usar una clave KMS en la cuenta 2 (444455556666) en [operaciones criptográficas](kms-cryptography.md#cryptographic-operations). ¿Cómo es posible?

**sugerencia**  
Al evaluar los permisos entre cuentas, recuerde que la política de claves se especifica en la cuenta de la clave KMS. La política de IAM se especifica en la cuenta del intermediario, incluso cuando el intermediario está en una cuenta diferente. Para obtener más detalles sobre cómo proporcionar acceso entre cuentas a claves KMS, consulte [Permitir a los usuarios de otras cuentas utilizar una clave KMS](key-policy-modifying-external-accounts.md).
+ La política de claves de la clave KMS de la cuenta 2 permite que la cuenta 2 utilice políticas de IAM para controlar el acceso a la clave KMS. 
+ La política de claves de la clave KMS de la cuenta 2 permite que la cuenta 1 utilice la clave KMS en operaciones criptográficas. Sin embargo, la cuenta 1 debe utilizar políticas de IAM para conceder acceso a la clave KMS a sus entidades principales.
+ Una política de IAM de la cuenta 1 permite al rol `Engineering` utilizar la clave KMS de la cuenta 2 para las operaciones criptográficas.
+ Roberto, un usuario de la cuenta 1, tiene permiso para asumir el rol `Engineering`.
+ Roberto confía en esta clave KMS, porque, aunque no se encuentre en su cuenta, una política de IAM de su cuenta le otorga permiso explícito para utilizar esta clave KMS.

![\[Diagrama de flujo que describe el proceso de evaluación de las políticas\]](http://docs.aws.amazon.com/es_es/kms/latest/developerguide/images/kms-auth-flow-Bob.png)


Considere las políticas que permiten a Roberto, un usuario de la cuenta 1, utilizar la clave KMS de la cuenta 2.
+ La política de claves de la clave KMS permite que la cuenta 2 (444455556666, la cuenta propietaria de la clave KMS) utilice políticas de IAM para controlar el acceso a la clave KMS. Esta política de claves permite también que la cuenta 1 (111122223333) utilice la clave KMS en operaciones criptográficas (especificado en el elemento `Action` de la declaración de política). Sin embargo, ninguna persona de la cuenta 1 puede usar la clave KMS de la cuenta 2 hasta que la cuenta 1 defina políticas de IAM que concedan a las entidades principales acceso a la clave KMS.

  En el diagrama de flujo, esta política de claves de la cuenta 2 satisface la condición *¿PERMITE la política de claves que la cuenta de los intermediarios utilice políticas de IAM para controlar el acceso a la clave?* 

------
#### [ JSON ]

****  

  ```
  {
      "Id": "key-policy-acct-2",
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "PermissionUseIAMpolicies",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::444455556666:root"
              },
              "Action": "kms:*",
              "Resource": "*"
          },
          {
              "Sid": "AllowAccount1UseThisKMSKeys",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:root"
              },
              "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncryptFrom",
                  "kms:ReEncryptTo",
                  "kms:GenerateDataKey",
                  "kms:GenerateDataKeyWithoutPlaintext",
                  "kms:DescribeKey"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ Una política de IAM en la persona que llama Cuenta de AWS (cuenta 1, 111122223333) otorga al principal permiso para realizar operaciones criptográficas con la clave KMS en la cuenta 2 (444455556666). El elemento `Action` delega a la entidad principal los mismos permisos que la política de claves de la cuenta 2 concedió a la cuenta 1. Para conceder estos permisos al rol `Engineering` en la cuenta 1, [esta política en línea está incrustada](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html) en el rol `Engineering`.

  Las políticas de IAM entre cuentas como esta son eficaces solo cuando la política de claves de la clave KMS de la cuenta 2 concede a la cuenta 1 permiso para utilizar la clave KMS. Además, la cuenta 1 solo puede conceder permiso a sus entidades principales para realizar las acciones que la política de claves concedió a la cuenta.

  En el diagrama de flujo, esto satisface la condición *¿Permite una política de IAM que el intermediario realice esta acción?*

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncryptFrom",
                  "kms:ReEncryptTo",
                  "kms:GenerateDataKey",
                  "kms:GenerateDataKeyWithoutPlaintext",
                  "kms:DescribeKey"
              ],
              "Resource": [
              "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
              ]
          }
      ]
  }
  ```

------
+ El último elemento necesario es la definición del rol `Engineering` en la cuenta 1. El elemento `AssumeRolePolicyDocument` del rol permite a Roberto asumir el rol `Engineering`.

  ```
  {
      "Role": {
          "Arn": "arn:aws:iam::111122223333:role/Engineering",
          "CreateDate": "2019-05-16T00:09:25Z",
          "AssumeRolePolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": {
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/bob"
                  },
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole"
              }
          },
          "Path": "/",
          "RoleName": "Engineering",
          "RoleId": "AROA4KJY2TU23Y7NK62MV"
      }
  }
  ```

# AWS KMS glosario de control de acceso
<a name="access-glossary"></a>

En el siguiente tema se describen los términos y conceptos importantes del control de AWS KMS acceso.

## Autenticación
<a name="permission-concept-authentication"></a>

La *autenticación* es el proceso de verificación de su identidad. Para enviar una solicitud a AWS KMS, debe iniciar sesión AWS con sus AWS credenciales.

## Autorización
<a name="permission-concept-authorization"></a>

La *autorización* proporciona el permiso para enviar solicitudes para crear, administrar o usar AWS KMS recursos. Por ejemplo, debe estar autorizado a utilizar una clave KMS en una operación criptográfica.

Para controlar el acceso a sus AWS KMS recursos, utilice [las políticas clave, las políticas](key-policies.md) de [IAM y las](iam-policies.md) [subvenciones](grants.md). Cada clave de KMS debe tener una política de claves. Si la política de claves lo permite, también puede utilizar las políticas y autorizaciones de IAM para conceder acceso a la clave KMS a las entidades principales. Para restringir la autorizaciones, puede utilizar [claves de condición](policy-conditions.md) que pueden permitir o denegar el acceso solo cuando una solicitud o recurso cumple las condiciones que especifica. También puede permitir el acceso a las entidades principales en las que confía en [otras cuentas de Cuentas de AWS](key-policy-modifying-external-accounts.md).

## Autenticación con identidades
<a name="security_iam_authentication"></a>

La autenticación es la forma de iniciar sesión para AWS usar tus credenciales de identidad. Debe autenticarse como usuario de Usuario raíz de la cuenta de AWS IAM o asumir una función de IAM.

Puede iniciar sesión como una identidad federada con las credenciales de una fuente de identidad, como AWS IAM Identity Center (IAM Identity Center), la autenticación de inicio de sesión único o las credenciales. Google/Facebook Para obtener más información sobre el inicio de sesión, consulte [Cómo iniciar sesión en la Cuenta de AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In *.

Para el acceso programático, AWS proporciona un SDK y una CLI para firmar criptográficamente las solicitudes. Para obtener más información, consulte [AWS Signature Version 4 para solicitudes de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) en la *Guía del usuario de IAM*.

### Cuenta de AWS usuario root
<a name="security_iam_authentication-rootuser"></a>

 Al crear un Cuenta de AWS, se comienza con una identidad de inicio de sesión denominada *usuario Cuenta de AWS raíz* que tiene acceso completo a todos Servicios de AWS los recursos. Se recomiendaencarecidamente que no utilice el usuario raíz para las tareas diarias. Para ver las tareas que requieren credenciales de usuario raíz, consulte [Tareas que requieren credenciales de usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) en la *Guía del usuario de IAM*. 

### Identidad federada
<a name="security_iam_authentication-federated"></a>

Como práctica recomendada, exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder Servicios de AWS mediante credenciales temporales.

Una *identidad federada* es un usuario del directorio empresarial, del proveedor de identidades web o al Directory Service que se accede Servicios de AWS mediante credenciales de una fuente de identidad. Las identidades federadas asumen roles que proporcionan credenciales temporales.

Para una administración de acceso centralizada, se recomienda AWS IAM Identity Center. Para obtener más información, consulte [¿Qué es el Centro de identidades de IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) en la *Guía del usuario de AWS IAM Identity Center *.

### Usuarios y grupos de IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* es una identidad con permisos específicos para una sola persona o aplicación. Recomendamos el uso de credenciales temporales en lugar de usuarios de IAM con credenciales de larga duración. Para obtener más información, consulte [Exigir a los usuarios humanos que utilicen la federación con un proveedor de identidad para acceder AWS mediante credenciales temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) en la Guía del usuario de *IAM*.

Un [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) especifica un conjunto de usuarios de IAM y facilita la administración de los permisos para grupos grandes de usuarios. Para obtener más información, consulte [Casos de uso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) en la *Guía del usuario de IAM*.

### Roles de IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[Rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* es una identidad con permisos específicos que proporciona credenciales temporales. Puede asumir un rol [cambiando de un rol de usuario a uno de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) o llamando a una AWS CLI operación de AWS API. Para obtener más información, consulte [Métodos para asumir un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) en la *Guía del usuario de IAM*.

Los roles de IAM son útiles para el acceso de usuario federado, los permisos de usuario de IAM temporales, el acceso entre cuentas, el acceso entre servicios y las aplicaciones que se ejecutan en Amazon EC2. Para obtener más información, consulte [Acceso a recursos entre cuentas en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la *Guía del usuario de IAM*.

## Administración del acceso con políticas
<a name="security_iam_access-manage"></a>

El acceso se controla AWS creando políticas y adjuntándolas a AWS identidades o recursos. Una política define los permisos cuando están asociados a una identidad o un recurso. AWS evalúa estas políticas cuando un director hace una solicitud. La mayoría de las políticas se almacenan AWS como documentos JSON. Para obtener más información sobre los documentos de políticas de JSON, consulte [Información general de políticas de JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) en la *Guía del usuario de IAM*.

Mediante las políticas, los administradores especifican quién tiene acceso a qué, definiendo qué **entidad principal** puede realizar **acciones** sobre qué **recursos** y en qué **condiciones**.

De forma predeterminada, los usuarios y los roles no tienen permisos. Un administrador de IAM crea políticas de IAM y las agrega a roles, que los usuarios pueden asumir posteriormente. Las políticas de IAM definen permisos independientemente del método que se utilice para realizar la operación.

### Políticas basadas en identidades
<a name="security_iam_access-manage-id-based-policies"></a>

Las políticas basadas en identidad son documentos de política de permisos JSON que asocia a una identidad (usuario, grupo o rol). Estas políticas controlan qué acciones pueden realizar las identidades, en qué recursos y en qué condiciones. Para obtener más información sobre cómo crear una política basada en la identidad, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

Las políticas basadas en identidad pueden ser *políticas insertadas* (incrustadas directamente en una sola identidad) o *políticas administradas* (políticas independientes asociadas a varias identidades). Para obtener información sobre cómo elegir entre políticas administradas e insertadas, consulte [Selección entre políticas administradas y políticas insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) en la *Guía del usuario de IAM*.

### Políticas basadas en recursos
<a name="security_iam_access-manage-resource-based-policies"></a>

Una [política AWS KMS clave es una política](key-policies.md) basada en recursos que controla el acceso a una clave de KMS. Cada clave de KMS debe tener una política de claves. Puede utilizar otro mecanismo de autorizaciones para permitir el acceso a la clave KMS, pero solo si la política de claves lo permite. (Puede utilizar una política de IAM para *denegar* el acceso a una clave KMS incluso si la política de claves no lo permite explícitamente).

Las políticas basadas en recursos son documentos de política JSON que puede asociar a un recurso, como, por ejemplo, una clave KMS, para controlar el acceso a un recurso específico. Las políticas basadas en recursos definen las acciones que puede realizar una entidad principal en ese recurso y en qué condiciones. No se especifica el recurso en una política basada en recursos, pero se debe especificar un principal, como cuentas, usuarios, roles, usuarios federados o. Servicios de AWS Las políticas basadas en recursos son políticas insertadas que se encuentran en ese servicio que administra el recurso. No puede usar políticas AWS administradas de IAM, como la [política `AWSKeyManagementServicePowerUser` administrada, en una política basada](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSKeyManagementServicePowerUser) en recursos.

### Otros tipos de políticas
<a name="security_iam_access-manage-other-policies"></a>

AWS admite tipos de políticas adicionales que pueden establecer los permisos máximos que conceden los tipos de políticas más comunes:
+ **Límites de permisos:** establecen los permisos máximos que una política basada en identidad puede conceder a una entidad de IAM. Para obtener más información, consulte [Límites de permisos para las entidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) en la *Guía del usuario de IAM*.
+ **Políticas de control de servicios (SCPs)**: especifican los permisos máximos para una organización o unidad organizativa en AWS Organizations. Para obtener más información, consulte [Políticas de control de servicios](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) en la *Guía del usuario de AWS Organizations *.
+ **Políticas de control de recursos (RCPs)**: establece los permisos máximos disponibles para los recursos de tus cuentas. Para obtener más información, consulte [Políticas de control de recursos (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) en la *Guía del AWS Organizations usuario*.
+ **Políticas de sesión:** políticas avanzadas que se pasan como parámetro cuando se crea una sesión temporal para un rol o un usuario federado. Para obtener más información, consulte [Políticas de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) en la *Guía del usuario de IAM*.

### Varios tipos de políticas
<a name="security_iam_access-manage-multiple-policies"></a>

Cuando se aplican varios tipos de políticas a una solicitud, los permisos resultantes son más complicados de entender. Para saber cómo se AWS determina si se debe permitir una solicitud cuando se trata de varios tipos de políticas, consulte la [lógica de evaluación de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) en la *Guía del usuario de IAM*.

## AWS KMS recursos
<a name="kms-resources-operations"></a>

En AWS KMS, el recurso principal es un AWS KMS key. AWS KMS también admite un [alias](kms-alias.md), un recurso independiente que proporciona un nombre descriptivo para una clave de KMS. Algunas AWS KMS operaciones permiten usar un alias para identificar una clave de KMS.

Cada instancia de una clave KMS o alias tiene un único [nombre de recurso de Amazon](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax) (ARN) con un formato estándar. En AWS KMS los recursos, el nombre del AWS servicio es`kms`. 
+ **AWS KMS key**

  Formato de ARN:

  `arn:AWS partition name:AWS service name:Región de AWS:Cuenta de AWS ID:key/key ID`

  Ejemplo de ARN:

  `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
+ **Alias**

  Formato de ARN:

  `arn:AWS partition name:AWS service name:Región de AWS:Cuenta de AWS ID:alias/alias name`

  Ejemplo de ARN:

  `arn:aws:kms:us-west-2:111122223333:alias/example-alias`

AWS KMS proporciona un conjunto de operaciones de API para que funcionen con sus AWS KMS recursos. Para obtener más información sobre cómo identificar las claves de KMS en las operaciones de AWS KMS API Consola de administración de AWS y las operaciones de API, consulte[Identificadores clave () KeyId](concepts.md#key-id). Para obtener una lista de AWS KMS operaciones, consulta la [referencia de la AWS Key Management Service API](https://docs.aws.amazon.com/kms/latest/APIReference/).