

# Elementos de política JSON de IAM: Condition
<a name="reference_policies_elements_condition"></a>

El elemento `Condition` (o el *bloque* `Condition`) permite especificar condiciones que se aplican cuando la política surte efecto. El elemento `Condition` es opcional. En el elemento `Condition`, se crean expresiones en las que se usan [operadores de condición](reference_policies_elements_condition_operators.md) (igual, menor que, etc.) para hacer coincidir las claves de contexto y los valores de la política con las claves y valores en el contexto de la solicitud. Para obtener más información sobre el contexto de la solicitud, consulte [Componentes de una solicitud](intro-structure.md#intro-structure-request).

```
"Condition" : { "{condition-operator}" : { "{condition-key}" : "{condition-value}" }}
```

La clave de contexto que especifique en una condición de política puede ser una [clave de contexto de condición global](reference_policies_condition-keys.md) o una clave de contexto específica de un servicio. Las claves de contexto de condición globales tienen el prefijo `aws:`. Las claves de contexto específicas de un servicio tienen el prefijo del servicio. Por ejemplo, Amazon EC2 le permite escribir una condición con la clave de contexto `ec2:InstanceType`, que es exclusiva de dicho servicio. Para ver las claves de contexto de IAM específicas del servicio con el prefijo `iam:`, consulte [Claves de contexto de condición de IAM y AWS STS](reference_policies_iam-condition-keys.md).

Los *nombres* de las claves de contexto no distinguen entre mayúsculas y minúsculas. Por ejemplo, la inclusión de la clave de contexto `aws:SourceIP` es equivalente a las pruebas de `AWS:SourceIp`. El uso de mayúsculas y minúsculas en los *valores* de la clave de contexto depende del [operador de condición](reference_policies_elements_condition_operators.md) que utilice. Por ejemplo, la siguiente condición incluye el operador `StringEquals` para garantizar que únicamente coincidan las solicitudes que realice `john`. A los usuarios denominados `John` se les niega el acceso.

```
"Condition" : { "StringEquals" : { "aws:username" : "john" }}
```

La siguiente condición utiliza el operador [`StringEqualsIgnoreCase`](reference_policies_elements_condition_operators.md#Conditions_String) para que coincida con los usuarios `john` o `John`.

```
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "john" }}
```

Algunas de las claves de contexto admiten los pares clave-valor, con los que puede especificar una parte del nombre de la clave. Entre los ejemplos se incluyen la clave de contexto [`aws:RequestTag/tag-key`](reference_policies_condition-keys.md#condition-keys-requesttag), la [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context) de AWS KMS y la clave de contexto [`ResourceTag/tag-key`](reference_policies_condition-keys.md#condition-keys-resourcetag) compatibles con varios servicios.
+ Si utiliza la clave de contexto `ResourceTag/tag-key` para un servicio como [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#amazon-ec2-keys), debe especificar un nombre de clave para `tag-key`. 
+ **Los nombres de las claves no distinguen entre mayúsculas y minúsculas.** Esto significa que si especifica `"aws:ResourceTag/TagKey1": "Value1"` en el elemento de condición de su política, la condición coincidirá con una clave de etiqueta de recurso denominada `TagKey1` o `tagkey1`, pero no con ambas.
+ Los servicios de AWS que admiten estos atributos pueden permitirle crear varios nombres de clave que solo difieran por caso. Por ejemplo, puede etiquetar una instancia de Amazon EC2 con `ec2=test1` y `EC2=test2`. Cuando se utiliza una condición como `"aws:ResourceTag/EC2": "test1"` para permitir el acceso a dicho recurso, el nombre de clave coincide con ambas etiquetas, pero solo un valor coincide. Esto puede generar errores inesperados de la condición.

**importante**  
La práctica recomendada es que se asegure de que los miembros de su cuenta sigan una convención de nomenclatura coherente al nombrar los atributos de par clave-valor. Entre los ejemplos se incluyen etiquetas o contextos de cifrado de AWS KMS. Para imponer este comportamiento, utilice la clave de contexto [`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) para el etiquetado o [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys) para el contexto de cifrado de AWS KMS.
+ Para obtener una lista de todos los operadores de condición y una descripción de cómo funcionan, consulte [Operadores de condición](reference_policies_elements_condition_operators.md).
+ A menos que se especifique lo contrario, todas las claves de contexto pueden tener varios valores. Para ver una descripción de cómo gestionar las claves de contexto que tienen varios valores, consulte [Operadores de conjunto para claves de contexto multivalor](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).
+ Para obtener una lista de todas las claves de contexto disponibles en todo el mundo, consulte [Claves de contexto de condición globales de AWS](reference_policies_condition-keys.md).
+ Para conocer las claves de contexto de condición definidas por cada servicio, consulte [Acciones, recursos y claves de condición para servicios de AWS](reference_policies_actions-resources-contextkeys.html).

## El contexto de la solicitud
<a name="AccessPolicyLanguage_RequestContext"></a>

Cuando una [entidad principal](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal) realiza una [solicitud](intro-structure.md#intro-structure-request) a AWS, AWS recopila la información de la solicitud en un contexto de solicitud. El contexto de la solicitud incluye información sobre la entidad principal, los recursos, las acciones y otras propiedades del entorno. La evaluación de la política compara las propiedades de la política con las propiedades enviadas en la solicitud para evaluar y autorizar las acciones que puede realizar en AWS.

Puede utilizar el elemento `Condition` de una política JSON para probar claves de contexto específicas con respecto al contexto de la solicitud. Por ejemplo, puede crear una política que utilice la clave de contexto [aws:CurrentTime](reference_policies_condition-keys.md#condition-keys-currenttime) para [permitir a un usuario realizar acciones específicas solo durante un intervalo de fechas específico](reference_policies_examples_aws-dates.md).

En el siguiente ejemplo se muestra una representación del contexto de la solicitud cuando Martha Rivera envía una solicitud para desactivar su dispositivo de MFA.

```
Principal: AROA123456789EXAMPLE
Action: iam:DeactivateMFADevice
Resource: arn:aws:iam::user/martha
Context:
  – aws:UserId=AROA123456789EXAMPLE:martha
  – aws:PrincipalAccount=1123456789012
  – aws:PrincipalOrgId=o-example
  – aws:PrincipalARN=arn:aws:iam::1123456789012:assumed-role/TestAR
  – aws:MultiFactorAuthPresent=true
  – aws:MultiFactorAuthAge=2800
  – aws:CurrentTime=...
  – aws:EpochTime=...
  – aws:SourceIp=...
```

El contexto de la solicitud se compara con una política que permite a los usuarios eliminar su propio dispositivo de autenticación multifactor (MFA), pero solo si han iniciado sesión con la MFA en la última hora (3600 segundos).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowRemoveMfaOnlyIfRecentMfa",
        "Effect": "Allow",
        "Action": [
            "iam:DeactivateMFADevice"
        ],
        "Resource": "arn:aws:iam::*:user/${aws:username}",
        "Condition": {
            "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "3600"}
        }
    }
}
```

------

En este ejemplo, la política coincide con el contexto de la solicitud: la acción es la misma, el recurso coincide con el comodín «\$1» y el valor para `aws:MultiFactorAuthAge` es 2800, que es inferior a 3600, por lo que la política permite esta solicitud de autorización.

AWS evalúa cada clave de contexto de la política y devuelve un valor de *verdadero* o *falso*. Una clave de contexto que no está presente en la solicitud no se considera una discordancia.

El contexto de la solicitud puede devolver los siguientes valores:
+ **True**: si el solicitante ha iniciado sesión con MFA en la última hora o menos, la condición devuelve *true*.
+ **False**: si el solicitante ha iniciado sesión con MFA hace más de una hora, la condición devuelve *false*.
  + **Not present**: si el solicitante realizó una solicitud con sus claves de acceso de usuario de IAM en la AWS CLI o la API de AWS, la clave no está presente. En este caso, la clave no está presente y no coincidirá.

**nota**  
En algunos casos, cuando el valor de la clave de condición no está presente, la condición puede devolver un valor verdadero. Por ejemplo, si agrega el calificador `ForAllValues`, la solicitud devuelve el valor verdadero si la clave de contexto no está en la solicitud. Para evitar que las claves de contexto que faltan o las claves de contexto con valores vacíos se evalúen como verdadero, puede incluir el [Operador de condición nula](reference_policies_elements_condition_operators.md#Conditions_Null) en su política con un valor `false` para comprobar si la clave de contexto existe y su valor no es nulo.

## El bloque de condición
<a name="AccessPolicyLanguage_ConditionBlock"></a>

En el siguiente ejemplo se muestra el formato básico de un elemento `Condition`:

```
"Condition": {"StringLike": {"s3:prefix": ["jane/*"]}}
```

Un valor de la solicitud está representado por una clave de contexto, en este caso `s3:prefix`. El valor de clave de contexto se compara con un valor que especifique como valor literal, como `jane/*`. El tipo de comparación que debe realizarse se especifica con el [operador de condición](reference_policies_elements_condition_operators.md) (aquí, `StringLike`). Puede crear condiciones para comparar cadenas, fechas, números, y más, mediante el uso de comparaciones booleanas típicas como igual, superior a e inferior a. Cuando se utilizan [operadores de cadena](reference_policies_elements_condition_operators.md#Conditions_String) u [operadores de ARN](reference_policies_elements_condition_operators.md#Conditions_ARN), también se puede utilizar una [variable de política](reference_policies_variables.md) en el valor de clave de contexto. El siguiente ejemplo incluye la variable `aws:username`. 

```
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
```

En determinadas circunstancias, las claves de contexto pueden contener múltiples valores. Por ejemplo, una solicitud a Amazon DynamoDB podría pedir la devolución o actualización de varios atributos de una tabla. Una política para obtener acceso a tablas de DynamoDB puede incluir la clave de contexto `dynamodb:Attributes`, que contiene todos los atributos indicados en la solicitud. Puede probar los diversos atributos de la solicitud con una lista de atributos permitidos de una política utilizando un conjunto de operadores del elemento `Condition`. Para obtener más información, consulte [Operadores de conjunto para claves de contexto multivalor](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys). 

Cuando se evalúa la política durante una solicitud, AWS sustituye la clave por el valor correspondiente de la solicitud. (En este ejemplo, AWS utilizaría la fecha y la hora de la solicitud). La condición se evalúa para devolver true o false, lo cual, a su vez, se examina para saber si la política en su conjunto permite o deniega la solicitud. 

### Múltiples valores en un elemento Condition
<a name="Condition-multiple-conditions"></a>

Un elemento `Condition` puede contener varios operadores de condición y cada uno de ellos puede contener, a su vez, varios pares de clave-valor de contexto. La siguiente figura ilustra este caso. 

![\[diagramas de bloques de operadores de dos condiciones. El primer bloque incluye dos marcadores de posición clave de contexto, cada uno con varios valores. El segundo bloque de condición incluye una clave de contexto con varios valores.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block.diagram.png)


Para obtener más información, consulte [Operadores de conjunto para claves de contexto multivalor](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys). 

# Elementos de la política de JSON de IAM: operadores de condición
<a name="reference_policies_elements_condition_operators"></a>

<a name="topiclist"></a>

Utilice operadores de condición en el elemento `Condition` para hacer coincidir la clave y el valor de la política con los valores del contexto de la solicitud. Para obtener más información sobre el parámetro `Condition`, consulte [Elementos de política JSON de IAM: Condition](reference_policies_elements_condition.md).

El operador de condición que puede utilizar en una política depende de la clave de condición que elija. Puede elegir una clave de condición global o una clave de condición específica del servicio. Para saber qué operador de condición puede utilizar para una clave de condición global, consulte [Claves de contexto de condición globales de AWS](reference_policies_condition-keys.md). Para saber qué operador de condición puede utilizar para una clave de condición específica de un servicio, consulte [Acciones, recursos y claves de condición para servicios de AWS](reference_policies_actions-resources-contextkeys.html) y elija el servicio que desea ver.

**importante**  
Si la clave especificada en una condición de política no está presente en el contexto de la solicitud, los valores no coincidirán y la condición es *falsa*. Si la condición de la política exige que la clave *no*coincida, como `StringNotLike` o `ArnNotLike` y la clave correcta no está presente, la condición es *verdadera*. Esta lógica se aplica a todos los operadores de condición excepto [...IfExists](#Conditions_IfExists) y [Null check](#Conditions_Null). Estos operadores prueban si la clave está presente (existe) en el contexto de la solicitud.

Los operadores de condición pueden agruparse en las categorías siguientes:
+ [cadena](#Conditions_String)
+ [Numérica](#Conditions_Numeric)
+ [Fecha y hora](#Conditions_Date)
+ [Booleano](#Conditions_Boolean)
+ [Binario](#Conditions_BinaryEquals)
+ [La dirección IP](#Conditions_IPAddress)
+ [Nombre de recurso de Amazon (ARN)](#Conditions_ARN) (disponible solo para determinados servicios).
+ [...IfExists](#Conditions_IfExists) (comprueba si el valor de clave existe como parte de otra comprobación)
+ [Null check](#Conditions_Null) (comprueba si el valor de clave existe como comprobación independiente)

## Operadores de condición de cadena
<a name="Conditions_String"></a>

Los operadores de condición de cadena le permiten desarrollar elementos `Condition` que restringen el acceso comparando una clave con el valor de una cadena.
+  **Variables de políticas**: [compatibles](reference_policies_variables.md)
+ **Caracteres comodín**: [compatibles](#Conditions_String-wildcard)


****  

| Operador de condición | Descripción | 
| --- | --- | 
|   `StringEquals`   |  Coincidencia exacta; distingue entre mayúsculas y minúsculas.  | 
|   `StringNotEquals`   |  Coincidencia negada.  | 
|   `StringEqualsIgnoreCase`   |  Coincidencia exacta; no distingue entre mayúsculas y minúsculas.  | 
|   `StringNotEqualsIgnoreCase`   |  Coincidencia negada; no distingue entre mayúsculas y minúsculas.  | 
|   `StringLike`   | Coincidencia que distingue entre mayúsculas y minúsculas. Los valores pueden incluir comodines de coincidencia de varios caracteres (\$1) y comodines de coincidencia de un único carácter (?) en cualquier parte de la cadena. Debe especificar caracteres comodín para lograr coincidencias de cadenas parciales.   Si una clave contiene varios valores, `StringLike` se puede calificar con un conjunto de operadores: `ForAllValues:StringLike` y `ForAnyValue:StringLike`. Para obtener más información, consulte [Operadores de conjunto para claves de contexto multivalor](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).   | 
|   `StringNotLike`   |  Coincidencia negada que distingue entre mayúsculas y minúsculas. Los valores pueden incluir comodines de coincidencia de varios caracteres (\$1) o comodines de coincidencia de un único carácter (?) en cualquier parte de la cadena.  | 

**Example operadores de condición de cadena**  
Por ejemplo, la instrucción siguiente contiene un elemento `Condition` que utiliza la clave [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 especificar que el principal que realiza la solicitud debe etiquetarse con la categoría de trabajo `iamuser-admin`.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalTag/job-category": "iamuser-admin"
            }
        }
    }
}
```
Si la clave especificada en una condición de política no está presente en el contexto de la solicitud, los valores no coincidirán. En este ejemplo, la clave `aws:PrincipalTag/job-category` está presente en el contexto de la solicitud si la entidad principal utiliza un usuario IAM con etiquetas asociadas. También se incluye para un principal con un rol de IAM con etiquetas o etiquetas de sesión asociadas. Si un usuario sin la etiqueta intenta ver o editar una clave de acceso, la condición devuelve `false` y la instrucción deniega la solicitud implícitamente.  
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.  


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – iamuser-admin</pre>  |  Match | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – dev-ops</pre>  | No match | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  |  No hay `aws:PrincipalTag/job-category` en el contexto de la solicitud.  | No match | 

**Example utilizar una variable de política con el operador de condición de cadena**  
En el siguiente ejemplo se utiliza el operador de condición `StringLike` para establecer una coincidencia de cadena con una [variable de política](reference_policies_variables.md) y crear una política que permita a un usuario de IAM utilizar la consola de Amazon S3 para administrar su propio "directorio principal" en un bucket de Amazon S3. La política permite las acciones especificadas en un bucket de S3, siempre y cuando `s3:prefix` coincida con uno de los patrones especificados.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "",
            "home/",
            "home/${aws:username}/"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
      ]
    }
  ]
}
```
La siguiente tabla muestra cómo AWS evalúa esta política para diferentes usuarios en función del valor [aws:username](reference_policies_condition-keys.md#condition-keys-username) en el contexto de la solicitud.  


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  | <pre>aws:username:<br />  – martha_rivera</pre>  | <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/martha_rivera/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  <pre>aws:username:<br />  – nikki_wolf</pre>  |  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/nikki_wolf/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  No hay `aws:username` en el contexto de la solicitud.  | No match | 
Para ver un ejemplo de una política que muestre cómo utilizar el elemento `Condition` para restringir el acceso a recursos en función de un ID de aplicación y un ID de usuario de la federación de OIDC, consulte [Amazon S3: permite a los usuarios de Amazon Cognito obtener acceso a los objetos de su bucket](reference_policies_examples_s3_cognito-bucket.md). 

### Operadores de condición de cadena multivalor
<a name="conditions_string_multivalued"></a>

Si una clave de la solicitud contiene varios valores, los operadores de cadena pueden calificarse con operadores de conjunto `ForAllValues` y `ForAnyValue`. Para obtener más información sobre la lógica de evaluación de varias claves o valores de contexto, consulte [Operadores de conjunto para claves de contexto multivalor](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).


| Operador de condición | Descripción | 
| --- | --- | 
|  `ForAllValues:StringEquals` `ForAllValues:StringEqualsIgnoreCase`  |  Todos los valores de la clave de condición de la solicitud deben coincidir con al menos uno de los valores de su política.  | 
|  `ForAnyValue:StringEquals` `ForAnyValue:StringEqualsIgnoreCase`  |  Al menos un valor de clave de condición de la solicitud debe coincidir con uno de los valores de la política.  | 
|  `ForAllValues:StringNotEquals` `ForAllValues:StringNotEqualsIgnoreCase`  |  Coincidencia negada. Ninguno de los valores de la clave de contexto en la solicitud puede coincidir con ninguno de los valores de clave de contexto en su política.  | 
|  `ForAnyValue:StringNotEquals` `ForAnyValue:StringNotEqualsIgnoreCase`  |  Coincidencia negada. Al menos un valor de clave de contexto de la solicitud NO debe coincidir con ninguno de los valores de la clave de contexto de la política.  | 
|  `ForAllValues:StringLike`  |  Todos los valores de la clave de condición de la solicitud deben coincidir con al menos uno de los valores de su política.  | 
|  `ForAnyValue:StringLike`  |  Al menos un valor de clave de condición de la solicitud debe coincidir con uno de los valores de la política.  | 
|  `ForAllValues:StringNotLike`  |  Coincidencia negada. Ninguno de los valores de la clave de contexto en la solicitud puede coincidir con ninguno de los valores de clave de contexto en su política.  | 
|  `ForAnyValue:StringNotLike`  |  Coincidencia negada. Al menos un valor de clave de contexto de la solicitud NO debe coincidir con ninguno de los valores de la clave de contexto de la política.  | 

**Example usar `ForAnyValue` con un operador de condición de cadena**  
Este ejemplo muestra cómo podría crear una política basada en identidad que permite utilizar la acción `CreateTags` de Amazon EC2 para asociar etiquetas a una instancia. Cuando utilice `StringEqualsIgnoreCase`, puede asociar etiquetas solo si la etiqueta contiene la clave `environment` con los valores `preprod` o `storage`. Al anexar `IgnoreCase` al operador, se permite que cualquier capitalización de los valores de etiqueta existentes, como `preprod`, `Preprod` y `PreProd`, se resuelva como verdadero.  
Al añadir el modificador `ForAnyValue` con la clave de condición [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys), al menos un valor de clave de etiqueta de la solicitud debe coincidir con el valor `environment`. La comparación `ForAnyValue` distingue entre mayúsculas y minúsculas, lo que impide que los usuarios utilicen mayúsculas y minúsculas incorrectas para la clave de etiqueta, como utilizar `Environment` en lugar de `environment`.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "StringEqualsIgnoreCase": {
        "aws:RequestTag/environment": [
          "preprod",
          "storage"
        ]
      },
      "ForAnyValue:StringEquals": {
        "aws:TagKeys": "environment"
      }
    }
  }
}
```
 La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.   


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />aws:RequestTag/environment:<br />  – preprod</pre>  | Match  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – costcenter<br />aws:RequestTag/environment:<br />  – PreProd</pre>  | Match  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – Environment<br />aws:RequestTag/Environment:<br />  – preprod</pre>  | No match  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – costcenter<br />aws:RequestTag/environment:<br />  – preprod</pre>  | No match  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  No hay `aws:TagKeys` en el contexto de la solicitud. <pre>aws:RequestTag/environment:<br />  – storage</pre>  | No match  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre> No hay `aws:RequestTag/environment` en el contexto de la solicitud.  | No match  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  No hay `aws:TagKeys` en el contexto de la solicitud. No hay `aws:RequestTag/environment` en el contexto de la solicitud.  | No match  | 

### Coincidencia de caracteres comodín
<a name="Conditions_String-wildcard"></a>

Los operadores de condición de cadena realizan una coincidencia sin patrones que no impone un formato predefinido. Los operadores de condición de ARN y fecha son un subconjunto de operadores de cadena que imponen una estructura al valor de la clave de condición.

Le recomendamos que utilice operadores de condición que se correspondan con los valores con los que está comparando las claves. Por ejemplo, debe utilizar [Operadores de condición de cadena](#Conditions_String) al comparar claves con valores de cadena. Del mismo modo, se debe utilizar [Operadores de condición de nombre de recurso de Amazon (ARN)](#Conditions_ARN) al comparar claves con valores de ARN.

**Example**  
Este ejemplo muestra cómo puede crear un límite alrededor de los recursos de su organización. La condición de esta política deniega el acceso a las acciones de Amazon S3 a menos que el recurso al que se accede se encuentre en un conjunto específico de unidades organizativas (OU) en AWS Organizations. Una ruta AWS Organizations es una representación de texto de la estructura de una entidad de la organización.  
La condición requiere que `aws:ResourceOrgPaths` contenga alguna de las rutas de OU enumeradas. Como `aws:ResourceOrgPaths` es una condición con varios valores, la política utiliza el operador `ForAllValues:StringNotLike` para comparar los valores de `aws:ResourceOrgPaths` con la lista de OU en la política.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyS3AccessOutsideMyBoundary",
      "Effect": "Deny",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:ResourceOrgPaths": [
            "o-acorg/r-acroot/ou-acroot-mediaou/",
            "o-acorg/r-acroot/ou-acroot-sportsou/*"
          ] 
        }
      }
    }
  ]
}
```
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.  


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-sportsou/costcenter/</pre>  | Match | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-mediaou/costcenter/</pre>  | No match | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  |  No hay `aws:ResourceOrgPaths:` en la solicitud.  | Sin coincidencia | 

## Operadores de condición numérica
<a name="Conditions_Numeric"></a>

Los operadores de condición numérica le permiten desarrollar elementos `Condition` que restringen el acceso comparando una clave con un valor entero o un valor decimal.
+  **Variables de política**: no compatibles
+ **Caracteres comodín**: no compatibles


****  

| Operador de condición | Descripción | 
| --- | --- | 
|   `NumericEquals`   |  Coincidencia  | 
|   `NumericNotEquals`   |  Coincidencia negada.  | 
|   `NumericLessThan`   |  Coincidencia "menos que"  | 
|   `NumericLessThanEquals`   |  Coincidencia "menos que o igual"  | 
|   `NumericGreaterThan`   |  Coincidencia "más que"  | 
|   `NumericGreaterThanEquals`   |  Coincidencia "superior a o igual"  | 

Por ejemplo, la siguiente instrucción contiene un elemento `Condition` que utiliza el operador de condición `NumericLessThanEquals` con la clave `s3:max-keys` para especificar que el solicitante puede incluir en la lista *hasta* 10 objetos en `amzn-s3-demo-bucket` a la vez.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {"NumericLessThanEquals": {"s3:max-keys": "10"}}
  }
}
```

------

Si la clave especificada en una condición de política no está presente en el contexto de la solicitud, los valores no coincidirán. En este ejemplo, la clave `s3:max-keys` siempre está presente en la solicitud cuando se realiza la operación `ListBucket`. Si esta política permitía todas las operaciones de Amazon S3, solo se permitirían las operaciones que incluyen la clave de contexto `max-keys` con un valor inferior o igual a 10. 

## Operadores de condición de fecha
<a name="Conditions_Date"></a>

Los operadores de condición de fecha le permiten desarrollar elementos `Condition` que restringen el acceso comparando una clave con el valor de una fecha/hora. Los operadores de condición se usan con la clave [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime) o la clave [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime). Debe especificar valores de fecha y hora con una de las [implementaciones W3C de los formatos de fecha ISO 8601](http://www.w3.org/TR/NOTE-datetime) o en la fecha de inicio (UNIX). 
+  **Variables de política**: no compatibles
+ **Caracteres comodín**: no compatibles


****  

| Operador de condición | Descripción | 
| --- | --- | 
|   `DateEquals`   |  Coincidencia con una fecha específica.  | 
|   `DateNotEquals`   |  Coincidencia negada.  | 
|   `DateLessThan`   |  Coincidencia antes de una fecha y hora específicas.  | 
|   `DateLessThanEquals`   |  Coincidencia en una fecha y hora específicas o antes.  | 
|   `DateGreaterThan`   |  Coincidencia después de una fecha y hora específicas.  | 
|   `DateGreaterThanEquals`   |  Coincidencia en una fecha y hora específicas o después.  | 

Por ejemplo, la instrucción siguiente contiene un elemento `Condition` que utiliza el operador de condición `DateGreaterThan` con la clave [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime). Esta condición especifica que las credenciales de seguridad temporales utilizadas para realizar la solicitud se emitieron en 2020. Esta política se puede actualizar mediante programación todos los días para asegurarse de que los miembros de la cuenta utilizan credenciales nuevas.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "DateGreaterThan": {
                "aws:TokenIssueTime": "2020-01-01T00:00:01Z"
            }
        }
    }
}
```

------

Si la clave especificada en una condición de política no está presente en el contexto de la solicitud, los valores no coincidirán. La clave `aws:TokenIssueTime` está presente en el contexto de la solicitud solo cuando el principal utiliza credenciales temporales para realizar la solicitud. La clave no está presente en solicitudes de la AWS CLI, la API de AWS o el AWS SDK realizadas con claves de acceso. En este ejemplo, si un usuario de IAM intenta ver o editar una clave de acceso, se deniega la solicitud.

## Operadores de condición booleanos
<a name="Conditions_Boolean"></a>

Las condiciones booleanas le permiten crear elementos `Condition` que restringen el acceso comparando una clave con `true` o `false`.

Si una clave contiene varios valores, los operadores booleanos pueden calificarse con operadores de conjunto `ForAllValues` y `ForAnyValue`. Para obtener más información sobre la lógica de evaluación de varias claves o valores de contexto, consulte [Operadores de conjunto para claves de contexto multivalor](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).
+  **Variables de políticas**: [compatibles](reference_policies_variables.md)
+ **Caracteres comodín**: no compatibles


****  

| Operador de condición | Descripción | 
| --- | --- | 
|   `Bool`   |  Coincidencia booleana  | 
|   `ForAllValues:Bool`   |  Se utiliza con el tipo de datos Array of Bool. Todos los valores booleanos de los valores clave del contexto deben coincidir con los valores booleanos de la política. Para evitar que los operadores `ForAllValues` evalúen como permitidas claves de contexto omitidas o claves de contexto con valores vacíos, puede incluir el [Operador de condición nulo](#Conditions_Null) en su política.  | 
|   `ForAnyValue:Bool`   |  Se utiliza con el tipo de datos Array of Bool. Al menos uno de los valores booleanos de los valores clave del contexto debe coincidir con los valores booleanos de la política.  | 

**Example operadores de condición booleanos**  
La siguiente política basada en identidad utiliza el operador de condición `Bool` con la clave [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) para denegar la replicación de objetos y etiquetas de objetos en el bucket de destino y su contenido si la solicitud no se lleva a cabo a través de SSL.  
Esta política no permite ninguna acción. Utilice esta política en combinación con otras políticas que permiten acciones específicas.   
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "BooleanExample",
      "Action": "s3:ReplicateObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket",
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}
```
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.  


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – false</pre>  | Match | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – true</pre>  | No match | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  |  No hay `aws:SecureTransport` en el contexto de la solicitud.  | No match | 

## Operadores de condición binaria
<a name="Conditions_BinaryEquals"></a>

El operador de condición `BinaryEquals` le permite crear elementos `Condition` que prueban valores de clave que están en formato binario. Compara el valor del byte de la clave especificada con una representación codificada en [base 64](https://en.wikipedia.org/wiki/Base64) del valor binario de la política. Si la clave especificada en una condición de política no está presente en el contexto de la solicitud, los valores no coincidirán.
+  **Variables de política**: no compatibles
+ **Caracteres comodín**: no compatibles

```
"Condition" : {
  "BinaryEquals": {
    "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="
  }
}
```


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – QmluYXJ5VmFsdWVJbkJhc2U2NA==</pre>  | Match | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – ASIAIOSFODNN7EXAMPLE</pre>  | No match | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  |  No hay `key` en el contexto de la solicitud.  | No match | 

## Operadores de condición de dirección IP
<a name="Conditions_IPAddress"></a>

Los operadores de condición de la dirección IP le permiten crear elementos `Condition` que restringen el acceso basándose en una comparación de una clave con una dirección IPv4 o IPv6 o un rango de direcciones IP. Puede utilizarlos con la clave [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip). El valor debe tener el formato CIDR estándar (por ejemplo, 203.0.113.0/24 o 2001: DB8:1234:5678::/64). Si especifica una dirección IP sin el prefijo de enrutamiento asociado, IAM utiliza el valor del prefijo predeterminado `/32`.

Algunos dispositivos AWS admiten IPv6 utilizando :: para representar un rango de 0. Para saber si un servicio es compatible con IPv6, consulte la documentación correspondiente a dicho servicio.
+  **Variables de política**: no compatibles
+ **Caracteres comodín**: no compatibles


****  

| Operador de condición | Descripción | 
| --- | --- | 
|   `IpAddress`   |  La dirección o el rango IP especificado  | 
|   `NotIpAddress`   |  Todas las direcciones IP, salvo la dirección o el rango IP especificado  | 

**Example Operador de condición de dirección IP**  
La siguiente instrucción utiliza el operador de condición `IpAddress` con la clave `aws:SourceIp` para especificar que la solicitud debe provenir del rango IP 203.0.113.0 a 203.0.113.255.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "203.0.113.0/24"
            }
        }
    }
}
```
La clave de condición `aws:SourceIp` se resuelve en la dirección IP de la que proviene la solicitud. Si la solicitud se origina en una instancia de Amazon EC2, `aws:SourceIp` toma el valor de la dirección IP pública de la instancia.   
Si la clave especificada en una condición de política no está presente en el contexto de la solicitud, los valores no coincidirán. La clave `aws:SourceIp` se incluye siempre en el contexto de la solicitud, excepto cuando el solicitante utiliza un punto de enlace de la VPC para realizar la solicitud. En este caso, la condición devuelve `false` y la instrucción deniega la solicitud implícitamente.  
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.  


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 203.0.113.1</pre>  | Match | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 198.51.100.1</pre>  | No match | 
En el siguiente ejemplo se muestra cómo combinar direcciones IPv4 e IPv6 para incluir todas las direcciones IP válidas de su organización. Le recomendamos que actualice las políticas de su organización con los rangos de direcciones IPv6 además de los rangos de IPv4 que ya tiene para asegurarse de que las políticas seguirán funcionando a medida que realiza la transición a IPv6.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "someservice:*",
    "Resource": "*",
    "Condition": {
      "IpAddress": {
        "aws:SourceIp": [
          "203.0.113.0/24",
          "2001:DB8:1234:5678::/64"
        ]
      }
    }
  }
}
```
La clave de condición `aws:SourceIp` funciona solo en una política JSON si se llama a la API que se está probando directamente como usuario. Si en su lugar utiliza un servicio para llamar al servicio de destino en su nombre, el servicio de destino verá la dirección IP del servicio de llamada en lugar de la dirección IP del usuario de origen. Esto puede ocurrir, por ejemplo, si utiliza AWS CloudFormation para llamar a Amazon EC2 para crear instancias en su lugar. Actualmente no se puede transferir la dirección IP de origen mediante un servicio de llamada al servicio de destino para que lo evalúe una política de JSON. En este tipo de llamadas a la API de servicio, no utilice la clave de condición `aws:SourceIp`.

## Operadores de condición de nombre de recurso de Amazon (ARN)
<a name="Conditions_ARN"></a>

Los operadores de condición de nombre de recurso de Amazon (ARN) le permiten crear elementos `Condition` que restringen el acceso comparando una clave con un ARN. El ARN se considera una cadena.
+  **Variables de políticas**: [compatibles](reference_policies_variables.md)
+ **Caracteres comodín**: [compatibles](reference_policies_elements_resource.md#reference_policies_elements_resource_wildcards)


****  

| Operador de condición | Descripción | 
| --- | --- | 
|   `ArnEquals`, `ArnLike`  |  Coincidencia del ARN que distingue entre mayúsculas y minúsculas. Cada uno de los seis componentes del ARN delimitados por dos puntos se comprueba por separado y cada uno de ellos puede incluir comodines de coincidencia de varios caracteres (\$1) o comodines de coincidencia de un único carácter (?). Los operadores de condición `ArnEquals` y `ArnLike` se comportan de forma idéntica.  | 
|   `ArnNotEquals`, `ArnNotLike`  |  Coincidencia negada del ARN. Los operadores de condición `ArnNotEquals` y `ArnNotLike` se comportan de forma idéntica.  | 

**Example Operador de condición de ARN**  
En el siguiente ejemplo de política basada en recursos se muestra una política asociada a una cola de Amazon SQS a la que desea enviar mensajes SNS. Da a Amazon SNS permiso para enviar mensajes a la cola (o colas) de su elección, pero solo si el servicio envía los mensajes en nombre de un determinado tema (o temas) de Amazon SNS. La cola se especifica en el campo `Resource` y el tema de Amazon SNS se especifica como el valor de la clave `SourceArn`.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "sns.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "arn:aws:sqs:us-east-1:123456789012:QUEUE-ID",
        "Condition": {
            "ArnEquals": {
                "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:TOPIC-ID"
            }
        }
    }
}
```
La clave [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) está presente en el contexto de la solicitud solo si un recurso activa un servicio para llamar a otro servicio en nombre del propietario del recurso. Si un usuario de IAM intenta realizar esta operación directamente, la condición devuelve `false` y la instrucción deniega la solicitud implícitamente.  
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.  


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:123456789012:TOPIC-ID</pre>  | Match | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:777788889999:TOPIC-ID</pre>  | No match | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  |  No hay `aws:SourceArn` en el contexto de la solicitud.  | No match | 

### Operadores de condición de ARN de varios valores
<a name="conditions_arn_multivalued"></a>

Si una clave en la solicitud contiene varios valores, los operadores ARN pueden calificarse con operadores de conjunto `ForAllValues` y `ForAnyValue`. Para obtener más información sobre la lógica de evaluación de varias claves o valores de contexto, consulte [Operadores de conjunto para claves de contexto multivalor](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).


| Operador de condición | Descripción | 
| --- | --- | 
|  `ForAllValues:ArnEquals` `ForAllValues:ArnLike`  |  Todos los ARN del contexto de la solicitud deben coincidir con al menos uno de los patrones de ARN de su política.  | 
|  `ForAnyValue:ArnEquals` `ForAnyValue:ArnLike`  |  Al menos un ARN en el contexto de la solicitud debe coincidir con uno de los patrones de ARN de su política.  | 
|  `ForAllValues:ArnNotEquals` `ForAllValues:ArnNotLike`  |  Coincidencia negada. Ninguno de los ARN del contexto de la solicitud puede coincidir con ningún patrón de ARN de cadena de su política.  | 
|  `ForAnyValue:ArnNotEquals` `ForAnyValue:ArnNotLike`  |  Coincidencia negada. Al menos un ARN en el contexto de la solicitud NO debe coincidir con ninguno de los patrones de ARN de su política.  | 

**Example uso de `ForAllValues` con un operador de condición ARN**  
En el siguiente ejemplo se utiliza `ForAllValues:ArnLike` para crear o actualizar una origen de entrega lógica para los registros de Amazon CloudWatch Logs. En el bloque de condiciones se incluye la clave de condición [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys) para filtrar los ARN de los recursos generadores de registros incluidos en la solicitud. Con este operador de condición, todos los ARN de la solicitud deben coincidir con al menos un ARN de la política.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "logs:PutDeliverySource",
            "Resource": "arn:aws:logs:us-east-1:123456789012:delivery-source:*",
            "Condition": {
                "ForAllValues:ArnLike": {
                    "logs:LogGeneratingResourceArns": [
                        "arn:aws:cloudfront::123456789012:distribution/*",
                        "arn:aws:cloudfront::123456789012:distribution/support*"
                    ]
                }
            }
        }
    ]
}
```
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.  


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter</pre>  | Match | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/support2025</pre>  | Match | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/admin</pre>  | No match | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:777788889999:distribution/costcenter</pre>  | No match | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  |  No hay `logs:LogGeneratingResourceArns` en el contexto de la solicitud.  | Match  | 
El calificador `ForAllValues` devuelve verdadero si no hay claves de contexto en la solicitud o si los valores de clave de contexto se resuelven en un conjunto de datos nulo, como una cadena vacía. Para evitar que las claves de contexto que faltan o las claves de contexto con valores vacíos se evalúen como verdadero, puede incluir el [Operador de condición nula](#Conditions_Null) en su política con un valor `false` para comprobar si la clave de contexto existe y su valor no es nulo.

## Operadores de condición …IfExists
<a name="Conditions_IfExists"></a>

Puede agregar `IfExists` al final de cualquier nombre de operador de condición, salvo la condición `Null` por ejemplo, `StringLikeIfExists`. El objetivo es decir lo siguiente: “Si la clave de la condición está presente en el contexto de la solicitud, se debe procesar la clave según se indica en la política. Si la clave no está presente, el elemento de condición se evalúa en verdadero". Otros elementos de condición de la instrucción pueden seguir sin obtener una coincidencia, pero no una clave que falte cuando se comprueba con `...IfExists`. Si utiliza un elemento `"Effect": "Deny"` con un operador de condición negada como `StringNotEqualsIfExists`, la solicitud se sigue denegando incluso si la clave de condición no se encuentra presente.

**Ejemplo de uso de `IfExists`**

Muchas claves de condición describen información sobre un determinado tipo de recurso y solo existen cuando se obtiene acceso a ese tipo de recurso. Estas claves de condición no están presentes en otros tipos de recursos. Esto no crea ningún problema cuando la instrucción de la política se aplica únicamente a un tipo de recurso. Sin embargo, en algunos casos una única instrucción se aplica a varios tipos de recursos, como, por ejemplo, cuando la instrucción de la política hace referencia a acciones de varios servicios o cuando una acción determinada de un servicio obtiene acceso a diferentes tipos de recursos en el mismo servicio. En estos casos, la inclusión de una clave de condición que se aplique únicamente a uno de los recursos de la instrucción de la política puede hacer que el elemento `Condition` de la instrucción dé un error y que su `"Effect"` no se aplique.

Por ejemplo, tomemos el siguiente ejemplo de política:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "THISPOLICYDOESNOTWORK",
    "Effect": "Allow",
    "Action": "ec2:RunInstances",
    "Resource": "*",
    "Condition": {"StringLike": {"ec2:InstanceType": [
      "t1.*",
      "t2.*",
      "m3.*"
    ]}}
  }
}
```

------

El *propósito* de la política anterior es habilitar al usuario para que pueda lanzar cualquier instancia de tipo `t1`, `t2` o `m3`. Sin embargo, lanzar una instancia requiere poder obtener acceso a muchos recursos además de la instancia en sí; por ejemplo, imágenes, pares de claves, grupos de seguridad, entre otros. Toda la instrucción se evalúa con respecto a todos los recursos exigidos para lanzar la instancia. Estos recursos adicionales no tienen la clave de condición `ec2:InstanceType`, por lo que la comprobación `StringLike` da un error y no se concede al usuario la capacidad para lanzar *cualquier* tipo de instancia. 

Para solucionar este problema, utilice en su lugar el operador de condición `StringLikeIfExists`. De esta forma, la prueba solo se realiza si la clave de condición existe. Podría leer la siguiente política como: “Si el recurso que se está comprobando tiene una clave de condición ‘`ec2:InstanceType`’, permita la acción solo si el valor de clave comienza por `t1.`, `t2.` o `m3.`. Si el recurso que se está comprobando no tiene esta clave de condición, no deberá tenerse en cuenta”. El asterisco (\$1) de los valores de la clave de condición, cuando se usa con el operador de condición `StringLikeIfExists`, se interpreta como un comodín para lograr coincidencias parciales de cadenas. La instrucción `DescribeActions` incluye las acciones requeridas para ver la instancia en la consola.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RunInstance",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
        "StringLikeIfExists": {
          "ec2:InstanceType": [
            "t1.*",
            "t2.*",
            "m3.*"
          ]
        }
      }
    },
    {
      "Sid": "DescribeActions",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeVpcs",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – t1.micro</pre>  | Match | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – m2.micro</pre>  | No match | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  |  No hay `ec2:InstanceType` en el contexto de la solicitud.  | Match | 

## Operador de condición para comprobar la existencia de claves de condición
<a name="Conditions_Null"></a>

Utilice un operador de condición `Null` para comprobar si una clave de condición está ausente en el momento de la autorización. En la instrucción de la política, utilice `true` (la clave no existe es nula) o `false` (la clave existe y su valor no es nulo).

No puede utilizar una [variable de política](reference_policies_variables.md) con el operador de condición `Null`.

Por ejemplo, puede utilizar este operador de condición para determinar si un usuario utiliza credenciales temporales o sus propias credenciales para realizar una solicitud. Si el usuario utiliza credenciales temporales, la clave `aws:TokenIssueTime` existe y tiene un valor. En el siguiente ejemplo se muestra una condición que establece que el usuario debe utilizar credenciales temporales (la clave no puede estar ausente) para utilizar la API de Amazon EC2.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"ec2:*",
      "Effect":"Allow",
      "Resource":"*",
      "Condition":{"Null":{"aws:TokenIssueTime":"false"}}
  }
}
```

------

# Condiciones con varias claves de contexto o valores
<a name="reference_policies_condition-logic-multiple-context-keys-or-values"></a>

Puede utilizar el elemento `Condition` de una política para probar varias claves de contexto o valores para una única clave de contexto en una solicitud. Cuando se realiza una solicitud a AWS, ya sea mediante programación o a través de la Consola de administración de AWS, la solicitud incluye información sobre la entidad principal, la operación, las etiquetas y mucho más. Puede utilizar las claves de contexto para probar los valores de las claves de contexto coincidentes de la solicitud, con las claves de contexto especificadas en la condición de política. Para conocer la información y los datos incluidos en una solicitud, consulte [El contexto de la solicitud](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext).

**Topics**
+ [Lógica de evaluación para varias claves de contexto o valores](#reference_policies_multiple-conditions-eval)
+ [Lógica de evaluación de los operadores de condición con coincidencia negada](#reference_policies_multiple-conditions-negated-matching-eval)

## Lógica de evaluación para varias claves de contexto o valores
<a name="reference_policies_multiple-conditions-eval"></a>

Un elemento `Condition` puede contener varios operadores de condición y cada uno de ellos puede contener, a su vez, varios pares de clave-valor de contexto. La mayoría de las claves de contexto admiten el uso de varios valores, a menos que se especifique lo contrario.
+ Si su instrucción de política tiene varios [operadores de condición](reference_policies_elements_condition_operators.md), los operadores de condición se evalúan mediante un operador lógico `AND`.
+ Si su instrucción de política tiene varias claves de contexto asociadas a un único operador de condición, las claves de contexto se evalúan mediante un operador lógico `AND`.
+ Si un operador de condición contiene varios valores para una clave de contexto, esos valores se evalúan mediante un operador lógico `OR`.
+ Si un operador de condición con coincidencia negada contiene varios valores para una clave de contexto, esos valores se evalúan mediante un operador lógico `NOR`. 

Todas las claves de contexto de un bloque de elementos de condición deben resolverse como verdaderas para invocar el efecto `Allow` o `Deny` deseado. En la siguiente figura, se ilustra la lógica de evaluación de una condición con varios operadores de condición y pares clave-valor de contexto.

![\[Bloque de condición que muestra cómo se aplican AND y OR a varias claves de contexto y valores\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_2.diagram.png)


Por ejemplo, la siguiente política de bucket de S3 ilustra cómo se representa la figura anterior en una política. El bloque de condición incluye los operadores de condición `StringEquals` y `ArnLike` y las claves de contexto `aws:PrincipalTag` y `aws:PrincipalArn`. Para invocar el efecto `Allow` o `Deny` deseado, todas las claves de contexto en el bloque de condición deben resolverse como verdaderas. El usuario que realiza la solicitud debe tener ambas claves de etiqueta de las entidades principales, *departamento* y *rol*, que incluyen uno de los valores de clave de etiqueta especificados en la política. Además, el ARN de la entidad principal del usuario que realiza la solicitud debe coincidir con uno de los valores `aws:PrincipalArn` especificados en la política que se evaluarán como verdaderos.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn: <br />  arn:aws:iam::222222222222:user/Mary</pre>  |  **Match** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **No match** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **No match** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  |  No hay `aws:PrincipalTag/role` en el contexto de la solicitud. <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **No match**  | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | No hay `aws:PrincipalTag` en el contexto de la solicitud. <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **No match**  | 

## Lógica de evaluación de los operadores de condición con coincidencia negada
<a name="reference_policies_multiple-conditions-negated-matching-eval"></a>

Algunos [operadores de condición,](reference_policies_elements_condition_operators.md) como `StringNotEquals` o `ArnNotLike`, utilizan la coincidencia negada para comparar los pares clave-valor de contexto de su política con los pares clave-valor de contexto de una solicitud. Cuando se especifican varios valores para una clave de contexto única en una política con operadores de condición con coincidencia negada, los permisos vigentes funcionan como un operador lógico `NOR`. En la coincidencia negada, un operador lógico `NOR` o `NOT OR` devuelve verdadero solo si todos los valores se evalúan como falsos.

En la siguiente figura, se ilustra la lógica de evaluación de una condición con varios operadores de condición y pares clave-valor de contexto. La figura incluye un operador de condición con coincidencia negada para la clave de contexto 3.

![\[Bloque de condición que muestra cómo se aplican AND y OR a varias claves de contexto y valores cuando se utiliza un operador de condición con coincidencia negada\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_Negated_NOR_2.diagram.png)


Por ejemplo, la siguiente política de bucket de S3 ilustra cómo se representa la figura anterior en una política. El bloque de condición incluye los operadores de condición `StringEquals` y `ArnNotLike` y las claves de contexto `aws:PrincipalTag` y `aws:PrincipalArn`. Para invocar el efecto `Allow` o `Deny` deseado, todas las claves de contexto en el bloque de condición deben resolverse como verdaderas. El usuario que realiza la solicitud debe tener ambas claves de etiqueta de las entidades principales, *departamento* y *rol*, que incluyen uno de los valores de clave de etiqueta especificados en la política. Dado que el operador de condición `ArnNotLike` usa la coincidencia negada, el ARN de la entidad principal del usuario que realiza la solicitud no debe coincidir con ninguno de los valores `aws:PrincipalArn` especificados en la política que se evaluarán como verdaderos.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki<br /></pre>  |  **Match** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **No match** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **No match** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | >No hay `aws:PrincipalTag/role` en el contexto de la solicitud. <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **No match** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | No hay `aws:PrincipalTag` en el contexto de la solicitud. <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **No match**  | 

# Claves de contexto de valor único y multivalor
<a name="reference_policies_condition-single-vs-multi-valued-context-keys"></a>

La diferencia entre las claves de contexto de valor único y de valor múltiple depende de la cantidad de valores en el [contexto de la solicitud](intro-structure.md#intro-structure-request), no de la cantidad de valores en la condición de la política.
+ Las claves de contexto de condición *de valor único* tienen como máximo un valor en el contexto de la solicitud. Por ejemplo, cuando etiqueta recursos en AWS, cada etiqueta de recurso se almacena como un par de clave-valor. Como una clave de etiqueta de recurso solo puede tener un valor de etiqueta único, [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) es una clave de contexto de valor único. No utilice un operador de conjunto de condiciones con una clave de contexto de un solo valor.
+ Las claves de contexto de condición *multivalor* pueden tener varios valores en el contexto de la solicitud. Por ejemplo, cuando etiqueta recursos en AWS, puede incluir varios pares de etiquetas de clave-valor en una única solicitud. Por lo tanto, [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) es una clave de contexto multivalor. Las claves de contexto multivalor requieren un operador de conjunto de condiciones.

Por ejemplo, una solicitud puede originarse a lo sumo de un punto de conexión de VPC, por lo que [aws:SourceVpce](reference_policies_condition-keys.md#condition-keys-sourcevpce) es una clave de contexto de valor único. Dado que un servicio puede tener más de un nombre de entidad principal de servicio que pertenece al servicio, [aws:PrincipalServiceNamesList](reference_policies_condition-keys.md#condition-keys-principalservicenameslist) es una clave de contexto multivalor.

**importante**  
La diferencia entre las claves de contexto de valor único y multivalor depende del número de valores en el contexto de la solicitud, no de la cantidad de valores de la condición de política.

## Puntos clave
<a name="reference_policies_condition-key-points"></a>
+ Las clasificaciones *Valor único* y *Multivalor* se incluyen en la descripción de cada clave de contexto de condición como *Tipo de valor* en el tema [Claves de contexto de condición globales de AWS](reference_policies_condition-keys.md).
+ Las claves de contexto multivalor en la [Referencia de autorizaciones de servicio](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) utilizan un prefijo `ArrayOf` seguido de la categoría del operador de condición, como `ArrayOfString` o `ArrayOfARN`, lo que indica que la solicitud puede incluir múltiples valores para una clave de contexto de condición.
+ Puede utilizar cualquier clave de contexto de valor único disponible como variable de política, pero no puede utilizar una clave de contexto de valor múltiple como variable de política. Para obtener más información sobre las variables de las políticas, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).
+ Cuando utiliza claves de contexto que incluyen pares de clave-valor, es importante tener en cuenta que, si bien puede haber varios valores de etiqueta y clave, cada `tag-key` solo puede tener un valor.
  + [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag), [aws:RequestTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-requesttag) y [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) son claves de contexto de valor único.
  + [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) define qué claves de etiqueta están permitidas en una solicitud, pero no incluye los valores de las claves de etiqueta. Dado que puede incluir varios pares de clave-valor de etiqueta en una solicitud, `aws:TagKeys` es una clave de contexto multivalor.
+ Las claves de contexto multivalor requieren un operador de conjunto de condiciones. No utilice los operadores de conjunto de condiciones `ForAllValues` o `ForAnyValue` con claves de contexto de un solo valor. El uso de operadores de conjuntos de condiciones con claves de contexto de valor único puede dar lugar a políticas demasiado permisivas.

## Operadores de conjunto para claves de contexto multivalor
<a name="reference_policies_condition-multi-valued-context-keys"></a>

Para comparar su clave de contexto de condición con un [contexto de solicitud](intro-structure.md#intro-structure-request) con varios valores, debe utilizar los operadores de conjunto `ForAllValues` o `ForAnyValue`. Estos operadores de conjunto se utilizan para comparar dos conjuntos de valores, como el conjunto de etiquetas en una solicitud y el conjunto de etiquetas en una condición de política.

Los calificadores `ForAllValues` y `ForAnyValue` agregan la funcionalidad de operación de conjunto al operador de condición para que pueda probar claves de contexto de solicitudes con varios valores y compararlos con varias claves de contexto de valor en una condición de política. Además, si incluye una clave de contexto multivalor en su política con un comodín o una variable, también debe utilizar el [operador de condición](reference_policies_elements_condition_operators.md#Conditions_String) `StringLike`. Las múltiples claves de contexto de valor se deben escribir entre corchetes como una [matriz](reference_policies_grammar.md#policies-grammar-json), por ejemplo, `"Key2":["Value2A", "Value2B"]`.

### ForAllValues
<a name="reference_policies_condition-forallvalues"></a>

El calificador `ForAllValues` comprueba si el valor de cada miembro del contexto de solicitud coincide con el operador de condición que sigue al calificador. La condición devuelve un resultado `true` si cada clave de contexto de valor de la solicitud coincide con una clave de contexto de valor de la política. También devuelve `true` si no hay claves de contexto en la solicitud.

**importante**  
Tenga cuidado si utiliza `ForAllValues` con un efecto `Allow`, ya que puede resultar demasiado permisivo si la presencia de claves de contexto ausentes en el contexto de la solicitud es inesperada. Siempre debe incluir el operador de condición [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) en su política con un valor `false` para comprobar si la clave de contexto existe y su valor no es nulo. Para ver un ejemplo, consulta [Control del acceso en función de las claves de etiqueta](access_tags.md#access_tags_control-tag-keys).

#### Ejemplo de operador de conjunto ForAllValues
<a name="reference_policies_condition-forallvalues-example"></a>

En el siguiente ejemplo, ForAllValues se utiliza con aws:TagKeys para permitir a los usuarios eliminar etiquetas específicas asignadas a una instancia de EC2. Esta política permite a los usuarios eliminar solo las etiquetas `environment` y `cost-center`. Puede eliminarlas por separado o juntas. Las claves de etiqueta en la solicitud deben coincidir exactamente con las claves especificadas en la política.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                },
                "Null": {
                    "aws:TagKeys": "false"
                }
            }
        }
    ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **Match**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **Match**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **Match**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **No match**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  |  No hay `aws:TagKeys` en el contexto de la solicitud.  |  **No match**  | 

Tenga en cuenta que, en el último ejemplo, el resultado es “No hay coincidencia” porque la comprobación de la condición nula impide que haya coincidencias cuando falta la clave de contexto. Esta es una práctica recomendada para evitar políticas demasiado permisivas.

### ForAnyValue
<a name="reference_policies_condition-foranyvalue"></a>

El calificador `ForAnyValue` prueba si al menos un miembro del conjunto de valores de clave de contexto de la solicitud coincide con al menos un miembro del conjunto de valores de la clave de contexto de su política. La condición devuelve un resultado `true` si una de las claves de contexto de valor en la solicitud coincide con alguna de las claves de contexto de valor en la política. Si no hay una clave de contexto que coincida o si la clave no existe, la condición devuelve `false`.

**importante**  
Cuando se usa `ForAnyValue` con un efecto `Deny`, si la clave de contexto no está presente en la solicitud, la política se evalúa como **Sin coincidencia**. Para lograr un comportamiento coherente, agregue una comprobación de condición [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) explícita en su política para verificar si existe la clave de contexto. Para obtener más información, consulte [Operador de condición para comprobar la existencia de claves de condición](reference_policies_elements_condition_operators.md#Conditions_Null).

#### Ejemplo de operador de conjunto ForAnyValue
<a name="reference_policies_condition-foranyvalue-example"></a>

En el siguiente ejemplo, ForAnyValue se utiliza con aws:TagKeys para permitir a los usuarios eliminar etiquetas específicas asignadas a una instancia de EC2. Esta política permite a los usuarios eliminar etiquetas de una instancia si las claves de etiqueta especificadas en la solicitud incluyen `environment` o `cost-center`. La solicitud puede incluir claves de etiquetas adicionales a las especificadas en la política, pero debe incluir al menos una de las claves especificadas para que cumpla con la condición.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                }
            }
        }
    ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **Match**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **Match**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **Match**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **Match**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – dept</pre>  |  **No match**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  |  No hay `aws:TagKeys` en el contexto de la solicitud.  |  **No match**  | 

# Ejemplos de políticas de condiciones
<a name="reference_policies_condition_examples"></a>

En las políticas de IAM, puede especificar varios valores para las claves de contexto de un solo valor y multivalor para compararlos con el contexto de la solicitud. El siguiente conjunto de ejemplos de políticas muestra condiciones de políticas con varias claves de contexto y valores.

**nota**  
Si desea enviar una política para que se incluya en esta guía de referencia, utilice el botón **Feedback (Comentarios)** de la parte inferior de esta página. Para ver ejemplos de políticas basadas en identidad de IAM, consulte [Ejemplos de políticas basadas en identidad de IAM](access_policies_examples.md).

## Ejemplos de política de condición: claves de contexto con un solo valor
<a name="reference_policies_condition_example_library_single-valued"></a>
+ Varios bloques de condiciones con claves de contexto de un solo valor. ([Ver este ejemplo](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-1)).
+ Un bloque de condiciones con varias claves de contexto de un solo valor y varios valores. ([Ver este ejemplo](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-2)).

## Ejemplos de política de condición: claves de contexto multivalor
<a name="reference_policies_condition_example_library_multi-valued"></a>
+ Política de denegación con el operador de conjunto de condiciones `ForAllValues`. ([Ver este ejemplo](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-1)).
+ Política de denegación con el operador de conjunto de condiciones `ForAnyValue`. ([Ver este ejemplo](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-2)).

# Ejemplos de clave de contexto multivalor
<a name="reference_policies_condition_examples-multi-valued-context-keys"></a>

El siguiente conjunto de ejemplos de políticas muestra cómo crear condiciones de políticas con claves de contexto multivalor.

## Ejemplo: política de denegación con el operador de conjunto de condiciones ForAllValues
<a name="reference_policies_condition_examples-multi-valued-context-keys-1"></a>

En el siguiente ejemplo se muestra cómo usar una política basada en identidad para negar el uso de acciones de etiquetado de IAM cuando se incluyen prefijos de clave de etiqueta específicos en la solicitud. Los valores para [`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) incluyen un comodín (\$1) para la coincidencia parcial de cadenas. La política incluye el operador de conjunto `ForAllValues` con la clave de contexto `aws:TagKeys`, porque la clave de contexto de la solicitud puede incluir varios valores. Para que la clave de contexto `aws:TagKeys` coincida, cada valor en el contexto de solicitud debe coincidir con al menos un valor de la política.

El operador de conjunto `ForAllValues` también devuelve verdadero si no hay claves de contexto en la solicitud.

Puede evitar que las claves de contexto faltantes o las claves de contexto con valores vacíos se evalúen como verdaderas, al incluir un operador de condición `Null` en su política con un valor `false` para comprobar si la clave de contexto en la solicitud existe y su valor no es nulo. Para obtener más información, consulte [Operador de condición para comprobar la existencia de claves de condición](reference_policies_elements_condition_operators.md#Conditions_Null).

**importante**  
Esta política no permite ninguna acción. Utilice esta política en combinación con otras políticas que permiten acciones específicas.

**Example Cómo denegar un único valor de condición de política para una clave de contexto multivalor**  
En el siguiente ejemplo, la política deniega las solicitudes en las que los valores para `aws:TagKeys` en la solicitud no incluyen el prefijo **key1**. El contexto de la solicitud puede tener varios valores, pero debido al operador de conjunto de condiciones `ForAllValues`, todos los valores de claves de etiqueta del contexto de la solicitud deben empezar con el prefijo **key1**.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": "key1*"
        }
      }
    }
  ]
}
```
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud. En el caso de una instrucción Deny, Match se deniega y No match no se deniega, por lo que es posible que otra instrucción la permita.  


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **No match** Puede estar permitido por otra instrucción. | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **No match** Puede estar permitido por otra instrucción. | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key2:audit</pre>  | **Match** | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | No hay `aws:TagKeys` en el contexto de la solicitud.  | **Match** | 

**Example Cómo denegar varios valores de condiciones de política para una clave de contexto multivalor**  
En el siguiente ejemplo, la política deniega las solicitudes en las que los valores para `aws:TagKeys` en la solicitud no incluyen el prefijo **key1** ni **key2**. El contexto de la solicitud puede tener varios valores, pero debido al operador de conjunto de condiciones `ForAllValues`, todos los valores de las claves de etiqueta del contexto de la solicitud deben empezar con el prefijo **key1** o **key2**.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": [
            "key1*",
            "key2*"
          ]
        }
      }
    }
  ]
}
```
La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud. En el caso de una instrucción Deny, Match se deniega y No match no se deniega, por lo que es posible que otra instrucción la permita.  


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **No match** Puede estar permitido por otra instrucción. | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **No match** Puede estar permitido por otra instrucción. | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key2:audit</pre>  | **No match** Puede estar permitido por otra instrucción. | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key3:legal</pre>  | **Match**  | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | No hay `aws:TagKeys` en el contexto de la solicitud.  | **Match** | 

