Chaves de contexto de condição do IAM e do AWS STS
Você pode usar o elemento Condition
em uma política JSON para testar o valor das chaves que estão incluídas no contexto de solicitação de todas as solicitações da AWS. Essas chaves fornecem informações sobre a solicitação em si, ou os recursos referenciados pela solicitação. Você pode verificar que as chaves foram especificadas antes de permitir a ação solicitada pelo usuário. Isso oferece a você controle granular sobre quando as instruções de sua política JSON correspondem ou não a uma solicitação recebida. Para obter informações sobre como usar o elemento Condition
em uma política JSON, consulte Elementos de política JSON do IAM: Condition.
Este tópico descreve as chaves definidas e fornecidas pelo serviço IAM (com um prefixo iam:
) e o serviço AWS Security Token Service (AWS STS) (com um prefixo sts:
). Vários outros serviços da AWS também fornecem chaves específicas de serviços que são relevantes para as ações e os recursos definidos por esse serviço. Para obter mais informações, consulte Ações, recursos e chaves de condição de serviços da AWS. A documentação de um serviço que dá suporte a chaves de condição, muitas vezes, tem informações adicionais. Por exemplo, para informações sobre chaves que você pode usar em políticas para recursos do Amazon S3, consulte Chaves de política do Amazon S3 no Guia do usuário do Amazon Simple Storage Service.
Tópicos
Teclas disponíveis para o IAM
Você pode usar as seguintes chaves de condição em políticas que controlam o acesso aos recursos do IAM:
- iam:AssociatedResourceArn
-
Funciona com operadores de nome de recurso da Amazon (ARN).
Especifica o ARN do recurso ao qual essa função será associada no serviço de destino. O recurso geralmente pertence ao serviço ao qual o principal está transmitindo a função. Às vezes, o recurso pode pertencer a um terceiro serviço. Por exemplo, você pode passar uma função para o Amazon EC2 Auto Scaling que seja usada em uma instância do Amazon EC2. Nesse caso, a condição corresponderia ao ARN da instância do Amazon EC2.
Essa chave de condição se aplica somente à ação PassRole em uma política. Ela não pode ser usada para limitar nenhuma outra ação.
Use essa chave de condição em uma política para permitir que uma entidade transmita uma função, mas somente se essa função estiver associada ao recurso especificado. Você pode usar curingas (*) para permitir operações executadas em um tipo específico de recurso sem restringir a região ou o ID do recurso. Por exemplo, você pode permitir que um usuário ou uma função do IAM passe qualquer função para o serviço Amazon EC2 para ser usado com instâncias na região
us-east-1
ouus-west-1
. O usuário ou a função do IAM não terá permissão para passar funções para outros serviços. Além disso, ele não permite que o Amazon EC2 use a função com instâncias em outras regiões.{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": {"iam:PassedToService": "ec2.amazonaws.com"}, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:ec2:us-east-1:111122223333:instance/*", "arn:aws:ec2:us-west-1:111122223333:instance/*" ] } } }
nota Os serviços da AWS que oferecem suporte ao IAM:PassedToService também oferecem suporte a esta chave de condição.
- iam:AWSServiceName
-
Funciona com operadores de string.
Especifica o serviço da AWS para o qual essa função é anexada.
Neste exemplo, você permite que uma entidade do crie uma função vinculada ao serviço se o nome de serviço for access-analyzer.amazonaws.com.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "access-analyzer.amazonaws.com" } } }] }
- iam:OrganizationsPolicyId
-
Funciona com operadores de string.
Verifica se a política com o ID do AWS Organizations especificado corresponde à política usada na solicitação. Para ver um exemplo de política do IAM que use essa chave de condição, consulte IAM: visualizar as informações do último acesso ao serviço para uma política do Organizations.
- iam:PassedToService
-
Funciona com operadores de string.
Especifica o serviço principal do serviço para o qual uma função pode ser transmitida. Essa chave de condição se aplica somente à ação PassRole em uma política. Ela não pode ser usada para limitar nenhuma outra ação.
Ao usar essa chave de condição em uma política, especifique o serviço usando um principal de serviço. Um serviço principal é o nome de um serviço que pode ser especificado no elemento
Principal
de uma política. Este é o formato normal:SERVICE_NAME_URL.amazonaws.com
.Você pode usar
iam:PassedToService
para restringir os usuários, para que eles possam passar funções apenas para serviços específicos. Por exemplo, um usuário pode criar uma função de serviço que confia no CloudWatch para gravar dados de log em um bucket do Amazon S3 em seu nome. Em seguida, o usuário deve anexar uma política de permissões e uma política de confiança para a nova função de serviço. Nesse caso, a política de confiança deve especificarcloudwatch.amazonaws.com
no elementoPrincipal
. Para visualizar uma política que permite ao usuário passar a função para o CloudWatch, consulte IAM: Passar uma função do IAM para um produto da AWS específico.Ao usar essa chave de condição, você pode garantir que os usuários criem funções de serviço apenas pelos serviços que você especificar. Por exemplo, se um usuário com a política anterior tentar criar uma função de serviço para o Amazon EC2, a operação falhará. A falha ocorre porque o usuário não tem permissão para passar a função para o Amazon EC2.
Às vezes, você passa uma função para um serviço que, em seguida, passa a função para outro serviço.
iam:PassedToService
inclui apenas o serviço final que assume a função, não o serviço intermediário que passa a função.nota Alguns serviços, como o AWS CodeBuild e o AWS CodeCommit não são compatíveis com essa chave de condição.
- iam:PermissionsBoundary
-
Funciona com operadores de string.
Verifica se a política especificada está anexada como limite de permissões no recurso da entidade de segurança do IAM. Para obter mais informações, consulte Limites de permissões para entidades do IAM
- iam:PolicyARN
-
Funciona com operadores de nome de recurso da Amazon (ARN).
Verifica o nome de recurso da Amazon (ARN) de uma política gerenciada em solicitações que envolvem uma política gerenciada. Para mais informações, consulte Controle de acesso a políticas.
- iam:ResourceTag/
key-name
-
Funciona com operadores de string.
Verifica se a tag anexada ao recurso de identidade (usuário ou função) corresponde ao nome e ao valor da chave especificada.
nota O IAM e o AWS STS são compatíveis com a chave de condição do IAM
iam:ResourceTag
e a chave de condição globalaws:ResourceTag
.Você pode adicionar atributos personalizados aos recursos do IAM na forma de um par de chave-valor. Para obter mais informações sobre etiquetas de recursos do IAM, consulte Recursos de etiquetas do IAM. Você pode usar
ResourceTag
para controlar o acesso aos recursos da AWS, incluindo recursos do IAM. No entanto, como o IAM não oferece suporte a etiquetas para grupos, você não pode usar etiquetas para controlar o acesso a grupos.Este exemplo mostra como você pode criar uma política baseada em identidade que permite excluir usuários com a tag
status=terminated
. Para usar esta política, substitua otexto 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:DeleteUser", "Resource": "*", "Condition": {"StringEquals": {"iam:ResourceTag/
status
": "terminated
"}} }] }
Chaves disponíveis para federação de identidades da web da AWS
É possível usar a federação de identidades da web para fornecer credenciais de segurança temporárias a usuários que foram autenticados por meio de um provedor de identidade (IdP). Exemplos desses provedores incluem Login with Amazon, Amazon Cognito, Google ou Facebook. Nesse caso, chaves de condição adicionais estarão disponíveis quando as credenciais de segurança temporárias forem usadas para fazer uma solicitação. Você pode usar essas chaves para criar políticas que limitam o acesso de usuários federados a recursos associados a um provedor, aplicativo ou usuário específico. Essas chaves são normalmente usadas na política de confiança de uma função.
- amr
-
Funciona com operadores de string.
Exemplo:
cognito-identity.amazonaws.com:amr
Se você estiver usando o Amazon Cognito para a federação de identidades da web, a chave
cognito-identity.amazonaws.com:amr
(Referência de métodos de autenticação) incluirá informações de login sobre o usuário. A chave tem vários valores, o que significa que você a testa em uma política usando operadores do conjunto de condições. A chave pode conter os seguintes valores:-
Se o usuário não estiver autenticado, a chave conterá apenas
unauthenticated
. -
Se o usuário estiver autenticado, a chave conterá o valor
authenticated
e o nome do provedor de login usado na chamada (graph.facebook.com
,accounts.google.com
ouwww.amazon.com
).
Por exemplo, a seguinte condição na política de confiança para uma função do Amazon Cognito testa se o usuário não está autenticado:
"Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-2:
identity-pool-id
" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } -
- aud
-
Funciona com operadores de string.
Use a chave de condição
aud
para verificar se o ID do cliente do Google ou o ID do grupo de identidades do Amazon Cognito corresponde ao especificado na política. É possível usar a chaveaud
com a chavesub
para o mesmo provedor de identidade.Exemplos:
-
accounts.google.com:aud
-
cognito-identity.amazonaws.com:aud
A chave de condição
accounts.google.com:aud
corresponde aos campos de token de ID do Google a seguir.-
aud
para IDs de cliente do Google do OAuth 2.0 do aplicativo, quando o campoazp
não estiver definido. Quando o campoazp
estiver definido, o campoaud
corresponderá à chave de condição accounts.google.com:oaud. -
azp
quando o campoazp
estiver definido. Isso pode acontecer com aplicativos híbridos nos quais um aplicativo web e um aplicativo Android têm um ID de cliente do Google do OAuth 2.0 diferente, mas compartilham o mesmo projeto de APIs do Google.
Para obter mais informações sobre o Google e sobre os campos
aud
eazp
, consulte o guia Google Identity Platform OpenID Connect. Quando você escreve uma política usando a chave de condição
accounts.google.com:aud
, é necessário saber se o aplicativo é um aplicativo híbrido que define o campoazp
.Campo
azp
não definidoO exemplo de política a seguir funciona para aplicativos não híbridos que não definem o campo
azp
. Nesse caso, o valor do campoaud
do token de ID do Google corresponde aos valores da chave de condiçãoaccounts.google.com:aud
eaccounts.google.com:oaud
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "aud-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
Campo
azp
definidoO exemplo de política a seguir funciona para aplicativos híbridos que definem o campo
azp
. Nesse caso, o valor do campoaud
do token de ID do Google corresponde apenas ao valor da chave de condiçãoaccounts.google.com:oaud
. O valor do campoazp
corresponde ao valor da chave de condiçãoaccounts.google.com:aud
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "azp-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
-
- id
-
Funciona com operadores de string.
Exemplos:
-
graph.facebook.com:app_id
-
graph.facebook.com:id
-
www.amazon.com:app_id
-
www.amazon.com:user_id
Use essas chaves para verificar se o ID do aplicativo (ou site) ou o ID do usuário corresponde àquele especificado na política. Isso funciona para o Facebook ou o Login with Amazon. É possível usar a chave
app_id
com a chaveid
para o mesmo provedor de identidade. -
- oaud
-
Funciona com operadores de string.
Exemplo:
accounts.google.com:oaud
Se você usar o Google para a federação de identidades da web, essa chave especificará o público do Google (
aud
) ao qual esse token de ID se destina. Ela deve ser um dos IDs de cliente do OAuth 2.0 do aplicativo. - sub
-
Funciona com operadores de string.
Exemplos:
-
accounts.google.com:sub
-
cognito-identity.amazonaws.com:sub
Use essas chaves para verificar se o ID de usuário corresponde àquele especificado na política. É possível usar a chave
sub
com a chaveaud
para o mesmo provedor de identidade. -
- Mais informações sobre a federação de identidades da Web
-
Para obter mais informações sobre a federação de identidades da web, consulte o seguinte:
-
Visão geral do Amazon Cognito no Guia do desenvolvedor do AWS Mobile SDK for Android
-
Visão geral do Amazon Cognito no Guia do desenvolvedor do AWS Mobile SDK for iOS
-
Chaves disponíveis para federação do AWS STS com base em SAML
Se você estiver trabalhando com federação baseada em SAML usando o AWS Security Token Service (AWS STS), poderá incluir chaves de condição adicionais na política.
Políticas de confiança da função do SAML
Na política de confiança de uma função, você pode incluir as seguintes chaves, que ajudam você a estabelecer se o chamador tem permissão para assumir a função. Exceto no caso de saml:doc
, todos os valores são derivados da declaração de SAML. Todos os itens da lista estão disponíveis no editor visual do console do IAM quando você cria ou edita uma política com condições. Os itens marcados com []
podem ter um valor que seja uma lista do tipo especificado.
- saml:aud
-
Funciona com operadores de string.
Um URL de endpoint para a qual as declarações de SAML são apresentadas. O valor dessa chave vem do campo
SAML Recipient
na declaração, nãodo campoAudience
. - saml:commonName[]
-
Funciona com operadores de string.
Esse é um atributo
commonName
. - saml:cn[]
-
Funciona com operadores de string.
Esse é um atributo
eduOrg
. - saml:doc
-
Funciona com operadores de string.
Isso representa a entidade principal que foi usada para assumir a função. O formato é
account-ID
/provider-friendly-name
, como123456789012/SAMLProviderName
. O valor account-ID se refere à conta que possui o provedor SAML. - saml:edupersonaffiliation[]
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonassurance[]
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonentitlement[]
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonnickname[]
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonorgdn
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonorgunitdn[]
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonprimaryaffiliation
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonprimaryorgunitdn
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonprincipalname
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersonscopedaffiliation[]
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:edupersontargetedid[]
-
Funciona com operadores de string.
Esse é um atributo
eduPerson
. - saml:eduorghomepageuri[]
-
Funciona com operadores de string.
Esse é um atributo
eduOrg
. - saml:eduorgidentityauthnpolicyuri[]
-
Funciona com operadores de string.
Esse é um atributo
eduOrg
. - saml:eduorglegalname[]
-
Funciona com operadores de string.
Esse é um atributo
eduOrg
. - saml:eduorgsuperioruri[]
-
Funciona com operadores de string.
Esse é um atributo
eduOrg
. - saml:eduorgwhitepagesuri[]
-
Funciona com operadores de string.
Esse é um atributo
eduOrg
. - saml:givenName[]
-
Funciona com operadores de string.
Esse é um atributo
givenName
. - saml:iss
-
Funciona com operadores de string.
O emissor, que é representado por um URN.
- saml:mail[]
-
Funciona com operadores de string.
Esse é um atributo
mail
. - saml:name[]
-
Funciona com operadores de string.
Esse é um atributo
name
. - saml:namequalifier
-
Funciona com operadores de string.
Um valor de hash baseado no nome amigável do provedor SAML. O valor é a concatenação dos seguintes valores, em ordem e separados por um caractere '/':
-
O valor da resposta
Issuer
(saml:iss
) -
O ID da conta da
AWS
. -
O nome amigável (a última parte do ARN) do provedor SAML no IAM
A concatenação do ID da conta e do nome amigável do provedor SAML está disponível para as políticas do IAM como a chave
saml:doc
. Para mais informações, consulte Identificar exclusivamente os usuários na federação baseada em SAML. -
- saml:organizationStatus[]
-
Funciona com operadores de string.
Esse é um atributo
organizationStatus
. - saml:primaryGroupSID[]
-
Funciona com operadores de string.
Esse é um atributo
primaryGroupSID
. - saml:sub
-
Funciona com operadores de string.
Trata-se do assunto da solicitação, que inclui um valor que identifica de forma exclusiva um usuário individual em uma organização (por exemplo,
_cbb88bf52c2510eabe00c1642d4643f41430fe25e3
). - saml:sub_type
-
Funciona com operadores de string.
Essa chave pode ter o valor
persistent
,transient
ou consistir no URIFormat
completo dos elementosSubject
eNameID
usados em sua declaração SAML. O valorpersistent
indica que o valor emsaml:sub
é o mesmo para um usuário entre as sessões. Se o valor fortransient
, o usuário terá um valorsaml:sub
diferente para cada sessão. Para obter mais informações sobre o atributoNameID
do elementoFormat
, consulte Configuração de declarações SAML para a resposta de autenticação. - saml:surname[]
-
Funciona com operadores de string.
Esse é um atributo
surnameuid
. - saml:uid[]
-
Funciona com operadores de string.
Esse é um atributo
uid
. - saml:x500UniqueIdentifier[]
-
Funciona com operadores de string.
Esse é um atributo
x500UniqueIdentifier
.
Para obter informações gerais sobre os atributos do eduPerson
e eduOrg
, consulte o REFEDS Wiki websiteeduPerson
, consulte a eduPerson Object Class Specification (201602)
As chaves de condição cujo tipo é uma lista pode incluir vários valores. Para criar condições na política para listar os valores, você pode usar operadores definidos (ForAllValues
, ForAnyValue
). Por exemplo, para permitir qualquer usuário cuja afiliação seja "corpo docente" ou "equipe" (mas não "aluno"), você pode usar uma condição como a seguinte:
"Condition": { "ForAllValues:StringLike": { "saml:edupersonaffiliation":[ "faculty", "staff"] } }
Políticas de permissões de função do SAML
Na política de permissões de uma função para federação SAML que define quais usuários têm permissão de acesso na AWS, você pode incluir as seguintes chaves:
- saml:namequalifier
-
Funciona com operadores de string.
Isso contém um valor de hash que representa a combinação dos valores
saml:doc
esaml:iss
. Ele é usado como um qualificador de namespace; a combinação desaml:namequalifier
esaml:sub
identifica um usuário de forma exclusiva. - saml:sub
-
Funciona com operadores de string.
Trata-se do assunto da solicitação, que inclui um valor que identifica de forma exclusiva um usuário individual em uma organização (por exemplo,
_cbb88bf52c2510eabe00c1642d4643f41430fe25e3
). - saml:sub_type
-
Funciona com operadores de string.
Essa chave pode ter o valor
persistent
,transient
ou consistir no URIFormat
completo dos elementosSubject
eNameID
usados em sua declaração SAML. O valorpersistent
indica que o valor emsaml:sub
é o mesmo para um usuário entre as sessões. Se o valor fortransient
, o usuário terá um valorsaml:sub
diferente para cada sessão. Para obter mais informações sobre o atributoNameID
do elementoFormat
, consulte Configuração de declarações SAML para a resposta de autenticação.
Para obter mais informações sobre como usar essas chaves, consulte Sobre a federação baseada em SAML 2.0.
Chaves disponíveis do AWS STS
É possível usar as chaves de condição a seguir nas políticas de confiança de função do IAM para funções que são assumidas usando operações do AWS Security Token Service (AWS STS).
- sts:AWSServiceName
-
Funciona com operadores de string.
Use essa chave para especificar um serviço onde um token de portador pode ser usado. Ao usar essa chave de condição em uma política, especifique o serviço usando um principal de serviço. Um serviço principal é o nome de um serviço que pode ser especificado no elemento
Principal
de uma política. Por exemplo,codeartifact.amazonaws.com
é o principal do serviço AWS CodeArtifact.Alguns serviços da AWS exigem que você tenha permissão para obter um token de portador do serviço AWS STS para poder acessar seus recursos de forma programática. Por exemplo, o AWS CodeArtifact requer que os principais usem tokens de portador para executar algumas operações. O comando
aws codeartifact get-authorization-token
retorna um token de portador. Depois, é possível usar o token de portador para executar operações do AWS CodeArtifact. Para obter mais informações sobre tokens de portador, consulte Usar tokens de portador.Disponibilidade: essa chave está presente em solicitações que recebem um token de portador. Não é possível fazer uma chamada direta ao AWS STS para obter um token de portador. Quando você executa algumas operações em outros serviços, o serviço solicita o token de portador em seu nome.
É possível usar essa chave de condição para permitir que os principais obtenham um token de portador para uso com um serviço específico.
- sts:DurationSeconds
-
Funciona com operadores numéricos.
Use essa chave para especificar a duração (em segundos) que um principal pode usar ao obter um token de portador do AWS STS.
Alguns serviços da AWS exigem que você tenha permissão para obter um token de portador do serviço AWS STS para poder acessar seus recursos de forma programática. Por exemplo, o AWS CodeArtifact requer que os principais usem tokens de portador para executar algumas operações. O comando
aws codeartifact get-authorization-token
retorna um token de portador. Depois, é possível usar o token de portador para executar operações do AWS CodeArtifact. Para obter mais informações sobre tokens de portador, consulte Usar tokens de portador.Disponibilidade: essa chave está presente em solicitações que recebem um token de portador. Não é possível fazer uma chamada direta ao AWS STS para obter um token de portador. Quando você executa algumas operações em outros serviços, o serviço solicita o token de portador em seu nome. A chave não está presente para operações assume-role do AWS STS.
- sts:ExternalId
-
Funciona com operadores de string.
Use essa chave para exigir que uma entidade de segurança forneça um identificador específico ao assumir uma função do IAM.
Disponibilidade: essa chave está presente na solicitação quando a entidade de segurança fornece um ID externo enquanto assume uma função usando a AWS CLI ou a API da AWS.
Um identificador exclusivo que pode ser necessário ao assumir uma função em outra conta. Se o administrador da conta à qual a função pertence forneceu um ID externo para você, forneça esse valor no parâmetro
ExternalId
. Esse valor pode ser qualquer string, como uma frase secreta ou o número de uma conta. A função principal do ID externo é abordar e impedir o problema "confused deputy". Para obter mais informações sobre o ID externo e o problema confused deputy, consulte Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros.O valor
ExternalId
deve ter no mínimo 2 e no máximo 1.224 caracteres. O valor deve ser alfanumérico sem espaço em branco. Ele também pode incluir os seguintes símbolos: mais (+), igual (=), vírgula (,), ponto (.), arroba (@), dois pontos (:), barra (/) e hífen (-). - sts:RoleSessionName
-
Funciona com operadores de string.
Utilize essa chave para comparar o nome da sessão que um principal especifica ao assumir uma função com o valor especificado na política.
Disponibilidade: essa chave está presente na solicitação quando a entidade de segurança assume a função usando o AWS Management Console, qualquer comando de assumir função da CLI ou qualquer operação de API
AssumeRole
do AWS STS.Você pode usar essa chave em uma política de confiança de função para exigir que os usuários forneçam um nome de sessão específico quando assumirem uma função. Por exemplo, você pode exigir que os usuários do IAM especifiquem o próprio nome de usuário como nome de sessão. Depois que o usuário do IAM assume a função, a atividade aparece nos logs do AWS CloudTrail com o nome da sessão que corresponde ao seu nome de usuário. Isso torna mais fácil para os administradores diferenciar entre sessões de função quando uma função é usada por diferentes entidades de segurança.
A política de confiança de função a seguir exige que os usuários do IAM na conta
111122223333
forneçam o nome de usuário do IAM como o nome da sessão quando assumem a função. Esse requisito é imposto usando a variável de condiçãoaws:username
na chave de condição. Essa política permite que os usuários do IAM assumam a função à qual a política está anexada. Essa política não permite que ninguém que utilize credenciais temporárias assuma a função, porque a variávelusername
está presente apenas para usuários do IAM.Importante É possível usar qualquer chave de condição de valor único disponível como uma variável. Você não pode usar uma chave de condição de valores múltiplos como uma variável.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyRequireUsernameForSessionName", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Condition": { "StringLike": {"sts:RoleSessionName": "${aws:username}"} } } ] }
Quando um administrador exibe o log do AWS CloudTrail de uma ação, ele pode comparar o nome da sessão com os nomes de usuário em sua conta. No exemplo a seguir, o usuário chamado
matjac
executou a operação usando a função chamadaMateoRole
. O administrador pode entrar em contato com Mateo Jackson, que tem o nome de usuáriomatjac
."assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:
matjac
", "arn": "arn:aws:sts::111122223333:assumed-role/MateoRole
/matjac
" }Se você permitir acesso entre contas usando funções, os usuários em uma conta poderão assumir uma função em outra conta. O ARN do usuário da função assumida listado no CloudTrail inclui a conta onde a função existe. Ele não inclui a conta do usuário que assumiu a função. Os usuários são exclusivos apenas dentro de uma conta. Portanto, recomendamos que você use esse método para verificar logs do CloudTrail somente para funções que são assumidas pelos usuários em contas que você administra. Seus usuários podem usar o mesmo nome de usuário em várias contas.
- sts:SourceIdentity
-
Funciona com operadores de string.
Use esta chave para comparar a identidade-fonte que uma entidade de segurança especifica ao assumir uma função com o valor que é especificado na política.
Disponibilidade:essa chave está presente na solicitação quando a entidade de segurança fornece 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.Você pode usar essa chave em uma política de confiança de função para exigir que seus usuários definam uma identidade-fonte específica ao assumir uma função. Por exemplo, você pode exigir que seu quadro de funcionários ou suas identidades federadas especifiquem um valor para a identidade-fonte. Você pode configurar seu provedor de identidade (IdP) para usar um dos atributos associados aos usuários, como um nome de usuário ou e-mail como a identidade-fonte. O IdP então passa a identidade-fonte como um atributo nas declarações ou reivindicações que envia para a AWS. O valor do atributo de identidade-fonte identifica o usuário ou a aplicação que está assumindo a função.
Depois que o usuário assume a função, a atividade aparece nos logs do AWS CloudTrail com o valor de identidade-fonte que foi definido. Isso torna mais fácil para os administradores determinar quem ou o que executou ações com uma função na AWS. Você deve conceder permissões para a ação
sts:SetSourceIdentity
para permitir que uma identidade defina uma identidade-fonte.Ao contrário de sts:RoleSessionName, após a definição da identidade-fonte, o valor não pode ser alterado. Ele está presente no contexto de solicitação para todas as ações executadas com a função pela identidade-fonte. 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.
Você pode usar a chave de condição global aws:SourceIdentity para controlar ainda mais o acesso a recursos da AWS com base no valor da identidade-fonte em solicitações subsequentes.
A política de confiança de função a seguir permite que o usuário do IAM
AdminUser
assuma uma função na conta111122223333
. Ela também concede permissão para oAdminUser
definir uma identidade-fonte, desde que o conjunto de identidades de origem sejaDiegoRamirez
.{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdminUserAssumeRole", "Effect": "Allow", "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"} } } ] }
Para saber mais sobre como usar informações de identidade-fonte, consulte Monitorar e controlar ações realizadas com funções assumidas.
- sts:TransitiveTagKeys
-
Funciona com operadores de string.
Use esta chave para comparar as chaves de tag de sessão transitiva na solicitação com as especificadas na política.
Disponibilidade: essa chave está presente na solicitação quando você faz uma solicitação usando credenciais de segurança temporárias. Elas incluem credenciais criadas usando qualquer operação assume-role, ou a operação
GetFederationToken
.Ao fazer uma solicitação usando credenciais de segurança temporárias, o contexto da solicitação inclui a chave de contexto
aws:PrincipalTag
. Essa chave inclui uma lista de tags de sessão, tags de sessão transitivas e tags de função. As tags de sessão transitivas são tags que persistem em todas as sessões 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.Você pode usar essa chave de condição em uma política para exigir a configuração de tags de sessão específicas como transitivas ao assumir uma função ou federar um usuário.