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.

Importante

Para comparar sua condição com um contexto de solicitação com vários valores de chave, você deve usar os operadores de conjunto ForAllValues ou ForAnyValue. Use operadores de conjunto somente com chaves de condições de vários valores. Não use operadores de conjuntos com chaves de condição de valor único. Para mais informações, consulte Criar uma condição com várias chaves ou valores.

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 da entidade de segurança 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, é possível usar o AWS CloudFormation para ler e gravar de uma tabela do Amazon DynamoDB. O DynamoDB então usa a criptografia fornecida peloAWS 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 uma entidade de segurança 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.

  • Tipo de valor: valores múltiplos

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 ao AWS CloudFormation, que chama o DynamoDB, que 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 foi feita por meio do DynamoDB em algum lugar da cadeia de solicitações, você pode usar essa chave de condição em sua política.

Por exemplo, a política a seguir permite gerenciar a chave do AWS KMS chamada my-example-key, mas apenas se DynamoDB for um dos serviços solicitantes. O operador de condição ForAnyValue:StringEquals garante que o DynamoDB seja 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 uma entidade de segurança 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, depois, X Service e depois DynamoDB. Ele foi chamado pela primeira vez por meio do AWS CloudFormation e a última chamada foi feita por meio do 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 que fez uma solicitação em nome da entidade de segurança do IAM (usuário ou função). Para mais informações, consulte aws:CalledVia.

  • Disponibilidade: essa chave está presente na solicitação quando um serviço usa as credenciais de uma entidade de segurança 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.

  • Tipo de valor: valor único

aws:CalledViaLast

Funciona com operadores de string.

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

  • Disponibilidade: essa chave está presente na solicitação quando um serviço usa as credenciais de uma entidade de segurança 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.

  • Tipo de valor: valor único

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 o acesso com base na data e hora.

  • Disponibilidade: essa chave é sempre incluída no contexto da solicitação.

  • Tipo de valor: valor único

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 é sempre incluída no contexto da solicitação.

  • Tipo de valor: valor único

aws:FederatedProvider

Funciona com operadores de string.

Use essa chave para comparar o provedor de identidade (IdP) emissor da entidade principal com o IdP especificado na política. Isso significa que uma função do IAM foi assumida usando as operações AssumeRoleWithWebIdentity ou AssumeRoleWithSAML do AWS STS. Quando as credenciais temporárias da sessão de função resultante são usadas para fazer uma solicitação, o contexto da solicitação identifica o IdP que autenticou a identidade federada original.

  • Disponibilidade: essa chave está presente quando a entidade principal é uma entidade principal da sessão de função e essa sessão foi emitida usando um provedor de identidade terceiro.

  • Tipo de valor: valor único

Por exemplo, se o usuário foi autenticado por meio do Amazon Cognito, o contexto da solicitação incluirá o valor cognito-identity.amazonaws.com. Da mesma forma, se o usuário foi autenticado por meio do Login with Amazon, o contexto da solicitação incluirá o valor www.amazon.com.

