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, 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, você pode marcar recursos do na AWS. As tags de recurso são armazenadas como pares de chave-valor de tag. Uma chave de tag de recurso pode ter um único valor de tag. Portanto, 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, você pode marcar recursos na AWS e incluir vários pares de chave-valor de tag em uma 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 no seguinte formato: um prefixo ArrayOf seguido pelo tipo de categoria do operador de condição. Por exemplo, o ArrayOfString ou o 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. Você não pode usar uma chave de contexto de múltiplos valores como variável de política. Para obter mais informações sobre variáveis de política, consulte Elementos de política do IAM: variáveis e etiquetas.

As chaves de contexto de múltiplos valores exigem operadores de conjunto de condições ForAllValues ou ForAnyValue. Chaves de contexto que incluem pares de chave-valor, como aws:RequestTag/tag-key e aws:ResourceTag/tag-key, podem causar confusão porque podem haver múltiplos valores de tag-key. Porém, como cada tag-key pode ter apenas um valor, aws:RequestTag e aws:ResourceTag são 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 para que você possa testar 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. Vários valores de chave de condição devem ser colocados entre colchetes, como 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á verdadeiro 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á verdadeiro 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 verdadeiros, você pode incluir o operador de condição Null em sua política com um valor falso 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 porque ele pode ser excessivamente permissivo se chaves de contexto ausentes ou chaves de contexto com valores vazios no contexto da solicitação forem inesperadas. Você pode incluir o operador de condição Null na política com um valor falso 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á como verdadeiro se qualquer um dos valores na solicitação corresponder a algum dos valores na política. A condição retornará como falsa 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.