Chaves de contexto de condição globais da AWS - AWS Identity and Access Management

Chaves de contexto de condição globais da AWS

Quando um principal faz uma solicitação à AWS, a AWS reúne as informações da solicitação em um contexto de solicitação. É possível usar o elemento Condition de uma política JSON para comparar chaves no contexto da solicitação com os valores de chave especificados em sua política. Para saber mais sobre as circunstâncias em que uma chave global é incluída no contexto da solicitação, consulte as informações da Disponibilidade de cada chave de condição global. Para obter informações sobre como usar o elemento Condition em uma política JSON, consulte Elementos de política JSON do IAM: Condition.

nota

Se você usar chaves de condição disponíveis apenas em algumas circunstâncias, será possível usar as versões IfExists dos operadores de condição. Se as chaves de condição estiverem ausentes no contexto de uma solicitação, poderá ocorrer falha na avaliação da política. Por exemplo, use o seguinte bloqueio de condição com operadores ...IfExists para saber quando uma solicitação é proveniente de um determinado intervalo de IP ou de uma determinada VPC. Se uma ou ambas as chaves não estiverem incluídas no contexto da solicitação, a condição ainda retornará true. Os valores serão verificados somente se a chave especificada estiver incluída no contexto da solicitação.

"Condition": { "IpAddressIfExists": {"aws:SourceIp" : ["xxx"] }, "StringEqualsIfExists" : {"aws:SourceVpc" : ["yyy"]} }

As chaves de condição globais são chaves de condição com um prefixo aws:. Os serviços da AWS podem oferecer suporte a chaves de condição globais ou fornecer chaves específicas do serviço que incluem seu prefixo de serviço. Por exemplo, as chaves de condição do IAM incluem o prefixo iam:. Para obter mais informações, consulte Ações, recursos e chaves de condição de serviços da AWS e escolha o serviço cujas chaves você deseja visualizar.

aws:CalledVia

Funciona com operadores de string.

Use essa chave para comparar os serviços na política com os serviços que fizeram solicitações em nome do principal do IAM (usuário ou função). Quando um principal faz uma solicitação a um serviço da AWS, esse serviço pode usar as credenciais do principal para fazer solicitações subsequentes a outros serviços. A chave aws:CalledVia contém uma lista ordenada de cada serviço na cadeia que fez solicitações em nome do principal.

Por exemplo, você pode usar o AWS CloudFormation para ler e escrever de uma tabela do Amazon DynamoDB. O DynamoDB então usará criptografia fornecida pelo AWS Key Management Service (AWS KMS).

  • Disponibilidade – essa chave está presente na solicitação quando um serviço que oferece suporte a aws:CalledVia usa as credenciais de um principal do IAM para fazer uma solicitação a outro serviço. Esta chave não está presente se o serviço usa uma função de serviço ou função vinculada ao serviço para fazer uma chamada em nome do principal. Esta chave também não está presente quando o principal faz a chamada diretamente.

Para usar a chave de condição aws:CalledVia em uma política, você deve fornecer os principais de serviço para conceder ou negar solicitações de serviço da AWS. A AWS oferece suporte ao uso dos seguintes serviços com aws:CalledVia.

Serviços CalledVia
Serviço da AWS Principal do serviço
Amazon Athena athena.amazonaws.com
AWS CloudFormation cloudformation.amazonaws.com
Amazon DynamoDB dynamodb.amazonaws.com
AWS Key Management Service (AWS KMS) kms.amazonaws.com

Para conceder ou negar acesso quando qualquer serviço fizer uma solicitação usando as credenciais do principal, use a chave de condição aws:ViaAWSService. Essa chave de condição oferece suporte a todos os serviços AWS.

A chave aws:CalledVia é uma chave de vários valores. No entanto, você não pode aplicar uma ordem usando essa chave em uma condição. Ao usar o exemplo acima, o User 1 (Usuário 1) faz uma solicitação para o AWS CloudFormation, que chama o DynamoDB que, por sua vez, chama o AWS KMS. São três solicitações distintas. A chamada final para o AWS KMS é realizada pelo Usuário 1 via AWS CloudFormation e, depois, via DynamoDB.


                Exemplo de uso do aws:CalledVia

Nesse caso, a chave aws:CalledVia no contexto de solicitação inclui cloudformation.amazonaws.com e dynamodb.amazonaws.com, nessa ordem. Se a sua única preocupação é que a chamada seja feita por meio do DynamoDB em algum lugar na cadeia de solicitações, você pode usar esta chave de condição em sua política.

Por exemplo, a política a seguir permite gerenciar a chave do AWS KMS nomeada my-example-key, mas somente se o DynamoDB for um dos serviços solicitantes. O operador de condição ForAnyValue:StringEquals garante que o DynamoDB é um dos serviços de chamada. Se o principal fizer a chamada diretamente para o AWS KMS, a condição retornará false e a solicitação não será permitida por esta política.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KmsActionsIfCalledViaDynamodb", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "arn:aws:kms:region:111122223333:key/my-example-key", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": ["dynamodb.amazonaws.com"] } } } ] }

Se você quiser definir qual serviço fará a primeira ou última chamada na cadeia, use as chaves aws:CalledViaLast e aws:CalledViaFirst. Por exemplo, a política a seguir permite gerenciar a chave nomeada my-example-key no AWS KMS. Essas operações do AWS KMS são permitidas somente se várias solicitações tiverem sido incluídas na cadeia. A primeira solicitação deve ser feita por meio do AWS CloudFormation e a última pelo DynamoDB. Se outros serviços fizerem solicitações no meio da cadeia, a operação ainda será permitida.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KmsActionsIfCalledViaChain", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "arn:aws:kms:region:111122223333:key/my-example-key", "Condition": { "StringEquals": { "aws:CalledViaFirst": "cloudformation.amazonaws.com", "aws:CalledViaLast": "dynamodb.amazonaws.com" } } } ] }