É possível usar qualquer chave de condição de valor único disponível como uma variável. O seguinte exemplo de política com base em recursos usa a chave aws:FederatedProvider como uma variável de política no ARN de um recurso. Essa política permite que qualquer entidade principal que fez autenticação usando um IdP obtenha objetos de um bucket do Amazon S3 com um caminho que é específico para o provedor de identidade emissor.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET-NAME/${aws:FederatedProvider}/*" } }

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 Uso de autenticação multifator (MFA) na AWS.

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

  • Tipo de valor: valor único

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: esta chave é incluída no contexto da solicitação somente quando a entidade de segurança usa 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.

  • Tipo de valor: valor único

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 AWS Management Console. As chaves de acesso do usuário do IAM são credenciais de longo prazo, mas, em alguns casos, a AWS cria credenciais temporárias em nome dos usuários do IAM para realizar 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 AWS Management Console 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 faz uma chamada para um produto da AWS, o produto reutiliza as credenciais do usuário para fazer outra solicitação a outro serviço. 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 que funcionam 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. Para solicitações anônimas, o contexto da solicitação retorna anonymous.

  • Availability (Disponibilidade): essa chave é incluída no contexto da solicitação para todas as solicitações, incluindo as anônimas.

  • Tipo de valor: valor único

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.

  • 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. Você pode especificar os seguintes tipos de entidades principais nesta chave de condição:

    • IAM role (Função do IAM)

    • Usuário do IAM

    • Sessão de usuário federado do AWS STS

    • Usuário root da Conta da AWS

  • Tipo de valor: valor único

A lista a seguir mostra o valor do contexto de solicitação retornado para diferentes tipos de entidades principais que você pode especificar na chave de condição aws:PrincipalArn:

  • Perfil do IAM: o contexto da solicitação contém o seguinte valor para a chave de condição aws:PrincipalArn. Não especifique o ARN da sessão de perfil assumida como um valor para essa chave de condição. Para obter mais informações sobre a entidade principal da sessão de perfil assumida, consulte Entidades principais da sessão de função.

    arn:aws:iam::AWS-account-ID:role/role-name
  • Usuário do IAM: o contexto da solicitação contém o seguinte valor para a chave de condição aws:PrincipalArn.

    arn:aws:iam::AWS-account-ID:user/user-name
  • Sessões de usuário federado do AWS STS: o contexto da solicitação contém o seguinte valor para a chave de condição aws:PrincipalArn.

    arn:aws:sts::AWS-account-ID:federated-user/user-name
  • Usuário raiz da Conta da AWS: o contexto da solicitação contém o seguinte valor para a chave de condição aws:PrincipalArn. Quando você especifica o ARN do usuário raiz como o valor da chave de condição aws:PrincipalArn, ele limita as permissões apenas para o usuário raiz da Conta da AWS. Isso é diferente de especificar o ARN do usuário raiz no elemento principal de uma política baseada em recursos, o qual delega autoridade à Conta da AWS. Para obter mais informações sobre como especificar o ARN do usuário raiz no elemento principal de uma política baseada em recursos, consulte Responsáveis pela conta da AWS.

    arn:aws:iam::AWS-account-ID:root

    Você pode especificar o ARN do usuário raiz como um valor para o aws:PrincipalArn da chave de condição nas políticas de controle de serviço (SCPs) do AWS Organizations. As SCPs são um tipo de política da organização usada para gerenciar permissões em sua organização e afetam apenas contas-membro na organização. Uma SCP restringe as permissões para usuários e funções do IAM em contas-membro, incluindo o usuário-raiz da conta-membro. Para obter mais informações sobre o efeito das SCPs nas permissões, consulte SCP effects on permissions (Efeitos das SCPs nas permissões) no Guia do usuário do Organizations.

aws:PrincipalIsAWSService

Funciona com Operadores boolianos.

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

  • Disponibilidade do: essa chave está presente no contexto da solicitação para todas as solicitações de API assinadas que usam credenciais da AWS. As solicitações anônimas não incluem essa chave.

  • Tipo de valor: valor único

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

No exemplo de política de bucket do Amazon S3 a seguir, o acesso ao bucket é restrito, a menos que a solicitação seja originada de vpc-111bbb22 ou seja de uma entidade de segurança de serviço, como o 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 é incluída no contexto da solicitação somente se a entidade de segurança for membro de uma organização. As solicitações anônimas não incluem essa chave.

  • Tipo de valor: valor único

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 política de bucket do Amazon S3 a seguir permite que 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 a conta de gerenciamento de uma organização da AWS. Essa política impede que todas as entidades principais fora da organização especificada acessem o bucket do Amazon S3. Isso inclui quaisquer serviços da AWS que interagem com seus recursos internos, como o AWS CloudTrail enviando dados de log para seus buckets do Amazon S3. Para saber mais sobre como conceder acesso a serviços da AWS com segurança, consulte aws:PrincipalIsAWSService.

Para obter informações sobre o AWS Organizations, consulte O que é 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. Essa entidade de segurança pode ser um usuário do IAM, uma função do IAM, um usuário federado ou um 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 do AWS Organizations é uma representação de texto da estrutura de uma entidade do Organizations. Para obter mais informações sobre como usar e entender os caminhos, consulte Compreender o caminho da entidade do AWS Organizations.

  • Disponibilidade: essa chave é incluída no contexto da solicitação somente se a entidade de segurança for membro de uma organização. As solicitações anônimas não incluem essa chave.

  • Tipo de valor: valores múltiplos

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 condição a seguir retorna true para entidades de segurança em contas anexadas diretamente à UO ou-ab12-22222222, mas não em suas UOs filhas.

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

A condição a seguir retorna true para entidades de segurança em uma conta que está anexada diretamente à UO ou a qualquer uma de suas UOs filhas. 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 para entidades de segurança em uma conta que está anexada diretamente a qualquer uma das UOs filhas, mas não diretamente à UO mãe. A condição anterior é para a UO ou para as crianças. A condição a seguir é apenas para 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 esta chave para comparar o nome da entidade de segurança de serviço na política com a entidade de segurança de serviço que está fazendo solicitações aos seus recursos. Você pode usar essa chave para verificar se essa chamada é feita por uma entidade de segurança de serviço específica. Quando uma entidade de segurança do serviço faz uma solicitação direta ao seu recurso, a chave aws:PrincipalServiceName contém o nome da entidade de segurança do serviço. Por exemplo, o nome da entidade de segurança do serviço AWS CloudTrail é cloudtrail.amazonaws.com.

  • Disponibilidade: essa chave está presente na solicitação quando a chamada é feita por uma entidade de segurança de produto da AWS. Esta chave não está presente em nenhuma outra situação, incluindo a seguinte:

    • se o serviço usa uma função de serviço ou uma função vinculada ao serviço para fazer uma chamada em nome da entidade de segurança.

    • Se o serviço usar as credenciais de uma entidade de segurança do IAM para fazer uma solicitação em nome da entidade de segurança.

    • Se a chamada for feita diretamente por uma entidade de segurança do IAM.

    • Se a chamada for feita por um solicitante anônimo.

  • Tipo de valor: valor único

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

No exemplo de política de bucket do Amazon S3 a seguir, o acesso ao bucket é restrito, a menos que a solicitação seja originada de vpc-111bbb22 ou seja de uma entidade de segurança de serviço, como o 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 entidade de segurança de serviço que pertencem ao serviço. Esta é uma chave de condição avançada. Você pode usá-la para restringir o acesso do serviço ao seu recurso somente de uma região específica. Alguns serviços podem criar entidades de serviço regionais para indicar uma instância específica do serviço dentro de uma região específica. Você pode limitar o acesso a um recurso para uma instância específica do serviço. Quando uma entidade de segurança do serviço faz uma solicitação direta ao seu recurso, a chave aws:PrincipalServiceNamesList contém uma lista não ordenada de todos os nomes das entidades de segurança do serviço associadas à instância regional do serviço.

  • Disponibilidade: essa chave está presente na solicitação quando a chamada é feita por uma entidade de segurança de produto da AWS. Esta chave não está presente em nenhuma outra situação, incluindo a seguinte:

    • se o serviço usa uma função de serviço ou uma função vinculada ao serviço para fazer uma chamada em nome da entidade de segurança.

    • Se o serviço usar as credenciais de uma entidade de segurança do IAM para fazer uma solicitação em nome da entidade de segurança.

    • Se a chamada for feita diretamente por uma entidade de segurança do IAM.

    • Se a chamada for feita por um solicitante anônimo.

  • Tipo de valor: valores múltiplos

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 de conjunto ForAnyValue ou ForAllValues com o operador de condição StringLike ao usar essa chave. Para políticas que incluem vários valores para uma única chave, você deve 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/tag-key

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 a entidade de segurança estiver usando um usuário do IAM com etiquetas anexadas. Ela será incluída para uma entidade de segurança usando uma função do IAM com etiquetas anexadas ou etiquetas de sessão. As solicitações anônimas não incluem essa chave.

  • Tipo de valor: valor único

É 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 etiquetas do IAM, consulte Recursos de etiquetas do IAM. Você pode usar aws:PrincipalTag para controlar acesso de principais da AWS.

Este exemplo mostra como você pode criar uma política baseada em identidade que permita que usuários com a tag department=hr gerenciem usuários, grupos ou perfis do IAM. Para usar esta política, substitua o texto do espaço reservado em itálico na política de exemplo por suas próprias informações. Em seguida, 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/department": "hr" } } } ] }

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 mais informações, consulte Especificar um principal. Para exemplos específicos de valores de chave de principal, consulte Valores de chave de principal.

  • Availability (Disponibilidade): essa chave é incluída no contexto da solicitação para todas as solicitações, incluindo as anônimas.

  • Tipo de valor: valor único

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: essa chave será incluída no contexto da solicitação apenas se a solicitação para o recurso da AWS for invocada vinculando um 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.

  • Tipo de valor: valor único

Por exemplo, você pode acessar um objeto do Amazon S3 diretamente, usando um URL ou a invocação direta da API. Para obter mais informações, consulte Operações de API do Amazon S3 diretamente usando um navegador da Web. Quando você acessa um objeto do 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 do Amazon S3 digitando o URL no seu navegador, o aws:referer não 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 referencial 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, 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 para cada serviço, consulte Endpoints de serviço e cotas na Referência geral do Amazon Web Services.

  • Disponibilidade: essa chave é sempre incluída no contexto da solicitação.

  • Tipo de valor: valor único

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, as chamadas do IAM sempre falharão. 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 AWS Management Console. 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 mais informações, consulte Controlar o acesso durante solicitações do AWS.

  • Availability (Disponibilidade): essa chave é incluída no contexto da solicitação quando os pares de chave-valor são 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.

  • Tipo de valor: valor único

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. As chaves e os valores de etiquetas não diferenciam maiúsculas de minúsculas. Isso significa que, se você especificar "aws:RequestTag/TagKey1": "Value1" no elemento de condição da sua política, a condição corresponderá a uma chave de etiqueta de solicitação chamada TagKey1 ou tagkey1, mas não ambas.

Este exemplo mostra que, embora a chave tenha um único valor, você ainda poderá usar vários pares de chave-valor em uma solicitação se as chaves forem diferentes.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:::instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": [ "preprod", "production" ], "aws:RequestTag/team": [ "engineering" ] } } } }

aws:ResourceAccount

Funciona com operadores de string.

Use essa chave para comparar o Conta da AWSID do proprietário do recurso solicitado com a conta do recurso na política. Então, você pode permitir ou negar o acesso a esse recurso com base na conta proprietária do recurso.

  • Availability (Disponibilidade): essa chave sempre é incluída no contexto da solicitação para a maioria das ações do serviço. As ações a seguir não são compatíveis com essa chave de condição:

    • AWS Elastic Beanstalk

      • elasticbeanstalk:ListAvailableSolutionStacks

    • Amazon Elastic Block Store: todas as ações

    • Amazon EC2

      • ec2:CopySnapshot

      • ec2:CreateVolume

      • ec2:CreateVpcPeeringConnection

    • Amazon EventBridge: todas as ações

    • Amazon WorkSpaces

      • workspaces:DescribeWorkspaceImages

      • workspaces:CopyWorkspaceImage

  • Tipo de valor: valor único

nota

Alguns Serviços da AWS requerem acesso ao recursos de propriedade da AWS que estão hospedados em outra Conta da AWS. O uso de aws:ResourceAccount em suas políticas baseadas em identidade podem afetar a capacidade da sua identidade de acessar esses recursos.

Essa chave é igual ao ID da conta da AWS para a conta com os recursos avaliados na solicitação.

Para a maioria dos recursos da sua conta, o ARN contém o ID da conta do proprietário desse recurso. Para determinados recursos, como buckets do Amazon S3, o ARN do recurso não inclui o ID da conta. Os dois exemplos a seguir mostram a diferença entre um recurso com um ID de conta no ARN e um ARN do Amazon S3 sem um ID de conta:

  • arn:aws:iam::111122223333:role/AWSExampleRole: perfil do IAM criado e possuído dentro da conta111122223333.

  • arn:aws:s3:::AWSExampleS3Bucket: bucket do Amazon S3 criado e controlado dentro da conta da 444455556666, não exibido no ARN.

Use o console, API ou CLI da AWS para encontrar todos os seus recursos e ARNs correspondentes.

Você redige uma política que nega permissões a recursos com base no ID da conta do proprietário do recurso. Por exemplo, a política baseada em identidade a seguir negará acesso ao recurso especificado se o recurso não pertencer à conta especificada.

Para usar esta política, substitua o texto do espaço reservado em itálico pelas informações da conta.

Importante

Esta política não permite qualquer ação. Em vez disso, ela usa o efeito Deny que nega explicitamente o acesso a todas as ações não listadas na instrução que não pertencerem à conta listada. Use essa política em combinação com outras políticas que permitem acesso a recursos específicos.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyInteractionWithResourcesNotInSpecificAccount", "Action": "service:*", "Effect": "Deny", "Resource": [ "arn:partition:service:region:account:*" ], "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "account" ] } } } ] }

Esta política nega acesso a todos os recursos para um serviço da AWS específico, a menos que a conta da AWS especificada seja proprietária do recurso.

Certos serviços da AWS, como o AWS Data Exchange e o CloudFormation, dependem de acesso a recursos fora das suas contas da AWS para operações normais. Se você usar o elemento aws:ResourceAccount em suas políticas, inclua instruções adicionais para criar isenções para esses serviços. Os exemplos de políticas a seguir demonstram como negar acesso com base na conta do recurso ao definir exceções para recursos de propriedade do serviço.

Use esses exemplos de políticas como modelos para criar suas próprias políticas personalizadas. Para obter mais informações, consulte a documentação do serviço.

aws:ResourceOrgID

Funciona com operadores de string.

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

  • Availability (Disponibilidade): essa chave só é incluída no contexto da solicitação se a entidade de segurança for membro de uma organização. Essa chave de condição global não é compatível com as seguintes ações:

    • AWS Elastic Beanstalk

      • elasticbeanstalk:ListAvailableSolutionStacks

    • Amazon Elastic Block Store: todas as ações

    • Amazon EC2

      • ec2:CopySnapshot

      • ec2:CreateVolume

      • ec2:CreateVpcPeeringConnection

    • Amazon EventBridge: todas as ações

    • Amazon WorkSpaces

      • workspaces:DescribeWorkspaceImages

      • workspaces:CopyWorkspaceImage

  • Tipo de valor: valor único

Essa chave global retorna o ID da organização do recurso para uma determinada solicitação. Ele permite que você crie regras que se aplicam a todos os recursos em uma organização que são especificados no elemento Resource de uma política baseada em identidade. É 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:ResourceOrgID incluem automaticamente as contas corretas e não exigem atualização manual.

nota

Alguns Serviços da AWS requerem acesso ao recursos de propriedade da AWS que estão hospedados em outra Conta da AWS. O uso de aws:ResourceOrgID em suas políticas baseadas em identidade podem afetar a capacidade da sua identidade de acessar esses recursos.

Por exemplo, a política a seguir impede que a entidade principal adicione objetos ao recurso policy-genius-dev, a menos que o recurso do Amazon S3 pertença à mesma organização que a entidade principal que faz a solicitação.

Importante

Esta política não permite qualquer ação. Em vez disso, ela usa o efeito Deny que nega explicitamente o acesso a todas as ações não listadas na instrução que não pertencerem à conta listada. Use essa política em combinação com outras políticas que permitem acesso a recursos específicos.

{ "Version": "2012-10-17", "Statement": { "Sid": "DenyPutObjectToS3ResourcesOutsideMyOrganization", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:partition:s3:::policy-genius-dev/*", "Condition": { "StringNotEquals": { "aws:ResourceOrgID": "${aws:PrincipalOrgID}" } } } }

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

aws:ResourceOrgPaths

Funciona com operadores de string.

Use essa chave para comparar o caminho do AWS Organizations para o recurso acessado com o caminho na política. Em uma política, essa chave de condição garante que o solicitante pertença a um membro da conta na raiz da organização ou unidades organizacionais (OUs) especificadas no AWS Organizations. Um caminho do AWS Organizations é uma representação de texto da estrutura de uma entidade do Organizations. Para obter mais informações sobre como usar e entender caminhos, consulte Compreender o caminho da entidade do AWS Organizations

  • Availability (Disponibilidade): essa chave só é incluída no contexto da solicitação se a entidade de segurança for membro de uma organização. Essa chave de condição global não é compatível com as seguintes ações:

    • AWS Elastic Beanstalk

      • elasticbeanstalk:ListAvailableSolutionStacks

    • Amazon Elastic Block Store: todas as ações

    • Amazon EC2

      • ec2:CopySnapshot

      • ec2:CreateVolume

      • ec2:CreateVpcPeeringConnection

    • Amazon EventBridge: todas as ações

    • Amazon WorkSpaces

      • workspaces:DescribeWorkspaceImages

      • workspaces:CopyWorkspaceImage

  • Tipo de valor: valores múltiplos

aws:ResourceOrgPaths é 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 de conjunto ForAnyValue ou ForAllValues com o operador de condição StringLike ao usar essa chave. Para políticas que incluem vários valores para uma única chave, você deve 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.

nota

Alguns Serviços da AWS requerem acesso ao recursos de propriedade da AWS que estão hospedados em outro Conta da AWS. O uso de aws:ResourceOrgPaths em suas políticas baseadas em identidade podem afetar a capacidade da sua identidade de acessar esses recursos.

Por exemplo, a condição a seguir retorna True para recursos que pertencem à organização o-a1b2c3d4e5. Quando você inclui um caractere curinga, deve usar o operador de condição StringLike.

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

A condição a seguir retorna True para recursos pertencentes a contas anexadas à unidade organizacional ou-ab12-11111111 ou a qualquer uma das unidades organizacionais subordinadas.

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

A condição a seguir retorna True para recursos pertencentes a contas anexadas diretamente à unidade organizacional ou-ab12-22222222, mas não às unidades organizacionais subordinadas. O exemplo a seguir usa o operador de condição StringEquals para especificar o requisito de correspondência exata para a unidade organizacional e não uma correspondência com curinga.

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

aws:ResourceTag/tag-key

Funciona com operadores de string.

Use essa chave para comparar o par chave-valor da etiqueta especificado na política com o par 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 mais informações, consulte Controlar o acesso aos recursos do AWS.

  • Availability (Disponibilidade): essa chave é incluída no contexto da solicitação quando o recurso solicitado já tem tags anexadas que criam um recurso com uma tag anexada. 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.

  • Tipo de valor: valor único

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. As chaves e os valores de etiquetas não diferenciam maiúsculas de minúsculas. Isso significa que, se você especificar "aws:ResourceTag/TagKey1": "Value1" no elemento de condição da política, a condição corresponderá a uma chave de tag de recurso chamada TagKey1 ou tagkey1, mas não ambas.

Para obter exemplos de como usar a chave aws:ResourceTag para controlar o acesso aos recursos do IAM, consulte Controlar o acesso aos recursos do 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 etiquetas.

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 é sempre incluída no contexto da solicitação.

  • Tipo de valor: valor único

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 é incluída no contexto da solicitação somente se o acesso a um recurso acionar um produto da AWS para chamar outro serviço em nome do proprietário do recurso. O serviço de chamada deve passar o ID da conta do recurso da fonte para o serviço chamado. Este ID de conta inclui o ID da conta-fonte.

  • Tipo de valor: valor único

Você pode usar essa chave de condição para impedir que um produto da AWS seja usado como um confused deputy durante transações entre os serviços. Defina o valor dessa chave de condição para a conta do recurso na solicitação. Por exemplo, quando uma atualização de bucket do Amazon S3 acionar uma publicação de tópico do Amazon SNS, o serviço do Amazon S3 invocará a operação da API sns:Publish. Na política que permite a operação sns:Publish, defina o valor da chave de condição para o ID da conta do bucket do Amazon S3. Para obter informações sobre como e quando essas chaves de condição são recomendadas, consulte a documentação dos produtos da AWS que você está usando.

aws:SourceArn

Funciona com operadores de ARN e operadores de string. A AWS recomenda que você use operadores de ARN em vez de operadores de string ao comparar ARNs.

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 fonte inclui o ID da conta, portanto, não é necessário usar aws:SourceAccount com aws:SourceArn.

  • Disponibilidade: essa chave é incluída no contexto da solicitação somente se o acesso a um recurso acionar um produto 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.

  • Tipo de valor: valor único

Você pode usar essa chave de condição para impedir que um produto da AWS seja usado como um confused deputy durante transações entre os serviços. Defina o valor desta chave de condição para o ARN do recurso na solicitação. Por exemplo, quando uma atualização de bucket do Amazon S3 acionar uma publicação de tópico do Amazon SNS, o serviço do Amazon S3 invocará a operação da API sns:Publish. Na política que permite a operação sns:Publish, defina o valor da chave de condição para o ARN do bucket do Amazon S3. Para obter informações sobre como e quando essas chaves de condição são recomendadas, consulte a documentação dos produtos da AWS que você está usando.

aws:SourceIdentity

Funciona com operadores de string.

Use essa chave para comparar a identidade-fonte definida pela entidade de segurança com a identidade-fonte especificada na política.

  • Disponibilidade: essa chave é incluída no contexto da solicitação depois que uma identidade-fonte é definida quando uma função é assumida usando qualquer comando de assumir função da CLI do AWS STS ou a operação AssumeRole da API do AWS STS.

  • Tipo de valor: valor único

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

Ao contrário de sts:RoleSessionName, após a definição da identidade-fonte, o valor não pode ser alterado. Ele estará presente no contexto da solicitação para todas as ações executadas 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 de segurança inicialmente define uma identidade-fonte enquanto assume uma função usando qualquer comando de assumir função da CLI do AWS STS ou operação da API AssumeRole do AWS STS. A chave aws:SourceIdentity está presente na solicitação para todas as ações executadas com uma sessão de função que possui um conjunto de identidade-fonte.

A política de confiança de função a seguir para CriticalRole na conta 111122223333 contém uma condição para aws:SourceIdentity que impede que uma entidade de segurança sem uma identidade-fonte definida como Saanvi ou Diego assuma 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-fonte, consulte Monitorar e controlar ações realizadas 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 endpoint da VPC para fazer a solicitação.

  • Tipo de valor: valor único

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-fonte 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 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 do 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 o uso de endpoints da VPC, consulte Gerenciamento de identidades e acesso para endpoints da VPC e serviços de endpoint da VPC no Guia do AWS PrivateLink.

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 mais informações, consulte Restringir acesso a uma VPC específica no Guia do usuário do Amazon Simple Storage Service.

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

  • Tipo de valor: valor único

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 mais informações, consulte Restringir o acesso a um endpoint da VPC específico no Guia do usuário do Amazon Simple Storage Service.

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

  • Tipo de valor: valor único

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.

  • Availability (Disponibilidade): essa chave será incluída no contexto da solicitação se a operação for compatível com a passagem de tags no recurso.

  • Tipo de valor: valores múltiplos

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, você deve usar os operadores de conjunto ForAllValues ou ForAnyValue. Para 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 etiquetas quando alguém cria um snapshot do Amazon EC2, você deve incluir a ação de criação ec2:CreateSnapshot e a ação de etiquetamento ec2:CreateTags na política. Para visualizar uma política para este cenário que use aws:TagKeys, consulte Criar um snapshot com etiquetas 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: esta chave é incluída no contexto da solicitação somente quando a entidade de segurança usa 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 AWS SDK que são feitas usando chaves de acesso.

  • Tipo de valor: valor único

Para saber quais serviços oferecem suporte a credenciais de segurança temporárias, consulte Serviços da AWS que funcionam 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 é sempre incluída no contexto da solicitação.

  • Tipo de valor: valor único

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. Para exemplos específicos de valores de chave de principal, consulte Valores de chave de principal.

  • Availability (Disponibilidade): essa chave é incluída no contexto da solicitação para todas as solicitações, incluindo as anônimas.

  • Tipo de valor: valor único

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. Para exemplos específicos de valores de chave de principal, consulte Valores de chave de principal.

  • Disponibilidade: essa chave será sempre incluída no contexto da solicitação para os usuários do IAM. Solicitações anônimas e solicitações feitas usando o usuário raiz da Conta da AWS ou funções do IAM não incluem essa chave. As solicitações feitas usando credenciais do IAM Identity Center não incluem essa chave no contexto. Para saber como controlar o acesso aos usuários no IAM Identity Center, consulte identitystore:UserId em Using predefined attributes from the IAM Identity Center identity store for access control in AWS (Usar atributos predefinidos no armazenamento de identidades do IAM Identity Center para controle de acesso no AWS). Os usuários do IAM Identity Center são as pessoas em sua força de trabalho que precisam acessar suas contas da AWS ou seus aplicativos na nuvem.

  • Tipo de valor: valor único

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 uma entidade de segurança do IAM para fazer uma solicitação em nome da entidade de segurança. 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.

  • Tipo de valor: valor único

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 da fonte.

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 endpoint da VPC.

  • Tipo de valor: valor único

Para obter mais informações, consulte Controlar o acesso a serviços com VPC endpoints no Manual 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.