## Ejemplo: política de denegación con el operador de conjunto de condiciones ForAnyValue
<a name="reference_policies_condition_examples-multi-valued-context-keys-2"></a>

El siguiente ejemplo de política basada en identidad niega la creación de instantáneas de volúmenes de instancias de EC2 si alguna instantánea está etiquetada con una de las claves de etiqueta especificadas en la política, `environment` o `webserver`. La política incluye el operador de conjunto `ForAnyValue` con la clave de contexto `aws:TagKeys`, porque la clave de contexto de la solicitud puede incluir varios valores. Si su solicitud de etiquetado incluye alguno de los valores de clave de etiqueta especificados en la política, la clave de contexto `aws:TagKeys` devuelve verdadero e invoca el efecto de la política de denegación.

**importante**  
Esta política no permite ninguna acción. Utilice esta política en combinación con otras políticas que permiten acciones específicas.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:CreateSnapshots"
      ],
      "Resource": "arn:aws:ec2:us-west-2::snapshot/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "webserver"
        }
      }
    }
  ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud. En el caso de una instrucción Deny, Match se deniega y No match no se deniega, por lo que es posible que otra instrucción la permita.


| Condición de política | Contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – webserver</pre>  | **Match** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – webserver<br />  – test</pre>  |  **Match** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – test</pre>  | **No match** Puede estar permitido por otra instrucción. | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | No hay `aws:TagKeys` en el contexto de la solicitud.  | **No match** Puede estar permitido por otra instrucción.  | 

