Condições com múltiplas chaves ou valores de contexto - AWS Identity and Access Management

Condições com múltiplas chaves ou valores de contexto

Você pode usar o elemento Condition de uma política para testar múltiplas chaves de contexto ou múltiplos valores para uma única chave de contexto em uma solicitação. Quando você faz uma solicitação para a AWS, de forma programada ou pelo AWS Management Console, ela inclui informações sobre o seu principal, operação, tags e muito mais. Use chaves de contexto para testar os valores das correspondentes na solicitação, com as chaves de contexto especificadas na condição da política. Para obter mais sobre informações e saber mais sobre os dados incluídos em uma solicitação, consulte O contexto da solicitação.

Lógica de avaliação para múltiplas chaves de contexto ou valores

Um elemento Condition pode conter múltiplos operadores de condição, e cada operador de condição pode conter múltiplos pares de chave-valor de contexto. A maioria das chaves de contexto oferece suporte ao uso de múltiplos valores, a menos que especificado de outra forma.

  • Se a instrução de política tiver múltiplos operadores de condição, os operadores de condição serão avaliados usando uma lógica AND.

  • Se sua instrução de política tiver múltiplas chaves de contexto anexadas a um único operador de condição, as chaves de contexto serão avaliadas usando um AND lógico.

  • Se um único operador de condição incluir múltiplos valores para uma chave de contexto, esses valores serão avaliados usando um OR lógico.

  • Se um único operador de condição com correspondência negada incluir múltiplos valores para uma chave de contexto, esses valores serão avaliados usando um NOR lógico.

Todas as chaves de contexto de um bloco de elementos de condição devem ser resolvidas como verdadeiro para invocar o efeito Allow ou Deny desejado. A figura a seguir ilustra a lógica de avaliação de uma condição com múltiplos operadores de condição e pares de chave-valor de contexto.


        Bloco condicional demonstrando como AND e OR são aplicados a múltiplos valores e chaves de contexto

Por exemplo, a política de bucket do S3 a seguir ilustra como a figura anterior é representada em uma política. O bloco de condições inclui os operadores condicionais StringEquals e ArnLike e as chaves de contexto aws:PrincipalTag e aws:PrincipalArn. Para invocar o efeito Allow ou Deny desejado, todas as chaves de contexto de um bloco de condições devem ser resolvidas como verdadeiro. O usuário que faz a solicitação deve ter ambas as chaves de tag da entidade principal, departamento e função, que incluem um dos valores de chave de tag especificados na política. Além disso, o ARN da entidade principal do usuário que faz a solicitação deve corresponder a um dos valores aws:PrincipalArn especificados na política a serem avaliados como verdadeiro.

{ "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 avaliação para os operadores de conjuntos de condições com correspondência negada

Alguns operadores de condição, como StringNotEquals ou ArnNotLike, usam a correspondência negada para comparar os pares de chave-valor de contexto em sua política com os pares de chave-valor de contexto em uma solicitação. Quando múltiplos valores são especificados para uma chave de contexto única em uma política com operadores de condição de correspondência negados, as permissões efetivas funcionam como um NOR lógico. Na correspondência negada, um NOR ou NOT OR lógico retornará verdadeiro somente se todos os valores forem avaliados como falsos.

A figura a seguir ilustra a lógica de avaliação de uma condição com múltiplos operadores de condição e pares de chave-valor de contexto. A figura contém um operador de condição de correspondência negado para a chave de contexto 3.


        Bloco de condição mostrando como AND e OR são aplicados a múltiplas chaves e valores de contexto quando se utiliza um operador de condição de correspondência negado

Por exemplo, a política de bucket do S3 a seguir ilustra como a figura anterior é representada em uma política. O bloco de condições inclui os operadores condicionais StringEquals e ArnNotLike e as chaves de contexto aws:PrincipalTag e aws:PrincipalArn. Para invocar o efeito Allow ou Deny desejado, todas as chaves de contexto de um bloco de condições devem ser resolvidas como verdadeiro. O usuário que faz a solicitação deve ter ambas as chaves de tag da entidade principal, departamento e função, que incluem um dos valores de chave de tag especificados na política. Como o operador de condição ArnNotLike usa correspondência negada, o ARN da entidade principal do usuário que faz a solicitação não deve corresponder a nenhum dos valores aws:PrincipalArn especificados na política a serem avaliados como verdadeiros.

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