Condiciones con varias claves de contexto o valores - AWS Identity and Access Management

Condiciones con varias claves de contexto o valores

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 AWS Management Console, 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.

Lógica de evaluación para varias claves de contexto o valores

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

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.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::DOC-EXAMPLE-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" ] } } } ] }

Lógica de evaluación de los operadores de condición con coincidencia negada

Algunos operadores de condición, 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

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.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::DOC-EXAMPLE-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" ] } } } ] }