# Ejemplos de políticas de claves de contexto con un solo valor
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

El siguiente conjunto de ejemplos de políticas muestra cómo crear condiciones de políticas con claves de contexto de valor único.

## Ejemplo: varios bloques de condiciones con claves de contexto de un solo valor
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

Cuando un bloque de condiciones tiene varias condiciones, cada una con una única clave de contexto, todas las claves de contexto deben resolverse como verdaderas para que se invoque el efecto `Allow` o `Deny` deseado. Cuando se utilizan operadores de condición con coincidencia negada, la lógica de evaluación del valor de la condición se invierte.

El siguiente ejemplo permite a los usuarios crear volúmenes de EC2 y aplicar etiquetas a los volúmenes durante la creación de estos. El contexto de la solicitud debe incluir un valor para la clave de contexto `aws:RequestTag/project`, y el valor de la clave de contexto `aws:ResourceTag/environment` puede ser cualquiera excepto el de producción.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/project": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

El contexto de la solicitud debe incluir un valor de etiqueta del proyecto y no se puede crear para que un recurso de producción invoque el efecto `Allow`. El siguiente volumen de EC2 se creó correctamente porque el nombre del proyecto es `Feature3` con una etiqueta de recurso `QA`.

```
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=project,Value=Feature3},{Key=environment,Value=QA}]'
```

