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. As informações da solicitação são fornecidas por fontes diferentes, incluindo a entidade principal que faz a solicitação, o recurso contra o qual a solicitação é feita e os metadados sobre a solicitação em si.
As chaves de condição globais podem ser usadas em todos os serviços da AWS. Embora essas chaves de condição possam ser usadas em todas as políticas, a chave não está disponível em todos os contextos de solicitação. Por exemplo, a chave de condição aws:SourceAccount
só está disponível quando a chamada para seu recurso é feita diretamente por um responsável pela entidade principal do serviço da AWS. Para saber mais sobre as circunstâncias em que uma chave global é incluída no contexto da solicitação, consulte as informações de Disponibilidade de cada chave de condição global.
Alguns serviços individuais criam suas próprias chaves de condição que estão disponíveis no contexto da solicitação para outros serviços. As chaves de condição entre serviços são um tipo de chave de condição global que inclui um prefixo correspondente ao nome do serviço, como ec2:
ou lambda:
, mas estão disponíveis em outros serviços.
As chaves de condição específicas do serviço são definidas para uso com um serviço da AWS individual. Por exemplo, o Amazon S3 permite que você escreva uma política com a chave de condição s3:VersionId
para limitar o acesso a uma versão específica de um objeto do Amazon S3. Essa chave de condição é exclusiva do serviço, o que significa que ela só funciona com solicitações ao serviço Amazon S3. Para chaves de condição específicas de serviços, consulte Ações, recursos e chaves de condição para serviços da AWS e escolha o serviço cujas chaves deseja visualizar.
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. Para obter mais informações sobre como uma política é avaliada quando uma chave não está presente para outros operadores, consulte Operadores de condição.
"Condition": {
"IpAddressIfExists": {"aws:SourceIp" : ["xxx"] },
"StringEqualsIfExists" : {"aws:SourceVpc" : ["yyy"]}
}
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 obter mais informações, consulte Chaves de contexto de múltiplos valores.
Propriedades da entidade principal | Propriedades de uma sessão de perfil | Propriedades da rede | Propriedades do recurso | Propriedades da solicitação |
---|---|---|---|---|
Propriedades da entidade principal
Use as chaves de condição a seguir para comparar detalhes sobre a entidade principal que está fazendo a solicitação com as propriedades da entidade principal especificada na política. Para obter uma lista das entidades principais que podem fazer solicitações, consulte Especificar um principal.
Sumário
aws:PrincipalArn
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 (Perfil do IAM)
-
IAM user (Usuário do IAM)
-
Sessão de usuário federado do AWS STS
-
Usuário raiz Conta da AWS
-
-
Tipo de dados: ARN, String
A AWS recomenda utilizar operadores ARN em vez de operadores string ao comparar ARNs.
-
Tipo de valor: valor único
-
Valores de exemplo: 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 :
-
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::123456789012: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::123456789012: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::123456789012: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çãoaws: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 Entidades principais da Conta da AWS.arn:aws:iam::123456789012: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:PrincipalAccount
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 dados: String
-
Tipo de valor: valor único
No exemplo a seguir, o acesso é negado, exceto para entidades principais com o número de conta123456789012
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessFromPrincipalNotInSpecificAccount", "Action": "
service
:*", "Effect": "Deny", "Resource": [ "arn:aws:service:region:accountID:resource
" ], "Condition": { "StringNotEquals": { "aws:PrincipalAccount": [ "123456789012" ] } } } ] }
aws:PrincipalOrgPaths
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 principal pode ser um usuário do IAM, um perfil 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 dados: String (lista)
-
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 de valores múltiplos podem ter vários valores no contexto da solicitação. 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 obter mais informações sobre chaves de condição de vários valores, consulte Chaves de contexto de múltiplos valores.
"Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-33333333/*", "o-a1b2c3d4e5/r-ab12/ou-ab12-22222222/*" ] } }
aws:PrincipalOrgID
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 dados: String
-
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:PrincipalTag/tag-key
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 dados: String
-
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:PrincipalIsAWSService
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 falsa se o serviço usar um perfil de serviço ou perfil vinculado ao serviço para fazer uma chamada em nome da entidade principal.
-
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 dados: Booleano
-
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:::
amzn-s3-demo-bucket1
/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:PrincipalServiceName
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 um perfil de serviço ou perfil vinculado ao serviço para fazer uma chamada em nome da entidade principal.
-
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 dados: String
-
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:::
amzn-s3-demo-bucket1
/AWSLogs/AccountNumber
/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-111bbb22", "aws:PrincipalServiceName": "cloudtrail.amazonaws.com" } } } ] }
aws:PrincipalServiceNamesList
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 um perfil de serviço ou perfil vinculado ao serviço para fazer uma chamada em nome da entidade principal 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 dados: String (lista)
-
Tipo de valor: valores múltiplos
aws:PrincipalServiceNamesList
é uma chave de condição de vários valores. Chaves de valores múltiplos podem ter vários valores no contexto da solicitação. Você deve usar os operadores de conjunto ForAnyValue
ou ForAllValues
com operadores de condição de string para essa chave. Para obter mais informações sobre chaves de condição de vários valores, consulte Chaves de contexto de múltiplos valores.
aws:PrincipalType
Use essa chave para comparar o tipo de principal que está fazendo a solicitação com o tipo de principal especificado na política. Para obter mais informações, consulte Especificar um principal. 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 dados: String
-
Tipo de valor: valor único
aws:userid
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 dados: String
-
Tipo de valor: valor único
aws:username
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 perfis do IAM não incluem essa chave. As solicitações feitas usando credenciais do IAM Identity Center não incluem essa chave no contexto.
-
Tipo de dados: String
-
Tipo de valor: valor único
Propriedades de uma sessão de perfil
Use as chaves de condição a seguir para comparar as propriedades da sessão do perfil no momento em que a sessão foi gerada. Essas chaves de condição só estão disponíveis quando uma solicitação é feita por uma entidade principal com credenciais de sessão de perfil ou usuário federado. Os valores dessas chaves de condição estão incorporados no token de sessão do perfil.
Um perfil é um tipo de entidade principal. Você também pode usar as chaves de condição da seção Propriedades da entidade principal para avaliar as propriedades de um perfil quando um perfil está fazendo uma solicitação.
Sumário
- aws:FederatedProvider
- aws:TokenIssueTime
- aws:MultiFactorAuthAge
- aws:MultiFactorAuthPresent
- aws:Ec2InstanceSourceVpc
- aws:Ec2InstanceSourcePrivateIPv4
- aws:SourceIdentity
- ec2:RoleDelivery
- ec2:SourceInstanceArn
- glue:RoleAssumedBy
- glue:CredentialIssuingService
- lambda:SourceFunctionArn
- ssm:SourceInstanceArn
- identitystore:UserId
aws:FederatedProvider
Use essa chave para comparar o provedor de identidade (IdP) emissor da entidade principal com o IdP especificado na política. Isso significa que um perfil do IAM foi assumido usando a operação AssumeRoleWithWebIdentity
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 do perfil e a sessão foi emitida usando um perfil que foi assumido com
AssumeRoleWithWebIdentity
. -
Tipo de dados: String
-
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.
aws:TokenIssueTime
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 dados: Data
-
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:MultiFactorAuthAge
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 Código da autenticação multifator no IAM da AWS.
Importante
Essa chave de condição não está presente em identidades federadas ou solicitações feitas usando chaves de acesso para assinar solicitações da AWS CLI, da API da AWS ou do AWS SDK. Para saber mais sobre como adicionar proteção com MFA às operações de API com credenciais de segurança temporárias, consulte Acesso seguro à API com a MFA.
Para verificar se a MFA é usada para validar identidades federadas do IAM, você pode transmitir o método de autenticação do seu provedor de identidade para a AWS como uma tag de sessão. Para obter detalhes, consulte Passar tags de sessão no AWS STS. Para aplicar a MFA às identidades do Centro de Identidade do IAM, você pode habilitar atributos de controle de acesso para transmitir uma declaração SAML com o método de autenticação do seu provedor de identidade ao Centro de Identidade do IAM.
-
Disponibilidade: esta chave é incluída no contexto da solicitação somente quando a entidade principal usa credenciais de segurança temporárias para fazer a solicitação. Políticas com condições de MFA podem ser anexadas a:
-
Um usuário ou grupo do IAM
-
Um recurso como um bucket do Amazon S3, uma fila do Amazon SQS ou um tópico do Amazon SNS
-
A política de confiança de uma função do IAM que pode ser assumida por um usuário
-
-
Tipos de dados: Numérico
-
Tipo de valor: valor único
aws:MultiFactorAuthPresent
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.
Importante
Essa chave de condição não está presente em identidades federadas ou solicitações feitas usando chaves de acesso para assinar solicitações da AWS CLI, da API da AWS ou do AWS SDK. Para saber mais sobre como adicionar proteção com MFA às operações de API com credenciais de segurança temporárias, consulte Acesso seguro à API com a MFA.
Para verificar se a MFA é usada para validar identidades federadas do IAM, você pode transmitir o método de autenticação do seu provedor de identidade para a AWS como uma tag de sessão. Para obter detalhes, consulte Passar tags de sessão no AWS STS. Para aplicar a MFA às identidades do Centro de Identidade do IAM, você pode habilitar atributos de controle de acesso para transmitir uma declaração SAML com o método de autenticação do seu provedor de identidade ao Centro de Identidade do IAM.
-
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. Políticas com condições de MFA podem ser anexadas a:
-
Um usuário ou grupo do IAM
-
Um recurso como um bucket do Amazon S3, uma fila do Amazon SQS ou um tópico do Amazon SNS
-
A política de confiança de uma função do IAM que pode ser assumida por um usuário
-
-
Tipo de dados: Booleano
-
Tipo de valor: valor único
As credenciais temporárias são usadas para autenticar perfis do IAM e usuários do IAM com tokens temporários de AssumeRole ou 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:Ec2InstanceSourceVpc
Essa chave identifica a VPC para a qual as credenciais de perfil do IAM do Amazon EC2 foram entregues. Você pode usar essa chave em uma política com a chave global aws:SourceVPC para verificar se uma chamada é feita por uma VPC (aws:SourceVPC
) que corresponde à VPC para a qual a credencial foi entregue (aws:Ec2InstanceSourceVpc
).
-
Disponibilidade: esta chave será incluída no contexto da solicitação sempre que o solicitante assinar solicitações com uma credencial de perfil do Amazon EC2. Pode ser usada em políticas do IAM, políticas de controle de serviços, políticas de endpoint da VPC e políticas de recursos.
-
Tipo de dados: String
-
Tipo de valor: valor único
Essa chave pode ser usada com valores de identificador de VPC, porém é mais útil quando usada como uma variável combinada com a chave de contexto aws:SourceVpc
. A chave de contexto aws:SourceVpc
será incluída no contexto da solicitação somente se o solicitante usar um endpoint da VPC para fazer a solicitação. Usar aws:Ec2InstanceSourceVpc
com aws:SourceVpc
permite que você utilize aws:Ec2InstanceSourceVpc
de forma mais ampla, pois compara valores que normalmente são alterados juntos.
nota
Essa chave de condição não está disponível no EC2-Classic.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireSameVPC", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:SourceVpc": "${aws:Ec2InstanceSourceVpc}" }, "Null": { "ec2:SourceInstanceARN": "false" }, "BoolIfExists": { "aws:ViaAWSService": "false" } } } ] }
No exemplo acima, o acesso será negado se o valor de aws:SourceVpc
não for igual ao valor de aws:Ec2InstanceSourceVpc
. A instrução de política é limitada somente aos perfis usados como perfis de instância do Amazon EC2, testando a existência da chave de condição ec2:SourceInstanceARN
.
A política usa aws:ViaAWSService
para permitir que a AWS autorize solicitações quando as solicitações são feitas em nome de seus perfis de instância do Amazon EC2. Por exemplo, quando você faz uma solicitação de uma instância do Amazon EC2 para um bucket criptografado do Amazon S3, o Amazon S3 faz uma chamada para o AWS KMS por você. Algumas das chaves não estão presentes quando a solicitação é feita ao AWS KMS.
aws:Ec2InstanceSourcePrivateIPv4
Esta chave identifica o endereço IPv4 privado da interface de rede elástica primária ao qual as credenciais de perfil do IAM do Amazon EC2 foram entregues. É necessário usar essa chave de condição com sua chave complementar aws:Ec2InstanceSourceVpc
para garantir que você tenha uma combinação global exclusiva de ID da VPC e IP privado de origem. Use essa chave com aws:Ec2InstanceSourceVpc
para garantir que uma solicitação tenha sido feita com base no mesmo endereço IP privado para o qual as credenciais foram entregues.
-
Disponibilidade: esta chave será incluída no contexto da solicitação sempre que o solicitante assinar solicitações com uma credencial de perfil do Amazon EC2. Pode ser usada em políticas do IAM, políticas de controle de serviços, políticas de endpoint da VPC e políticas de recursos.
-
Tipo de dados: Endereço IP
-
Tipo de valor: valor único
Importante
Essa chave não deve ser usada sozinha em uma instrução Allow
. Por definição, os endereços IP privados não são globalmente exclusivos. É necessário usar a chave aws:Ec2InstanceSourceVpc
toda vez que usar a chave aws:Ec2InstanceSourcePrivateIPv4
para especificar a VPC de onde suas credenciais de instância do Amazon EC2 podem ser usadas.
nota
Essa chave de condição não está disponível no EC2-Classic.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:Ec2InstanceSourceVpc": "${aws:SourceVpc}" }, "Null": { "ec2:SourceInstanceARN": "false" }, "BoolIfExists": { "aws:ViaAWSService": "false" } } }, { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:Ec2InstanceSourcePrivateIPv4": "${aws:VpcSourceIp}" }, "Null": { "ec2:SourceInstanceARN": "false" }, "BoolIfExists": { "aws:ViaAWSService": "false" } } } ] }
aws:SourceIdentity
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 dados: String
-
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::123456789012: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.
ec2:RoleDelivery
Use essa chave para comparar a versão do serviço de metadados da instância na solicitação assinada com as credenciais do perfil do IAM para o Amazon EC2. O serviço de metadados da instância faz distinção entre as solicitações do IMDSv1 e do IMDSv2 com base na presença dos cabeçalhos PUT
ou GET
, que são exclusivos do IMDSv2, nessa solicitação.
-
Disponibilidade: esta chave será incluída no contexto da solicitação sempre que a sessão de perfil for criada por uma instância do Amazon EC2.
-
Tipos de dados: Numérico
-
Tipo de valor: valor único
-
Valores de exemplo: 1.0, 2.0
É possível configurar o Serviço de metadados de instância (IMDS) em cada instância de modo que o código ou os usuários locais devam usar o IMDSv2. Quando você especifica que o IMDSv2 deve ser usado, o IMDSv1 não funciona mais.
-
Serviço de metadados da instância versão 1 (IMDSv1): um método de solicitação/resposta
-
Serviço de metadados da instância versão 2 (IMDSv2): um método orientado a sessões
Para obter informações sobre como configurar sua instância para usar o IMDSv2, consulte Configurar as opções de metadados da instância.
No exemplo a seguir, o acesso será negado se o valor ec2:RoleDelivery no contexto da solicitação for 1.0 (IMDSv1). Essa instrução/política pode ser aplicada de modo geral porque, se a solicitação não for assinada por credenciais de perfil do Amazon EC2, ela não terá efeito.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAllEc2RolesToUseV2", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NumericLessThan": { "ec2:RoleDelivery": "2.0" } } } ] }
Para obter mais informações, consulte Exemplo de políticas para trabalhar com metadados de instâncias.
ec2:SourceInstanceArn
Use essa chave para comparar o ARN da instância da qual a sessão do perfil foi gerada.
-
Disponibilidade: esta chave será incluída no contexto da solicitação sempre que a sessão de perfil for criada por uma instância do Amazon EC2.
-
Tipo de dados: ARN
-
Tipo de valor: valor único
-
Valor de exemplo: arn:aws:ec2:us-west-2:111111111111:instance/instance-id
Para obter exemplos de políticas, consulte Permitir que uma instância específica visualize recursos em outros serviços da AWS.
glue:RoleAssumedBy
O serviço AWS Glue define essa chave de condição para cada solicitação à API da AWS em que AWS Glue faz uma solicitação usando um perfil de serviço em nome do cliente (não por meio de um endpoint de trabalho ou desenvolvedor, mas diretamente pelo serviço AWS Glue). Use essa chave para verificar se uma chamada para um recurso da AWS é proveniente do serviço AWS Glue.
-
Disponibilidade: essa chave será incluída no contexto da solicitação quando o AWS Glue fizer uma solicitação usando um perfil de serviço em nome do cliente.
-
Tipo de dados: String
-
Tipo de valor: valor único
-
Valor de exemplo: essa chave é sempre definida como
glue.amazonaws.com
.
O exemplo a seguir adiciona uma condição para permitir que o serviço AWS Glue obtenha um objeto de um bucket do Amazon S3.
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:RoleAssumedBy": "glue.amazonaws.com" } } }
glue:CredentialIssuingService
O serviço AWS Glue define essa chave para cada solicitação à API da AWS usando um perfil de serviço proveniente de um endpoint de trabalho ou desenvolvedor. Use essa chave para verificar se uma chamada para um recurso da AWS é proveniente de um endpoint de trabalho ou desenvolvedor do AWS Glue.
-
Disponibilidade: essa chave será incluída no contexto da solicitação quando o AWS Glue fizer uma solicitação proveniente de um endpoint de trabalho ou desenvolvedor.
-
Tipo de dados: String
-
Tipo de valor: valor único
-
Valor de exemplo: essa chave é sempre definida como
glue.amazonaws.com
.
O exemplo seguir adiciona uma condição vinculada a um perfil do IAM usado por um trabalho do AWS Glue. Isso garante que determinadas ações sejam permitidas/negadas dependendo de a sessão de perfil ser ou não usada para um ambiente de runtime de trabalho do AWS Glue.
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }
lambda:SourceFunctionArn
Use essa chave para identificar o ARN da função do Lambda para o qual as credenciais do perfil do IAM foram entregues. O serviço Lambda define essa chave para cada solicitação à API da AWS proveniente do ambiente de execução da sua função. Use essa chave para verificar se uma chamada para um recurso da AWS é proveniente do código de uma função específica do Lambda. O Lambda também define essa chave para algumas solicitações feitas fora do ambiente de execução, como gravar logs no CloudWatch e enviar rastreamentos para o X-Ray.
-
Disponibilidade: essa chave será incluída no contexto da solicitação sempre que o código da função do Lambda for invocado.
-
Tipo de dados: ARN
-
Tipo de valor: valor único
-
Valor de exemplo: arn:aws:lambda:us-east-1:123456789012:function:TestFunction
O exemplo a seguir permite que uma função do Lambda específica tenha acesso de s3:PutObject
ao bucket especificado.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleSourceFunctionArn", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "ArnEquals": { "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda" } } } ] }
Para obter mais informações, consulte Trabalhar com credenciais do ambiente de execução do Lambda no Guia do desenvolvedor do AWS Lambda.
ssm:SourceInstanceArn
Use essa chave para identificar o ARN da instância gerenciada do AWS Systems Manager para o qual as credenciais do perfil do IAM foram entregues. Essa chave está não está presente quando a solicitação é proveniente instância gerenciada com um perfil do IAM associado a um perfil de instância do Amazon EC2.
-
Disponibilidade: essa chave será incluída no contexto da solicitação sempre que as credenciais do perfil forem entregues a uma instância gerenciada do AWS Systems Manager.
-
Tipo de dados: ARN
-
Tipo de valor: valor único
-
Valor de exemplo: arn:aws:ec2:us-west-2:111111111111:instance/instance-id
identitystore:UserId
Use essa chave para comparar a identidade da força de trabalho do IAM Identity Center na solicitação assinada com a identidade especificada na política.
-
Disponibilidade: essa chave é incluída quando o chamador da solicitação é um usuário no IAM Identity Center.
-
Tipo de dados: String
-
Tipo de valor: valor único
-
Valor de exemplo: 94482488-3041-7026-18f3-be45837cd0e4
Você pode encontrar o UserId de um usuário no IAM Identity Center fazendo uma solicitação à API GetUserId usando a AWS CLI, a API da AWS ou AWS SDK.
Propriedades da rede
Use as chaves de condição a seguir para comparar detalhes sobre a rede da qual a solicitação é proveniente ou foi passada por meio das propriedades de rede que você especificar na política.
aws:SourceIp
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 dados: Endereço IP
-
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.
nota
O aws:SourceIp
oferece suporte a endereços IP para IPv4 e IPv6 ou a um intervalo de endereços IP. Para obter uma lista de Serviços da AWS com suporte para IPv6, consulte Serviços da AWS que oferecem suporte a IPv6 no Guia do usuário da Amazon VPC.
Por exemplo, é possível anexar a política baseada em identidade apresentada a seguir a um perfil do IAM. Essa política permite que o usuário coloque objetos no bucket amzn-s3-demo-bucket3
do Amazon S3 caso faça a chamada no intervalo de endereços IPv4 especificado. Essa política também permite um serviço da AWS que use Sessões de acesso direto faça essa operação em seu nome.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalPutObjectIfIpAddress", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*", "Condition": { "IpAddress": { "aws:SourceIp": "
203.0.113.0/24
" } } } ] }
Caso seja necessário restringir o acesso de redes que oferecem suporte ao endereçamento IPv4 e IPv6, você poderá incluir os endereços IPv4 e IPv6 ou os intervalos de endereços IP na condição da política do IAM. A política baseada em identidade a seguir permitirá que o usuário coloque objetos no bucket amzn-s3-demo-bucket3
do Amazon S3 caso ele faça a chamada em intervalos de endereços IPv4 ou IPv6 especificados. Antes de incluir intervalos de endereços IPv6 em sua política do IAM, verifique se o Serviço da AWS com o qual você está trabalhando oferece suporte a IPv6. Para obter uma lista de Serviços da AWS com suporte para IPv6, consulte Serviços da AWS que oferecem suporte a IPv6 no Guia do usuário da Amazon VPC.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalPutObjectIfIpAddress", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket3/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "
203.0.113.0/24
", "2001:DB8:1234:5678::/64
" ] } } } ] }
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
Use essa chave para verificar se a solicitação trafega pela VPC à qual o endpoint da VPC está conectado. 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 dados: String
-
Tipo de valor: valor único
aws:SourceVpce
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 dados: String
-
Tipo de valor: valor único
aws:VpcSourceIp
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 dados: Endereço IP
-
Tipo de valor: valor único
Para obter mais informações, consulte Controlar o acesso a serviços com VPC endpoints no Guia do usuário da Amazon VPC.
nota
O aws:VpcSourceIp
oferece suporte a endereços IP para IPv4 e IPv6 ou a um intervalo de endereços IP. Para obter uma lista de Serviços da AWS com suporte para IPv6, consulte Serviços da AWS que oferecem suporte a IPv6 no Guia do usuário da Amazon VPC.
Propriedades do recurso
Use as chaves de condição a seguir para comparar detalhes sobre o recurso que é o alvo da solicitação com as propriedades da entidade principal especificada na política.
aws:ResourceAccount
Use essa chave para comparar o ID da Conta da AWS 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 Audit Manager
-
auditmanager:UpdateAssessmentFrameworkShare
-
-
Amazon Detective
-
detective:AcceptInvitation
-
-
Amazon Elastic Block Store: todas as ações
-
Amazon EC2
-
ec2:AcceptTransitGatewayPeeringAttachment
-
ec2:AcceptVpcEndpointConnections
-
ec2:AcceptVpcPeeringConnection
-
ec2:CopyImage
-
ec2:CopySnapshot
-
ec2:CreateTransitGatewayPeeringAttachment
-
ec2:CreateVolume
-
ec2:CreateVpcEndpoint
-
ec2:CreateVpcPeeringConnection
-
ec2:DeleteTransitGatewayPeeringAttachment
-
ec2:DeleteVpcPeeringConnection
-
ec2:RejectTransitGatewayPeeringAttachment
-
ec2:RejectVpcEndpointConnections
-
ec2:RejectVpcPeeringConnection
-
-
Amazon EventBridge
-
events:PutEvents
— O EventBridgePutEvents
chama um barramento de eventos em outra conta, se esse barramento de eventos tiver sido configurado como um destino do EventBridge entre contas antes de 2 de março de 2023. Para obter mais informações, consulte Conceder permissões para permitir eventos de outras contas da AWS no Guia do usuário do Amazon EventBridge.
-
-
Amazon GuardDuty
-
guardduty:AcceptAdministratorInvitation
-
-
Amazon Macie
-
macie2:AcceptInvitation
-
-
Amazon OpenSearch Service
-
es:AcceptInboundConnection
-
es:CreateOutboundConnection
-
-
Amazon Route 53
-
route53:AssociateVpcWithHostedZone
-
route53:CreateVPCAssociationAuthorization
-
route53:DeleteVPCAssociationAuthorization
-
route53:DisassociateVPCFromHostedZone
-
route53:ListHostedZonesByVPC
-
-
AWS Security Hub
-
securityhub:AcceptAdministratorInvitation
-
-
-
Tipo de dados: string
-
Tipo de valor: valor único
nota
Para considerações adicionais sobre as ações sem suporte acima, consulte o repositório Exemplos de políticas de perímetro de dados
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::123456789012:role/AWSExampleRole
: perfil do IAM criado e pertencente à conta 123456789012. -
arn:aws:s3:::amzn-s3-demo-bucket2
: bucket do Amazon S3 criado e controlado dentro da conta da111122223333
, 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:aws:service
:region
:account
:*
" ], "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "account
" ] } } } ] }
Essa 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.
nota
Alguns Serviços da AWS exigem acesso aos recursos pertencentes à 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.
Certos serviços da AWS, como o AWS Data Exchange, 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. O exemplo de política AWS: negar acesso aos recursos do Amazon S3 fora da sua conta, exceto o AWS Data Exchange demonstra como negar acesso com base na conta do recurso ao definir exceções para recursos de propriedade do serviço.
Use esse exemplo de política como modelo para criar suas próprias políticas personalizadas. Para obter mais informações, consulte a documentação do serviço.
aws:ResourceOrgPaths
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 Audit Manager
-
auditmanager:UpdateAssessmentFrameworkShare
-
-
Amazon Detective
-
detective:AcceptInvitation
-
-
Amazon Elastic Block Store: todas as ações
-
Amazon EC2
-
ec2:AcceptTransitGatewayPeeringAttachment
-
ec2:AcceptVpcEndpointConnections
-
ec2:AcceptVpcPeeringConnection
-
ec2:CopyImage
-
ec2:CopySnapshot
-
ec2:CreateTransitGatewayPeeringAttachment
-
ec2:CreateVolume
-
ec2:CreateVpcEndpoint
-
ec2:CreateVpcPeeringConnection
-
ec2:DeleteTransitGatewayPeeringAttachment
-
ec2:DeleteVpcPeeringConnection
-
ec2:RejectTransitGatewayPeeringAttachment
-
ec2:RejectVpcEndpointConnections
-
ec2:RejectVpcPeeringConnection
-
-
Amazon EventBridge
-
events:PutEvents
— O EventBridgePutEvents
chama um barramento de eventos em outra conta, se esse barramento de eventos tiver sido configurado como um destino do EventBridge entre contas antes de 2 de março de 2023. Para obter mais informações, consulte Conceder permissões para permitir eventos de outras contas da AWS no Guia do usuário do Amazon EventBridge.
-
-
Amazon GuardDuty
-
guardduty:AcceptAdministratorInvitation
-
-
Amazon Macie
-
macie2:AcceptInvitation
-
-
Amazon OpenSearch Service
-
es:AcceptInboundConnection
-
es:CreateOutboundConnection
-
-
Amazon Route 53
-
route53:AssociateVpcWithHostedZone
-
route53:CreateVPCAssociationAuthorization
-
route53:DeleteVPCAssociationAuthorization
-
route53:DisassociateVPCFromHostedZone
-
route53:ListHostedZonesByVPC
-
-
AWS Security Hub
-
securityhub:AcceptAdministratorInvitation
-
-
-
Tipo de dados: String (lista)
-
Tipo de valor: valores múltiplos
nota
Para considerações adicionais sobre as ações sem suporte acima, consulte o repositório Exemplos de políticas de perímetro de dados
aws:ResourceOrgPaths
é uma chave de condição de vários valores. Chaves de valores múltiplos podem ter vários valores no contexto da solicitação. Você deve usar os operadores de conjunto ForAnyValue
ou ForAllValues
com operadores de condição de string para essa chave. Para obter mais informações sobre chaves de condição de vários valores, consulte Chaves de contexto de múltiplos valores.
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 com o ID de UO ou-ab12-11111111
. Ele corresponderá recursos pertencentes a contas anexadas à UO ou-ab12-11111111 ou a qualquer uma das UOs secundárias.
"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 à ID ou-ab12-22222222
da UO, mas não às UOs secundárias. O exemplo a seguir usa o operador de condição StringEquals para especificar o requisito de correspondência exata para o ID da UO e não uma correspondência com curinga.
"Condition": { "ForAnyValue:StringEquals" : { "aws:ResourceOrgPaths":["o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/"] }}
nota
Alguns Serviços da AWS exigem acesso aos recursos pertencentes à AWS que estão hospedados em outra 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.
Certos serviços da AWS, como o AWS Data Exchange, dependem de acesso a recursos fora das suas Contas da AWS para operações normais. Se você usar a chave aws:ResourceOrgPaths
em suas políticas, inclua instruções adicionais para criar isenções para esses serviços. O exemplo de política AWS: negar acesso aos recursos do Amazon S3 fora da sua conta, exceto o AWS Data Exchange demonstra como negar acesso com base na conta do recurso ao definir exceções para recursos de propriedade do serviço. Você pode criar uma política semelhante para restringir o acesso aos recursos dentro de uma unidade organizacional (UO) usando a chave aws:ResourceOrgPaths
, levando em conta os recursos pertencentes ao serviço.
Use esse exemplo de política como modelo para criar suas próprias políticas personalizadas. Para obter mais informações, consulte a documentação do serviço.
aws:ResourceOrgID
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 Audit Manager
-
auditmanager:UpdateAssessmentFrameworkShare
-
-
Amazon Detective
-
detective:AcceptInvitation
-
-
Amazon Elastic Block Store: todas as ações
-
Amazon EC2
-
ec2:AcceptTransitGatewayPeeringAttachment
-
ec2:AcceptVpcEndpointConnections
-
ec2:AcceptVpcPeeringConnection
-
ec2:CopyImage
-
ec2:CopySnapshot
-
ec2:CreateTransitGatewayPeeringAttachment
-
ec2:CreateVolume
-
ec2:CreateVpcEndpoint
-
ec2:CreateVpcPeeringConnection
-
ec2:DeleteTransitGatewayPeeringAttachment
-
ec2:DeleteVpcPeeringConnection
-
ec2:RejectTransitGatewayPeeringAttachment
-
ec2:RejectVpcEndpointConnections
-
ec2:RejectVpcPeeringConnection
-
-
Amazon EventBridge
-
events:PutEvents
— O EventBridgePutEvents
chama um barramento de eventos em outra conta, se esse barramento de eventos tiver sido configurado como um destino do EventBridge entre contas antes de 2 de março de 2023. Para obter mais informações, consulte Conceder permissões para permitir eventos de outras contas da AWS no Guia do usuário do Amazon EventBridge.
-
-
Amazon GuardDuty
-
guardduty:AcceptAdministratorInvitation
-
-
Amazon Macie
-
macie2:AcceptInvitation
-
-
Amazon OpenSearch Service
-
es:AcceptInboundConnection
-
es:CreateOutboundConnection
-
-
Amazon Route 53
-
route53:AssociateVpcWithHostedZone
-
route53:CreateVPCAssociationAuthorization
-
route53:DeleteVPCAssociationAuthorization
-
route53:DisassociateVPCFromHostedZone
-
route53:ListHostedZonesByVPC
-
-
AWS Security Hub
-
securityhub:AcceptAdministratorInvitation
-
-
-
Tipo de dados: string
-
Tipo de valor: valor único
nota
Para considerações adicionais sobre as ações sem suporte acima, consulte o repositório Exemplos de políticas de perímetro de dados
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.
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}" } } } }
nota
Alguns Serviços da AWS exigem acesso aos recursos pertencentes à 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.
Certos serviços da AWS, como o AWS Data Exchange, dependem de acesso a recursos fora das suas Contas da AWS para operações normais. Se você usar a chave aws:ResourceOrgID
em suas políticas, inclua instruções adicionais para criar isenções para esses serviços. O exemplo de política AWS: negar acesso aos recursos do Amazon S3 fora da sua conta, exceto o AWS Data Exchange demonstra como negar acesso com base na conta do recurso ao definir exceções para recursos de propriedade do serviço. Você pode criar uma política semelhante para restringir o acesso aos recursos dentro da organização usando a chave aws:ResourceOrgID
, levando em conta os recursos pertencentes ao serviço.
Use esse exemplo de política como modelo para criar suas próprias políticas personalizadas. Para obter mais informações, consulte a documentação do serviço.
No vídeo a seguir, saiba mais sobre como você pode usar a chave de condição aws:ResourceOrgID
em uma política.
aws:ResourceTag/tag-key
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 obter 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 dados: String
-
Tipo de valor: valor único
Essa chave de contexto é formatada "aws:ResourceTag/
em que tag-key
":"tag-value
"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.
Propriedades da solicitação
Use as chaves de condição a seguir para comparar detalhes sobre a solicitação em si e o conteúdo da solicitação e as propriedades da solicitação que você especificou na política.
Sumário
aws:CalledVia
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 estará presente se o serviço usar um perfil de serviço ou perfil vinculado ao serviço para fazer uma chamada em nome da entidade principal. Esta chave também não está presente quando o principal faz a chamada diretamente. -
Tipo de dados: String (lista)
-
Tipo de valor: valores múltiplos
Para usar a chave de condição aws:CalledVia
em uma política, você deve fornecer as entidades principais de serviço para conceder ou negar solicitações de serviço da AWS. A AWS oferece suporte ao uso das seguintes entidades principais de serviço com aws:CalledVia
.
Entidade principal do serviço |
---|
aoss.amazonaws.com |
athena.amazonaws.com |
backup.amazonaws.com |
cloud9.amazonaws.com |
cloudformation.amazonaws.com |
databrew.amazonaws.com |
dataexchange.amazonaws.com |
dynamodb.amazonaws.com |
imagebuilder.amazonaws.com |
kms.amazonaws.com |
mgn.amazonaws.com |
nimble.amazonaws.com |
omics.amazonaws.com |
ram.amazonaws.com |
robomaker.amazonaws.com |
servicecatalog-appregistry.amazonaws.com |
sqlworkbench.amazonaws.com |
ssm-guiconnect.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](images/condition-key-calledvia-example-diagram.png)
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](images/condition-key-calledviafirstlast-example-diagram.png)
aws:CalledViaFirst
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 obter 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 estará presente se o serviço usar um perfil de serviço ou perfil vinculado ao serviço para fazer uma chamada em nome da entidade principal. Esta chave também não está presente quando o principal faz a chamada diretamente.
-
Tipo de dados: String
-
Tipo de valor: valor único
aws:CalledViaLast
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 obter 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 estará presente se o serviço usar um perfil de serviço ou perfil vinculado ao serviço para fazer uma chamada em nome da entidade principal. Esta chave também não está presente quando o principal faz a chamada diretamente.
-
Tipo de dados: String
-
Tipo de valor: valor único
aws:ViaAWSService
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 retornará como false
se o serviço usar um perfil de serviço ou perfil vinculado ao serviço para fazer uma chamada em nome da entidade 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 dados: Booleano
-
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.
aws:CurrentTime
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 dados: Data
-
Tipo de valor: valor único
aws:EpochTime
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.
aws:referer
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 dados: String
-
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
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 da Amazon Web Services.
-
Disponibilidade: essa chave é sempre incluída no contexto da solicitação.
-
Tipo de dados: String
-
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 abrangem todas as regiões.
-
É possível invocar
s3:PutBucketReplication
em uma região (que é afetada pela chave de condiçãoaws:RequestedRegion
), mas outras regiões são afetadas com base nas definições da configuração das replicações. -
Você pode invocar
s3:CreateBucket
para criar um bucket em outra região e usar a chave de condiçãos3:LocationConstraint
para controlar as regiões aplicáveis.
É 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
Use essa chave para comparar o par de chave/valor da tag que foi passado na solicitação com o par de tags especificado na política. Por exemplo, é possível verificar se a solicitação inclui a chave de tag "Dept"
e se ela tem o valor "Accounting"
. Para obter mais informações, consulte Controlar o acesso durante solicitações 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 dados: String
-
Tipo de valor: valor único
Essa chave de contexto é formatada "aws:RequestTag/
em que tag-key
":"tag-value
"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:TagKeys
Use essa chave para comparar as chaves de tag em uma solicitação com as chaves especificadas na política. Ao usar políticas para controlar o acesso usando etiquetas, recomendamos o uso da chave de condição aws:TagKeys
para definir quais chaves de etiquetas 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 dados: String (lista)
-
Tipo de valor: valores múltiplos
Essa chave de contexto é formatada como "aws:TagKeys":"
, onde tag-key
"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 obter mais informações, consulte Chaves de contexto de múltiplos 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 esse cenário que use aws:TagKeys
, consulte Criar um snapshot com tags no Guia do usuário do Amazon EC2.
aws:SecureTransport
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 dados: Booleano
-
Tipo de valor: valor único
aws:SourceArn
Use essa chave para comparar o nome do recurso da Amazon (ARN) do recurso que faz uma solicitação de serviço a serviço com o ARN especificado na política, mas só quando a solicitação for feita pela entidade principal do serviço da AWS. Quando o ARN da fonte inclui o ID da conta, não é necessário usar a aws:SourceAccount
com o aws:SourceArn
.
Essa chave não funciona com o ARN do principal que está fazendo a solicitação. Em seu lugar, use aws:PrincipalArn
.
-
Disponibilidade: essa chave só é incluída no contexto da solicitação quando a chamada para o recurso é feita diretamente pela entidade principal de um serviço da AWS em nome de um recurso para o qual a configuração acionou a solicitação de serviço a serviço. O serviço que faz a chamada passa o ARN do recurso original para o serviço chamado.
As seguintes integrações de serviços não são compatíveis com essa chave de condição global:
Serviço que chama (entidade principal do serviço) Serviço chamado (política baseada em recursos) Descrição logdelivery.elb.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 logdelivery.elasticloadbalancing.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 nota
Nem todas as integrações de serviços com o AWS Security Token Service (AWS STS) e AWS Key Management Service (AWS KMS) são compatíveis. Consulte a documentação do serviço que faz a chamada para obter mais informações. O uso de
aws:SourceArn
nas políticas de chave do KMS para as chaves usadas pelos Serviços da AWS por meio de concessões de chaves do KMS pode causar um comportamento inesperado. -
Tipo de dados: ARN, String
A AWS recomenda utilizar operadores ARN em vez de operadores string ao comparar ARNs.
-
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. Só use essa chave em políticas baseadas em recursos nas quais a Principal
é a entidade principal do Serviço da AWS. Defina o valor desta chave de condição para o ARN do recurso na solicitação. Por exemplo, quando a atualização de um bucket do Amazon S3 aciona a publicação de um tópico do Amazon SNS, o serviço Amazon S3 invoca a operação de API sns:Publish
. Na política de tópico que permite a operação sns:Publish
, defina o valor da chave de condição como o ARN do bucket do Amazon S3. Para obter informações sobre como e quando essa chave de condição é recomendada, consulte a documentação dos serviços da AWS que você está usando.
aws:SourceAccount
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 da conta especificado na política, mas apenas quando a solicitação for feita pela entidade principal de um serviço da AWS.
-
Disponibilidade: essa chave só é incluída no contexto da solicitação quando a chamada para o recurso é feita diretamente pela entidade principal de um serviço da AWS em nome de um recurso para o qual a configuração acionou a solicitação de serviço a serviço. O serviço que faz a chamada passa o ID da conta do recurso original para o serviço chamado.
As seguintes integrações de serviços não são compatíveis com essa chave de condição global:
Serviço que chama (entidade principal do serviço) Serviço chamado (política baseada em recursos) Descrição logdelivery.elb.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 logdelivery.elasticloadbalancing.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 nota
Nem todas as integrações de serviços com o AWS Security Token Service (AWS STS) e AWS Key Management Service (AWS KMS) são compatíveis. Consulte a documentação do serviço que faz a chamada para obter mais informações. O uso de
aws:SourceAccount
nas políticas de chave do KMS para as chaves usadas pelos Serviços da AWS por meio de concessões de chaves do KMS pode causar um comportamento inesperado. -
Tipo de dados: String
-
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. Só use essa chave em políticas baseadas em recursos nas quais a Principal
é a entidade principal do Serviço da AWS. Defina o valor dessa chave de condição como o ID da conta do recurso na solicitação. Por exemplo, quando a atualização de um bucket do Amazon S3 aciona a publicação de um tópico do Amazon SNS, o serviço Amazon S3 invoca a operação de API sns:Publish
. Na política de tópico que permite a operação sns:Publish
, defina o valor da chave de condição como o ID da conta do bucket do Amazon S3. Para obter informações sobre como e quando essas chaves de condições são recomendadas, consulte a documentação dos serviços da AWS que você está usando.
aws:SourceOrgPaths
Use essa chave para comparar o caminho do AWS Organizations do recurso que faz uma solicitação de serviço a serviço com o ID da organização especificado na política, mas apenas quando a solicitação for feita pela entidade principal de um serviço da AWS. Um caminho do 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 Entender o caminho da entidade do AWS Organizations.
-
Disponibilidade: essa chave só é incluída no contexto da solicitação quando a chamada ao recurso é feita diretamente pela entidade principal de um serviço da AWS em nome de um recurso que pertence a uma conta que é membro de uma organização. O serviço que faz a chamada passa o caminho da organização do recurso original para o serviço chamado.
As seguintes integrações de serviços não são compatíveis com essa chave de condição global:
Serviço que chama (entidade principal do serviço) Serviço chamado (política baseada em recursos) Descrição logdelivery.elb.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 logdelivery.elasticloadbalancing.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 Todas as entidades principais do serviço Bot do Amazon Lex Permitir que os Serviços da AWS usem o bot do Amazon Lex nota
Nem todas as integrações de serviços com o AWS Security Token Service (AWS STS) e AWS Key Management Service (AWS KMS) são compatíveis. Consulte a documentação do serviço que faz a chamada para obter mais informações. O uso de
aws:SourceOrgPaths
nas políticas de chave do KMS para as chaves usadas pelos Serviços da AWS por meio de concessões de chaves do KMS pode causar um comportamento inesperado. -
Tipo de dados: String (lista)
-
Tipo de valor: valores múltiplos
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. Só use essa chave em políticas baseadas em recursos nas quais a Principal
é a entidade principal do Serviço da AWS. Defina o valor dessa chave de condição como o caminho da organização do recurso na solicitação. Por exemplo, quando a atualização de um bucket do Amazon S3 aciona a publicação de um tópico do Amazon SNS, o serviço Amazon S3 invoca a operação de API sns:Publish
. Na política de tópico que permite a operação sns:Publish
, defina o valor da chave de condição como o caminho da organização do bucket do Amazon S3. Para obter informações sobre como e quando essa chave de condição é recomendada, consulte a documentação dos serviços da AWS que você está usando.
aws:SourceOrgPaths
é uma chave de condição de vários valores. Chaves de valores múltiplos podem ter vários valores no contexto da solicitação. Você deve usar os operadores de conjunto ForAnyValue
ou ForAllValues
com operadores de condição de string para essa chave. Para obter mais informações sobre chaves de condição de vários valores, consulte Chaves de contexto de múltiplos valores.
aws:SourceOrgID
Use essa chave para comparar o ID da organização do recurso que faz uma solicitação de serviço a serviço com o ID da organização especificado na política, mas apenas quando a solicitação for feita pela entidade principal de um serviço da AWS. Quando você adiciona e remove contas de uma organização no AWS Organizations, as políticas que incluem a chave aws:SourceOrgID
incluem automaticamente as contas corretas e você não precisa atualizar as políticas manualmente.
-
Disponibilidade: essa chave só é incluída no contexto da solicitação quando a chamada ao recurso é feita diretamente pela entidade principal de um serviço da AWS em nome de um recurso que pertence a uma conta que é membro de uma organização. O serviço que faz a chamada passa o ID da organização do recurso original para o serviço chamado.
As seguintes integrações de serviços não são compatíveis com essa chave de condição global:
Serviço que chama (entidade principal do serviço) Serviço chamado (política baseada em recursos) Descrição logdelivery.elb.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 logdelivery.elasticloadbalancing.amazonaws.com Bucket do Amazon S3 Habilitar o registro em log de acesso do Elastic Load Balancing em um bucket do Amazon S3 Todas as entidades principais do serviço Bot do Amazon Lex Permitir que os Serviços da AWS usem o bot do Amazon Lex nota
Nem todas as integrações de serviços com o AWS Security Token Service (AWS STS) e AWS Key Management Service (AWS KMS) são compatíveis. Consulte a documentação do serviço que faz a chamada para obter mais informações. O uso de
aws:SourceOrgID
nas políticas de chave do KMS para as chaves usadas pelos Serviços da AWS por meio de concessões de chaves do KMS pode causar um comportamento inesperado. -
Tipo de dados: String
-
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. Só use essa chave em políticas baseadas em recursos nas quais a Principal
é a entidade principal do Serviço da AWS. Defina o valor dessa chave de condição como o ID da organização do recurso na solicitação. Por exemplo, quando a atualização de um bucket do Amazon S3 aciona a publicação de um tópico do Amazon SNS, o serviço Amazon S3 invoca a operação de API sns:Publish
. Na política de tópico que permite a operação sns:Publish
, defina o valor da chave de condição como o ID da organização do bucket do Amazon S3. Para obter informações sobre como e quando essa chave de condição é recomendada, consulte a documentação dos serviços da AWS que você está usando.
aws:UserAgent
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 dados: String
-
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.
Outras chaves de condição nos serviços
O AWS STS oferece suporte a chaves de condição de federação baseadas em SAML e chaves de condição entre serviços para federação OIDC. Essas chaves estão disponíveis quando um usuário que foi federado usando SAML executa AWS operações em outros serviços.