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"}, "ArnLike": { "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:FIDO-certification
-
Funciona com operadores de string.
Verifica o nível de certificação de FIDO do dispositivo MFA no momento do registro de uma chave de segurança FIDO. A certificação do dispositivo é obtida do Serviço de metadados (MDS) da FIDO Alliance
. Se o status ou o nível de certificação de sua chave de segurança FIDO mudar, ele não será atualizado, a menos que o dispositivo tenha o registrado cancelado e seja registrado novamente para buscar as informações de certificação atualizadas. Valores possíveis de L1, L1plus, L2, L2plus, L3, L3plus
Neste exemplo, você registra uma chave de segurança e recupera a certificação FIDO Nível 1 plus para seu dispositivo.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-certification": "L1plus" } } } ] }
- iam:FIDO-FIPS-140-2-certification
-
Funciona com operadores de string.
Verifica o nível de certificação de validação FIPS-140-2 do dispositivo MFA no momento do registro de uma chave de segurança FIDO. A certificação do dispositivo é obtida do Serviço de metadados (MDS) da FIDO Alliance
. Se o status ou o nível de certificação de sua chave de segurança FIDO mudar, ele não será atualizado, a menos que o dispositivo tenha o registrado cancelado e seja registrado novamente para buscar as informações de certificação atualizadas. Valores possíveis de L1, L2, L3, L4
Neste exemplo, você registra uma chave de segurança e recupera a certificação FIPS-140-2 Nível 2 do seu dispositivo.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-2-certification": "L2" } } } ] }
- iam:FIDO-FIPS-140-3-certification
-
Funciona com operadores de string.
Verifica o nível de certificação de validação FIPS-140-3 do dispositivo MFA no momento do registro de uma chave de segurança FIDO. A certificação do dispositivo é obtida do Serviço de metadados (MDS) da FIDO Alliance
. Se o status ou o nível de certificação de sua chave de segurança FIDO mudar, ele não será atualizado, a menos que o dispositivo tenha o registrado cancelado e seja registrado novamente para buscar as informações de certificação atualizadas. Valores possíveis de L1, L2, L3, L4
Neste exemplo, você registra uma chave de segurança e recupera a certificação FIPS-140-3 Nível 3 para seu dispositivo.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L3" } } } ] }
- iam:RegisterSecurityKey
-
Funciona com operadores de string.
Verifica o estado atual da ativação do dispositivo MFA.
Valores possíveis de
Create
ouActivate
.Neste exemplo, você registra uma chave de segurança e recupera a certificação FIPS-140-3 Nível 1 para seu dispositivo.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L1" } } } ] }
- 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 não são compatíveis com essa chave de condição.
- iam:PermissionsBoundary
-
Funciona com operadores de nome de recurso da Amazon (ARN).
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 ter 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 Tags para recursos do AWS Identity and Access Management. 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 OIDC da AWS
Você pode usar a federação OIDC para fornecer credenciais de segurança temporárias a usuários que foram autenticados por meio de um provedor de identidade (IdP) compatível com OpenID Connect em um provedor de identidade OpenID Connect (OIDC) do IAM em sua conta da AWS. Exemplos desses provedores incluem GitHub, Amazon Cognito, Login da Amazon, e Google. É possível usar tokens de identidade e de acesso do seu próprio IdP, bem como tokens de contas de serviço concedidos por workloads do Amazon Elastic Kubernetes Service.
Você pode usar chaves de contexto de condição do AWS OIDC para criar políticas que limitam o acesso de usuários federados a recursos associados a um provedor, aplicação ou usuário específico. Essas chaves são normalmente usadas na política de confiança de uma função. Defina as chaves de condição usando o nome do provedor do OIDC (token.actions.githubusercontent.com
), seguido pela declaração (:aud
): token.actions.githubusercontent.com:aud
.
Algumas chaves de condição da federação do OIDC podem ser usadas na sessão de perfil para autorizar o acesso a recursos. Se o valor for Sim na coluna Disponível na sessão, você poderá usar essas chaves de condição nas políticas para definir o que os usuários têm permissão para acessar em outros serviços da AWS. Quando uma declaração não está disponível na sessão, a chave de contexto de condição do OIDC só pode ser usada em uma política de confiança de função para a autenticação inicial AssumeRoleWithWebIdentity.
Selecione seu IdP para ver como as declarações do seu IdP são mapeadas para as chaves de contexto de condição do IAM na AWS.
Mais informações sobre a federação OIDC
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 ter 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 Configurar 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"] } }
Chaves de contexto de federação do AWS STS baseadas em SAML entre serviços
Algumas chaves de condição de federação baseadas em SAML podem ser usadas em solicitações subsequentes para autorizar operações da AWS em outros serviços e chamadas AssumeRole
. Essas são as chaves de condição que podem ser usadas em políticas de confiança de perfil quando as entidades principais federadas assumem outro perfil, e em políticas de recursos de outros serviços da AWS para autorizar o acesso das entidades principais federadas aos recursos. Para obter mais informações sobre o uso dessas chaves, consulte Sobre federação baseada em SAML 2.0.
Selecione uma chave de condição para ver a descrição.
nota
Nenhuma outra chave de condição de federação baseada em SAML está disponível para uso após a resposta inicial de autenticação do provedor de identidades (IdP) externo.
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).
- 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
). - 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
é a entidade principal do AWS CodeArtifact.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.
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 as entidades principais usem tokens de portador para realizar algumas operações. O comando
aws codeartifact get-authorization-token
retorna um token de portador. Você pode usar o token do portador para realizar as operações do AWS CodeArtifact. Para obter mais informações sobre tokens de portador, consulte Tokens de portador de serviço.É 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.
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.
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 as entidades principais usem tokens de portador para realizar algumas operações. O comando
aws codeartifact get-authorization-token
retorna um token de portador. Você pode usar o token do portador para realizar as operações do AWS CodeArtifact. Para obter mais informações sobre tokens de portador, consulte Tokens de portador de serviço. - 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 Acesso às Contas da AWS de propriedade de 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:RequestContext/chave de contexto
-
Funciona com operadores de string.
Use essa chave para comparar os pares de chave-valor do contexto da sessão que estão incorporados na declaração de contexto assinada pelo emissor do token de confiança transmitida na solicitação com os valores de chave de contexto especificados na política de confiança do perfil.
Disponibilidade: essa chave está presente na solicitação quando uma declaração de contexto é fornecida no parâmetro
ProvidedContexts
da solicitação enquanto assume um perfil usando a operação de API AssumeRole do AWS STS.Essa chave de contexto é formatada como
"sts:RequestContext/context-key":"context-value"
, ondecontext-key
econtext-value
são um par de chave/valor de contexto. Quando várias chaves de contexto são incorporadas na declaração de contexto assinada que é passada na solicitação, existe uma chave de contexto para cada par de chave/valor. Você deve conceder permissão para a açãosts:SetContext
na política de confiança do perfil para permitir que uma entidade principal defina chaves de contexto no token de sessão resultante. Para saber mais sobre as chaves de contexto do Centro de Identidade do IAM compatíveis que podem ser usadas com essa chave, consulte Chaves de condição do AWS STS para o Centro de Identidade do IAM no Guia do usuário do AWS IAM Identity Center.Você pode usar essa chave em uma política de confiança do perfil para aplicar um controle de acesso refinado com base no usuário ou em seus atributos ao assumir um perfil. Depois que o perfil é assumido, a atividade aparece nos logs do AWS CloudTrail no atributo
AdditionalEventData
, contendo os pares de chave/valor de contexto da sessão que foram definidos pelo provedor de contexto na solicitação feita para assumir o perfil. 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. Os pares de chave/valor são definidos pelo provedor de contexto especificado, não pelo AWS CloudTrail ou pelo AWS STS. Isso dá ao provedor de contexto controle sobre qual contexto é incluído nos logs e nas informações da sessão do CloudTrail. - sts:RequestContextProviders
-
Funciona com operadores de nome de recurso da Amazon (ARN).
Use essa chave para comparar o ARN do provedor de contexto na solicitação com o ARN do provedor de contexto especificado na política de confiança do perfil.
Disponibilidade: essa chave está presente na solicitação quando uma declaração de contexto é fornecida no parâmetro
ProvidedContexts
da solicitação enquanto assume um perfil usando a operação de API AssumeRole do AWS STS.O exemplo de condição a seguir verifica se o ARN do provedor de contexto passado na solicitação corresponde ao ARN especificado na condição da política de confiança do perfil.
"Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": [ "arn:aws:iam::aws:contextProvider/IdentityCenter" ] } }
- 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.