AWS teclas de contexto de condição global - AWS Identity and Access Management

Se fornecermos uma tradução da versão em inglês do guia, a versão em inglês prevalecerá caso haja qualquer conflito entre as versões. A tradução é fornecida com o uso de tradução por máquina.

AWS teclas de contexto de condição global

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 IAM Elementos da política JSON: 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 teclas não estiverem incluídas no contexto do pedido, a condição continua a ser devolvida true. Os valores só são verificados se a chave especificada estiver incluída no contexto do pedido.

"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 mais informações, consulte Teclas de ações, recursos e condições para AWS Serviços e escolha o serviço cujas teclas pretende ver.

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 da 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 o acesso com base na 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 Utilizar autenticação multifator (MFA) em AWS.

  • Disponibilidade – Esta chave está incluída no contexto do pedido apenas se o principal responsável pela chamada tiver sido autenticado utilizando a 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. Nestes casos, o aws:MultiFactorAuthPresent está presente no pedido e definido para um valor de false. Existem dois casos comuns onde isto 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 AWS serviços que trabalham com 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: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 a conta mestre 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 AWS Organizations caminho da entidade.

  • 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-jkl0-awsddddd, mas não em suas UOs filho.

"Condition" : { "ForAnyValue:StringEquals" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-ghi0-awsccccc/ou-jkl0-awsddddd/"] }}

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-f6g7h8i9j0example/ou-ghi0-awsccccc/ou-jkl0-awsddddd*"] }}

A condição a seguir retorna true aos principais em uma conta anexada diretamente à UO ou a qualquer uma de suas UOs filho.

"Condition" : { "ForAnyValue:StringLike" : { "aws:PrincipalOrgPaths":["o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-ghi0-awsccccc/ou-jkl0-awsddddd/*"] }}

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 é lógico OR. Quando utilizar vários valores com o ForAnyValue operador de condição, o caminho do responsável principal deve corresponder a um dos caminhos indicados na apólice. 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 teclas ou valores.

"Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-def0-awsbbbbb/*", "o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-jkl0-awsddddd/*" ] } }

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 Etiquetagem IAM utilizadores e funções. Você pode usar aws:PrincipalTag para controlar acesso de principais da AWS.

Este exemplo como você pode criar uma política 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 saber quais os valores que pode detalhar sobre como a informação aparece no contexto do pedido para os diferentes princípios, consulte Especificar um principal.

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

aws:árbitro

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.

  • Disponibilidade – essa chave será incluída no contexto da solicitação somente se a solicitação for invocada usando um URL no navegador.

Por exemplo, é possível chamar operações de API do Amazon S3 diretamente usando um navegador da web. Isso significa que é possível visualizar objetos do S3, como imagens e documentos, diretamente por meio de um navegador da web. A condição aws:referer permite restringir o acesso a valores específicos na solicitação HTTP ou HTTPS com base no valor do cabeçalho do indicador.

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 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, pode verificar se o pedido inclui a chave de etiqueta "Dept" e que tem o valor "Accounting". Para mais informações, consulte Controlo do controlo durante AWS pedidos.

  • 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.

Esta tecla de contexto está formatada "aws:RequestTag/tag-key":"tag-value" onde 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 Utilizar várias teclas 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, pode requerer que o acesso a um recurso seja permitido apenas se o recurso tiver a chave de etiqueta anexada "Dept" com o valor "Marketing". Para mais informações, consulte Controlo do acesso a AWS recursos.

  • 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.

Esta tecla de contexto está formatada "aws:ResourceTag/tag-key":"tag-value" onde tag-key e tag-value são uma chave de tag e um par de valores.

aws:SecureTransport

Funciona com Operadores boolianos.

Use essa chave para verificar se a solicitação foi enviada usando SSL. O contexto do pedido devolve true ou false. Numa política, pode permitir ações específicas apenas se o pedido for enviado utilizando 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.

Você pode 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 aciona uma publicação de tópico do Amazon SNS, o serviço do Amazon S3 chama 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 do ARN do 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: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.

  • 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 Controlo do controlo com base nas teclas de tags.

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

Esta tecla de contexto está formatada "aws:TagKeys":"tag-key" onde tag-key é uma lista de teclas 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, considere o uso dos operadores de conjunto ForAllValues ou ForAnyValue. Para obter mais informações, consulte Utilizar várias teclas 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 AWS serviços que trabalham com 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.

  • Disponibilidade – essa chave será sempre incluída no contexto da solicitação para os usuários do IAM. As solicitações anônimas e as solicitações feitas usando as funções do IAM ou Usuário raiz da conta da AWS não incluem essa chave.

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: Recusa o acesso a AWS baseado na fonte IP.

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.