Uso de credenciais temporárias com recursos da AWS - AWS Identity and Access Management

Uso de credenciais temporárias com recursos da AWS

Você pode usar credenciais de segurança temporárias para fazer solicitações programáticas de recursos da AWS usando a AWS CLI ou API da AWS (usando os SDKs da AWS). As credenciais temporárias fornecem as mesmas permissões que as credenciais de segurança de longo prazo, como as credenciais de usuário do IAM. No entanto, há algumas diferenças:

  • Ao fazer uma chamada usando credenciais de segurança temporárias, ela deve incluir um token de sessão, que é retornado junto com essas credenciais temporárias. O AWS usa o token de sessão para validar as credenciais de segurança temporárias.

  • As credenciais temporárias expiram após um intervalo especificado. Após a expiração das credenciais temporárias, ocorrerá falha em todas as chamadas que você fizer com essas credenciais, portanto, você deve gerar um novo conjunto de credenciais temporárias. As credenciais temporárias não podem ser estendidas nem renovadas além do intervalo original especificado.

  • Ao usar credenciais temporárias para fazer uma solicitação, seu principal pode incluir um conjunto de tags. Essas tags vêm de tags de sessão e tags anexadas à função que você assume. Para obter mais informações sobre tags de sessão, consulte Passar tags de sessão no AWS STS.

Se você estiver usando os SDKs da AWS, a AWS Command Line Interface (AWS CLI) ou o Tools for Windows PowerShell, a maneira de obter e usar credenciais de segurança temporárias mudará de acordo com o contexto. Se você estiver executando código, comandos da AWS CLI ou do Tools for Windows PowerShell em uma instância do EC2, poderá aproveitar as funções do Amazon EC2. Caso contrário, é possível chamar uma API do AWS STS para obter as credenciais temporárias e, em seguida, usá-las explicitamente para fazer chamadas de serviços da AWS.

nota

É possível usar o AWS Security Token Service (AWS STS) 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. AWS STS é um serviço global que tem um endpoint padrão em https://sts.amazonaws.com. Esse endpoint fica na região Leste dos EUA (N. da Virgínia)), embora as credenciais obtidas desse e de outros endpoints sejam válidas globalmente. Essas credenciais funcionam com serviços e recursos em qualquer região. Você também pode optar por fazer chamadas de API do AWS STS para endpoints em qualquer uma das regiões com suporte. Isso pode reduzir a latência fazendo as solicitações de servidores em uma região que está geograficamente mais perto de você. Não importa de qual região suas credenciais são, elas funcionam globalmente. Para ter mais informações, consulte Gerenciar o AWS STS em uma Região da AWS.

Uso de credenciais temporárias em instâncias do Amazon EC2

Se você deseja executar comandos da AWS CLI ou código dentro de uma instância do EC2, a forma recomendada de obter credenciais é usar funções para o Amazon EC2. Você cria uma função do IAM que especifica as permissões a serem concedidas a aplicações em execução nas instâncias do EC2. Ao executar a instância, você associa a função à instância.

Aplicações, a AWS CLI e comandos do Tools for Windows PowerShell executados na instância podem, então, obter credenciais de segurança temporárias automáticas dos metadados da instância. Você não precisa obter explicitamente as credenciais de segurança temporárias. Os AWS SDKs, a AWS CLI e as Tools for Windows PowerShell obtêm automaticamente as credenciais do serviço de metadados da instância (IMDS) do EC2 e as utilizam. As credenciais temporárias têm as permissões que você define para a função que está associada à instância.

Para obter mais informações e exemplos, veja a seguir:

Uso de credenciais de segurança temporárias com os AWS SDKs

Para usar credenciais de segurança temporárias em código, você chama programaticamente uma API do AWS STS como AssumeRole e extrai as credenciais resultantes e o token de sessão. Depois, use esses valores como credenciais em chamadas subsequentes para a AWS. O exemplo a seguir mostra o pseudocódigo de como usar credenciais de segurança temporárias se você estiver usando um SDK da AWS:

assumeRoleResult = AssumeRole(role-arn); tempCredentials = new SessionAWSCredentials( assumeRoleResult.AccessKeyId, assumeRoleResult.SecretAccessKey, assumeRoleResult.SessionToken); s3Request = CreateAmazonS3Client(tempCredentials);

Para obter um exemplo escrito em Python (usando o AWS SDK for Python (Boto)), consulte Alternância para uma função do IAM (API da AWS). Este exemplo mostra como chamar AssumeRole para obter credenciais de segurança temporárias e usar essas credenciais para fazer uma chamada para o Amazon S3.

Para obter detalhes sobre como chamar AssumeRole, GetFederationToken e outras operações de API, consulte a Referência da API do AWS Security Token Service. Para obter informações sobre como obter as credenciais de segurança temporárias e o token de sessão provenientes do resultado, consulte a documentação do SDK com o qual você está trabalhando. Você pode encontrar a documentação de todos os AWS SDKs na principal página da documentação da AWS, na seção SDKs e toolkits.

É necessário obter um novo conjunto de credenciais antes que o antigo expire. Em alguns SDKs, você pode usar um provedor que gerencie o processo de atualização de credenciais para você; verifique a documentação do SDK que você está usando.

Uso de credenciais de segurança temporárias com a AWS CLI

Você pode usar credenciais de segurança temporárias com a AWS CLI. Isso pode ser útil para testar políticas.

Usando a AWS CLI, você pode chamar uma API do AWS STS como AssumeRole ou GetFederationToken e, depois capturar os resultados gerados. O exemplo a seguir mostra uma chamada para AssumeRole que envia a saída para um arquivo. No exemplo, o parâmetro profile é considerado um perfil no arquivo de configuração da AWS CLI. Ele também é considerado como referência às credenciais de um usuário do IAM que tem permissões para assumir a função.

aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt

Quando o comando for concluído, você poderá extrair o ID de chave de acesso, a chave de acesso secreta e o token de sessão de onde quer que você o tenha roteado. Você pode fazer isso manualmente ou usando um script. Em seguida, você pode atribuir esses valores a variáveis do ambiente.

Quando você executa comandos da AWS CLI, a AWS CLI procura as credenciais em uma ordem específica – primeiro em variáveis do ambiente e, em seguida, no arquivo de configuração. Portanto, depois de colocar as credenciais temporárias em variáveis do ambiente, a AWS CLI usa essas credenciais por padrão. (Se você especificar um parâmetro profile no comando, a AWS CLI ignorará as variáveis de ambiente. Em vez disso, a AWS CLI procurará no arquivo de configuração, que permite substituir as credenciais nas variáveis de ambiente, se necessário.)

O exemplo a seguir mostra como definir as variáveis do ambiente para credenciais de segurança temporárias e, em seguida, chamar um comando da AWS CLI. Como nenhum parâmetro profile está incluído no comando da AWS CLI, a AWS CLI procura credenciais primeiro em variáveis do ambiente e depois usa as credenciais temporárias.

Linux

$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token> $ aws ec2 describe-instances --region us-west-1

Windows

C:\> SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> C:\> aws ec2 describe-instances --region us-west-1

Uso de credenciais de segurança temporárias com operações de API

Se estiver fazendo solicitações de API HTTPS diretas à AWS, você poderá assinar essas solicitações com as credenciais de segurança temporárias obtidas do AWS Security Token Service (AWS STS). Para isso, você pode usar o ID de chave de acesso e a chave de acesso secreta recebidos do AWS STS. Use o ID da chave de acesso e a chave de acesso secreta do mesmo modo que você usaria credenciais de longo prazo para assinar uma solicitação. Você também adiciona à sua solicitação de API o token de sessão que você recebe do AWS STS. Você adiciona o token de sessão a um cabeçalho HTTP ou a um parâmetro de string de consulta denominado X-Amz-Security-Token. Você adiciona o token de sessão ao cabeçalho HTTP ou ao parâmetro de string de consulta, mas não a ambos. Para obter mais informações sobre como assinar solicitações da API HTTPS, consulte Como assinar solicitações de API da AWS na Referência geral da AWS.

Mais informações

Para obter mais informações sobre como usar o AWS STS com outros produtos da AWS, consulte os seguintes links: