Configurar declarações SAML para a resposta de autenticação - AWS Identity and Access Management

Configurar declarações SAML para a resposta de autenticação

Após a verificação da identidade de um usuário na sua organização, o provedor de identidades (IdP) externo envia uma resposta de autenticação ao endpoint SAML da AWS em https://region-code.signin.aws.amazon.com/saml. Para obter uma lista das possíveis substituições de region-code, consulte a coluna Região em Endpoints de login da AWS. Essa resposta é uma solicitação POST que inclui um token SAML que segue o padrão Vinculação POST de HTTP para SAML 2.0 e contém os seguintes elementos ou solicitações. Você configura essas solicitações em seu IdP compatível com SAML. Consulte a documentação de seu IdP para obter instruções sobre como inserir essas solicitações.

Quando o IdP envia a resposta contendo as solicitações para a AWS, muitas das solicitações de entrada são mapeadas para as chaves de contexto da AWS. Essas chaves de contexto podem ser verificadas nas políticas do IAM usando o elemento Condition. Há uma lista de mapeamentos disponíveis na seção Mapeamento de atributos SAML para chaves de contexto de política de confiança da AWS.

Subject e NameID

O trecho a seguir mostra um exemplo. Substitua os valores marcados pelos seus próprios valores. Deve haver exatamente um elemento SubjectConfirmation com um elemento SubjectConfirmationData que inclui ambos os atributos NotOnOrAfter e Recipient. Esses atributos incluem um valor que deve corresponder ao endpoint https://region-code.signin.aws.amazon.com/saml da AWS. Para obter uma lista dos possíveis valores de region-code, consulte a coluna Região em Endpoints de login da AWS. Para o valor AWS, você também pode usar https://signin.aws.amazon.com/saml, conforme mostrado no exemplo a seguir.

Os elementos NameID podem ter o valor persistente, transitório ou consistir no URI de formato completo, conforme fornecido pela solução IdP. O valor persistente indica que o valor em NameID é o mesmo para um usuário entre as sessões. Se o valor for transitório, o usuário terá um valor NameID diferente para cada sessão. As interações de login único oferecem suporte aos seguintes tipos de identificadores:

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient

  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName

  • urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName

  • urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos

  • urn:oasis:names:tc:SAML:2.0:nameid-format:entity

<Subject> <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_cbb88bf52c2510eabe00c1642d4643f41430fe25e3</NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z" Recipient="https://signin.aws.amazon.com/saml"/> </SubjectConfirmation> </Subject>
Importante

A chave de contexto saml:aud vem do atributo destinatário SAML porque é o equivalente SAML ao campo de público do OIDC, por exemplo, accounts.google.com:aud.

Atributo SAML PrincipalTag

(Opcional) Você pode usar um elemento Attribute com o atributo Name definido como https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}. Este elemento permite que você passe atributos como tags de sessão na declaração do SAML. Para obter mais informações sobre tags de sessão, consulte Passar tags de sessão no AWS STS.

Para passar atributos como tags de sessão, inclua o elemento AttributeValue que especifica o valor da tag. Por exemplo, para passar os pares chave-valor de tag Project = Marketing e CostCenter = 12345, use o atributo a seguir. Inclua um elemento Attribute separado para cada tag.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project"> <AttributeValue>Marketing</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter"> <AttributeValue>12345</AttributeValue> </Attribute>

Para definir as tags acima como transitivas, inclua outro elemento Attribute com o atributo Name definido como https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys. Ele é um atributo multivalor opcional que define suas tags de sessão como transitivas. As tags transitivas persistem quando você usa a sessão do SAML para assumir outra função na AWS. Isso é conhecido como encadeamento de funções. Por exemplo, para definir as tags CostCenter e Principal como transitivas, use o atributo a seguir para especificar as chaves.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys"> <AttributeValue>Project</AttributeValue> <AttributeValue>CostCenter</AttributeValue> </Attribute>

Atributo SAML Role

Você pode usar um elemento Attribute com o atributo Name definido como https://aws.amazon.com/SAML/Attributes/Role Esse elemento contém um ou mais elementos AttributeValue que listam o provedor de identidade do IAM e a função para a qual o usuário é mapeado pelo IdP. A função e o provedor de identidade do IAM são especificados como um par de ARNs delimitado por vírgulas no mesmo formato que os parâmetros RoleArn e PrincipalArn que são passados para AssumeRoleWithSAML. Esse elemento deve conter pelo menos um par de provedor e função (elemento AttributeValue) e pode conter vários pares. Se o elemento contiver vários pares, será solicitado que o usuário escolha qual perfil assumir quando usar o WebSSO para fazer login no AWS Management Console.