As chaves aws:CalledViaFirst e aws:CalledViaLast estão presentes na solicitação quando um serviço usa as credenciais de um principal do IAM para chamar outro serviço. Elas indicam o primeiro e último serviços que fizeram chamadas na cadeia de solicitações. Por exemplo, vamos supor que o AWS CloudFormation chame outro serviço chamado X Service, que chama o DynamoDB que, por sua vez, chama o AWS KMS. A chamada final para o AWS KMS é realizada pelo User 1 via AWS CloudFormation, em seguida, X Service e depois DynamoDB. A primeira chamada foi feita via AWS CloudFormation e a última via DynamoDB.


                Exemplo de uso de aws:CalledViaFirst e aws:CalledViaLast

aws:CalledViaFirst

Funciona com operadores de string.

Use esta chave para comparar os serviços na política com o primeiro serviço a fazer uma solicitação em nome do principal (usuário ou função) do IAM. Para obter mais informações, consulte aws:CalledVia.

  • Disponibilidade – essa chave está presente na solicitação quando um serviço usa as credenciais de um principal do IAM para fazer pelo menos uma outra solicitação a um serviço diferente. Esta chave não está presente se o serviço usa uma função de serviço ou função vinculada ao serviço para fazer uma chamada em nome do principal. Esta chave também não está presente quando o principal faz a chamada diretamente.

aws:CalledViaLast

Funciona com operadores de string.

Use esta chave para comparar os serviços na política com o último serviço a fazer uma solicitação em nome do principal (usuário ou função) do IAM. Para obter mais informações, consulte aws:CalledVia.

  • Disponibilidade – essa chave está presente na solicitação quando um serviço usa as credenciais de um principal do IAM para fazer pelo menos uma outra solicitação a um serviço diferente. Esta chave não está presente se o serviço usa uma função de serviço ou função vinculada ao serviço para fazer uma chamada em nome do principal. Esta chave também não está presente quando o principal faz a chamada diretamente.

aws:CurrentTime

Funciona com operadores de data.

Use essa chave para comparar a data e a hora da solicitação com a data e a hora especificadas na política. Para visualizar um exemplo de política que usa essa chave de condição, consulte AWS: permite acesso com base em data e hora.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

aws:EpochTime

Funciona com operadores de data ou operadores numéricos.

Use essa chave para comparar a data e a hora da solicitação em horário Unix ou epoch com o valor especificado na política. Essa chave também aceita o número de segundos desde 1º de janeiro de 1970.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

aws:MultiFactorAuthAge

Funciona com operadores numéricos.

Use essa chave para comparar o número de segundos desde que o principal solicitante foi autorizado usando MFA com o número especificado na política. Para obter mais informações sobre MFA, consulte Usar autenticação multifator (MFA) na AWS.

  • Disponibilidade: essa chave será incluída no contexto da solicitação somente se o principal que faz a chamada for autenticado usando MFA. Se a MFA não foi usada, essa chave não estará presente.

aws:MultiFactorAuthPresent

Funciona com Operadores boolianos.

Use essa chave para verificar se a autenticação multifator (MFA) foi usada para validar as credenciais de segurança temporárias que fizeram a solicitação.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente quando o principal usar credenciais temporárias para fazer a solicitação. A chave não está presente nas solicitações da CLI da AWS, da API da AWS ou do AWS SDK que são feitas usando credenciais de longo prazo.

As credenciais temporárias são usadas para autenticar funções do IAM, usuários federados, usuários do IAM com tokens temporários de sts:GetSessionToken e usuários do Console de gerenciamento da AWS. As chaves de acesso de usuário do IAM são credenciais de longo prazo, mas, em alguns casos, a AWS cria credenciais temporárias em nome de usuários do IAM para executar operações. Nesses casos, a chave aws:MultiFactorAuthPresent está presente na solicitação e definida como um valor de false. Há dois casos comuns em que isso pode acontecer:

  • Os usuários do IAM no Console de gerenciamento da AWS inconscientemente usam credenciais temporárias. Os usuários fazem login no console do usando seu nome de usuário e senha, que são credenciais de longo prazo. No entanto, em segundo plano, o console gera credenciais temporárias em nome do usuário.

  • Se um usuário do IAM fizer uma chamada para um serviço da AWS, o serviço reutilizará as credenciais do usuário para fazer outra solicitação para um serviço diferente. Por exemplo, ao chamar o Athena para acessar um bucket do Amazon S3 ou ao usar o AWS CloudFormation para criar uma instância do Amazon EC2. Para a solicitação subsequente, a AWS usa credenciais temporárias.

Para saber quais serviços oferecem suporte a credenciais de segurança temporárias, consulte Serviços da AWS compatíveis com o IAM.

A chave aws:MultiFactorAuthPresent nunca está presente quando uma API ou um comando da CLI é chamado com credenciais de longo prazo, como pares de chave de acesso. Portanto, recomendamos que, ao verificar essa chave, você use as versões ...IfExists dos operadores de condição.

É importante compreender que o seguinte elemento Condition não é uma maneira confiável de verificar se uma solicitação é autenticada usando MFA.

##### WARNING: NOT RECOMMENDED ##### "Effect" : "Deny", "Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : "false" } }

