Chaves de contexto de condição do IAM e do AWS STS - AWS Identity and Access Management

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.

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 ou us-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 ou Activate.

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 especificar cloudwatch.amazonaws.com no elemento Principal. 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 global aws: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 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: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.

Default

O padrão lista as declarações padrão do OIDC e como elas são mapeadas para as chaves de contexto de condição do AWS STS na AWS. Você pode usar essas chaves para controlar o acesso a uma função. Para fazer isso, compare as chaves de condição do AWS STS com os valores na coluna de declaração JWT do IdP. Use esse mapeamento se seu IdP não estiver listado nas opções da guia.

Os fluxos de trabalho do GitHub Actions e o Google são alguns exemplos de IDPs que usam a implementação padrão em seu token de ID JWT do OIDC.

Chave da condição AWS STS declaração JWT do IdP Disponível na sessão

amr

amr

Sim

aud

azp

Se nenhum valor for definido para azp, a chave de condição aud será mapeada para a declaração aud.

Sim

email

email

Não

oaud

aud

Não

sub

sub

Sim

Para obter mais informações sobre o uso de chaves de contexto de condição com o GitHub, consulte Configurar uma função para o provedor de identidades OIDC GitHub. Para obter mais informações sobre o Google e sobre os campos aud e azp, consulte o guia Google Identity Platform OpenID Connect.

amr

Funciona com operadores de string. A chave tem vários valores, o que significa que você a testa em uma política usando operadores do conjunto de condições.

Exemplo: token.actions.githubusercontent.com:amr

A Referência de métodos de autenticação inclui informações de login sobre o usuário. 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 (accounts.google.com).

aud

Funciona com operadores de string.

Exemplos:

  • accounts.google.com:aud

  • token.actions.githubusercontent.com:aud

Use a chave de condição aud para verificar se o público corresponde àquele especificado na política. É possível usar a chave de pub com a chave de ass para o mesmo provedor de identidade.

Essa chave de condição é definida a partir dos seguintes campos de token:

  • aud para IDs de cliente do Google do OAuth 2.0 do aplicativo, quando o campo azp não estiver definido. Quando o campo azp estiver definido, o campo aud corresponderá à chave de condição accounts.google.com:oaud.

  • azp quando o campo azp 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.

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 campo azp.

Campo azp não definido

O 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 campo aud do token de ID do Google corresponde aos valores da chave de condição accounts.google.com:aud e accounts.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 definido

O exemplo de política a seguir funciona para aplicativos híbridos que definem o campo azp. Nesse caso, o valor do campo aud do token de ID do Google corresponde apenas ao valor da chave de condição accounts.google.com:oaud. O valor do campo azp corresponde ao valor da chave de condição accounts.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" } } } ] }
e-mail

Funciona com operadores de string.

Exemplo: accounts.google.com:email

Essa chave de condição valida o endereço de e-mail do usuário. O valor dessa declaração pode não ser exclusiva dessa conta e pode mudar com o tempo, portanto, você não deve usar esse valor como identificador primário para verificar seu registro de usuário.

oaud

Funciona com operadores de string.

Exemplo: accounts.google.com:oaud