Importante

O valor do atributo Name na tag Attribute faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como https://aws.amazon.com/SAML/Attributes/Role.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role"> <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> </Attribute>

Atributo SAML RoleSessionName

Você pode usar um elemento Attribute com o atributo Name definido como https://aws.amazon.com/SAML/Attributes/RoleSessionName Este elemento contém um elemento AttributeValue que fornece um identificador para as credenciais temporárias que são emitidas quando a função é assumida. Você pode usar isso para associar as credenciais temporárias ao usuário que está usando sua aplicação. Esse elemento é usado para exibir as informações do usuário no AWS Management Console. O valor no elemento AttributeValue deve ter entre 2 e 64 caracteres, pode conter apenas caracteres alfanuméricos, sublinhados e os seguintes caracteres: . , + = @ - (hífen). Ele nome não pode conter espaços. O valor é geralmente um ID de usuário (johndoe) ou um endereço de e-mail (johndoe@example.com). Ele não deve ser um valor que inclua espaço, como o nome de exibição de um usuário (John Doe).

Importante

O valor do atributo Name na tag Attribute faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como https://aws.amazon.com/SAML/Attributes/RoleSessionName.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName"> <AttributeValue>user-id-name</AttributeValue> </Attribute>

Atributo SAML SessionDuration

(Opcional) Você pode usar um elemento Attribute com o atributo Name definido como https://aws.amazon.com/SAML/Attributes/SessionDuration". Esse elemento contém um elemento AttributeValue que especifica por quanto tempo o usuário pode acessar o AWS Management Console antes de precisar solicitar novas credenciais temporárias. O valor é um número inteiro que representa o número de segundos da sessão. O valor pode variar de 900 segundos (15 minutos) a 43.200 segundos (12 horas). Se esse atributo não estiver presente, a credencial será válida por uma hora (o valor padrão do parâmetro DurationSeconds da API AssumeRoleWithSAML).

Para usar esse atributo, você deve configurar o provedor SAML para fornecer acesso de logon único ao AWS Management Console pelo endpoint da web de entrada do console em https://region-code.signin.aws.amazon.com/saml. Para obter uma lista dos possíveis valores de region-code, consulte a coluna Região em Endpoints de login da AWS. Ou você pode usar a seguinte URL: https://signin.aws.amazon.com/static/saml. Observe que esse atributo estende sessões apenas para o AWS Management Console. Ele não pode ampliar a vida útil de outras credenciais. No entanto, se estiver presente em uma chamada de API AssumeRoleWithSAML, ele poderá ser usado para abreviar a duração da sessão. O tempo útil padrão das credenciais retornadas pela chamada é de 60 minutos.

Observe também que, se um atributo SessionNotOnOrAfter também for definido, o menor valor dos dois atributos SessionDuration ou SessionNotOnOrAfter, estabelecerá a duração máxima da sessão do console.

Quando você ativa as seções do console com uma duração estendida, o risco de comprometimento das credenciais aumenta. Para ajudar a reduzir esse risco, você pode desabilitar imediatamente as sessões ativas do console para qualquer função escolhendo a opção Revoke Sessions (Revogar sessões) na página Role Summary (Resumo da função) no console do IAM. Para ter mais informações, consulte Revogar as credenciais de segurança temporárias do perfil do IAM.

Importante

O valor do atributo Name na tag Attribute faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como https://aws.amazon.com/SAML/Attributes/SessionDuration.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration"> <AttributeValue>1800</AttributeValue> </Attribute>

Atributo SAML SourceIdentity

(Opcional) Você pode usar um elemento Attribute com o atributo Name definido como https://aws.amazon.com/SAML/Attributes/SourceIdentity. Este elemento contém um elemento AttributeValue que fornece um identificador da pessoa ou da aplicação que está usando uma função do IAM. O valor da identidade-fonte persiste quando você usa a sessão do SAML para assumir outra função na AWS conhecida como encadeamento de funções. O valor da identidade-fonte está presente na solicitação para cada ação executada durante a sessão da função. O valor definido não pode ser alterado durante a sessão da função. Os administradores podem então usar logs do AWS CloudTrail para monitorar e auditar as informações de identidade-fonte para determinar quem executou ações com funções compartilhadas.

