

# Referencia de los elementos de la política de JSON de IAM
<a name="reference_policies_elements"></a>

Un documento de política de JSON se compone de elementos. Se indican en el orden que suelen seguir en una política. El orden de los elementos no es importante; por ejemplo, el elemento `Resource` puede ir antes que el elemento `Action`. No es necesario especificar elementos `Condition` en la política. Para obtener más información sobre la estructura general y la finalidad de un documento de política JSON, consulte [Información general de políticas de JSON](access_policies.md#access_policies-json).

Algunos elementos de política JSON se excluyen mutuamente. Esto significa que no se puede crear una política que utilice ambos. Por ejemplo, no se puede utilizar `Action` y `NotAction` en la misma instrucción de política. Otros pares que se excluyen mutuamente son `Principal`/`NotPrincipal` y `Resource`/`NotResource`. 

Los detalles de lo que se incluye en una política pueden variar según el servicio, en función de las acciones que el servicio ponga a disposición, de los tipos de recursos que contenga, etc. Cuando se escriben políticas para un servicio específico, es útil ver ejemplos de políticas para dicho servicio. Para obtener una lista de todos los servicios compatibles con IAM y de enlaces con la documentación de dichos servicios sobre el tema de IAM y las políticas, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md).

 Cuando usted crea o edita una política JSON, IAM puede realizar la validación de políticas para ayudarle a crear una política eficaz. IAM identifica errores de sintaxis JSON, mientras que Analizador de acceso de IAM proporciona verificaciones de políticas adicionales con recomendaciones para ayudarle a perfeccionar aún más las políticas. Para obtener más información acerca la validación de políticas, consulte [Validación de la política de IAM](access_policies_policy-validator.md). Para obtener más información acerca de las verificaciones de políticas de Analizador de acceso de IAM y las recomendaciones procesables, consulte [Validación de políticas de Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html). 

**Topics**
+ [Version](reference_policies_elements_version.md)
+ [Id](reference_policies_elements_id.md)
+ [Statement](reference_policies_elements_statement.md)
+ [Sid](reference_policies_elements_sid.md)
+ [Effect](reference_policies_elements_effect.md)
+ [Principal](reference_policies_elements_principal.md)
+ [NotPrincipal](reference_policies_elements_notprincipal.md)
+ [Action](reference_policies_elements_action.md)
+ [NotAction](reference_policies_elements_notaction.md)
+ [Resource](reference_policies_elements_resource.md)
+ [NotResource](reference_policies_elements_notresource.md)
+ [Condition](reference_policies_elements_condition.md)
+ [Variables y etiquetas](reference_policies_variables.md)
+ [Tipos de datos compatibles](reference_policies_elements_datatypes.md)

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

**Nota aclaratoria**  
El elemento de la política JSON `Version` es diferente de la *versión de la política*. El elemento de política `Version` se utiliza en una política y define la versión del lenguaje de la política. Una versión de política, por otro lado, se crea al realizar cambios en una política administrada por el cliente en IAM. La política modificada no anula la política existente. En cambio, IAM crea una nueva versión de la política administrada. Si busca información sobre cómo admitir múltiples versiones de políticas gestionadas, consulte [Control de versiones de políticas de IAM](access_policies_managed-versioning.md).

El elemento de la política `Version` especifica las reglas de sintaxis del lenguaje que se van a utilizar para procesar esta política. Para utilizar todas las funciones disponibles para políticas, incluya el siguiente elemento `Version` **fuera** del elemento `Statement` en todas las políticas.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

IAM admite los siguientes valores del elemento `Version`:
+ `2012-10-17`. Esta es la versión actual del lenguaje de la política y siempre debe incluir un elemento `Version` y establecerlo en `2012-10-17`. De lo contrario, no puede utilizar características como las [variables de política](reference_policies_variables.md) que se introdujeron con esta versión.
+ `2008-10-17`. Esta es una versión anterior del lenguaje de la política. Puede que vea esta versión en políticas ya existentes. No utilice esta versión en ninguna política nueva ni cuando actualice políticas ya existentes. Las características más recientes, como, por ejemplo, variables de política, no funcionarán con su política. Por ejemplo, las variables del tipo `${aws:username}` no se reconocerán como variables y se tratarán en la política como si fueran cadenas literales.

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

El elemento `Id` especifica un identificador opcional de la política. El ID se utiliza de forma distinta en diferentes servicios. El ID  está permitido en políticas basadas en recursos, pero no en políticas basadas en la identidad.

En el caso de los servicios que le permiten definir un elemento `ID`, le recomendamos que utilice un UUID (GUID) para el valor o que incorpore un UUID como parte del ID para garantizar la exclusividad. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "cd3ad3d9-2776-4ef1-a904-4c229d1642ee",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

**nota**  
Algunos servicios de AWS (por ejemplo, Amazon SQS o Amazon SNS) podrían necesitar este elemento y además que fuera único. Para obtener información específica sobre los servicios para escribir políticas, consulte la documentación del servicio en el que está trabajando.

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

El elemento `Statement` es el elemento principal de una política. Este elemento es obligatorio. El elemento `Statement` puede contener una sola instrucción o una matriz de instrucciones individuales. Cada bloque de instrucción individual debe estar encerrado entre claves \$1 \$1. Para instrucciones múltiples, la matriz debe estar entre corchetes [ ].

```
"Statement": [{...},{...},{...}]
```