Essa chave especificará o outro público (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

  • token.actions.githubusercontent.com:sub

Use essas chaves para verificar se o assunto corresponde àquele especificado na política. É possível usar a chave sub com a chave aud para o mesmo provedor de identidade.

Na política de confiança de perfil a seguir, a chave de condição sub limita a função à ramificação do GitHub chamada demo.

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com", "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:ref:refs/heads/demo" } } ] }
Amazon Cognito

Essa guia explica como o Amazon Cognito mapeia as declarações do OIDC para as chaves de contexto de condição AWS STS na AWS. Você pode usar essas chaves para controlar o acesso a uma função. Para fazer isso, compare as chaves de condição do AWS STS com os valores na coluna de declaração JWT do IdP.

Para perfis usados pelo Amazon Cognito, as chaves são definidas usando cognito-identity.amazonaws.com seguido pela declaração.

Para obter mais informações sobre mapeamento de declaração do banco de identidades, consulte Mapeamentos padrão do provedor no Guia do desenvolvedor do Amazon Cognito. Para obter mais informações sobre mapeamento de declaração do grupo de usuários, consulte Como usar token de ID no Guia do desenvolvedor do Amazon Cognito.

Chave da condição AWS STS declaração JWT do IdP Disponível na sessão

amr

amr

Sim

aud

aud

Sim

oaud

aud

Não

sub

sub

Sim

amr

Funciona com operadores de string. A chave tem vários valores, o que significa que você a testa em uma política usando operadores do conjunto de condições.

Exemplo: cognito-identity.amazonaws.com:amr

A Referência de métodos de autenticação inclui informações de login sobre o usuário. 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 (cognito-identity.amazonaws.com).

Por exemplo, a seguinte condição na política de confiança para um perfil 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.

Exemplo: cognito-identity.amazonaws.com:aud

O cliente de aplicação do grupo de usuários que autenticou o usuário. O Amazon Cognito renderiza o mesmo valor na reivindicação client_id do token de acesso.

oaud

Funciona com operadores de string.

Exemplo: cognito-identity.amazonaws.com:oaud

O cliente de aplicação do grupo de usuários que autenticou o usuário. O Amazon Cognito renderiza o mesmo valor na reivindicação client_id do token de acesso.

sub

Funciona com operadores de string.

Exemplo: cognito-identity.amazonaws.com:sub

Um identificador exclusivo (UUID), ou assunto, do usuário autenticado. O nome de usuário pode não ser exclusivo em seu grupo de usuários. A subreivindicação é a melhor maneira de identificar um usuário específico. É possível usar a chave sub com a chave aud para o mesmo provedor de identidade.

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "cognito-identity.amazonaws.com:sub": [ "us-east-1:12345678-1234-1234-1234-123456790ab", "us-east-1:98765432-1234-1234-1243-123456790ab" ] } } ] }
Login with Amazon

Essa guia explica como o Login da Amazon mapeia as declarações do OIDC para as chaves de contexto de condição AWS STS na AWS. Você pode usar essas chaves para controlar o acesso a uma função. Para fazer isso, compare as chaves de condição do AWS STS com os valores na coluna de declaração JWT do IdP.

Chave da condição AWS STS declaração JWT do IdP Disponível na sessão

app_id

ID da aplicação

Sim

sub

ID de usuário

Sim

user_id

ID de usuário

Sim

app_id

Funciona com operadores de string.

Exemplo: www.amazon.com:app_id

Essa chave especifica o contexto do público que corresponde ao campo aud usado por outros provedores de identidade.

sub

Funciona com operadores de string.

Exemplo: www.amazon.com:sub

Essa chave verifica se o ID de usuário corresponde àquele especificado na política. É possível usar a chave sub com a chave aud para o mesmo provedor de identidade.

user_id

Funciona com operadores de string.

Exemplo: www.amazon.com:user_id

Essa chave especifica o contexto do público que corresponde ao campo aud usado por outros provedores de identidade. Você pode usar a chave user_id com a chave id do mesmo provedor de identidade.

Facebook

Essa guia explica como o Facebook mapeia as declarações do OIDC para as chaves de contexto de condição AWS STS na AWS. Você pode usar essas chaves para controlar o acesso a uma função. Para fazer isso, compare as chaves de condição do AWS STS com os valores na coluna de declaração JWT do IdP.

Chave da condição AWS STS declaração JWT do IdP Disponível na sessão

app_id

ID da aplicação

Sim

id

id

Sim

app_id

Funciona com operadores de string.

Exemplo: graph.facebook.com:app_id

Essa chave verificará se o contexto do público corresponde ao campo aud usado por outros provedores de identidade.

id

Funciona com operadores de string.

Exemplo: graph.facebook.com:id

Essa chave verificou se o ID da aplicação (ou site) corresponde àquele especificado na política.

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 campo Audience.

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, como 123456789012/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 '/':

  1. O valor da resposta Issuer (saml:iss)

  2. O ID da conta da AWS.

  3. 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 URI Format completo dos elementos Subject e NameID usados em sua declaração SAML. O valor persistent indica que o valor em saml:sub é o mesmo para um usuário entre as sessões. Se o valor for transient, o usuário terá um valor saml:sub diferente para cada sessão. Para obter mais informações sobre o atributo NameID do elemento Format, 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 website (site Wiki do REFEDS). Para obter uma lista de atributos do eduPerson, consulte a eduPerson Object Class Specification (201602) (Especificação da classe de objeto eduPerson (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", onde context-key e context-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ção sts: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ção aws: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ável username 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 chamada MateoRole. O administrador pode entrar em contato com Mateo Jackson, que tem o nome de usuário matjac.

"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 IAMAdminUser assuma uma função na conta 111122223333. Ela também concede permissão para o AdminUser definir uma identidade-fonte, desde que o conjunto de identidades de origem seja DiegoRamirez.

{ "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.