Solicitação de credenciais de segurança temporárias - AWS Identity and Access Management

Solicitação de credenciais de segurança temporárias

Para solicitar credenciais de segurança temporárias, você pode usar as operações do AWS Security Token Service (AWS STS) na API da AWS. É possível usar operações para criar e fornecer aos usuários confiáveis credenciais de segurança temporárias que podem controlar o acesso aos seus recursos da AWS. Para obter mais informações sobre o AWS STS, consulte Credenciais de segurança temporárias no IAM. Para saber mais sobre os diferentes métodos que você pode usar para solicitar credenciais de segurança temporárias ao assumir uma função, consulte Uso de funções do IAM.

Para chamar as operações de API, você pode usar um dos AWS SDKs. Os SDKs estão disponíveis para uma grande variedade de ambientes e linguagens de programação, incluindo Java, .NET, Python, Ruby, Android e iOS. Os SDKs processam tarefas como a assinatura criptográfica de suas solicitações, a solicitação de novas tentativas (se necessário) e o tratamento das respostas de erro. Você também pode usar a API de consulta do AWS STS, descrita na Referência de API do AWS Security Token Service. Por fim, duas ferramentas de linha de comando são suporte aos comandos do AWS STS: a AWS Command Line Interface e o AWS Tools for Windows PowerShell.

As operações da API do AWS STS criam uma nova sessão com credenciais de segurança temporárias que incluem um par de chaves de acesso e um token de sessão. O par de chaves de acesso consiste em um ID de chave de acesso e uma chave secreta. Os usuários (ou um aplicativo que o usuário executa) pode usar essas credenciais para acessar seus recursos. Você pode criar uma sessão de função e aprovar políticas e tags de sessão programaticamente usando operações de API do AWS STS. As permissões de sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. Para obter mais informações sobre políticas de sessão, consulte Políticas de sessão. Para obter mais informações sobre tags de sessão, consulte Passar tags de sessão no AWS STS.

nota

O tamanho do token de sessão que as operações de API do AWS STS retornam não é fixo. É altamente recomendável que você não faça suposições sobre o tamanho máximo. O tamanho típico do token é menos de 4096 bytes, mas pode variar.

Uso do AWS STS com regiões da AWS

Você pode enviar chamadas de API do AWS STS para um endpoint global ou para um dos endpoints regionais. Se escolher um endpoint mais próximo a você, você poderá reduzir a latência e melhorar a performance de suas chamadas de API. Você também pode optar por direcionar suas chamadas para um endpoint regional alternativo se não puder mais se comunicar com o endpoint original. Se estiver usando um dos vários SDKs da AWS, use o método do respectivo SDK para especificar uma região antes de fazer a chamada de API. Se construir manualmente as solicitações de API HTTP, você deverá direcionar a solicitação para o endpoint correto. Para obter mais informações, consulte a seção AWS STS de Regiões e endpoints e Gerenciar o AWS STS em uma Região da AWS.

A seguir veja as operações de API que podem ser usadas para adquirir credenciais temporárias para o uso em seu ambiente e aplicativos da AWS.

AssumeRole: delegação e federação entre contas por meio de um agente de identidades personalizado

A operação da API AssumeRole é útil para permitir que os usuários existentes do IAM acessem recursos da AWS aos quais eles ainda não têm acesso. Por exemplo, o usuário pode precisar de acesso a recursos em outra Conta da AWS. Ela também é útil como um meio de obter acesso privilegiado temporariamente, por exemplo, para fornecer uma autenticação multifator (MFA). Você deve chamar essa API usando credenciais ativas. Para saber quem pode chamar essa operação, consulte Comparação das operações de API do AWS STS. Para obter mais informações, consulte Criação de uma função para delegar permissões a um usuário do IAM e Configuração de acesso à API protegido por MFA.