En el siguiente ejemplo se muestra una política que contiene una matriz de tres instrucciones en un único elemento `Statement`. (La política le permite obtener acceso a su propia "carpeta home" en la consola de Amazon S3). La política incluye la variable `aws:username`, que se sustituirá durante la evaluación de la política por el nombre de usuario de la solicitud. Para obtener más información, consulte [Introducción](reference_policies_variables.md#policy-vars-intro). 

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

****  

```
{
  "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}/*"
      ]
    }
  ]
}
```

------

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

Puede proporcionar un `Sid` (ID de la instrucción) como un identificador opcional para la declaración de política. Puede asignar un valor de `Sid` a cada instrucción de una matriz de instrucciones. Puede utilizar el valor `Sid` como descripción de la declaración de política. En los servicios que le permiten especificar un elemento `ID`, como, por ejemplo, SQS y SNS, el valor de `Sid` es simplemente un subID del ID del documento de la política. En IAM, el valor de `Sid` debe ser único en la política de JSON.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExampleStatementID",
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

El elemento `Sid` admite mayúsculas ASCII (A-Z), minúsculas (a-z) y números (0-9). 

IAM no se expone la `Sid` en la API de IAM. No puede recuperar una instrucción determinada basándose en este ID.

**nota**  
Algunos servicios de AWS (por ejemplo, Amazon SQS o Amazon SNS) podrían necesitar este elemento y además que fuera único. Para obtener información específica sobre los servicios para escribir políticas, consulte la documentación del servicio en el que trabaja.

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

El elemento `Effect` es obligatorio y se utiliza para especificar si la declaración da como resultado un permiso o una denegación explícitos. Los valores válidos para `Effect` son `Allow` y `Deny`. El valor `Effect` distingue entre mayúsculas y minúsculas. 

```
"Effect":"Allow"
```

De forma predeterminada, se deniega el acceso a los recursos. Para permitir el acceso a un recurso, debe establecer el elemento `Effect` en `Allow`. Para anular un permiso (por ejemplo, para anular un permiso que, de lo contrario, estaría en vigor), establezca el elemento `Effect` en `Deny`. Para obtener más información, consulte [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md).

# AWS Elemento de la política de JSON de: Principal
<a name="reference_policies_elements_principal"></a>

Utilice el elemento `Principal` en una política de JSON basada en recursos para especificar la entidad principal que tiene acceso permitido o denegado a un recurso. 

Puede utilizar el elemento `Principal` en las [políticas basadas en recursos](access_policies_identity-vs-resource.md). Varios servicios admiten políticas basadas en recursos, incluido IAM. El tipo de política basada en recursos de IAM es una política de confianza de roles. En los roles de IAM, utilice el elemento `Principal` en la política de confianza de roles para especificar quién puede asumir el rol. Para obtener acceso entre cuentas, debe especificar el identificador de 12 dígitos de la cuenta de confianza. Consulte [¿Qué es IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para saber si las entidades principales de las cuentas fuera de su zona de confianza (cuenta u organización de confianza) tienen acceso para asumir sus roles.

**nota**  
Tras crear el rol, puede cambiar la cuenta a “\$1” para permitir que cualquiera pueda asumir el rol. Si lo hace, le recomendamos encarecidamente que limite el acceso al rol a través de otros medios, como, por ejemplo, un elemento `Condition` que limite el acceso únicamente a determinadas direcciones IP. No permita que todo el mundo pueda acceder al rol.

Otros ejemplos de recursos que admiten políticas basadas en recursos incluyen un bucket de Amazon S3 o una AWS KMS key.

No puede utilizar el elemento `Principal` en una política basada en identidad. Las políticas basadas en identidad son políticas de permisos que se adjuntan a identidades de IAM (usuarios, grupos o roles). En esos casos, la entidad principal queda implícita por la identidad a la que está adjunta la política.

**Topics**
+ [Cómo especificar una entidad principal](#Principal_specifying)
+ [Entidades principales de Cuenta de AWS](#principal-accounts)
+ [Entidades principales de rol de IAM](#principal-roles)
+ [Entidades principales de sesión de rol](#principal-role-session)
+ [Entidades principales federadas OIDC](#principal-federated-web-identity)
+ [Entidades principales federadas SAML](#principal-saml)
+ [Entidades principales de usuario de IAM](#principal-users)
+ [Entidades principales de IAM Identity Center](#principal-identity-users)
+ [Entidades principales de usuarios federados de AWS STS](#sts-session-principals)
+ [AWSEntidad principal del servicio de](#principal-services)
+ [Entidades principales de servicios de AWS en regiones registradas](#principal-services-in-opt-in-regions)
+ [Todas las entidades principales](#principal-anonymous)
+ [Más información](#Principal_more-info)

## Cómo especificar una entidad principal
<a name="Principal_specifying"></a>

Una entidad principal se especifica en el elemento `Principal` de una política basada en recursos o en claves de condición que admiten entidades principales.

Puede especificar cualquiera de las siguientes entidades principales en una política:
+ Cuenta de AWS y usuario raíz
+ Roles de IAM
+ Sesiones de rol 
+ Usuarios de IAM
+ Entidades principales de usuarios federados
+ AWSServicios de 
+ Todas las entidades principales

No puede identificar un grupo de usuarios como entidad principal en una política (como una política basada en recursos) porque los grupos están relacionados con los permisos, no con la autenticación, y las entidades principales las autentica IAM.

Puede especificar más de una entidad principal para cada uno de los tipos de entidad principal en las siguientes secciones mediante una matriz. Las matrices pueden tener uno o varios valores. Cuando se especifica más de una entidad principal en un elemento, se conceden permisos a cada una de ellas. Es un `OR` lógico y no un `AND` lógico, porque se autentica como una entidad principal a la vez. Si incluye más de un valor, utilice corchetes (`[` y `]`) y delimite con comas cada entrada de la matriz. En la siguiente política de ejemplo, se definen los permisos para la cuenta 123456789012 o la cuenta 555555555555.

```
"Principal" : { 
"AWS": [ 
  "123456789012",
  "555555555555" 
  ]
}
```

**nota**  
No puede utilizar un carácter comodín para buscar coincidencias con parte de un nombre de entidad principal o ARN. 

## Entidades principales de Cuenta de AWS
<a name="principal-accounts"></a>

Puede especificar identificadores de la Cuenta de AWS en el elemento `Principal` de una política basada en recursos o en claves de condición que admitan entidades principales. Esto delega autoridad en la cuenta. Cuando permite el acceso a otra cuenta, un administrador de esa cuenta debe conceder acceso a una identidad (usuario o rol de IAM) en dicha cuenta. Cuando especifica una Cuenta de AWS, puede usar el ARN de la cuenta (arn:aws:iam::*account-ID*:root) o una forma abreviada formada por el prefijo `"AWS":` seguido del ID de la cuenta.

Por ejemplo, si el ID de cuenta es `123456789012`, puede utilizar uno de los métodos siguientes para especificar esa cuenta en el elemento `Principal`:

```
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
```

```
"Principal": { "AWS": "123456789012" }
```

El ARN de la cuenta y el ID de cuenta abreviado se comportan de la misma manera. Ambos delegan permisos en la cuenta. Usar el ARN de la cuenta en el elemento `Principal` no limita los permisos solo al usuario raíz de la cuenta. 

**nota**  
Cuando guarda una política basada en recursos que incluye el ID de cuenta abreviado, el servicio podría convertirla en el ARN de la entidad principal. De este modo, no se modifica la funcionalidad de la política.

Algunos servicios de AWS admiten más opciones para especificar la entidad principal de una cuenta. Por ejemplo, Amazon S3 permite especificar un [ID de usuario canónico](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId) mediante el siguiente formato:

```
"Principal": { "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be" }
```

También puede especificar más de una Cuenta de AWS (o ID de usuario canónico) como entidad principal mediante una matriz. Por ejemplo, puede utilizar los tres métodos para especificar una entidad principal en una política de bucket.

```
"Principal": { 
  "AWS": [
    "arn:aws:iam::123456789012:root",
    "999999999999"
  ],
  "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
}
```

## Entidades principales de rol de IAM
<a name="principal-roles"></a>

Puede especificar ARN de entidades principales de rol de IAM en el elemento `Principal` de una política basada en recursos o en claves de condición que admitan entidades principales. Los roles de IAM son identidades. En IAM, las identidades son recursos a los que puede asignar permisos. Los roles confían en otra identidad autenticada para asumir ese rol. Esto incluye una entidad principal en AWS o un usuario de un proveedor de identidades (IdP) externo. Cuando una entidad principal o una identidad asume un rol, recibe credenciales de seguridad temporales con los permisos del rol asumido. Cuando utiliza esas credenciales de sesión para realizar operaciones en AWS, pasa a ser una *entidad principal de sesión de rol*.

Cuando especifica una entidad principal de rol en una política basada en recursos, los permisos efectivos de dicha entidad están limitados por cualquier tipo de política que limite los permisos para el rol. Esto incluye políticas de sesión y límites de permisos. Para obtener más información acerca de cómo se evalúan los permisos efectivos de una sesión de rol, consulte [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md).

Para especificar el ARN de rol en el elemento `Principal`, utilice el siguiente formato:

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:role/role-name" }
```

**importante**  
Si el elemento `Principal` de una política de confianza de rol contiene un ARN que apunta a un rol de IAM concreto, dicho ARN se transforma en el ID exclusivo de la entidad principal del rol al guardar la política. Esto es útil para reducir el riesgo de que alguien aumente sus privilegios al eliminar y volver a crear el rol. Normalmente este ID no se muestra en la consola, ya que IAM utiliza una transformación inversa al ARN del rol cuando se muestra la política de confianza. Sin embargo, si elimina el rol, la relación se desvincula. La política dejará de aplicarse, aunque vuelva a crear el rol, ya que el ID de la entidad principal del rol nuevo ya no coincide con el ID almacenado en la política de confianza. Cuando esto ocurre, el ID de la entidad principal aparece en las políticas basadas en recursos porque AWS ya no puede asignarlo a un ARN válido. El resultado final es que, si elimina y vuelve a crear un rol al que se hace referencia en un elemento `Principal` de la política de confianza, deberá editar el rol para sustituir el ID de la entidad principal que ahora es incorrecto por el ARN correcto. El ARN se transforma una vez más en el nuevo ID de la entidad principal del rol al guardar la política. Para obtener más información, consulte [Descripción del manejo de los roles de IAM eliminados en las políticas de AWS](https://repost.aws/articles/ARSqFcxvd7R9u-gcFD9nmA5g/understanding-aws-s-handling-of-deleted-iam-roles-in-policies).

De forma alternativa, puede especificar la entidad principal de rol como la entidad principal en una política basada en recursos o [crear una política de permisos amplios](#principal-anonymous) que utilice la clave de condición `aws:PrincipalArn`. Cuando utiliza esta clave, a la entidad principal de la sesión de rol se le otorgan los permisos en función del ARN del rol asumido y no del ARN de la sesión resultante. Debido a que AWS no convierte los ARN de clave de condición en ID, los permisos concedidos al ARN del rol persisten si elimina el rol y, a continuación, crea un nuevo rol con el mismo nombre. Los permisos concedidos mediante la clave de condición `aws:PrincipalArn` con un comodín (\$1) en el elemento `Principal` no están limitados por los tipos de políticas basadas en identidad, tales como límites de permisos o políticas de sesión, a menos que las políticas basadas en la identidad contengan una denegación explícita.

## Entidades principales de sesión de rol
<a name="principal-role-session"></a>

Puede especificar sesiones de roles en el elemento `Principal` de una política basada en recursos o en claves de condición que admitan entidades principales. Cuando una entidad principal o una identidad asume un rol, recibe credenciales de seguridad temporales con los permisos del rol asumido. Cuando utiliza esas credenciales de sesión para realizar operaciones en AWS, pasa a ser una *entidad principal de sesión de rol*.

El formato que utilice para una entidad principal de sesión de rol depende de la operación de AWS STS que se utilizó para asumir el rol.

**importante**  
AWS recomienda, en lo posible, utilizar las [entidades principales del rol de IAM](#principal-roles) en sus políticas en lugar de las entidades principales del rol de sesión. Utilice las declaraciones `Condition` y las claves de condición para restringir aún más el acceso cuando sea necesario.

Para especificar el ARN de la entidad principal del rol de sesión o en el elemento `Principal`, utilice el siguiente formato:

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:assumed-role/role-name/role-session-name" }
```

Además, los administradores pueden diseñar un proceso para controlar cómo se emiten las sesiones de roles. Por ejemplo, pueden proporcionar una solución con un solo clic para sus usuarios que cree un nombre de sesión predecible. Si su administrador lo hace, puede utilizar las entidades principales de sesión de rol en sus políticas o claves de condición. De lo contrario, puede especificar el ARN del rol como entidad principal en la clave de condición `aws:PrincipalArn`. La forma en que especifica el rol como entidad principal puede cambiar los permisos efectivos para la sesión resultante. Para obtener más información, consulte [Entidades principales de rol de IAM](#principal-roles). 

## Entidades principales federadas OIDC
<a name="principal-federated-web-identity"></a>

Una entidad principal federada de OIDC es la entidad principal que se utiliza cuando se llama a la API de AWS STS `AssumeRoleWithWebIdentity` con un token web JSON (JWT) desde un IDP compatible con OIDC, también conocido como proveedor de OpenID (OP), para solicitar credenciales de AWS temporales. Una entidad principal federada de OIDC puede representar a un IDP de OIDC en su cuenta de AWS, o a los cuatro proveedores de identidad integrados: Login with Amazon, Google, Facebook y [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html).

Los usuarios, las cargas de trabajo o los sistemas a los que su IDP de OIDC les haya emitido un JWT pueden llamar a `AssumeRoleWithWebIdentity` con el JWT para solicitar credenciales de seguridad de AWS temporales para un rol de IAM configurado para confiar en el IDP de OIDC que emitió el JWT. El JWT puede ser un token de identificación, un token de acceso o un token JWT entregado por cualquier otro método, siempre que cumpla con los [requisitos enumerados en AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html#manage-oidc-provider-prerequisites). Para obtener más información, consulte [Escenarios habituales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_federation_common_scenarios.html) y [Solicitud de credenciales a través de un proveedor de OIDC](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity).

Utilice este tipo de entidad principal en su política de confianza de funciones para permitir o denegar permisos para llamar a `AssumeRoleWIthWebIdentity` con un IDP de OIDC que exista en su cuenta de Cuenta de AWS o uno de los cuatro IDP integrados. Para especificar el ARN de la entidad principal federada de OICD en el elemento `Principal` de una política de confianza de rol, utilice los siguientes cuatro formatos para los IDP de OIDC integrados:

```
"Principal": { "Federated": "cognito-identity.amazonaws.com" }
```

```
"Principal": { "Federated": "www.amazon.com" }
```

```
"Principal": { "Federated": "graph.facebook.com" }
```

```
"Principal": { "Federated": "accounts.google.com" }
```

Cuando utiliza un proveedor de OIDC que agrega a su cuenta, como GitHub, especifique el ARN del proveedor en la política de confianza de rol. Esta configuración le permite escribir políticas de IAM que controlen el acceso específicamente para los usuarios autenticados a través de su proveedor de identidad personalizado.

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/full-OIDC-identity-provider-URL" }
```

Por ejemplo, si GitHub fuera el proveedor de identidad web de confianza, el ARN de la sesión de rol de OICD en el elemento `Principal` de una política de confianza de rol, utiliza el siguiente formato:

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/tokens.actions.githubusercontent.com" }
```

Consulte [Configurar OpenID Connect en Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) para obtener más información.

Las entidades principales federadas de OIDC no son compatibles con otros tipos de políticas que no sean las políticas de confianza de roles.

## Entidades principales federadas SAML
<a name="principal-saml"></a>

Una *entidad principal federada de SAML* es una entidad principal que se utiliza cuando se llama a la API de AWS STS `AssumeRoleWithSAML` para solicitar credenciales temporales de AWS mediante una aserción de SAML. Puede utilizar un proveedor de identidades (IDP) SAML para iniciar sesión y, a continuación, asumir un rol de IAM mediante esta operación. Al igual que `AssumeRoleWithWebIdentity`, `AssumeRoleWithSAML` no requiere credenciales de AWS para la autenticación. En su lugar, los usuarios primero se autentican con su proveedor de identidad SAML y, a continuación, realizan la llamada a la API de `AssumeRoleWithSAML` con su aserción de SAML, o son redirigidos a la página de inicio de sesión/SAML de AWS para iniciar sesión en la Consola de administración de AWS. Para obtener más información acerca de qué entidades principales pueden asumir un rol mediante esta operación, consulte [Comparación de credenciales AWS STS](id_credentials_sts-comparison.md).

Utilice este tipo de entidad principal en su política de confianza de rol para permitir o denegar permisos con base en el proveedor de identidad SAML de confianza. Para especificar el ARN de sesión de rol de identidad SAML en el elemento `Principal` de una política de confianza de rol, utilice el siguiente formato:

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:saml-provider/provider-name" }
```

## Entidades principales de usuario de IAM
<a name="principal-users"></a>

Puede especificar a los usuarios de IAM en el elemento `Principal` de una política basada en recursos o en claves de condición que admitan entidades principales.

**nota**  
En un elemento `Principal`, la parte del nombre de usuario del [*Nombre de recurso de Amazon* (ARN)](reference_identifiers.md#identifiers-arns) distingue entre mayúsculas y minúsculas.

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/user-name" }
```

```
"Principal": {
  "AWS": [
    "arn:aws:iam::AWS-account-ID:user/user-name-1", 
    "arn:aws:iam::AWS-account-ID:user/user-name-2"
  ]
}
```

Cuando especifica usuarios en un elemento `Principal`, no puede utilizar un comodín (`*`) para designar a “todos los usuarios”. Las entidades principales siempre tienen que designar a usuarios específicos. 

**importante**  
Si el elemento `Principal` de una política de confianza de rol contiene un ARN que apunta a un usuario de IAM concreto, IAM transforma al ARN en el ID principal exclusivo del usuario al guardar la política. Esto es útil para reducir el riesgo de que alguien aumente sus privilegios al eliminar y volver a crear el rol. Normalmente este ID no se muestra en la consola, ya que también existe una transformación inversa al ARN del usuario cuando se muestra la política de confianza. Sin embargo, si elimina el usuario, la relación se desvincula. La política ya no se aplica, incluso aunque vuelva a crear el usuario. Esto se debe a que el usuario nuevo tiene un ID de entidad principal nuevo que no coincide con el ID almacenado en la política de confianza. Cuando esto ocurre, el ID de la entidad principal aparece en las políticas basadas en recursos porque AWS ya no puede asignarlo a un ARN válido. El resultado final es que, si elimina y vuelve a crear un rol al que se hace referencia en un elemento `Principal` de la política de confianza, deberá editar el rol para sustituir el ID de la entidad principal que ahora es incorrecto por el ARN correcto. IAM transforma una vez más el ARN en el nuevo ID principal del usuario al guardar la política.

## Entidades principales de IAM Identity Center
<a name="principal-identity-users"></a>

En IAM Identity Center, la entidad principal en una política basada en recursos debe definirse como la entidad principal de Cuenta de AWS. Para especificar el acceso, haga referencia al ARN del rol del conjunto de permisos en el bloque de condiciones. Para obtener más información, consulte [Hacer referencia a los conjuntos de permisos en las políticas de recursos, Amazon EKS y AWS KMS](https://docs.aws.amazon.com/singlesignon/latest/userguide/referencingpermissionsets.html) en la *Guía del usuario de IAM Identity Center*.

## Entidades principales de usuarios federados de AWS STS
<a name="sts-session-principals"></a>

Puede especificar *sesiones de usuarios federados* en el elemento `Principal` de una política basada en recursos o en claves de condición que admitan entidades principales.

**importante**  
AWS recomienda limitar el uso de sesiones de usuarios federados de AWS STS. En su lugar, utilice [roles de IAM](IAM/latest/UserGuide/tutorial_cross-account-with-roles.html).

Una entidad principal de AWS STS de usuario federado se crea a través de la operación `GetFederationToken` llamada con credenciales de IAM de larga duración. Los permisos de usuario federado son la intersección de la entidad principal que llamó a `GetFederationToken` y las políticas de sesión pasadas como parámetros a la API de `GetFederationToken`.

En AWS, los usuarios de IAM o un Usuario raíz de la cuenta de AWS pueden autenticarse mediante claves de acceso a largo plazo. Para conocer las entidades principales que pueden federarse mediante esta operación, consulte [Comparación de credenciales AWS STS](id_credentials_sts-comparison.md).
+ **Usuario federado de IAM**: un usuario de IAM se federa mediante la operación `GetFederationToken` que da como resultado una sesión de usuario federado para dicho usuario de IAM.
+ **Usuario raíz federado**: un Usuario raíz se federa mediante la operación `GetFederationToken` que da como resultado una sesión de usuario federado para dicho Usuario raíz.

Cuando un usuario de IAM o usuario raíz solicita credenciales temporales de AWS STS mediante esta operación, inicia una sesión de usuario federado temporal. El ARN de esta sesión se basa en la identidad original que se federó.

Para especificar el ARN de sesión de usuario federado en el elemento `Principal`, utilice el siguiente formato:

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:federated-user/user-name" }
```

## AWSEntidad principal del servicio de
<a name="principal-services"></a>

Puede especificar servicios de AWS en el elemento `Principal` de una política basada en recursos o en claves de condición que admitan entidades principales. Una *entidad principal del servicio* es un identificador de un servicio. 

Los roles de IAM que puede asumir un servicio de AWS se denominan *[roles de servicio](id_roles.md#iam-term-service-role)*. Los roles de servicio deben incluir una política de confianza. Las *políticas de confianza* son políticas basadas en recursos que se asocian a un rol que define qué entidades principales pueden asumir el rol. Algunos roles de servicio tienen políticas de confianza predefinidas. Sin embargo, en algunos casos, debe especificar la entidad principal del servicio en la política de confianza. La entidad principal de servicio de una política de IAM no puede ser `"Service": "*"`.

**importante**  
El identificador de la entidad principal de un servicio incluye el nombre del servicio y suele tener el siguiente formato:  
`service-name.amazonaws.com`

El servicio define la entidad principal de servicio. Puede encontrar la entidad principal del servicio para algunos servicios al abrir [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md), comprobar si el servicio tiene **Sí **en la columna **Rol vinculado al servicio** y abrir el vínculo **Sí** a fin de ver la documentación del rol vinculado al servicio para ese servicio. Consulte la sección **Permisos de rol vinculados a servicios** de ese servicio para ver la entidad principal del servicio.

En el siguiente ejemplo, se muestra una política que puede asociarse a un rol de servicio. La política permite que dos servicios, Amazon ECS y Elastic Load Balancing, asuman el rol. Los servicios pueden realizar las tareas concedidas por la política de permisos asignada al rol (no se muestra). Para especificar varios elementos principales del servicio, no debe especificar dos elementos `Service`; solo puede tener uno. En cambio, utilice una gama de varios elementos principales del servicio como el valor de un único elemento `Service`.

```
"Principal": {
    "Service": [
        "ecs.amazonaws.com",
        "elasticloadbalancing.amazonaws.com"
   ]
}
```

## Entidades principales de servicios de AWS en regiones registradas
<a name="principal-services-in-opt-in-regions"></a>

Puede lanzar recursos en varias regiones de AWS, y debe registrarse en algunas de esas regiones. Para obtener una lista completa de las regiones en las que debe registrarse, consulte [Administración de regiones de AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) en la *Guía de Referencia general de AWS*.

Cuando un servicio de AWS de una región registrada realiza una solicitud dentro de la misma región, el formato del nombre de la entidad principal del servicio se identifica como la versión no regionalizada del nombre de la entidad principal del servicio:

`service-name.amazonaws.com`

Cuando un servicio de AWS de una región registrada realiza una solicitud interregional a otra región, el formato del nombre de la entidad principal del servicio se identifica como la versión regionalizada del nombre de la entidad principal del servicio:

`service-name.{region}.amazonaws.com`

Por ejemplo, supongamos que tiene un tema de Amazon SNS ubicado en la región `ap-southeast-1` y un bucket de Amazon S3 ubicado en la región registrada `ap-east-1`. Desea configurar las notificaciones del bucket de S3 para que puedan publicar mensajes en el tema de SNS. Para permitir que el servicio S3 publique mensajes en el tema de SNS, debe conceder permiso `sns:Publish` a la entidad principal del servicio S3 mediante la política de acceso basada en recursos del tema.

Si especifica la versión no regionalizada de la entidad principal del servicio S3, `s3.amazonaws.com`, en la política de acceso del tema, se producirá un error en la solicitud `sns:Publish` del bucket al tema. En el siguiente ejemplo, se especifica la entidad principal del servicio S3 no regionalizada en el elemento de política `Principal` de la política de acceso del tema de SNS.

```
"Principal": { "Service": "s3.amazonaws.com" }
```

Dado que el bucket se encuentra en una región registrada y la solicitud se realiza fuera de esa misma región, la entidad principal del servicio S3 aparece como nombre la entidad principal del servicio regionalizado, `s3.ap-east-1.amazonaws.com`. Debe utilizar el nombre de la entidad principal del servicio regionalizado cuando un servicio de AWS de una región registrada realice una solicitud a otra región. Una vez que se especifica el nombre de la entidad principal del servicio regionalizado, si el bucket realiza una solicitud `sns:Publish` al tema de SNS ubicado en otra región, la solicitud se procesará correctamente. En el siguiente ejemplo, se especifica la entidad principal del servicio S3 regionalizada en el elemento de política `Principal` de la política de acceso del tema de SNS.

```
"Principal": { "Service": "s3.ap-east-1.amazonaws.com" }
```

Las listas de autorizaciones basadas en políticas de recursos o entidades principales de servicios para solicitudes interregionales de una región registrada a otra región solo se procesarán correctamente si se especifica el nombre de la entidad principal del servicio regionalizado.

**nota**  
Para las políticas de confianza de roles de IAM, se recomienda utilizar el nombre de la entidad principal del servicio no regionalizado. Los recursos de IAM son globales, de modo que se puede utilizar el mismo rol en cualquier región.

## Todas las entidades principales
<a name="principal-anonymous"></a>

Puede utilizar un comodín (\$1) para especificar todas las entidades principales en el elemento `Principal` de una política basada en recursos o en claves de condición que admitan entidades principales. Los permisos de *concesión* de [Políticas basadas en recursos](access_policies.md#policies_resource-based) y las [claves de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) se emplean para limitar las condiciones de una declaración de política.

**importante**  
Recomendamos encarecidamente que no utilice un comodín (\$1) en el elemento `Principal` de una política basada en recursos con un efecto `Allow` a menos que tenga la intención de conceder acceso público o anónimo. De lo contrario, especifique las entidades principales, servicios o cuentas de AWS en el elemento `Principal` y, a continuación, restrinja aún más el acceso en el elemento `Condition`. Esto es especialmente cierto para las políticas de confianza del rol de IAM, porque permiten que otras entidades principales lo sean también en su cuenta.

Para las políticas basadas en recursos, usar un comodín (\$1) con un efecto `Allow` concede acceso a todos los usuarios, incluidos los usuarios anónimos (acceso público). No se requieren otros permisos para las entidades principales de usuarios y rol de IAM dentro de su cuenta. Para las entidades principales de otras cuentas, también deben tener permisos basados en la identidad en su cuenta que les permitan acceder a su recurso. Esto se denomina [acceso entre cuentas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html).

Para los usuarios anónimos, los siguientes elementos son equivalentes:

```
"Principal": "*"
```

```
"Principal" : { "AWS" : "*" }
```

No puede utilizar un carácter comodín para buscar coincidencias con parte de un nombre de entidad principal o ARN.

En el siguiente ejemplo se muestra una política basada en recursos que pueden utilizarse en lugar de [AWS Elemento de la política de JSON de: NotPrincipal](reference_policies_elements_notprincipal.md) para denegar explícitamente todas las entidades principales *excepto* para los especificados en el elemento `Condition`. Esta política debe [añadirse a un bucket de Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/add-bucket-policy.html).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "UsePrincipalArnInsteadOfNotPrincipalWithDeny",
      "Effect": "Deny",
      "Action": "s3:*",
      "Principal": "*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "arn:aws:s3:::amzn-s3-demo-bucket"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:user/user-name"
        }
      }
    }
  ]
}
```

------

## Más información
<a name="Principal_more-info"></a>

Para obtener más información, consulte los siguientes enlaces:
+ [Ejemplos de política de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) en la *Guía del usuario de Amazon Simple Storage Service*
+ [Políticas de ejemplo para Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#ExamplePolicies_SNS) en la *Guía para desarrolladores de Amazon Simple Notification Service*
+ [Ejemplos de políticas de Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html) en la *Guía para desarrolladores de Amazon Simple Queue Service*
+ [Políticas de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) en la *Guía para desarrolladores de AWS Key Management Service*
+ [Identificadores de cuenta](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) en la *Referencia general de AWS*
+ [Federación OIDC](id_roles_providers_oidc.md)

# AWS Elemento de la política de JSON de: NotPrincipal
<a name="reference_policies_elements_notprincipal"></a>

El elemento `NotPrincipal` utiliza `"Effect":"Deny"` para denegar el acceso a todas las entidades principales ***excepto*** a la entidad principal especificada en el elemento `NotPrincipal`. Una entidad principal puede ser un usuario de IAM, una entidad principal de usuario federado de AWS STS, un rol de IAM, una sesión de rol asumido, Cuenta de AWS, un servicio de AWS u otro tipo de entidad principal. Para obtener más información sobre las entidades principales, consulte [AWS Elemento de la política de JSON de: Principal](reference_policies_elements_principal.md).

`NotPrincipal` se debe usar con `"Effect":"Deny"`. No se admite su uso con `"Effect":"Allow"`. 

**importante**  
No recomendamos el uso de `NotPrincipal` para políticas basadas en recursos nuevas como parte de la estrategia de autorización y seguridad. Cuando utilice `NotPrincipal`, puede ser difícil solucionar los efectos de varios tipos de política. En su lugar, recomendamos utilizar la clave de contexto `aws:PrincipalArn` con los operadores de condición de ARN.

## Puntos clave
<a name="notprincipal-key-points"></a>
+ El elemento `NotPrincipal` es compatible con políticas basadas en recursos para algunos servicios de AWS, incluidos los puntos de conexión de VPC. Las políticas basadas en recursos son políticas que se integran directamente en un recurso. No puede utilizar el elemento `NotPrincipal` en una política basada en identidad de IAM ni en una política de confianza de rol de IAM.
+ No utilice instrucciones de política basadas en recursos que incluyan un elemento de política `NotPrincipal` con un efecto `Deny` para los usuarios o roles de IAM que tengan una política de límite de permisos adjunta. El elemento `NotPrincipal` con efecto `Deny` siempre denegará cualquier entidad principal de IAM que tenga una política de límite de permisos adjunta, independientemente de los valores especificados en el elemento `NotPrincipal`. Esto provoca que algunos usuarios o roles de IAM que de otro modo tendrían acceso al recurso pierdan dicho acceso. Recomendamos cambiar las instrucciones de política basadas en recursos y utilizar el operador de condición [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN) con la clave de contexto [`aws:PrincipalArn`](reference_policies_condition-keys.md#condition-keys-principalarn) para limitar el acceso en lugar del elemento `NotPrincipal`. Para obtener información sobre los límites de permisos, consulte [Límites de permisos para las entidades de IAM](access_policies_boundaries.md).
+ Cuando utiliza `NotPrincipal`, también debe especificar el ARN de la cuenta de la entidad principal no denegada. De lo contrario, la política podría denegar el acceso a toda la cuenta que contenga el principal. En función del servicio que incluya en la política, AWS podría validar primero la cuenta y después al usuario. Si se está evaluando a un usuario de rol asumido (alguien que utiliza un rol), AWS podría validar primero la cuenta, después el rol y, por último, al usuario de rol asumido. El usuario de rol asumido se identifica mediante el nombre de la sesión de rol que se especifica cuando asumieron el rol. Por lo tanto, le recomendamos encarecidamente que incluya de forma explícita el ARN de la cuenta de un usuario, o que incluya tanto el ARN de un rol como el ARN de la cuenta que contenga dicho rol.
+ El elemento `NotPrincipal` no se admite en las políticas de control de servicios (SCP) ni en las políticas de control de recursos (RCP).

## Alternativas al elemento `NotPrincipal`
<a name="notprincipal-alternatives"></a>

Al administrar el control de acceso en AWS, puede haber casos en los que sea necesario denegar explícitamente el acceso de todas las entidades principales a un recurso, excepto para una o más entidades principales que especifique. AWS recomienda utilizar una instrucción Deny con claves de contexto de condición globales para un control más preciso y una solución de problemas más sencilla. En los siguientes ejemplos se muestran enfoques alternativos que utilizan operadores de condición, como `StringNotEquals` o `ArnNotEquals`, para denegar el acceso a todas las entidades principales excepto a las especificadas en el elemento Condition.

## Escenario de ejemplo con un rol de IAM
<a name="notprincipal-alternative-role"></a>

Puede utilizar una política basada en recursos con una instrucción Deny para impedir que todos los roles de IAM, excepto los especificados en el elemento Condition, accedan a sus recursos o los manipulen. Este enfoque sigue el principio de seguridad de AWS según el cual una denegación explícita siempre prevalece sobre cualquier instrucción Allow y ayuda a mantener el principio de privilegio mínimo en toda la infraestructura de AWS.

En lugar de utilizar `NotPrincipal`, se recomienda utilizar una instrucción Deny con claves de contexto de condición globales y un operador de condición como [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN) para permitir de forma explícita que un rol de IAM acceda a sus recursos. En el siguiente ejemplo, se usa [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) para permitir explícitamente que el rol `read-only-role` acceda a los buckets de Amazon S3 de la carpeta `Bucket_Account_Audit`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyCrossAuditAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Bucket_Account_Audit",
        "arn:aws:s3:::Bucket_Account_Audit/*"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:role/read-only-role"
        }
      }
    }
  ]
}
```

------

## Escenario de ejemplo con una entidad principal de servicio
<a name="notprincipal-alternative-service-principal"></a>

Puede utilizar una instrucción Deny para impedir que todas las entidades principales de servicio, excepto las especificadas en el elemento `Condition`, accedan a sus recursos o los manipulen. Este enfoque resulta especialmente útil cuando necesita implementar controles de acceso detallados o establecer límites de seguridad entre los distintos servicios y aplicaciones en su entorno de AWS.

En lugar de utilizar `NotPrincipal`, se recomienda utilizar una instrucción Deny con claves de contexto de condición globales y el operador de condición [`StringNotEquals`](reference_policies_elements_condition_operators.md#Conditions_String) para permitir de forma explícita que una entidad principal de servicio acceda a sus recursos. En el siguiente ejemplo, se usa `aws:PrincipalServiceName` para permitir explícitamente que la entidad principal de servicio AWS CodeBuild acceda a los buckets de Amazon S3 de la carpeta `BUCKETNAME`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyNotCodeBuildAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::BUCKETNAME",
        "arn:aws:s3:::BUCKETNAME/*"
      ],
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:PrincipalServiceName": "codebuild.amazonaws.com"
        }
      }
    }
  ]
}
```

------

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

El elemento `Action` describe la acción o las acciones específicas que se permitirán o denegarán. Las instrucciones deben incluir un elemento `Action` o un elemento `NotAction`. Cada servicio de AWS tiene su propio conjunto de acciones que describen las tareas que se pueden realizar con dicho servicio. Por ejemplo, la lista de acciones para Amazon S3 se puede encontrar en [Especificación de permisos en una política](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html) en la *Guía del usuario de Amazon Simple Storage Service*. Puede encontrar la lista de acciones de Amazon EC2 en la [Referencia de la API de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/query-apis.html) y la lista de acciones de AWS Identity and Access Management se puede encontrar en la [Referencia de la API de IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html). Para encontrar la lista de acciones de otros servicios, consulte la [documentación](https://aws.amazon.com/documentation) de referencia de la API correspondiente al servicio.

AWS también proporciona información de referencia del servicio en formato JSON para agilizar la automatización de los flujos de trabajo de administración de políticas. Al contar con información de referencia del servicio, puede acceder a las acciones disponibles, recursos y condiciones clave en los Servicios de AWS desde archivos legibles por máquina. Para obtener más información, consulte [Información simplificada de Servicio de AWS para el acceso programático](https://docs.aws.amazon.com/service-authorization/latest/reference/service-reference.html) en la Referencia de autorización de servicio.

Los valores se especifican utilizando un espacio de nombres de servicio como un prefijo de acción (`iam`, `ec2`, `sqs`, `sns`, `s3`, etc.) seguido del nombre de la acción que debe permitirse o denegarse. El nombre debe coincidir con una acción compatible con el servicio. El prefijo y el nombre de acción no distinguen entre mayúsculas y minúsculas. Por ejemplo, `iam:ListAccessKeys` es igual que `IAM:listaccesskeys`. En los siguientes ejemplos se muestran elementos `Action` de diferentes servicios.

**Acción de Amazon SQS**

```
"Action": "sqs:SendMessage"
```

**Acción de Amazon EC**

```
"Action": "ec2:StartInstances"
```

**Acción de IAM**

```
"Action": "iam:ChangePassword"
```

**Acción de Amazon S**

```
"Action": "s3:GetObject"
```

Puede especificar varios valores para el elemento `Action`.

```
"Action": [ "sqs:SendMessage", "sqs:ReceiveMessage", "ec2:StartInstances", "iam:ChangePassword", "s3:GetObject" ]
```

Puede utilizar comodines de coincidencia de varios caracteres (`*`) y comodines de coincidencia de un solo carácter (`?`) para dar acceso a todas las acciones que ofrece el producto específico de AWS. Por ejemplo, el elemento `Action` siguiente se aplica a todas las acciones de S3.

```
"Action": "s3:*"
```

También puede utilizar comodines (`*` o `?`) como parte del nombre de la acción. Por ejemplo, el elemento `Action` siguiente se aplica a todas las acciones de IAM que contienen la cadena `AccessKey`, como `CreateAccessKey`, `DeleteAccessKey`, `ListAccessKeys` y `UpdateAccessKey`.

```
"Action": "iam:*AccessKey*"
```

Algunos servicios le permiten limitar las acciones que están disponibles. Por ejemplo, Amazon SQS le permite hacer que esté disponible solo un subconjunto de todas las acciones de Amazon SQS posibles. En ese caso, el comodín `*` no permite un control completo de la cola, simplemente permite únicamente el subconjunto de acciones que ha compartido. Para obtener más información, consulte [Explicación de permisos](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/acp-overview.html#PermissionTypes) en la *Guía del desarrollador de Amazon Simple Queue Service*.

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

`NotAction` es un elemento de política avanzada que hace coincidir explícitamente todo, *salvo* la lista de acciones especificada. El uso de `NotAction` puede traducirse en una política abreviada; se publican únicamente unas cuantas acciones que no deben coincidir, en vez de publicar una larga lista de acciones que sí coincidirán. Las acciones especificadas en `NotAction` no se ven afectadas por el efecto `Allow` o `Deny` de una declaración de política. Esto, a su vez, significa que todas las acciones o servicios aplicables que no están en la lista están permitidos cuando se usa el efecto `Allow`. Además, las acciones o servicios que no están en la lista se deniegan cuando se usa el efecto `Deny`. Cuando se utiliza `NotAction` con el elemento `Resource`, proporciona el ámbito de la política. Esta es la forma en que AWS determina qué acciones o servicios son aplicables. Para obtener más información, consulte la siguiente política de ejemplo. 

**NotAction con Allow** 

Puede utilizar el elemento `NotAction` en una instrucción con `"Effect": "Allow"` para proporcionar acceso a todas las acciones de un servicio de AWS, salvo las acciones especificadas en `NotAction`. Puede utilizarla con el elemento `Resource` para proporcionar el ámbito de la política, limitando las acciones permitidas a las acciones que puede llevar a cabo en el recurso especificado.

En el siguiente ejemplo se permite a los usuarios obtener acceso a todas las acciones de Amazon S3 que se pueden realizar en cualquier recurso de S3, *salvo* la eliminación de un bucket. Esta política además no permite acciones en otros servicios, ya que otras acciones de servicio no son aplicables a los recursos de S3.

```
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::*",
```

En ocasiones, es posible que desee permitir el acceso a un gran número de acciones. El elemento `NotAction` le permite invertir la instrucción, lo que se traducirá en una lista de acciones más corta. Por ejemplo, debido al gran número de servicios de AWS, es posible que desee crear una política que permita al usuario hacer todo salvo obtener acceso a acciones de IAM.

En el siguiente ejemplo se permite a los usuarios obtener acceso a todas las acciones de todos los servicios de AWS, salvo IAM.

```
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
```

Sea precavido al utilizar los elementos `NotAction` y `"Effect": "Allow"` en la misma instrucción o en otra instrucción de una misma política. `NotAction` hace coincidir todos los servicios y acciones que no se mencionan explícitamente en la lista o son aplicables al recurso especificado, lo que podría dar como resultado que se concediera a los usuarios más permisos de los que en realidad se pretendía.

**NotAction con Deny**

Puede utilizar el elemento `NotAction` en una instrucción con `"Effect": "Deny"` para denegar el acceso a todas los recursos de una lista, salvo las acciones especificadas en el elemento `NotAction`. Esta combinación no permite los elementos de la lista, pero deniega de forma explícita las acciones que no figuran en la lista. Debe seguir dando permiso las acciones que quiere permitir.

En el siguiente ejemplo condicional se deniega el acceso a las acciones no relacionadas con IAM cuando el usuario no ha iniciado la sesión con MFA. Si el usuario ha iniciado sesión con MFA, la condición `"Condition"` no se cumple y la instrucción `"Deny"` final no tiene efecto. Tenga en cuenta, sin embargo, que esto no supone conceder al usuario acceso a ninguna acción. Simplemente se deniegan explícitamente todas las acciones salvo las de IAM.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyAllUsersNotUsingMFA",
        "Effect": "Deny",
        "NotAction": "iam:*",
        "Resource": "*",
        "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
    }]
}
```

------

Para ver una política de ejemplo que deniegue el acceso a las acciones fuera de las regiones especificadas, excepto las acciones de servicios determinados, consulte [AWS: deniega el acceso a AWS en función de la región solicitada.](reference_policies_examples_aws_deny-requested-region.md).

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

El elemento `Resource` de una instrucción de política de IAM define el objeto o los objetos a los que se aplica la instrucción. Las instrucciones deben contener un elemento `Resource` o `NotResource`.

Especifica un recurso mediante un nombre de recurso de Amazon (ARN). El formato del ARN depende del Servicio de AWS y del recurso específico al que hace referencia. Si bien el formato del ARN varía, siempre se utiliza un ARN para identificar un recurso. Para obtener más información sobre el formato de los ARN, consulte [ARN de IAM](reference_identifiers.md#identifiers-arns). Para obtener información sobre cómo especificar un recurso, consulte la documentación del servicio para quiere escribir una instrucción.

**nota**  
Algunos Servicios de AWS no permiten especificar acciones para recursos individuales. En estos casos, cualquier acción que se enumere en el elemento `Action` o `NotAction` se aplica a todos los recursos de ese servicio. En ese caso, se utiliza el carácter comodín (`*`) en el elemento `Resource`.

El siguiente ejemplo hace referencia a una cola Amazon SQS específica.

```
"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"
```

El siguiente ejemplo hace referencia al usuario de IAM llamado `Bob` en una Cuenta de AWS.

**nota**  
En un elemento de `Resource`, el nombre de usuario de IAM distingue entre mayúsculas y minúsculas.

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob"
```

## Uso de comodines en ARN de recursos
<a name="reference_policies_elements_resource_wildcards"></a>

Puede utilizar caracteres comodín (`*` y `?`) en los segmentos individuales de un ARN (las partes separadas por dos puntos) para representar:
+ Cualquier combinación de caracteres (`*`)
+ Cualquier carácter simple (`?`)

Puede utilizar varios caracteres `*` o `?` de cada segmento. Si el comodín `*` es el último carácter en un segmento de ARN de recurso, puede expandirse para que coincida más allá de los límites de los dos puntos. Le recomendamos que utilice comodines (`*` y `?`) en los segmentos de ARN, separados por dos puntos.

**nota**  
No se puede utilizar un carácter comodín en el segmento de servicio que identifica el producto de AWS. Para obtener más información sobre segmentos de ARN, consulte [Identificar los recursos de AWS con nombres de recursos de Amazon (ARN)](reference-arns.md).

El siguiente ejemplo hace referencia a todos los usuarios de IAM cuya ruta es `/accounting`. 

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"
```

El siguiente ejemplo hace referencia a todos los elementos dentro de un bucket de Amazon S3 específico.

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
```

El carácter asterisco (`*`) puede expandirse para reemplazar todo dentro de un segmento, incluidos caracteres como una barra diagonal (`/`) que, de otro modo, podrían parecer delimitadores dentro de un espacio de nombres de servicio dado. Por ejemplo, considere el siguiente ARN de Amazon S3 como la misma lógica de expansión comodín que se aplica a todos los servicios.

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
```

Los comodines del ARN se aplican a todos los siguientes objetos del bucket, no solo al primer objeto de la lista.

```
amzn-s3-demo-bucket/1/test/object.jpg
amzn-s3-demo-bucket/1/2/test/object.jpg
amzn-s3-demo-bucket/1/2/test/3/object.jpg 
amzn-s3-demo-bucket/1/2/3/test/4/object.jpg
amzn-s3-demo-bucket/1///test///object.jpg
amzn-s3-demo-bucket/1/test/.jpg
amzn-s3-demo-bucket//test/object.jpg
amzn-s3-demo-bucket/1/test/
```

Considere los dos últimos objetos de la lista anterior. Un nombre de objeto de Amazon S3 puede comenzar o finalizar con el carácter de barra diagonal (`/`) que es delimitador convencional. Mientras que `/` funciona como delimitador, no hay ningún significado específico cuando este carácter se utiliza en un ARN de recurso. Se trata de la misma manera que a cualquier otro carácter válido. El ARN no coincidiría con los siguientes objetos:

```
amzn-s3-demo-bucket/1-test/object.jpg
amzn-s3-demo-bucket/test/object.jpg
amzn-s3-demo-bucket/1/2/test.jpg
```

## Especificación de varios recursos
<a name="reference_policies_elements_resource_multiple-resources"></a>

Puede especificar varios recursos en el elemento `Resource` mediante una matriz de ARN. El siguiente ejemplo hace referencia a dos tablas de DynamoDB.

```
"Resource": [
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/books_table",
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/magazines_table"
]
```

## Uso de variables de política en ARN de recursos
<a name="reference_policies_elements_resource_policy-variables"></a>

En el elemento `Resource`, puede utilizar [variables de política](reference_policies_variables.md) de JSON en la parte del ARN que identifica los recursos específicos (es decir, en la parte final del ARN). Por ejemplo, puede utilizar la clave `{aws:username}` como parte de un ARN de recurso para indicar que el nombre del usuario actual debe incluirse como parte del nombre del recurso. El siguiente ejemplo muestra cómo puede utilizar la clave `{aws:username}` en un elemento `Resource`. La política permite obtener acceso a una tabla de Amazon DynamoDB que coincide con el nombre de usuario actual.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "dynamodb:*",
        "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/${aws:username}"
    }
}
```

------

Para obtener más información sobre las variables de las políticas de JSON, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

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

`NotResource` es un elemento de política avanzada que coincide explícitamente con todos los recursos excepto los especificados. El uso de `NotResource` puede traducirse en una política más abreviada; se publican únicamente unos cuantos recursos que no deben coincidir, en vez de incluir una larga lista de recursos que sí coincidirán. Esto resulta especialmente útil para las políticas que se aplican en un único servicio de AWS. 

Por ejemplo, supongamos que tiene un grupo denominado `HRPayroll`. Los miembros de `HRPayroll` no deben tener permiso para obtener acceso a todos los recursos de Amazon S3, a excepción de la carpeta `Payroll` del bucket `HRBucket`. La política siguiente deniega de forma explícita el acceso a todos los recursos de Amazon S3 que no sean los recursos publicados en la lista. Tenga en cuenta, sin embargo, que esta política no concede al usuario acceso a ningún recurso.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:*",
    "NotResource": [
      "arn:aws:s3:::HRBucket/Payroll",
      "arn:aws:s3:::HRBucket/Payroll/*"
    ]
  }
}
```

------

Normalmente, para denegar explícitamente el acceso a un recurso debe escribir una política que utilice `"Effect":"Deny"` y que incluya un elemento `Resource` que enumere cada carpeta individualmente. Sin embargo, en dicho caso, cada vez que agregue una carpeta a `HRBucket` o agregue un recurso a Amazon S3; al que no se debe poder acceder, deberá agregar su nombre a la lista en el elemento `Resource`. Si, en su lugar, utiliza un elemento `NotResource`, se deniega automáticamente a los usuarios el acceso a las carpetas nuevas, salvo que añada los nombres de las carpetas al elemento `NotResource`. 

Cuando utilice `NotResource`, debe tener en cuenta que los recursos especificados en este elemento son los *únicos* recursos que no están limitados. Esto, a su vez, limita todos los recursos que se aplicarían a la acción. En el ejemplo anterior, la política solo afecta a las acciones de Amazon S3 y, por lo tanto, solo a los recursos de Amazon S3. Si el elemento `Action` también incluyera acciones de Amazon EC2, la política no denegaría el acceso a ninguno de los recursos de EC2 que no se especifiquen en el elemento `NotResource`. Para saber qué acciones de un servicio permiten especificar el ARN de un recurso, consulte [Acciones, recursos y claves de condición de los servicios de AWS](reference_policies_actions-resources-contextkeys.html).

## NotResource con otros elementos
<a name="notresource-element-combinations"></a>

**Nunca** debe utilizar los elementos `"Effect": "Allow"`, `"Action": "*"` y `"NotResource": "arn:aws:s3:::HRBucket"` de forma conjunta. Esta instrucción es muy peligrosa, ya que permite todas las acciones en AWS en todos los recursos excepto el bucket de S3 `HRBucket`. Esto incluso permitiría al usuario añadir una política a sí mismo que le permitiera obtener acceso a `HRBucket`. No lo haga. 

Sea precavido al utilizar los elementos `NotResource` y `"Effect": "Allow"` en la misma instrucción o en otra instrucción de una misma política. `NotResource` permite todos los servicios y recursos que no se mencionan explícitamente en la lista, lo que podría dar como resultado que se concediera a los usuarios más permisos de los que en realidad se pretendía. Con los elementos `NotResource` y `"Effect": "Deny"` en la misma declaración se deniegan los servicios y recursos que no se mencionan explícitamente.

# 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 | 

# Elementos de la política de IAM: variables y etiquetas
<a name="reference_policies_variables"></a>

Utilice las variables de las políticas de AWS Identity and Access Management (IAM) como marcadores de posición cuando no sepa el valor exacto de un recurso o una clave de condición al escribir la política.

**nota**  
Si AWS no puede resolver una variable, esto puede provocar que toda la declaración no sea válida. Por ejemplo, si utiliza la variable `aws:TokenIssueTime`, la variable se resuelve a un valor solo cuando el solicitante se ha autenticado mediante credenciales temporales (un rol de IAM). Para evitar que las variables causen declaraciones no válidas, utilice el [operador de condición IfExist.](reference_policies_elements_condition_operators.md#Conditions_IfExists)

**Topics**
+ [Introducción](#policy-vars-intro)
+ [Uso de variables en políticas](#policy-vars-using-variables)
+ [Etiquetas como variables de la política](#policy-vars-tags)
+ [Dónde puede utilizar variables de política](#policy-vars-wheretouse)
+ [Variables de política sin valor](#policy-vars-no-value)
+ [Información de la solicitud que puede utilizar para variables de políticas](#policy-vars-infotouse)
+ [Especificación de valores predeterminados](#policy-vars-default-values)
+ [Para obtener más información](#policy-vars-formoreinfo)

## Introducción
<a name="policy-vars-intro"></a>

En las políticas de IAM, hay muchas acciones que le permiten asignar un nombre para los recursos concretos cuyo acceso desea controlar. Por ejemplo, la siguiente política permite a los usuarios enumerar y escribir objetos en el bucket de S3 `amzn-s3-demo-bucket` para proyectos de `marketing`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["marketing/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/marketing/*"]
    }
  ]
}
```

------

Puede darse el caso de que no sepa el nombre exacto del recurso cuando escribe la política. Es posible que le interese generalizar la política de modo que se adapte a muchos usuarios sin necesidad de realizar una única copia de la política para cada usuario. En lugar de crear una política independiente para cada usuario, le recomendamos que cree una única política de grupo que sirva para todos los usuarios de ese grupo. 

## Uso de variables en políticas
<a name="policy-vars-using-variables"></a>

Puede definir valores dinámicos dentro de las políticas mediante *variables de política* que establezcan marcadores de posición en una política.

Las variables se marcan mediante un prefijo **`$`** seguido de un par de llaves (**`{ }`**) que incluyen el nombre de la variable del valor de la solicitud.

Cuando se evalúa una política, las variables de la política se sustituyen por valores procedentes de las claves de contexto condicionales pasadas en la solicitud. Las variables se pueden usar en [políticas basadas en identidades, políticas de recursos, políticas de control de servicios, políticas de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) y [políticas de punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html). Las políticas basadas en identidades que se utilizan como límites de permisos también admiten variables de política. 

Las claves de contexto de condición global se pueden utilizar como variables en las solicitudes en los servicios de AWS. Las claves de condición específicas del servicio también se pueden usar como variables al interactuar con los recursos de AWS, pero solo están disponibles cuando se realizan solicitudes a los recursos que las admiten. Para obtener una lista de las claves de contexto disponibles para cada servicio y recurso de AWS, consulte la [https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html). En determinadas circunstancias, no puede rellenar las claves de contexto de condición global con un valor. Para obtener más información sobre cada clave, consulte [Claves de contexto de condición global de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).

**importante**  
Los nombres de clave no distinguen entre mayúsculas y minúsculas. Por ejemplo, `aws:CurrentTime` equivale a `AWS:currenttime`.
Puede utilizar cualquier clave de condición de valor único como variable. No se puede utilizar una clave de condición multivalor como variable.

En el siguiente ejemplo, se muestra una política para un usuario o rol de IAM que reemplaza un nombre de recurso específico con una variable de política. Puede reutilizar esta política si utiliza la clave de condición `aws:PrincipalTag`. Cuando se evalúa esta política, `${aws:PrincipalTag/team}` permite la acción solo si el nombre del bucket termina con un nombre de equipo de la etiqueta de entidad principal `team`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["${aws:PrincipalTag/team}/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/team}/*"]
    }
  ]
}
```

------

La variable se marca con un prefijo `$` seguido de un par de llaves (`{ }`). Dentro de los caracteres `${ }`, se puede incluir el nombre del valor de la solicitud que quiere utilizar en la política. Los valores que puede utilizar se tratan más adelante en esta página.

Para obtener más información sobre esta clave de condición global, consulte [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag) en la lista de claves de condición globales.

**nota**  
Para poder utilizar las variales de políticas debe incluir el `Version` el elemento en una declaración, y la versión debe ser una que admita las variables de la política. Variables se introdujeron en la versión `2012-10-17`. Las versiones anteriores del lenguaje de políticas no son compatibles con las variables de políticas. Si no incluye el elemento `Version` ni lo establece en la fecha correspondiente a esta versión, las variables como `${aws:username}` se tratarán como cadenas literales en la política.   
El elemento de política `Version` es diferente de la versión de una política. El elemento de política `Version` se utiliza en una política y define la versión del lenguaje de la política. Una versión de política, por otro lado, se crea al cambiar una política administrada por el cliente en IAM. La política modificada no anula la política existente. En cambio, IAM crea una nueva versión de la política administrada. Para obtener más información sobre el elemento de política `Version`, consulte [Elementos de política JSON de IAM: Version](reference_policies_elements_version.md). Para obtener más información sobre las versiones de política, consulte [Control de versiones de políticas de IAM](access_policies_managed-versioning.md).

Una política que permite a una entidad principal obtener objetos de la ruta /David de un bucket de S3 tiene el siguiente aspecto:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/David/*"
      ]
    }
  ]
}
```

------

Si utiliza una política que se ha adjuntado al usuario `David`, dicho usuario obtiene objetos de su propio bucket de S3, pero usted tendrá que crear una política individual para cada usuario que incluya el nombre del usuario. Después, tendrá que asociar cada política a los usuarios individuales.

Si utiliza una variable de política, puede crear políticas reutilizables. La siguiente política permite al usuario obtener objetos de un bucket de Amazon S3 si el valor de la clave de etiqueta `aws:PrincipalTag` coincide con el valor de la clave de etiqueta `owner` introducido en la solicitud. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "AllowUnlessOwnedBySomeoneElse",
    "Effect": "Allow",
    "Action": ["s3:GetObject"],    
    "Resource": ["*"],
    "Condition": {
        "StringEquals": {
          "s3:ExistingObjectTag/owner": "${aws:PrincipalTag/owner}"
        }
      }
    }
  ]
}
```

------

Cuando utiliza una variable de política en lugar de un usuario de este tipo, no tiene que tener una política independiente para cada usuario individual. En el siguiente ejemplo, la política se adjunta a un rol de IAM que asumen los gerentes de producto mediante credenciales de seguridad temporales. Cuando un usuario solicita agregar un objeto de Amazon S3, IAM sustituye el valor de etiqueta `dept` de la solicitud actual por la variable `${aws:PrincipalTag}` y evalúa la política. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOnlyDeptS3Prefix",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/dept}/*"
            ]
        }
    ]
}
```

------

## Etiquetas como variables de la política
<a name="policy-vars-tags"></a>

En algunos servicios de AWS puede asociar sus propios atributos personalizados a los recursos creados por dichos servicios. Por ejemplo, puede aplicar etiquetas a buckets de Amazon S3 o a usuarios de IAM. Estas etiquetas son pares clave-valor. Puede definir el nombre de la clave de la etiqueta y el valor que es asociado a dicho nombre de clave. Podría, por ejemplo, crear una etiqueta con una clave **department** y un valor **Human Resources**. Para obtener más información sobre la etiquetación de entidades de IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md). Para obtener información acerca de cómo etiquetar recursos creados por otros servicios de AWS, consulte la documentación de dicho servicio. Para obtener más información acerca de cómo utilizar Tag Editor, consulte [Uso de Tag Editor](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html) en la *Guía del usuario de Consola de administración de AWS*.

Puede etiquetar recursos de IAM para simplificar la detección, la organización y el seguimiento de recursos de IAM. También puede etiquetar identidades de IAM para controlar el acceso a recursos o para el etiquetado en sí. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md). 

## Dónde puede utilizar variables de política
<a name="policy-vars-wheretouse"></a>

 Puede utilizar variables de política en el elemento `Resource` y en la comparación de cadenas en el elemento `Condition`.

### Elemento de recurso
<a name="policy-vars-resourceelement"></a>

Puede utilizar una variable de política en el elemento `Resource`, pero solo en la parte de recurso del ARN. Esta parte del ARN aparece después de los quintos dos puntos (:). No puede utilizar una variable para reemplazar partes del ARN antes de los quintos dos puntos, como el servicio o la cuenta. Para obtener más información sobre el formato del ARN, consulte [ARN de IAM](reference_identifiers.md#identifiers-arns).

Para reemplazar parte de un ARN por un valor de etiqueta, incluya el prefijo y el nombre de clave entre `${ }`. Por ejemplo, el siguiente elemento de recurso se refiere únicamente a un bucket que tiene el mismo nombre que el valor en la solicitud de la etiqueta de departamento del usuario.

`"Resource": ["arn:aws::s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/department}"]`

Muchos recursos de AWS utilizan ARN que contienen un nombre creado por el usuario. La siguiente política de IAM garantiza que solo los usuarios previstos con valores de etiquetas de acceso, proyecto, aplicación y entorno de acceso coincidentes puedan modificar sus recursos. Además, al utilizar [coincidencias con caracteres comodín \$1](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html), pueden permitir sufijos de nombres de recursos personalizados. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessBasedOnArnMatching",
      "Effect": "Allow",
      "Action": [
        "sns:CreateTopic",
        "sns:DeleteTopic"],      
      "Resource": ["arn:aws:sns:*:*:${aws:PrincipalTag/access-project}-${aws:PrincipalTag/access-application}-${aws:PrincipalTag/access-environment}-*"
      ]
    }
  ]
}
```

------

### Elemento de condición
<a name="policy-vars-conditionelement"></a>

Puede utilizar una variable de política para valores de `Condition` en cualquier condición que involucre a los operadores de cadena o a los operadores ARN. Los operadores de cadena incluyen `StringEquals`, `StringLike` y `StringNotLike`. Los operadores ARN incluyen `ArnEquals` y `ArnLike`. No se puede utilizar una variable de política con otros operadores como operadores `Numeric`, `Date`, `Boolean`, `Binary`, `IP Address` o `Null`. Para obtener más información acerca de los operadores de condición, consulte [Elementos de la política de JSON de IAM: operadores de condición](reference_policies_elements_condition_operators.md).

Al hacer referencia a una etiqueta en una expresión del elemento `Condition`, utilice el prefijo y el nombre de la clave pertinentes como clave de condición. A continuación, utilice el valor que desea probar en el valor de condición.

Por ejemplo, el siguiente ejemplo de política permite el acceso completo a recursos, solo si la etiqueta `costCenter` se ha asociado al usuario. La etiqueta también debe tener un valor de `12345` o `67890`. Si la etiqueta no tiene ningún valor o tiene algún otro valor, se producirá un error en la solicitud.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "iam:*user*"
       ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "iam:ResourceTag/costCenter": [ "12345", "67890" ]
        }
      }
    }
  ]
}
```

------

## Variables de política sin valor
<a name="policy-vars-no-value"></a>

Cuando las variables de política hacen referencia a una clave de contexto de condición que no tiene ningún valor o no está presente en el contexto de autorización de una solicitud, el valor es efectivamente nulo. No hay un valor igual o similar. Es posible que las claves de contexto de condición no estén presentes en el contexto de autorización cuando:
+ Utiliza claves de contexto de condición específicas del servicio en las solicitudes a recursos que no admiten esa clave de condición.
+ Las etiquetas de las entidades principales, las sesiones, los recursos o las solicitudes de IAM no están presentes.
+ Se presentan otras circunstancias, tal como se enumeran para cada contexto de condición global en [Claves de contexto de condición globales de AWS](reference_policies_condition-keys.md).

Cuando utiliza una variable sin valor en el elemento de condición de una política de IAM, [Elementos de la política de JSON de IAM: operadores de condición](reference_policies_elements_condition_operators.md) como `StringEquals` o `StringLike` no coinciden y la instrucción de política no entra en vigor.

Los operadores de condición invertida como `StringNotEquals` o `StringNotLike` coinciden con un valor nulo, ya que el valor de la clave de condición con la que están realizando la prueba no es igual o similar al valor realmente nulo.

En el siguiente ejemplo, `aws:principaltag/Team` debe ser igual a `s3:ExistingObjectTag/Team` para permitir el acceso. El acceso se deniega explícitamente cuando `aws:principaltag/Team` no está configurado. Si se utiliza una variable que no tiene ningún valor en el contexto de autorización como parte del elemento `Resource` o `NotResource` de una política, el recurso que incluye una variable de política sin valor no coincidirá con ningún recurso.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
    "Effect": "Deny", 
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
      "StringNotEquals": {
        "s3:ExistingObjectTag/Team": "${aws:PrincipalTag/Team}"
       }
      }
    }
  ]
}
```

------

## Información de la solicitud que puede utilizar para variables de políticas
<a name="policy-vars-infotouse"></a>

 Puede utilizar el elemento `Condition` de una política JSON para comparar las claves de la [solicitud de contexto](reference_policies_evaluation-logic_policy-eval-reqcontext.md) con los valores de claves que especifique en su política. Cuando se utiliza una variable de política, AWS sustituye un valor de la clave de contexto de solicitud en lugar de la variable de su política.

### Valores clave principales
<a name="principaltable"></a>

Los valores de `aws:username`, `aws:userid` y `aws:PrincipalType` dependen del tipo de principal que inició la solicitud. Por ejemplo, la solicitud podría realizarse con las credenciales de un usuario de IAM, un rol de IAM o el Usuario raíz de la cuenta de AWS. La tabla siguiente muestra los valores de estas claves para diferentes tipos de entidades principales. 


****  

| Principal | `aws:username` | `aws:userid` | `aws:PrincipalType` | 
| --- | --- | --- | --- | 
| Usuario raíz de la cuenta de AWS | (ausente) | Cuenta de AWSID de  | Account | 
| Usuario de IAM | Nombre-usuario-IAM | [ID único](reference_identifiers.md#identifiers-unique-ids) | User | 
| Entidad principal de usuario federado de AWS STS | (ausente) | cuenta:nombre-especificado-por-intermediario | FederatedUser | 
| Entidad principal federada de OIDC Para obtener más información acerca de las claves de la política que están disponibles cuando usa la federación de identidades web, consulte [Claves disponibles para las federaciones de identidades AWS de OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).  | (ausente) |   *role-id*:*caller-specified-role-name*  donde `role-id` es el [identificador exclusivo del rol](reference_identifiers.md#identifiers-unique-ids) y el nombre del rol especificado por el intermediario se indica mediante el [parámetro RoleSessionName](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AssumeRole.html#API_AssumeRoleWithWebIdentity_RequestParameters) pasado a la solicitud AssumeRoleWithWebIdentity.  | AssumedRole | 
| Entidad principal federada de SAML Para obtener más información acerca de las claves de política que están disponibles cuando usa la federación SAML, consulte [Identificación única de los usuarios en la federación basada en SAML](id_roles_providers_saml.md#CreatingSAML-userid).  | (ausente) |  *role-id*:*caller-specified-role-name* donde el `role-id` es el [id exclusivo del rol](reference_identifiers.md#identifiers-unique-ids) y el nombre-de-rol-especificado-por-intermediario se especifica mediante el elemento Attribute con el [nombre de atributo](id_roles_providers_create_saml_assertions.md) establecido en https://aws.amazon.com/SAML/attributes/RoleSessionName.  | AssumedRole | 
| Rol asumido | (ausente) |  *role-id*:*caller-specified-role-name* donde `role-id` es el [identificador exclusivo del rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) y el nombre del rol especificado por el intermediario se indica mediante el [parámetro RoleSessionName](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters) pasado a la solicitud AssumeRole.  | AssumedRole | 
| Rol asignado a una instancia de Amazon EC2 | (ausente) |  *id-rol*:*id-instancia-ec2* donde `role-id` es el [identificador exclusivo del rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) y ec2-instance-id es el [identificador exclusivo de la instancia EC2](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html).  | AssumedRole | 
| Persona que llama de manera anónima (Amazon SQS, Amazon SNS y Amazon S3) | (ausente) | anonymous | Anonymous | 

Para los elementos de esta tabla , lista tenga en cuenta lo siguiente:
+ *ausente* significa que el valor actual no está en la información de solicitud actual y que cualquier intento de asociarlo dará un error y hará que la declaración no sea válida. 
+ *id-rol* es un identificador exclusivo asignado a cada rol en el momento de su creación. Puede visualizar el ID de rol con el comando de AWS CLI: `aws iam get-role --role-name rolename`
+ *nombre-especificado-por-intermediario* y *nombre-de-rol-especificado-por-intermediario* son nombres (como una aplicación o un servicio) que el proceso de llamada transmite cuando realiza una llamada para obtener credenciales temporales.
+ *id-instancia-ec2* es un valor asignado a la instancia cuando esta se lanza y aparece en la página **Instancias** de la consola de Amazon EC2. También puede mostrar el ID de instancia ejecutando el comando de AWS CLI: `aws ec2 describe-instances`

### Información disponible en las solicitudes para entidades principales federadas
<a name="policy-vars-infoWIF"></a>

Las entidades principales federadas son usuarios autenticados mediante un sistema distinto de IAM. Por ejemplo, una empresa puede tener una aplicación para su uso interno que realiza llamadas a AWS. Puede ser poco práctico dar una identidad de IAM a todos los usuarios de la empresa que usen la aplicación. En lugar de ello, la empresa puede utilizar una aplicación proxy (nivel intermedio) que tenga una única identidad de IAM o la empresa puede utilizar un proveedor de identidades (IdP) SAML. La aplicación proxy o el proveedor de identidades SAML autentican a usuarios individuales que utilizan la red corporativa. Una aplicación proxy puede, pues, utilizar su identidad de IAM para obtener credenciales de seguridad temporales para usuarios individuales. Un proveedor de identidades SAML puede efectivamente intercambiar información de identidad para credenciales de seguridad temporales de AWS. En ese caso, las credenciales temporales pueden utilizarse para obtener acceso a los recursos de AWS. 

Del mismo modo, puede crear una aplicación para un dispositivo móvil en el que la aplicación necesite obtener acceso a recursos de AWS. En ese caso, puede utilizar las *federaciones OIDC*, donde la aplicación autentifica al usuario mediante un proveedor de identidades popular como Inicio de sesión con Amazon, Amazon Cognito, Facebook o Google. Entonces, la aplicación puede utilizar la información de autenticación del usuario de estos proveedores para obtener credenciales de seguridad temporales para obtener acceso a recursos de AWS. 

La manera recomendada de utilizar las federaciones OIDC consiste en aprovechar Amazon Cognito y los SDK para móviles de AWS. Para obtener más información, consulte lo siguiente:
+ [Guía del usuario de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) 
+ [Escenarios habituales en las credenciales temporales](id_credentials_temp.md#sts-introduction)

### Caracteres especiales
<a name="policy-vars-specialchars"></a>

Hay algunas variables de política predefinidas especiales que tienen valores fijos que le permiten representar caracteres que, de otro modo, tendrían un significado especial. Si estos caracteres especiales forman parte de la cadena que intenta hacer corresponder y se insertan literalmente, es posible que se interpreten erróneamente. Por ejemplo, insertar un \$1 asterisco en la cadena se interpretaría como un comodín que coincide con cualquier carácter, salvo un \$1 literal. En estos casos puede utilizar las variables de política predefinidas siguientes:
+ **\$1\$1\$1\$1** - debe utilizarse cuando se necesite un carácter \$1 (asterisco).
+ **\$1\$1?\$1** - debe utilizarse cuando se necesite carácter ? (signo de interrogación).
+ **\$1\$1\$1\$1** - debe utilizarse cuando necesite un carácter \$1 (signo de dólar).

Estas variables de política predefinida se pueden utilizar en todas las cadenas donde pueda utilizar variables de política estándar.

## Especificación de valores predeterminados
<a name="policy-vars-default-values"></a>

Para agregar un valor predeterminado a una variable, rodee el valor predeterminado entre comillas simples (`' '`), y separe el texto de la variable y el valor predeterminado con una coma y un espacio (`, `).

Por ejemplo, si una entidad principal está etiquetada con `team=yellow`, puede acceder al bucket de Amazon S3 de `ExampleCorp's` llamado `amzn-s3-demo-bucket-yellow`. Una política con este recurso permite a los miembros del equipo acceder al bucket su equipo, pero no al de otros equipos. Para los usuarios sin etiquetas de equipo, establece un valor predeterminado de `company-wide` para el nombre del bucket. Estos usuarios solo pueden acceder al bucket de `amzn-s3-demo-bucket-company-wide` en el que pueden ver información amplia, como instrucciones para unirse a un equipo.

