

# 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 (\*) 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**<br />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**<br />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**<br />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**<br />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**<br />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**<br />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**<br />Puede estar permitido por otra instrucción. | 