Essa combinação do efeito Deny, do elemento Bool e do valor false nega as solicitações que podem ser autenticadas usando MFA, mas que não foram. Isso se aplica apenas a credenciais temporárias que oferecem suporte usando MFA. Essa declaração não nega o acesso a solicitações que são feitas usando credenciais de longo prazo ou a solicitações que são autenticadas usando MFA. Use este exemplo com cuidado, pois a lógica é complicada e não testa se a autenticação por MFA foi realmente utilizada.

Além disso, não use a combinação do efeito Deny, do elemento Null e true porque ela se comporta da mesma forma e a lógica é ainda mais complicada.

Combinação recomendada

Recomendamos usar o operador BoolIfExists para verificar se um solicitação foi autenticada usando MFA.

"Effect" : "Deny", "Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false" } }

Essa combinação de Deny, BoolIfExists e false nega solicitações que não são autenticados usando MFA. Especificamente, ela nega solicitações de credenciais temporárias que não incluem MFA. Ele também nega solicitações que são feitas usando credenciais de longo prazo, como operações da AWS CLI ou da API da AWS feitas usando chaves de acesso. O operador *IfExists verificará a presença da chave aws:MultiFactorAuthPresent e se ela poderia ou não estar presente, conforme indicado pela sua existência. Use essa opção quando quiser recusar qualquer solicitação que não tenha sido autenticada usando MFA. Isso é mais seguro, mas pode danificar um código ou script que use chaves de acesso para acessar a AWS CLI ou a API da AWS.

Combinações alternativas

Também é possível usar o operador BoolIfExists para permitir solicitações autenticadas por MFA e solicitações da AWS CLI ou da API da AWS que são feitas usando credenciais de longo prazo.

"Effect" : "Allow", "Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "true" } }

Essa condição corresponde à condição se a chave existe e está presente ou se a chave não existe. Essa combinação de Allow, BoolIfExists, e true permite as solicitações autenticadas usando MFA ou as solicitações que não podem ser autenticadas usando MFA. Isso significa que as operações da AWS CLI, da API da AWS e do AWS SDK são permitidas quando o solicitante usa as chaves de acesso de longo prazo dele. Essa combinação não permite solicitações de credenciais temporárias que poderiam, mas não incluem MFA.

Quando você cria uma política usando o editor visual do console do IAM e seleciona MFA required (MFA obrigatória), essa combinação é aplicada. Essa configuração requer MFA para acesso ao console, mas permite acesso programático sem MFA.

Como alternativa, você pode usar o operador Bool para permitir solicitações programáticas e de console somente quando a autenticação for feita usando MFA.

"Effect" : "Allow", "Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : "true" } }

Essa combinação de Allow, Bool e true permite apenas solicitações autenticadas por MFA. Isso se aplica apenas a credenciais temporárias que oferecem suporte usando MFA. Essa declaração não permite o acesso a solicitações que são feitas usando chaves de acesso de longo prazo ou a solicitações feitas usando credenciais temporárias sem MFA.

Não use um elemento de política seguinte ao seguinte para verificar se a chave de MFA está presente:

##### WARNING: USE WITH CAUTION ##### "Effect" : "Allow", "Condition" : { "Null" : { "aws:MultiFactorAuthPresent" : "false" } }

Essa combinação do efeito Allow, do elemento Null e do valor false permite apenas solicitações que podem ser autenticadas usando MFA, independentemente de a solicitação ser realmente autenticada. Isso permite todas as solicitações que são feitas usando credenciais temporárias e nega o acesso para credenciais de longo prazo. Use este exemplo com cuidado porque ele não testa se a autenticação por MFA foi realmente utilizada.

aws:PrincipalAccount

Funciona com operadores de string.

Use essa chave para comparar a conta à qual o principal solicitante pertence com o identificador de conta especificado na política.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

aws:PrincipalArn

Funciona com operadores de ARN e operadores de string.

Use essa chave para comparar o nome de recurso da Amazon (ARN) do principal que fez a solicitação com o ARN especificado na política. Para funções do IAM, o contexto da solicitação retorna o ARN da função, não o ARN do usuário que assumiu a função. Para saber quais tipos de principais é possível especificar nessa chave de condição, consulte Especificar um principal.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

aws:PrincipalIsAWSService

Funciona com Operadores boolianos.

Use essa chave para verificar se a chamada para o seu recurso está sendo feita diretamente por um principal de serviço da AWS. Por exemplo, AWS CloudTrail usa o principal de serviço cloudtrail.amazonaws.com para gravar logs em seu bucket da Amazon S3. A chave de contexto de solicitação é definida como “true” quando um serviço usa um principal de serviço para executar uma ação direta em seus recursos. A chave de contexto é definida como “false” se o serviço usa as credenciais de um principal da IAM para fazer uma solicitação em nome do principal. Também é “false” se o serviço usa uma função de serviço ou função vinculada ao serviço para fazer uma chamada em nome do principal.

  • Disponibilidade – essa chave está presente no contexto de solicitação para todas as solicitações de API assinadas que usam credenciais da AWS.

Você pode usar essa chave de condição para limitar o acesso às suas identidades confiáveis e aos locais de rede previstos, ao mesmo tempo em que concede acesso aos serviços da AWS com segurança.

No exemplo de política de bucket da Amazon S3 a seguir, o acesso ao bucket é restrito, a menos que a solicitação tenha origem de vpc-111bbb22 ou seja de um principal de serviço, como CloudTrail.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Expected-network+service-principal", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-logs-bucket/AWSLogs/AccountNumber/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22" }, "BoolIfExists": { "aws:PrincipalIsAWSService": "false" } } } ] }

No vídeo a seguir, saiba mais sobre como você pode usar a chave de condição aws:PrincipalIsAWSService em uma política.