## Ejemplo: un bloque de condiciones con varias claves de contexto de un solo valor y varios valores
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

Cuando un bloque de condiciones contiene varias claves de contexto y cada clave de contexto tiene varios valores, cada clave de contexto debe resolverse como verdadera para que se invoque al menos un valor de clave para el efecto `Allow` o `Deny` deseado. Cuando se utilizan operadores de condición con coincidencia negada, la lógica de evaluación del valor de la clave de contexto se invierte.

El siguiente ejemplo permite a los usuarios iniciar y ejecutar tareas en los clústeres de Amazon Elastic Container Service.
+ El contexto de la solicitud debe incluir `production` **O** `prod-backup` para la clave de contexto `aws:RequestTag/environment` **AND**.
+ La clave de contexto `ecs:cluster` asegura que las tareas se ejecuten en cualquiera de los clústeres de ECS con ARN `default1` **O** `default2`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:RunTask",
        "ecs:StartTask"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": [
            "production",
            "prod-backup"
          ]
        },
        "ArnEquals": {
          "ecs:cluster": [
            "arn:aws:ecs:us-east-1:111122223333:cluster/default1",
            "arn:aws:ecs:us-east-1:111122223333:cluster/default2"
          ]
        }
      }
    }
  ]
}
```

------

La siguiente tabla muestra cómo AWS evalúa esta política en función de los valores de clave de condición en su solicitud.


| Condición de política | El contexto de la solicitud | Resultado | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default1</pre>  | Match | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:prod-backup<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | Match | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: webserver:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | No match | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  |  No hay `aws:RequestTag` en el contexto de la solicitud. <pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | No match | 