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.
Tópicos
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.
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.
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" ] } } } ] }