AWS Identity and Access Management
Guía del usuario

Elementos de política JSON de IAM: Condition

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 booleanos (igual, menor que, etc.) para asignar la condición de la política a los valores de la solicitud. Por ejemplo, puede usar la fecha o la dirección IP del solicitante en el valor de la condición. Algunos servicios le permiten especificar otros valores en las condiciones; por ejemplo, Amazon EC2 le permite escribir una condición utilizando la clave ec2:InstanceType, que es única para dicho servicio.

Los nombres de las claves de condición no distinguen entre mayúsculas y minúsculas. Por ejemplo, la inclusión de la clave de condición 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 condición depende del operador de condición que utilice. Por ejemplo, la siguiente condición incluye el operador StringEquals para garantizar que únicamente coincidan las solicitudes realizadas por johndoe. A los usuarios denominados JohnDoe se les niega el acceso.

"Condition" : { "StringEquals" : { "aws:username" : "johndoe" }}

La siguiente condición utiliza el operador StringEqualsIgnoreCase para que coincida con los usuarios johndoe o JohnDoe.

"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "johndoe" }}

Algunas de las claves de condición 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 condición global aws:RequestTag/tag-key, AWS KMS kms:EncryptionContext:encryption_context_key y la clave de condición ResourceTag/tag-key compatibles con varios servicios. Si utiliza la clave de condición ResourceTag/tag-key para un servicio como Amazon EC2, 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 "ec2: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 ambas. Puede que los servicios de AWS que admiten estos atributos le permitan crear varios nombres de clave que únicamente se diferencian por las mayúsculas y las minúsculas. Un ejemplo es el etiquetado de una instancia Amazon EC2 con foo=bar1 y Foo=bar2. Cuando se utiliza una condición como "ec2:ResourceTag:Foo": "bar1" 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

Le recomendamos 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 condición aws:TagKeys para el etiquetado, o kms:EncryptionContextKeys para el contexto de cifrado AWS KMS.

El bloque de condición

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

"Condition": { "DateGreaterThan" : { "aws:CurrentTime" : "2013-12-15T12:00:00Z" } }

Un valor de la solicitud está representado por una clave, en este caso aws:CurrentTime. El valor de la clave se compara con un valor que se especifica como valor literal (2013-08-16T12:00:00Z) o como una variable de la política, tal y como se explica más adelante. El tipo de comparación que debe realizarse se especifica con el operador de condición (aquí, DateGreaterThan). Puede crear condiciones para comparar cadenas, fechas, números, etc., utilizando comparaciones booleanas típicas como igual, superior a e inferior a.

En determinadas circunstancias, las claves 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 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 usando un conjunto de operadores del elemento Condition. Para obtener más información, consulte Creación de una condición con varias claves o valores.

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.

Varios valores en un elemento Condition

Un elemento Condition puede contener varias condiciones y cada una de ellas puede contener, a su vez, varios pares de clave-valor. La siguiente figura ilustra este caso.

Para obtener más información, consulte Creación de una condición con varias claves o valores.

En esta página: