Chaves de contexto de valor único vs. de múltiplos valores - AWS Identity and Access Management

Chaves de contexto de valor único vs. de múltiplos valores

A diferença entre as chaves de contexto de valor único e as de múltiplos valores depende do número de valores do contexto da solicitação, e não do número de valores na condição da política.

  • Chaves de contexto de condição de valor único têm no máximo um valor no contexto de autorização. Por exemplo, quando você marca recursos na AWS, cada tag de recurso é armazenada como um par de chave-valor. Como uma chave de tag de recurso só pode ter um único valor de tag, aws:ResourceTag/tag-key é uma chave de contexto de valor único. Não use um operador de conjunto de condição com uma chave de condição de valor único.

  • As chaves de contexto de condição de múltiplos valores podem ter múltiplos valores no contexto da solicitação. Por exemplo, ao marcar recursos na AWS, você pode incluir vários pares de chave-valor de tag em uma única solicitação. Portanto, aws:TagKeys é uma chave de contexto de valores múltiplos. As chaves de contexto de múltiplos valores exigem um operador de conjunto de condições.

Importante

As chaves de contexto de múltiplos valores exigem um operador de conjunto de condições. Não use operadores de conjuntos de condição ForAllValues ou ForAnyValue com chaves de condição de valor único. Para saber mais sobre operadores de conjunto de condições, consulte Chaves de contexto de múltiplos valores.

As classificações Valor único e Valores múltiplos constam na descrição de cada chave de contexto de condição como Tipo de valor no tópico Chaves de contexto de condição globais da AWS. A Referência de autorização de serviço usa uma classificação de tipo de valor diferente para chaves de contexto de múltiplos valores: um prefixo ArrayOf seguido pelo tipo de categoria do operador de condição, como ArrayOfString ou ArrayOfARN.

Por exemplo, uma solicitação pode ser originada em até um endpoint da VPC. Logo, aws:SourceVpce é uma chave de contexto de valor único. Como um serviço pode ter mais de um nome de entidade principal de serviço pertencente ao serviço, aws:PrincipalServiceNamesList é uma chave de contexto de múltiplos valores.

É possível usar qualquer chave de contexto de valor único disponível como variável de política, mas não é possível fazer isso com uma chave de contexto de múltiplos valores. Para obter mais informações sobre variáveis de política, consulte Elementos de política do IAM: variáveis e etiquetas.

Ao usar chaves de contexto que incluem pares de chave-valor, é importante observar que, embora possa haver vários valores de tag-chave, cada tag-key pode ter apenas um valor. Portanto, aws:RequestTag e aws:ResourceTag são ambas chaves de contexto de valor único. O uso de operadores de conjunto de condições com chaves de contexto de valor único pode levar a políticas excessivamente permissivas.

Chaves de contexto de múltiplos valores

Para comparar sua chave de contexto de condição com uma chave de contexto de solicitação com múltiplos valores de chave, você deve usar os operadores de conjunto ForAllValues ou ForAnyValue. Esses operadores de conjuntos são usados para comparar dois conjuntos de valores, como o conjunto de etiquetas em uma solicitação e o conjunto de etiquetas em uma condição de política.

Os qualificadores ForAllValues e ForAnyValue adicionam a funcionalidade de operação de conjunto ao operador da condição, permitindo que você teste chaves de contexto da solicitação em relação a múltiplos valores de chave de contexto em uma condição de política. Além disso, se você incluir uma chave de contexto de string de múltiplos valores na política com um curinga ou uma variável, também deverá usar o operador de condição StringLike. Os diferentes valores de chaves de condição devem ser colocados entre colchetes, como em uma matriz, por exemplo "Key2":["Value2A", "Value2B"].

  • ForAllValues: esse qualificador testa se o valor de cada membro do conjunto de solicitações é um subconjunto do conjunto de chaves de contexto de condição. A condição retornará true se cada valor de chave de contexto na solicitação corresponder a pelo menos um valor de chave de contexto na política. Também retornará true se não houver chaves de contexto na solicitação ou se o valor da chave de contexto for resolvido para um conjunto de dados nulo, como uma string vazia. Para evitar que chaves de contexto ausentes ou chaves de contexto com valores vazios sejam avaliadas como true, você pode incluir o operador de condição Null em sua política com um valor false para verificar se a chave de contexto existe e se seu valor não é nulo.

    Importante

    Tenha cuidado ao usar ForAllValues com um efeito Allow, pois ele pode ser excessivamente permissivo se chaves de contexto ausentes ou chaves de contexto com valores vazios no contexto da solicitação forem inesperadas. É possível incluir o operador de condição Null na política com um valor false para verificar se a chave de contexto existe e se seu valor não é nulo. Para ver um exemplo, consulte Controlar o acesso com base em chaves de tag.

  • ForAnyValue: esse qualificador testa se pelo menos um membro do conjunto de valores da chave de contexto da solicitação corresponde a pelo menos um membro do conjunto de valores da chave de contexto de sua condição de política. A chave de contexto retornará true se qualquer um dos valores na solicitação corresponder a algum dos valores na política. A condição retornará false se nenhuma chave de contexto corresponder ou se houver um conjunto de dados nulo.

nota

A diferença entre as chaves de contexto de valor único e as de múltiplos valores depende do número de valores do contexto da solicitação, não do número de valores na condição da política.