```
"Resource":"arn:aws:s3:::amzn-s3-demo-bucket-${aws:PrincipalTag/team, 'company-wide'}"
```

## Para obtener más información
<a name="policy-vars-formoreinfo"></a>

Para obtener más información acerca de las políticas, consulte los siguientes temas: 
+  [Políticas y permisos en AWS Identity and Access Management](access_policies.md) 
+  [Ejemplos de políticas basadas en identidad de IAM](access_policies_examples.md) 
+  [Referencia de los elementos de la política de JSON de IAM](reference_policies_elements.md) 
+  [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md) 
+  [Federación OIDC](id_roles_providers_oidc.md)

# Elementos de la política de JSON de IAM: tipos de datos compatibles
<a name="reference_policies_elements_datatypes"></a>

En esta sección se presentan los tipos de datos que son compatibles al especificar valores en las políticas de JSON. El lenguaje de política no admite todos los tipos de elementos de política. Para obtener información sobre cada elemento, consulte las secciones anteriores.
+ Cadenas
+ Números (Ints y Floats)
+ Booleano
+ Nulo
+ Listas
+ Mapas
+ Structs (que son simplemente Maps anidados)

En la siguiente tabla se relaciona cada tipo de datos a su serialización. Tenga en cuenta que todas las políticas deben estar en UTF-8. Para obtener información sobre los tipos de datos JSON, diríjase a [RFC 4627](https://datatracker.ietf.org/doc/html/rfc4627).


****  

| Tipo | JSON | 
| --- | --- | 
|  Cadena  |  Cadena  | 
|  Entero  |  Número  | 
|  Flotante  |  Número  | 
|  Booleano  |  true false  | 
|  Nulo  |  null  | 
|  Date  |  String que cumple con [W3C Profile of ISO 8601](http://www.w3.org/TR/NOTE-datetime)  | 
|  IpAddress  |  String que cumple con [RFC 4632](https://datatracker.ietf.org/doc/html/rfc4632)  | 
|  Enumeración  |  Matriz  | 
|  Objeto  |  Objeto  | 