Essa chamada deve ser feita usando credenciais de segurança da AWS válidas. Ao fazer essa chamada, passe as seguintes informações:

  • O nome de recurso da Amazon (ARN) da função que o aplicativo deve assumir.

  • A duração (opcional), que especifica a duração das credenciais de segurança temporárias. Use o parâmetro DurationSeconds para especificar a duração da sessão da função de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para a função. Para saber como visualizar o valor máximo para sua função, consulte Visualizar a configuração de duração máxima da sessão para uma função. Se você não passar esse parâmetro, as credenciais temporárias vão expirar em uma hora. O parâmetro DurationSeconds desta API é diferente do parâmetro HTTP SessionDuration que é usado para especificar a duração de uma sessão do console. Use o parâmetro HTTP SessionDuration na solicitação para o endpoint de federação para obter um token de login do console. Para ter mais informações, consulte Habilitar o acesso do agente de identidades personalizado ao console da AWS.

  • Nome da sessão da função. Use esse valor de string para identificar a sessão quando uma função for usada por diferentes entidades de segurança. Para fins de segurança, os administradores podem visualizar este campo nos logs do AWS CloudTrail para ajudar a identificar quem executou uma ação na AWS. O administrador pode exigir que você especifique seu nome de usuário do IAM como o nome da sessão quando você assumir a função. Para ter mais informações, consulte sts:RoleSessionName.

  • (Opcional) Identidade-fonte. Você pode exigir que os usuários especifiquem uma identidade-fonte quando assumirem uma função. Depois que a identidade-fonte é definida, o valor não pode ser alterado. Ele estará presente na solicitação para todas as ações realizadas durante a sessão de função. O valor da identidade-fonte persiste nas sessões de função encadeada. Você pode usar informações de identidade-fonte em logs do AWS CloudTrail para determinar quem executou ações com uma função. Para obter mais informações sobre como usar a identidade-fonte, consulte Monitorar e controlar ações realizadas com funções assumidas.

  • (Opcional) Políticas de sessão em linha ou gerenciadas. Estas políticas limitam as permissões da política baseada em identidade da função que são atribuídas à sessão da função. As permissões da sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. As políticas de sessão não podem ser usadas para conceder mais permissões do que as permitidas pela política baseada em identidade da função que está sendo assumida. Para obter mais informações sobre as permissões de sessão da função, consulte Políticas de sessão.

  • Tags de sessão (opcionais). Você pode assumir uma função e usar as credenciais temporárias para fazer uma solicitação. Ao fazer isso, as tags principais da sessão incluirão as tags da função e as tags de sessão passadas. Se você fizer essa chamada usando credenciais temporárias, a nova sessão também herdará tags de sessão transitiva da sessão de chamada. Para obter mais informações sobre tags de sessão, consulte Passar tags de sessão no AWS STS.

  • Informações de MFA (opcionais). Se configurada para usar a autenticação multifator (MFA), inclua o identificador para um dispositivo MFA e o código único fornecido pelo dispositivo.

  • Um valor ExternalId (opcional) que pode ser usado para delegar o acesso à sua conta a terceiros. Esse valor ajuda a garantir que somente o terceiro especificado pode acessar a função. Para ter mais informações, consulte Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros.

O exemplo a seguir mostra uma solicitação e resposta de exemplo usando AssumeRole. Este exemplo de solicitação assume a função demo para a duração especificada com a política de sessão incluída, etiquetas de sessão, ID externo e identidade-fonte. A sessão resultante é nomeada John-session.

exemplo Exemplo de solicitação
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=AssumeRole &RoleSessionName=John-session &RoleArn=arn:aws::iam::123456789012:role/demo &Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &ExternalId=123ABC &SourceIdentity=DevUser123 &AUTHPARAMS

O valor da política mostrado no exemplo anterior é a versão codificada por URL da seguinte política:

{"Version":"2012-10-17","Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}

O parâmetro AUTHPARAMS no exemplo é um espaço reservado para a sua assinatura. Uma assinatura é a informação de autenticação que você deve incluir com as solicitações de API HTTP da AWS. Recomendamos usar os SDKs da AWS para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse Assinaturas e solicitações da AWS usando o Signature versão 4 no Referência geral da Amazon Web Services para saber como assinar uma solicitação.

Além das credenciais de segurança temporárias, a resposta inclui o nome de recurso da Amazon (ARN) para o usuário federado e o tempo de expiração das credenciais.

exemplo Exemplo de resposta
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleResult> <SourceIdentity>DevUser123</SourceIdentity> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2019-07-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> <AssumedRoleUser> <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn> <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId> </AssumedRoleUser> <PackedPolicySize>8</PackedPolicySize> </AssumeRoleResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </AssumeRoleResponse>
nota

Uma conversão da AWS compacta as políticas de sessão e as tags de sessão passadas em um formato binário compactado que têm um limite separado. Sua solicitação pode falhar para esse limite mesmo que seu texto simples atenda aos outros requisitos. O elemento de resposta PackedPolicySize indica, em porcentagem, o quão perto as políticas e tags da sua solicitação estão do limite de tamanho superior.

AssumeRoleWithWebIdentity: federação por meio de um provedor de identidades baseado na Web

A operação da API AssumeRoleWithWebIdentity retorna um conjunto de credenciais de segurança temporárias para usuários federados que são autenticados por meio de um provedor de identidades público. Exemplos de provedores de identidades públicos incluem Login with Amazon, Facebook, Google e qualquer provedor de identidades compatível com OpenID Connect (OIDC). Essa operação é útil para a criação de aplicativos móveis ou aplicativos web baseados no cliente que exijam acesso à AWS. O uso desta operação significa que seus usuários não precisam de suas próprias identidades do AWS ou do IAM. Para ter mais informações, consulte Federação OIDC.

Em vez de chamar diretamente AssumeRoleWithWebIdentity, recomendamos que você use o Amazon Cognito e o provedor de credenciais do Amazon Cognito com os AWS SDKs para desenvolvimento móvel. Para obter mais informações, consulte Autenticação com o Amplify na documentação do Amplify.

Se você não estiver usando o Amazon Cognito, chame a ação AssumeRoleWithWebIdentity do AWS STS. Esta é uma chamada sem assinatura, o que significa que o aplicativo não precisa ter acesso a nenhuma credencial de segurança da AWS para fazer a chamada. Ao fazer essa chamada, passe as seguintes informações:

  • O nome de recurso da Amazon (ARN) da função que o aplicativo deve assumir. Se o seu aplicativo dá suporte a várias maneiras para os usuários fazerem login, você deve definir várias funções, uma por provedor de identidade. A chamada para AssumeRoleWithWebIdentity deve incluir o ARN da função que é específico para o provedor pelo qual o usuário fez login.

  • O token que o aplicativo obtém do IdP (provedor de identidade) depois que o usuário é autenticado.

  • Você pode configurar seu IdP para passar atributos em seu token como tags de sessão.

  • A duração (opcional), que especifica a duração das credenciais de segurança temporárias. Use o parâmetro DurationSeconds para especificar a duração da sessão da função de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para a função. Para saber como visualizar o valor máximo para sua função, consulte Visualizar a configuração de duração máxima da sessão para uma função. Se você não passar esse parâmetro, as credenciais temporárias vão expirar em uma hora. O parâmetro DurationSeconds desta API é diferente do parâmetro HTTP SessionDuration que é usado para especificar a duração de uma sessão do console. Use o parâmetro HTTP SessionDuration na solicitação para o endpoint de federação para obter um token de login do console. Para ter mais informações, consulte Habilitar o acesso do agente de identidades personalizado ao console da AWS.

  • Nome da sessão da função. Use esse valor de string para identificar a sessão quando uma função for usada por diferentes entidades de segurança. Por motivos de segurança, os administradores podem exibir esse campo em logs do AWS CloudTrail para saber quem executou uma ação na AWS. O administrador pode exigir que você forneça um valor específico para o nome da sessão ao assumir a função. Para ter mais informações, consulte sts:RoleSessionName.

  • (Opcional) Identidade-fonte. Você pode exigir que os usuários federados especifiquem uma identidade-fonte quando assumirem uma função. Depois que a identidade-fonte é definida, o valor não pode ser alterado. Ele estará presente na solicitação para todas as ações realizadas durante a sessão de função. O valor da identidade-fonte persiste nas sessões de função encadeada. Você pode usar informações de identidade-fonte em logs do AWS CloudTrail para determinar quem executou ações com uma função. Para obter mais informações sobre como usar a identidade-fonte, consulte Monitorar e controlar ações realizadas com funções assumidas.

  • (Opcional) Políticas de sessão em linha ou gerenciadas. Estas políticas limitam as permissões da política baseada em identidade da função que são atribuídas à sessão da função. As permissões da sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. As políticas de sessão não podem ser usadas para conceder mais permissões do que as permitidas pela política baseada em identidade da função que está sendo assumida. Para obter mais informações sobre as permissões de sessão da função, consulte Políticas de sessão.

    nota

    Uma chamada para AssumeRoleWithWebIdentity não é assinada (criptografada). Portanto, você deve incluir somente as políticas de sessão opcionais se a solicitação é transmitida por meio de um intermediário de confiança. Nesse caso, alguém poderia alterar a política para remover as restrições.

Quando você chama AssumeRoleWithWebIdentity, a AWS verifica a autenticidade do token. Por exemplo, dependendo do provedor, a AWS pode fazer uma chamada para o provedor e incluir o token que o aplicativo passou. Supondo que o provedor de identidade valide o token, a AWS retorna as seguintes informações:

  • Um conjunto de credenciais de segurança temporárias. Elas consistem em um ID de chave de acesso, chave de acesso secreta e um token de sessão.

  • O ID da função e o ARN da função assumida.

  • Um valor SubjectFromWebIdentityToken que contém o ID de usuário exclusivo.

Quando você tem as credenciais de segurança temporárias, pode usá-las para fazer chamadas de API da AWS. Esse é o mesmo processo de fazer uma chamada de API da AWS com credenciais de segurança de longo prazo. A diferença é que você deve incluir o token de sessão, o que permite que a AWS verifique se as credenciais de segurança temporárias são válidas.

Seu aplicativo deve armazenar as credenciais em cache. Como observado, por padrão, as credenciais expiram após uma hora. Se não usar a operação AmazonSTSCredentialsProvider no SDK da AWS, você e sua aplicação serão responsáveis por chamar AssumeRoleWithWebIdentity novamente. Chame esta operação para obter um novo conjunto de credenciais de segurança temporárias antes que as antigas expirem.

AssumeRoleWithSAML&emdash; federação por meio de um provedor de identidades corporativo compatível com SAML 2.0

A operação de API AssumeRoleWithSAML retorna um conjunto de credenciais de segurança temporárias para usuários federados que são autenticados pelo sistema de identidade existente da sua organização. Os usuários também devem usar SAML 2.0 (Security Assertion Markup Language) para passar informações de autenticação e autorização para a AWS. Esta operação de API é útil em organizações que integraram seus sistemas de identidade (como o Windows Active Directory ou OpenLDAP) a um software que pode produzir declarações em SAML. Essa integração fornece informações sobre a identidade e as permissões do usuário (como o Active Directory Federation Services ou o Shibboleth). Para ter mais informações, consulte Federação SAML 2.0.

nota

Uma chamada para AssumeRoleWithSAML não é assinada (criptografada). Portanto, você deve incluir somente as políticas de sessão opcionais se a solicitação é transmitida por meio de um intermediário de confiança. Nesse caso, alguém poderia alterar a política para remover as restrições.

Esta é uma chamada sem assinatura, o que significa que o aplicativo não precisa ter acesso a nenhuma credencial de segurança da AWS para fazer a chamada. Ao fazer essa chamada, passe as seguintes informações:

  • O nome de recurso da Amazon (ARN) da função que o aplicativo deve assumir.

  • O ARN do provedor SAML criado no IAM que descreve o provedor de identidade.

  • A declaração do SAML, codificada em base64, que foi fornecida pelo provedor de identidade SAML em sua resposta de autenticação à solicitação de login de seu aplicativo.

  • Você pode configurar seu IdP para passar atributos para sua declaração do SAML como tags de sessão.

  • A duração (opcional), que especifica a duração das credenciais de segurança temporárias. Use o parâmetro DurationSeconds para especificar a duração da sessão da função de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para a função. Para saber como visualizar o valor máximo para sua função, consulte Visualizar a configuração de duração máxima da sessão para uma função. Se você não passar esse parâmetro, as credenciais temporárias vão expirar em uma hora. O parâmetro DurationSeconds desta API é diferente do parâmetro HTTP SessionDuration que é usado para especificar a duração de uma sessão do console. Use o parâmetro HTTP SessionDuration na solicitação para o endpoint de federação para obter um token de login do console. Para ter mais informações, consulte Habilitar o acesso do agente de identidades personalizado ao console da AWS.

  • (Opcional) Políticas de sessão em linha ou gerenciadas. Estas políticas limitam as permissões da política baseada em identidade da função que são atribuídas à sessão da função. As permissões da sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. As políticas de sessão não podem ser usadas para conceder mais permissões do que as permitidas pela política baseada em identidade da função que está sendo assumida. Para obter mais informações sobre as permissões de sessão da função, consulte Políticas de sessão.

  • Nome da sessão da função. Use esse valor de string para identificar a sessão quando uma função for usada por diferentes entidades de segurança. Por motivos de segurança, os administradores podem exibir esse campo em logs do AWS CloudTrail para saber quem executou uma ação na AWS. O administrador pode exigir que você forneça um valor específico para o nome da sessão ao assumir a função. Para ter mais informações, consulte sts:RoleSessionName.

  • (Opcional) Identidade-fonte. Você pode exigir que os usuários federados especifiquem uma identidade-fonte quando assumirem uma função. Depois que a identidade-fonte é definida, o valor não pode ser alterado. Ele estará presente na solicitação para todas as ações realizadas durante a sessão de função. O valor da identidade-fonte persiste nas sessões de função encadeada. Você pode usar informações de identidade-fonte em logs do AWS CloudTrail para determinar quem executou ações com uma função. Para obter mais informações sobre como usar a identidade-fonte, consulte Monitorar e controlar ações realizadas com funções assumidas.

Quando você chama AssumeRoleWithSAML, a AWS verifica a autenticidade da declaração do SAML. Supondo que o provedor de identidade valide a declaração, a AWS retorna as seguintes informações:

  • Um conjunto de credenciais de segurança temporárias. Elas consistem em um ID de chave de acesso, chave de acesso secreta e um token de sessão.

  • O ID da função e o ARN da função assumida.

  • Um valor Audience que contém o valor do atributo Recipient do elemento SubjectConfirmationData da declaração do SAML.

  • Um valor Issuer que contém o valor do o elemento Issuer da declaração do SAML.

  • Um elemento NameQualifier que contém um valor de hash criado a partir do valor Issuer, o ID da Conta da AWS e o nome amigável do provedor de SAML. Quando combinado com o elemento Subject, eles podem identificar exclusivamente o usuário federado.

  • Um elemento Subject que contém o valor do elemento NameID no elemento Subject da declaração do SAML.

  • Um elemento SubjectType que indica o formato do elemento Subject. O valor pode ser persistent, transientou o URI Format completo dos elementos Subject e NameID usados em sua declaração do SAML. Para obter mais informações sobre o atributo NameID do elemento Format, consulte Configurar declarações SAML para a resposta de autenticação.

Quando você tem as credenciais de segurança temporárias, pode usá-las para fazer chamadas de API da AWS. Esse é o mesmo processo de fazer uma chamada de API da AWS com credenciais de segurança de longo prazo. A diferença é que você deve incluir o token de sessão, o que permite que a AWS verifique se as credenciais de segurança temporárias são válidas.

Seu aplicativo deve armazenar as credenciais em cache. Por padrão, as credenciais expiram após uma hora. Se você não estiver usando a ação AmazonSTSCredentialsProvider no SDK da AWS, caberá a você e ao seu aplicativo chamar AssumeRoleWithSAML novamente. Chame esta operação para obter um novo conjunto de credenciais de segurança temporárias antes que as antigas expirem.

GetFederationToken: federação por meio de um agente de identidades personalizado

A operação de API GetFederationToken retorna um conjunto de credenciais de segurança temporárias para usuários federados. A API é diferente de AssumeRole, em que o período de expiração padrão é significativamente maior (até 12 horas, em vez de 1 hora). Além disso, você pode usar o parâmetro DurationSeconds para especificar uma duração para que as credenciais de segurança temporárias permaneçam válidas. As credenciais resultantes são válidas pela duração especificada, de 900 segundos (15 minutos) até 129.600 segundos (36 horas). O período de expiração maior pode ajudar a reduzir o número de chamadas para a AWS porque você não precisa obter novas credenciais com a mesma frequência.

Ao fazer essa solicitação, você usa as credenciais de um usuário do IAM específico. As permissões das credenciais de segurança temporárias são determinadas pelas políticas de sessão que você transmite ao chamar GetFederationToken. As permissões de sessão resultantes são a interseção das políticas de usuário do IAM e as políticas de sessão que você passar. As políticas de sessão não podem ser usadas para conceder mais permissões do que as permitidas pela política baseada em identidade do usuário do IAM que está solicitando federação. Para obter mais informações sobre as permissões de sessão da função, consulte Políticas de sessão.

Quando você usa as credenciais temporárias retornadas pela operação GetFederationToken, as tags principais da sessão incluem as tags do usuário e as tags de sessão passadas. Para obter mais informações sobre tags de sessão, consulte Passar tags de sessão no AWS STS.

A chamada GetFederationToken retorna credenciais de segurança temporárias que consistem em um token de segurança, chave de acesso, chave secreta e expiração. Você pode usar GetFederationToken se deseja gerenciar permissões dentro de sua organização (por exemplo, usando o aplicativo de proxy para atribuir permissões).

O exemplo a seguir mostra uma solicitação e resposta de exemplo que usa GetFederationToken. Esta solicitação de exemplo agrupa o usuário de chamada pela duração especificada ao ARN da política de sessão e às tags de sessão. A sessão resultante é nomeada Jane-session.

exemplo Exemplo de solicitação
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetFederationToken &Name=Jane-session &PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &AUTHPARAMS

O ARN da política mostrado no exemplo anterior inclui o seguinte ARN codificado em URL:

arn:aws:iam::123456789012:policy/Role1policy

Além disso, observe que o parâmetro &AUTHPARAMS no exemplo destina-se a ser o espaço reservado para as informações de autenticação. Esta é a assinatura, que é necessário incluir às solicitações de API HTTP da AWS. Recomendamos usar os SDKs da AWS para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse Assinaturas e solicitações da AWS usando o Signature versão 4 no Referência geral da Amazon Web Services para saber como assinar uma solicitação.

Além das credenciais de segurança temporárias, a resposta inclui o nome de recurso da Amazon (ARN) para o usuário federado e o tempo de expiração das credenciais.

exemplo Exemplo de resposta
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetFederationTokenResult> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2019-04-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId> </Credentials> <FederatedUser> <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn> <FederatedUserId>123456789012:Jean</FederatedUserId> </FederatedUser> <PackedPolicySize>4</PackedPolicySize> </GetFederationTokenResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </GetFederationTokenResponse>
nota

Uma conversão da AWS compacta as políticas de sessão e as tags de sessão passadas em um formato binário compactado que têm um limite separado. Sua solicitação pode falhar para esse limite mesmo que seu texto simples atenda aos outros requisitos. O elemento de resposta PackedPolicySize indica, em porcentagem, o quão perto as políticas e tags da sua solicitação estão do limite de tamanho superior.

A AWS recomenda que você conceda permissões no nível do recurso (por exemplo, você anexa uma política baseada em recurso a um bucket do Amazon S3). Você pode omitir o parâmetro Policy. No entanto, se você não incluir uma política para o usuário federado, as credenciais de segurança temporárias não concederão permissões. Neste caso, você deve usar as políticas de recurso para conceder ao usuário federado o acesso aos seus recursos da AWS.

Por exemplo, suponha que o número da sua Conta da AWS seja 111122223333 e você tenha um bucket do Amazon S3 que deseja permitir que Susan acesse. As credenciais de segurança temporárias da Susan não incluem uma política para o bucket. Nesse caso, é necessário certificar-se de que o bucket tem uma política com um ARN que corresponde ao de Susan, como arn:aws:sts::111122223333:federated-user/Susan.

GetSessionToken: credenciais temporárias para usuários em ambientes não confiáveis

A operação da API GetSessionToken retorna um conjunto de credenciais de segurança temporárias para um usuário do IAM existente. Ela é útil para fornecer segurança aprimorada, como, por exemplo, permitir solicitações da AWS somente quando a MFA estiver habilitada para o usuário do IAM. Como as credenciais são temporárias, elas fornecem segurança aprimorada quando você tem um usuário do IAM que acessa seus recursos por meio de um ambiente menos seguro. Exemplos de ambientes menos seguros incluem um dispositivo móvel ou navegador da web. Para obter mais informações, consulte Solicitação de credenciais de segurança temporárias ou GetSessionToken na Referência de API do AWS Security Token Service.

Por padrão, as credenciais de segurança temporárias de um usuário do IAM são válidas por no máximo 12 horas. Mas você pode solicitar uma duração de, no mínimo, 15 minutos ou, no máximo, 36 horas usando o parâmetro DurationSeconds. Por motivos de segurança, um token para um Usuário raiz da conta da AWS é restrito a uma hora de duração.

GetSessionToken retorna as credenciais de segurança temporárias que consistem em um token de sessão, um ID de chave de acesso e uma chave de acesso secreta. O exemplo a seguir mostra uma solicitação e resposta de exemplo usando GetSessionToken. A resposta também inclui o tempo de expiração das credenciais de segurança temporárias.

exemplo Exemplo de solicitação
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=1800 &AUTHPARAMS

O parâmetro AUTHPARAMS no exemplo é um espaço reservado para a sua assinatura. Uma assinatura é a informação de autenticação que você deve incluir com as solicitações de API HTTP da AWS. Recomendamos usar os SDKs da AWS para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse Assinaturas e solicitações da AWS usando o Signature versão 4 no Referência geral da Amazon Web Services para saber como assinar uma solicitação.

exemplo Exemplo de resposta
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetSessionTokenResult> <Credentials> <SessionToken> AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2011-07-11T19:55:29.611Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> </GetSessionTokenResult> <ResponseMetadata> <RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId> </ResponseMetadata> </GetSessionTokenResponse>

Opcionalmente, a solicitação GetSessionToken pode incluir os valores SerialNumber e TokenCode para a verificação da autenticação multifator (MFA) da AWS. Se os valores fornecidos forem válidos, o AWS STS fornecerá credenciais de segurança temporárias que incluem o estado da autenticação MFA. As credenciais de segurança temporárias podem ser usadas para acessar as operações de API protegidas por MFA ou os sites da AWS pelo tempo em que a autenticação MFA for válida.

O exemplo a seguir mostra uma solicitação GetSessionToken que inclui um código de verificação de MFA e número de série do dispositivo.

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=7200 &SerialNumber=YourMFADeviceSerialNumber &TokenCode=123456 &AUTHPARAMS
nota

A chamada para o AWS STS pode ser para o endpoint global ou para qualquer um dos endpoints regionais para os quais você ativar sua Conta da AWS. Para obter mais informações, consulte a seção do AWS STS de Regiões e endpoints.

O parâmetro AUTHPARAMS no exemplo é um espaço reservado para a sua assinatura. Uma assinatura é a informação de autenticação que você deve incluir com as solicitações de API HTTP da AWS. Recomendamos usar os SDKs da AWS para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse Assinaturas e solicitações da AWS usando o Signature versão 4 no Referência geral da Amazon Web Services para saber como assinar uma solicitação.

Comparação das operações de API do AWS STS

A tabela a seguir compara os recursos das operações da API no AWS STS que retornam credenciais de segurança temporárias. Para saber mais sobre os diferentes métodos que você pode usar para solicitar credenciais de segurança temporárias ao assumir uma função, consulte Uso de funções do IAM. Para saber mais sobre as diferentes operações de API do AWS STS que permitem passar tags de sessão, consulte Passar tags de sessão no AWS STS.

Comparação de suas opções de API
API do AWS STS Quem pode chamar Vida útil da credencial (mín.|máx.|padrão) Suporte a MFA¹ Suporte à política de sessão² Restrições nas credenciais temporárias resultantes
AssumeRole Usuário do IAM ou função do IAM com credenciais de segurança temporárias existentes 15 min | Configuração de duração máxima da sessão³ | 1 h Sim Sim

Não pode chamar GetFederationToken ou GetSessionToken.

AssumeRoleWithSAML Todo chamador de usuário; deve passar uma resposta de autenticação de SAML que indica a autenticação de um provedor de identidade conhecido 15 min | Configuração de duração máxima da sessão³ | 1 h Não Sim

Não pode chamar GetFederationToken ou GetSessionToken.

AssumeRoleWithWebIdentity Qualquer usuário; o chamador deve passar um token JWT compatível com OIDC que indique a autenticação por um provedor de identidade conhecido 15 min | Configuração de duração máxima da sessão³ | 1 h Não Sim

Não pode chamar GetFederationToken ou GetSessionToken.

GetFederationToken Usuário do IAM ou Usuário raiz da conta da AWS

Usuário do IAM: 15 min | 36 h | 12 h

Usuário raiz: 15 min | 1 h | 1 h

Não Sim

Não é possível chamar operações do IAM usando a AWS CLI ou a API da AWS. Essa limitação não se aplica a sessões do console.

Não é possível chamar operações do AWS STS, exceto GetCallerIdentity.⁴

Logon único para console é permitido.⁵

GetSessionToken Usuário do IAM ou Usuário raiz da conta da AWS

Usuário do IAM: 15 min | 36 h | 12 h

Usuário raiz: 15 min | 1 h | 1 h

Sim Não

Não é possível chamar as operações da API do IAM, a menos que as informações da MFA sejam incluídas na solicitação.

Não pode chamar as operações de API do AWS STS exceto AssumeRole ou GetCallerIdentity.

Logon único para console não é permitido.⁶

¹ Compatibildade com MFA. Você pode incluir informações sobre um dispositivo de autenticação multifator (MFA) quando chamar as operações de API AssumeRole e GetSessionToken. Isso garante que as credenciais de segurança temporárias que resultam da chamada de API possam ser usadas somente pelos usuários que são autenticados com um dispositivo MFA. Para ter mais informações, consulte Configuração de acesso à API protegido por MFA.

² Suporte à política de sessão. As políticas de sessão são políticas que você transmite como um parâmetro quando você cria de forma programática uma sessão temporária para uma função ou um usuário federado. Esta política limita as permissões da política baseada em identidade da função ou do usuário que são atribuídas à sessão. As permissões da sessão resultam da interseção das políticas baseadas em identidade da entidade e das políticas de sessão. As políticas de sessão não podem ser usadas para conceder mais permissões do que as permitidas pela política baseada em identidade da função que está sendo assumida. Para obter mais informações sobre as permissões de sessão da função, consulte Políticas de sessão.

³ Configuração de duração máxima da sessão. Use o parâmetro DurationSeconds para especificar a duração da sessão da função de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para a função. Para saber como visualizar o valor máximo para sua função, consulte Visualizar a configuração de duração máxima da sessão para uma função.

GetCallerIdentity. Nenhuma permissão é necessária para executar essa operação. Se um administrador adicionar uma política ao seu usuário ou função do IAM que negue explicitamente o acesso à ação sts:GetCallerIdentity, você ainda poderá executar esta operação. As permissões não são necessárias porque as mesmas informações são retornadas quando um usuário ou uma função do IAM tem acesso negado. Para visualizar uma resposta de exemplo, consulte Não estou autorizado a executar: iam:DeleteVirtualMFADevice.

Logon único (SSO) para o console. Para dar suporte a SSO, a AWS permite chamar um endpoint da federação (https://signin.aws.amazon.com/federation) e passar credenciais de segurança temporárias. O endpoint retorna um token que pode ser usado para construir um URL que assina um usuário diretamente no console sem a necessidade de uma senha. Para obter mais informações, consulte Habilitar o acesso de usuários federados SAML 2.0 ao AWS Management Console e Como habilitar o acesso entre contas ao Console de Gerenciamento da AWS no Blog de segurança da AWS.

⁶ Depois de recuperar as credenciais temporárias, você não poderá acessar o AWS Management Console transmitindo as credenciais para o endpoint de logon único de federação. Para ter mais informações, consulte Habilitar o acesso do agente de identidades personalizado ao console da AWS.