aws:PrincipalOrgID

Funciona com operadores de string.

Use essa chave para comparar o identificador da organização no AWS Organizations ao qual o principal solicitante pertence com o identificador especificado na política.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se o principal for membro de uma organização.

Essa chave global fornece uma alternativa para listar todos os IDs de conta para todas as contas da AWS em uma organização. Você pode usar essa chave de condição para simplificar a especificação do elemento Principal em uma política baseada no recurso. É possível especificar o ID da organização no elemento de condição. Ao adicionar e remover contas, as políticas que incluem a chave aws:PrincipalOrgID incluem automaticamente as contas corretas e não exigem a atualização manual.

Por exemplo, a seguinte política de bucket do Amazon S3 permite que os membros de qualquer conta na organização o-xxxxxxxxxxx adicionem um objeto ao bucket policy-ninja-dev.

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::policy-ninja-dev/*", "Condition": {"StringEquals": {"aws:PrincipalOrgID":["o-xxxxxxxxxxx"]} } } }
nota

Essa condição global também se aplica ao conta de gerenciamento de uma organização da AWS.

Para obter mais informações sobre o AWS Organizations, consulte O que é o AWS Organizations? no Guia do usuário do AWS Organizations.

aws:PrincipalOrgPaths

Funciona com operadores de string.

Use esta chave para comparar o caminho AWS Organizations para o principal que está fazendo a solicitação para o caminho na política. Esse principal pode ser um usuário do IAM, função do IAM, usuário federado ou Usuário raiz da conta da AWS. Em uma política, essa chave de condição garante que o solicitante seja um membro da conta na raiz da organização especificada ou unidades organizacionais (OUs) em AWS Organizations. Um caminho AWS Organizations é uma representação de texto da estrutura de uma entidade do Organizações. Para obter mais informações sobre como usar e entender os caminhos, consulte Compreender o caminho da entidade do AWS Organizations.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se o principal for membro de uma organização.

nota

Os IDs de organização são globalmente exclusivos, mas os IDs da UO e da raiz são exclusivos somente dentro de uma organização. Isso significa que duas organizações não compartilham o mesmo ID de organização. No entanto, outra organização pode ter uma UO ou raiz com o mesmo ID que o seu. Recomendamos sempre incluir o ID da organização ao especificar uma UO ou raiz.

Por exemplo, a seguinte condição retorna true aos principais em contas anexadas diretamente à UO ou-ab12-22222222, mas não em suas UOs filho.

"Condition" : { "ForAnyValue:StringEquals" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"] }}

A condição a seguir retorna true aos principais em uma conta anexada diretamente à UO ou a qualquer uma de suas UOs filho. Ao incluir um caractere curinga, é necessário usar o operador de condição StringLike.

"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/*"] }}

A condição a seguir retorna true aos principais em uma conta anexada diretamente a qualquer uma de suas UOs filho, mas não diretamente à UO pai. A condição anterior é para a UO ou para as crianças. A seguinte condição é apenas para os filhos (e quaisquer filhos desses filhos).

"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/ou-*"] }}

A condição a seguir permite acesso a todos os principais da organização o-a1b2c3d4e5, independentemente de sua UO pai.

"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/*"] }}

aws:PrincipalOrgPaths é uma chave de condição de vários valores. Chaves com vários valores incluem um ou mais valores em um formato de lista. O resultado é um OR lógico. Quando você usa vários valores com o operador de condição ForAnyValue, o caminho do principal deve corresponder a um dos caminhos listados na política. Para políticas que incluem vários valores para uma única chave, é necessário colocar as condições entre colchetes como uma matriz ("Key":["Value1", "Value2"]). Você também deve incluir esses colchetes quando houver um único valor. Para obter mais informações sobre chaves de condição de vários valores, consulte Criar uma condição com várias chaves ou valores.

"Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-33333333/*", "o-a1b2c3d4e5/r-ab12/ou-ab12-22222222/*" ] } }

aws:PrincipalServiceName

Funciona com operadores de string.

Use essa chave para comparar o nome do principal de serviço na política com o principal de serviço que está fazendo solicitações aos seus recursos. Você pode usar essa chave para verificar se a chamada é feita por um principal de serviço específico. Quando um principal de serviço faz uma solicitação direta ao seu recurso, a chave da aws:PrincipalServiceName contém o nome do principal de serviço. Por exemplo, o nome do principal de serviço da AWS CloudTrail é cloudtrail.amazonaws.com.

  • Disponibilidade – essa chave está presente na solicitação quando a chamada é feita por um principal de serviço da AWS. Ela não está presente em nenhuma outra situação, incluindo as seguintes:

    • Se o serviço usa uma função de serviço ou função vinculada ao serviço para fazer uma chamada em nome do principal.

    • Se o serviço usa as credenciais de um principal da IAM para fazer uma solicitação em nome do principal.

    • Se a chamada é feita diretamente por um principal da IAM.

Você pode usar essa chave de condição para limitar o acesso às suas identidades confiáveis e aos locais de rede previstos, além de conceder acesso a um serviço da AWS com segurança.

No exemplo de política de bucket da Amazon S3 a seguir, o acesso ao bucket é restrito, a menos que a solicitação tenha origem de vpc-111bbb22 ou seja de um principal de serviço, como CloudTrail.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "expected-network+service-principal", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-logs-bucket/AWSLogs/AccountNumber/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22", "aws:PrincipalServiceName": "cloudtrail.amazonaws.com" } } } ] }

aws:PrincipalServiceNamesList

Funciona com operadores de string.

Essa chave fornece uma lista de todos os nomes de principais de serviço que pertencem ao serviço. É uma chave de condição avançada. Você pode usá-la para restringir o serviço de acessar seu recurso apenas a partir de uma região específica. Alguns serviços podem criar diretores de serviços regionais para indicar uma instância específica do serviço dentro de uma região específica. Você pode limitar o acesso de um recurso a uma instância específica do serviço. Quando um principal de serviço faz uma solicitação direta ao seu recurso, o aws:PrincipalServiceNamesList contém uma lista não ordenada de todos os nomes de principais de serviço associados à instância regional do serviço.

  • Disponibilidade – essa chave está presente na solicitação quando a chamada é feita por um principal de serviço da AWS. Ela não está presente em nenhuma outra situação, incluindo as seguintes:

    • Se o serviço usa uma função de serviço ou função vinculada ao serviço para fazer uma chamada em nome do principal.

    • Se o serviço usa as credenciais de um principal da IAM para fazer uma solicitação em nome do principal.

    • Se a chamada é feita diretamente por um principal da IAM.

aws:PrincipalServiceNamesList é uma chave de condição de vários valores. Chaves com vários valores incluem um ou mais valores em um formato de lista. O resultado é um OR lógico. Você deve usar os operadores definidos ForAnyValue ou ForAllValues com o operador de condição da StringLike quando usar essa chave. Para políticas que incluem vários valores para uma única chave, é necessário colocar as condições entre colchetes como uma matriz, como ("Key":["Value1", "Value2"]). Você também deve incluir esses colchetes quando houver um único valor. Para obter mais informações sobre chaves de condição de vários valores, consulte Usar várias chaves e valores.

aws:PrincipalTag

Funciona com operadores de string.

Use essa chave para comparar a tag anexada ao principal que está fazendo a solicitação com a tag especificada na política. Se o principal tiver mais de uma tag anexada, o contexto da solicitação incluirá uma chave aws:PrincipalTag para cada chave de tag anexada.

  • Disponibilidade – essa chave será incluída no contexto da solicitação se o principal estiver usando um usuário do IAM com tags anexadas. Ela será incluída para um principal usando uma função do IAM com tags anexadas ou tags de sessão.

É possível adicionar atributos personalizados a um usuário ou uma função na forma de um par de chave/valor. Para obter mais informações sobre tags do IAM consulte Marcar recursos do IAM. Você pode usar aws:PrincipalTag para controlar acesso de principais da AWS.

Este exemplo mostra como você pode criar uma política do IAM que permite que usuários com a tag tagManager=true gerenciem usuários, grupos ou funções do IAM.Para usar essa política, substitua o texto em itálico do espaço reservado na política de exemplo por suas próprias informações. Depois, siga as instruções em criar uma política ou editar uma política.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:*", "Resource": "*", "Condition": {"StringEquals": {"aws:PrincipalTag/tagManager": "true"}} } ] }

aws:PrincipalType

Funciona com operadores de string.

Use essa chave para comparar o tipo de principal que está fazendo a solicitação com o tipo de principal especificado na política. Para obter mais informações, consulte Especificar um principal.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

aws:referer

Funciona com operadores de string.

Use essa chave para comparar quem indicou a solicitação no navegador cliente com o indicador especificado na política. O valor de contexto da solicitação aws:referer é fornecido pelo chamador em um cabeçalho HTTP. O cabeçalho Referer é incluído em uma solicitação de navegador da Web quando você seleciona um link em uma página da Web. O cabeçalho Referer contém o URL da página da Web onde o link foi selecionado.

  • Disponibilidade – Esta chave será incluída no contexto da solicitação somente se a solicitação ao recurso AWS tiver sido invocada vinculando em uma URL de página da Web no navegador. Essa chave não está incluída para solicitações programáticas porque não usa um link do navegador para acessar o recurso AWS.

Por exemplo, você pode acessar um objeto Amazon S3 diretamente, usando um URL ou a invocação direta da API. Para obter mais informações, consulte as Amazon S3operações de API diretamente usando um navegador da Web. Quando você acessa um objeto Amazon S3 de um URL que existe em uma página da Web, o URL da página da Web de origem é usado em aws:referer. Quando você acessa um objeto Amazon S3 digitando o URL no seu navegador, o não aws:referer está presente. Quando você invoca a API diretamente, aws:referer também não está presente. Você pode usar a chave da condição aws:referer em uma política para permitir solicitações feitas de um indicador específico, como um link em uma página da Web no domínio da sua empresa.

Atenção

Essa chave deve ser usada com cuidado. É perigoso incluir um valor de cabeçalho do indicador conhecido publicamente. Partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor de aws:referer que escolherem. Como resultado, o aws:referer não deve ser usado para impedir que terceiros não autorizados façam solicitações diretas da AWS. Ele é oferecido apenas para permitir que os clientes impeçam que seu conteúdo digital, como o conteúdo armazenado no Amazon S3, seja indicado em sites de terceiros não autorizados.

aws:RequestedRegion

Funciona com operadores de string.

Use essa chave para comparar a região da AWS que foi chamada na solicitação com a região especificada na política. É possível usar essa chave de condição global para controlar quais regiões podem ser solicitadas. Para visualizar as regiões da AWS de cada serviço, consulte Cotas e endpoints de serviço na Referência geral do Amazon Web Services.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

Alguns serviços globais, como o IAM, têm um único endpoint. Como esse endpoint está fisicamente localizado na região Leste dos EUA (Norte da Virgínia), as chamadas do IAM sempre são feitas para a região us-east-1. Por exemplo, se você criar uma política que negue acesso a todos os serviços, se a região solicitada não for us-west-2, sempre haverá falha nas chamadas do IAM. Para ver um exemplo de como resolver isso, consulte NotAction com Deny.

nota

A chave de condição aws:RequestedRegion permite que você controle qual endpoint de um serviço é invocado, mas não abrange o impacto da operação. Alguns serviços têm impactos entre regiões. Por exemplo, o Amazon S3 tem operações de API que controlam a replicação entre regiões. É possível invocar s3:PutBucketReplication em uma região (que é afetada pela chave de condição aws:RequestedRegion), mas outras regiões são afetadas com base nas definições da configuração das replicações.

É possível usar essa chave de contexto para limitar o acesso aos serviços da AWS em um determinado conjunto de regiões. Por exemplo, a política a seguir permite que um usuário visualize todas as instâncias do Amazon EC2 no Console de gerenciamento da AWS. No entanto, eles só podem realizar alterações às instâncias na Irlanda (eu-west-1), Londres (eu-west-2) ou Paris (eu-west-3).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "InstanceConsoleReadOnly", "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:Export*", "ec2:Get*", "ec2:Search*" ], "Resource": "*" }, { "Sid": "InstanceWriteRegionRestricted", "Effect": "Allow", "Action": [ "ec2:Associate*", "ec2:Import*", "ec2:Modify*", "ec2:Monitor*", "ec2:Reset*", "ec2:Run*", "ec2:Start*", "ec2:Stop*", "ec2:Terminate*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "eu-west-1", "eu-west-2", "eu-west-3" ] } } } ] }

aws:RequestTag/tag-key

Funciona com operadores de string.

Use essa chave para comparar o par de chave/valor da tag que foi passado na solicitação com o par de tags especificado na política. Por exemplo, é possível verificar se a solicitação inclui a chave de tag "Dept" e se ela tem o valor "Accounting". Para obter mais informações, consulte Controlar o acesso durante solicitações da AWS.

  • Disponibilidade – essa chave será incluída no contexto da solicitação quando as tags forem passadas na solicitação. Quando várias tags forem passadas na solicitação, haverá uma chave de contexto para cada par de chave/valor de tag.

Essa chave de contexto é formatada "aws:RequestTag/tag-key":"tag-value" em que tag-key e tag-value são uma chave de tag e um par de valores.

Como é possível incluir vários pares de chave/valor de tag em uma solicitação, o conteúdo da solicitação pode ser uma solicitação de vários valores. Nesse caso, considere o uso dos operadores de conjunto ForAllValues ou ForAnyValue. Para obter mais informações, consulte Usar várias chaves e valores.

aws:ResourceTag/tag-key

Funciona com operadores de string.

Use essa chave para comparar o par de chave/valor da tag especificado na política com o par de chave/valor anexado ao recurso. Por exemplo, é possível exigir que o acesso a um recurso seja permitido somente se o recurso tiver a chave de tag "Dept" anexada com o valor "Marketing". Para obter mais informações, consulte Controlar o acesso aos recursos da AWS.

  • Disponibilidade – essa chave será incluída no contexto da solicitação quando o recurso solicitado já tiver tags anexadas. Esta chave é devolvida apenas para recursos que oferecem suporte à autorização com base em tags. Há uma chave de contexto para cada par de chave/valor de tag.

Essa chave de contexto é formatada "aws:ResourceTag/tag-key":"tag-value" em que tag-key e tag-value são uma chave de tag e um par de valores.

Para obter exemplos de uso da aws:ResourceTag chave para controlar o acesso aos IAM recursos, consulte Controlar o acesso aos recursos da AWS.

Para obter exemplos de uso da chave aws:ResourceTag para controlar o acesso a outros recursos AWS, consulte Controlar o acesso a recursos da AWS usando tags.

Para obter um tutorial sobre como usar a chave de condição aws:ResourceTag para o controle de acesso baseado em atributos (ABAC), consulte Tutorial do IAM: definir permissões para acessar recursos da AWS com base em tags.

aws:SecureTransport

Funciona com Operadores boolianos.

Use essa chave para verificar se a solicitação foi enviada usando SSL. O contexto da solicitação retorna true ou false. Em uma política, será possível permitir ações específicas somente se a solicitação for enviada usando SSL.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

aws:SourceAccount

Funciona com operadores de string.

Use essa chave para comparar o ID da conta do recurso que faz uma solicitação de serviço a serviço com o ID de conta especificado na política.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se o acesso a um recurso acionar um serviço da AWS para chamar outro serviço em nome do proprietário do recurso. O serviço de chamada deve passar o ARN de recurso da origem para o serviço chamado. Este ARN inclui o ID da conta de origem.

É possível usar essa chave de condição para verificar se o Amazon S3 não está sendo usado como um confused deputy. Por exemplo, quando uma atualização de bucket do Amazon S3 acionar uma publicação de tópico do Amazon SNS, o serviço Amazon S3 invocará a operação de API sns:Publish. O bucket é considerado a origem da solicitação SNS e o valor da chave é o ID da conta associado ao bucket.

aws:SourceArn

Funciona com operadores de ARN e operadores de string.

Use essa chave para comparar o nome de recurso da Amazon (ARN) do recurso que faz uma solicitação de serviço a serviço com o ARN especificado na política.

Essa chave não funciona com o ARN do principal que está fazendo a solicitação. Em seu lugar, use a aws:PrincipalArn. O ARN da origem inclui o ID da conta, portanto, não é necessário usar aws:SourceAccount com aws:SourceArn.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se o acesso a um recurso acionar um serviço da AWS para chamar outro serviço em nome do proprietário do recurso. O serviço de chamada deve passar o ARN do recurso original para o serviço chamado.

É possível usar essa chave de condição para verificar se o Amazon S3 não está sendo usado como um confused deputy. Por exemplo, quando uma atualização de bucket do Amazon S3 acionar uma publicação de tópico do Amazon SNS, o serviço Amazon S3 invocará a operação de API sns:Publish. O bucket é considerado a origem da solicitação do SNS, e o valor da chave é o ARN do bucket.

aws:SourceIdentity

Funciona com operadores de string.

Use esta chave para comparar a identidade de origem que foi definida pela entidade com a identidade de origem especificada por você na política.

  • Disponibilidade – Esta chave é incluída no contexto da solicitação depois que uma identidade de origem foi definida quando uma função é assumida usando qualquer comando de CLI assume-role do AWS STS ou operação de API AWS STSAssumeRole.

Você pode usar essa chave em uma política para permitir ações na AWS por entidades principais que definiram uma identidade de origem ao assumir uma função. A atividade da identidade de origem especificada da função aparece em AWS CloudTrail. Isso torna mais fácil para os administradores determinar quem executou as ações e quais foram executadas com uma função em AWS.

Ao contrário de sts:RoleSessionName, depois que a identidade de origem é definida, o valor não pode ser alterado. Ele está presente no contexto de solicitação para todas as ações tomadas pela função. O valor persiste nas sessões de função subsequentes quando você usa as credenciais da sessão para assumir outra função. Assumir uma função de outra é chamado de encadeamento de funções.

A chave sts:SourceIdentity está presente na solicitação quando a entidade define inicialmente uma identidade de origem ao assumir uma função usando qualquer comando de CLI assume-role do AWS STS ou operação de API AssumeRole do AWS STS . A chave aws:SourceIdentity estará presente na solicitação de quaisquer ações tomadas com uma sessão de função que tenha um conjunto de identidades de origem.

A seguinte política de confiança de função para CriticalRole na conta 111122223333 contém uma condição para aws:SourceIdentity que impede que uma entidade sem uma identidade de origem definida como Saanvi ou Diego de assumir a função.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeRoleIfSourceIdentity", "Effect": "Allow", "Principal": {"AWS": " arn:aws:iam::111122223333:role/CriticalRole"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringLike": { "aws:SourceIdentity": ["Saanvi","Diego"] } } } ] }

Para saber mais sobre como usar informações de identidade de origem, consulte Monitorar e controlar as ações tomadas com funções assumidas.

aws:SourceIp

Funciona com operadores de endereço IP.

Use essa chave para comparar o endereço IP do solicitante com o endereço IP especificado na política. A chave de condição aws:SourceIp só pode ser usada para intervalos de endereços IP públicos.

  • Disponibilidade – essa chave será incluída no contexto da solicitação, exceto quando o solicitante usar um VPC endpoint para fazer a solicitação.

A chave de condição aws:SourceIp pode ser usada em uma política para permitir que os principais façam solicitações somente em um intervalo de IP especificado. No entanto, esta política negará o acesso se um serviço da AWS fizer chamadas em nome do principal. Nesse caso, você pode usar aws:SourceIp com a chave aws:ViaAWSService para garantir que a restrição de IP de origem se aplique somente a solicitações feitas diretamente por um principal.

Por exemplo, você pode anexar a política a seguir a um usuário do IAM. Essa política permite que o usuário coloque um objeto diretamente no bucket my-service-bucket do Amazon S3 se fizer a chamada a partir do endereço IP especificado. No entanto, se o usuário fizer outra solicitação que faça com que um serviço chame o Amazon S3, a restrição do endereço IP não se aplicará. A instrução PrincipalPutObjectIfIpAddress restringirá o endereço IP somente se a solicitação não for feita por um serviço. A instrução ServicePutObject permitirá a operação sem restrição de endereço IP se a solicitação for feita por um serviço.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalPutObjectIfIpAddress", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-service-bucket/*", "Condition": { "Bool": {"aws:ViaAWSService": "false"}, "IpAddress": {"aws:SourceIp": "123.45.167.89"} } }, { "Sid": "ServicePutObject", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-service-bucket/*", "Condition": { "Bool": {"aws:ViaAWSService": "true"} } } ] }

Se a solicitação vier de um host que use um endpoint da Amazon VPC, a chave aws:SourceIp não estará disponível. Em vez disso, use uma chave específica da VPC, como aws:VpcSourceIp. Para obter mais informações sobre como usar VPC endpoints, consulte VPC endpoints – controle do uso de endpoints no Guia do usuário da Amazon VPC.

aws:SourceVpc

Funciona com operadores de string.

Use essa chave para verificar se a solicitação é proveniente da VPC especificada na política. Em uma política, é possível usar essa chave para permitir acesso apenas a uma VPC específica. Para obter mais informações, consulte Restrição do acesso a uma VPC específica no Guia do desenvolvedor do Amazon Simple Storage Service.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se o solicitante usar um VPC endpoint para fazer a solicitação.

aws:SourceVpce

Funciona com operadores de string.

Use essa chave para comparar o identificador do VPC endpoint da solicitação com o ID do endpoint especificado na política. Em uma política, é possível usar essa chave para restringir o acesso a um VPC endpoint específico. Para obter mais informações, consulte Restrição do acesso a um VPC endpoint no Guia do desenvolvedor do Amazon Simple Storage Service.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se o solicitante usar um VPC endpoint para fazer a solicitação.

aws:TagKeys

Funciona com operadores de string.

Use essa chave para comparar as chaves de tag em uma solicitação com as chaves especificadas na política. Como melhor prática ao usar políticas para controlar o acesso usando tags, use a chave de condição aws:TagKeys para definir quais chaves de tags serão permitidas. Para obter mais informações e políticas de exemplo, consulte Controlar o acesso com base em chaves de tag.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se a operação oferecer suporte à anexação de tags a recursos.

Essa chave de contexto é formatada como "aws:TagKeys":"tag-key" em que tag-key é uma lista de chaves de tags sem valores (por exemplo, ["Dept","Cost-Center"]).

Como é possível incluir vários pares de chave/valor de tag em uma solicitação, o conteúdo da solicitação pode ser uma solicitação de vários valores. Nesse caso, use os operadores de conjuntos ForAllValues ou ForAnyValue. Para obter mais informações, consulte Usar várias chaves e valores.

Alguns serviços são compatíveis com o uso de tags com operações de recurso, como criar, modificar ou excluir um recurso. Para permitir o uso de tags e operações como uma única chamada, você deve criar uma política que inclui as ações de uso de tags e de modificação de recursos. Em seguida, você pode usar a chave de condição aws:TagKeys para impor o uso de chaves de tags específicas na solicitação. Por exemplo, para limitar as tags quando alguém cria um snapshot Amazon EC2, você deve incluir a ação de criação ec2:CreateSnapshot e a ação de uso de tags ec2:CreateTags na política. Para visualizar uma política para esse cenário que use aws:TagKeys, consulte Como criar um snapshot com tags no Guia do usuário do Amazon EC2 para instâncias do Linux.

aws:TokenIssueTime

Funciona com operadores de data.

Use essa chave para comparar a data e a hora em que as credenciais de segurança temporárias foram emitidas com a data e a hora especificadas na política.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente quando o principal usar credenciais temporárias para fazer a solicitação. A chave não está presente em solicitações da AWS CLI, da API da AWS ou do SDK da AWS que são feitas usando chaves de acesso.

Para saber quais serviços oferecem suporte a credenciais de segurança temporárias, consulte Serviços da AWS compatíveis com o IAM.

aws:UserAgent

Funciona com operadores de string.

Use essa chave para comparar o aplicativo cliente do solicitante com o aplicativo especificado na política.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação.

Atenção

Essa chave deve ser usada com cuidado. Como o valor aws:UserAgent é fornecido pelo chamador em um cabeçalho HTTP, partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor aws:UserAgent que escolherem. Como resultado, aws:UserAgent não deve ser usado para impedir que terceiros não autorizados façam solicitações diretas da AWS. Você pode usá-lo para permitir apenas aplicações cliente específicas, e somente depois de testar sua política.

aws:userid

Funciona com operadores de string.

Use essa chave para comparar o identificador do principal do solicitante com o ID especificado na política. Para usuários do IAM, o valor de contexto da solicitação é o ID de usuário. Para funções do IAM, esse formato de valor pode variar. Para obter detalhes sobre como as informações são exibidas para diferentes principais, consulte Especificar um principal.

  • Disponibilidade – essa chave será incluída no contexto da solicitação para todas as solicitações assinadas. As solicitações anônimas não incluem essa chave.

aws:username

Funciona com operadores de string.

Use essa chave para comparar o nome de usuário do solicitante com o nome de usuário especificado na política. Para obter detalhes sobre como as informações são exibidas para diferentes principais, consulte Especificar um principal.

aws:ViaAWSService

Funciona com Operadores boolianos.

Use esta chave para verificar se um serviço da AWS faz uma solicitação para outro serviço em seu nome.

A chave de contexto da solicitação retorna true quando um serviço usa as credenciais de um principal do IAM para fazer uma solicitação em nome do principal. Esta chave retorna false se o serviço usa uma função de serviço ou função vinculada ao serviço para fazer uma chamada em nome do principal. A chave de contexto da solicitação também retorna false quando o principal faz a chamada diretamente.

  • Disponibilidade – essa chave sempre é incluída no contexto da solicitação para a maioria dos serviços.

No momento, os seguintes serviços não oferecem suporte a aws:ViaAWSService:

  • Amazon EC2

  • AWS Glue

  • AWS Lake Formation

  • AWS OpsWorks

Você pode usar essa chave de condição para conceder ou negar acesso baseado no fato de uma solicitação ter sido feita por um serviço. Para ver um exemplo de política, consulte AWS: nega acesso à AWS com base no IP de origem.

aws:VpcSourceIp

Funciona com operadores de endereço IP.

Use essa chave para comparar o endereço IP do qual uma solicitação foi feita com o endereço IP especificado na política. Em uma política, a chave será correspondente somente se a solicitação for proveniente do endereço IP especificado e passar por um VPC endpoint.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se a solicitação for feita usando um VPC endpoint.

Para obter mais informações, consulte Controle do acesso a serviços com VPC endpoints no Guia do usuário da Amazon VPC.

Outras chaves de condição nos serviços

As chaves de condição globais são chaves de condição com um prefixo aws:. Serviços individuais podem criar suas próprias chaves de condição. Essas chaves de condição específicas do serviço incluem um prefixo que corresponda ao nome do serviço, como iam: ou sts:.

Os serviços podem criar chaves específicas do serviço que estão disponíveis no contexto de solicitação para outros serviços. Essas chaves estão disponíveis em vários serviços, mas não são chaves de condição globais. Por exemplo, a AWS STS suporta chaves de condição de federação baseadas em SAML. Essas chaves estão disponíveis quando um usuário que foi federado usando SAML executa AWS operações em outros serviços. Outros exemplos incluem identitystore:UserId e ec2:SourceInstanceArn.

Para exibir as chaves de condição específicas de serviços para um serviço, consulte Ações, recursos e chaves de condição dos serviçosAWS e escolha o serviço cujas chaves você deseja exibir.