O valor no elemento AttributeValue deve ter entre 2 e 64 caracteres, pode conter apenas caracteres alfanuméricos, sublinhados e os seguintes caracteres: . , + = @ - (hífen). Ele nome não pode conter espaços. O valor geralmente é um atributo associado ao usuário, como um id de usuário (johndoe) ou um endereço de e-mail (johndoe@example.com). Ele não deve ser um valor que inclua espaço, como o nome de exibição de um usuário (John Doe). Para obter mais informações sobre como usar a identidade-fonte, consulte Monitorar e controlar ações realizadas com funções assumidas.

Importante

Se sua asserção SAML estiver configurada para usar o atributo SourceIdentity, sua política de confiança da função também deverá incluir a ação sts:SetSourceIdentity, caso contrário, a operação de assumir função falhará. Para obter mais informações sobre como usar a identidade-fonte, consulte Monitorar e controlar ações realizadas com funções assumidas.

Para passar um atributo de identidade-fonte, inclua o elemento AttributeValue que especifica o valor da identidade-fonte. Por exemplo, para passar a identidade-fonte DiegoRamirez use o atributo a seguir.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity"> <AttributeValue>DiegoRamirez</AttributeValue>

Mapeamento de atributos SAML para chaves de contexto de política de confiança da AWS

As tabelas desta seção listam atributos SAML utilizados com frequência e como eles são mapeados para chaves de contexto de condições de política de confiança na AWS. Você pode usar essas chaves para controlar o acesso a uma função. Para isso, compare as chaves com os valores incluídos nas declarações que acompanham uma solicitação de acesso SAML.

Importante

Essas chaves estão disponíveis apenas em políticas de confiança do IAM (políticas que determinam quem pode assumir uma função) e não são aplicáveis a políticas de permissões.

Na tabela de atributos eduPerson e eduOrg, os valores são digitados como strings ou listas de strings. Para valores de string, você pode testar esses valores em políticas de confiança do IAM usando condições StringEquals ou StringLike. Para valores que contêm uma lista de strings, você pode usar os ForAnyValueoperadores definidos de políticaForAllValues e para testar os valores nas políticas de confiança.

nota

Você deve incluir apenas uma solicitação por chave de contexto da AWS. Se você incluir mais de uma, apenas uma delas será mapeada.

A tabela a seguir mostra os atributos eduPerson e eduOrg.

Atributo eduPerson ou eduOrg (chave Name) É mapeado para essa chave de contexto da AWS (chave FriendlyName) Tipo

urn:oid:1.3.6.1.4.1.5923.1.1.1.1

eduPersonAffiliation

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.1.1.2

eduPersonNickname

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.1.1.3

eduPersonOrgDN

String

urn:oid:1.3.6.1.4.1.5923.1.1.1.4

eduPersonOrgUnitDN

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.1.1.5

eduPersonPrimaryAffiliation

String

urn:oid:1.3.6.1.4.1.5923.1.1.1.6

eduPersonPrincipalName

String

urn:oid:1.3.6.1.4.1.5923.1.1.1.7

eduPersonEntitlement

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.1.1.8

eduPersonPrimaryOrgUnitDN

String

urn:oid:1.3.6.1.4.1.5923.1.1.1.9

eduPersonScopedAffiliation

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.1.1.10

eduPersonTargetedID

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.1.1.11

eduPersonAssurance

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.2.1.2

eduOrgHomePageURI

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.2.1.3

eduOrgIdentityAuthNPolicyURI

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.2.1.4

eduOrgLegalName

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.2.1.5

eduOrgSuperiorURI

Lista de strings

urn:oid:1.3.6.1.4.1.5923.1.2.1.6

eduOrgWhitePagesURI

Lista de strings

urn:oid:2.5.4.3

cn

Lista de strings

A tabela a seguir mostra atributos do Active Directory.

Atributo do AD É mapeado para essa chave de contexto da AWS Tipo

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

name

String

http://schemas.xmlsoap.org/claims/CommonName

commonName

String

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname

givenName

String

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname

surname

String

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

mail

String

http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid

uid

String

A tabela a seguir mostra atributos do X.500.

Atributo X.500 É mapeado para essa chave de contexto da AWS Tipo

2.5.4.3

commonName

String

2.5.4.4

surname

String

2.4.5.42

givenName

String

2.5.4.45

x500UniqueIdentifier

String

0.9.2342.19200300100.1.1

uid

String

0.9.2342.19200300100.1.3

mail

String

0.9.2342.19200300.100.1.45

organizationStatus

String