Configurar a AWS CLI para usar o Logon único da AWS - AWS Command Line Interface

O Python 2.7, 3.4 e 3.5 está sendo defasado para o AWS CLI versão 1. Para obter mais informações, consulte a AWS CLI versão 1 seção de Sobre as AWS CLI versões.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar a AWS CLI para usar o Logon único da AWS

Esse recurso está disponível somente na AWS CLI versão 2.

O recurso a seguir só estará disponível se você usar a AWS CLI versão 2. Ele não estará disponível se você executar a AWS CLI versão 1. Para obter informações sobre como instalar a versão 2, consulte Instalar, atualizar e desinstalar aAWS CLI versão 2.

Se sua organização usa o Logon único da AWS (AWS SSO), os usuários poderão entrar no Active Directory ou em um diretório integrado do AWS SSO ou outro iDP conectado ao AWS SSO e ser mapeados para uma função do AWS Identity and Access Management (IAM) que permita executar comandos da AWS CLI. Independentemente de qual iDP você usa, o AWS SSO abstrai essas distinções, e todas elas funcionam com a AWS CLI conforme descrito abaixo. Por exemplo, você pode conectar o Microsoft Azure AD conforme descrito no artigo do blog The Next Evolution in AWS Single Sign-On

Para obter mais informações sobre o AWS SSO, consulte o Guia do usuário do Logon único da AWS.

Este tópico descreve como configurar a AWS CLI para autenticar o usuário com o AWS SSO a fim de obter credenciais de curto prazo para executar comandos da AWS CLI. Ele inclui as seguintes seções.

Configurar um perfil nomeado para usar o AWS SSO

Você pode configurar um ou mais de seus AWS CLIperfis nomeados da para usar uma função de . Você pode criar e configurar vários perfis e configurar cada um para usar um portal de usuário diferente do AWS SSO ou uma função definida pelo SSO.AWS SSO

Você pode configurar o perfil das seguintes maneiras:

  • Automaticamente, usando o comando aws configure sso

  • Manualmente, editando o arquivo .aws/config que armazena os perfis nomeados.

Configuração automática

É possível adicionar um perfil compatível com o AWS SSO à AWS CLI executando o comando a seguir, fornecendo o URL de início do AWS SSO e a região da AWS que hospeda o diretório do AWS SSO.

$ aws configure sso SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1

A AWS CLI tenta abrir seu navegador padrão e iniciar o processo de login para sua conta do AWS SSO.

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

Se a AWS CLI não puder abrir o navegador, a seguinte mensagem será exibida com instruções sobre como iniciar manualmente o processo de login.

Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

O AWS SSO usa o código para associar a sessão do AWS SSO à sessão atual da AWS CLI. A página do navegador do AWS SSO solicita que você entre com suas credenciais de conta do AWS SSO. Isso permite que a AWS CLI (pelas permissões associadas à sua conta do AWS SSO) recupere e exiba as contas e as funções da AWS que você está autorizado a usar com o AWS SSO.

Depois, a AWS CLI exibe as contas da AWS disponíveis para uso. Se você estiver autorizado a usar apenas uma conta, a AWS CLI selecionará essa conta para você automaticamente e ignorará o prompt. As contas da AWS disponíveis para uso são determinadas pela configuração do usuário no AWS SSO.

There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)

Use as teclas de seta para selecionar a conta que deseja usar com esse perfil. O caractere ">" à esquerda aponta para a escolha atual. Pressione ENTER para fazer sua seleção.

Depois, a AWS CLI confirma sua escolha de conta e exibe as funções do IAM que estão disponíveis para você na conta selecionada. Se a conta selecionada listar apenas uma função, a AWS CLI selecionará essa função para você automaticamente e ignorará o prompt. As funções que estão disponíveis para uso são determinadas pela configuração do usuário no AWS SSO.

Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess

Como antes, use as teclas de seta para selecionar a função do IAM que deseja usar com esse perfil. O caractere ">" à esquerda aponta para a escolha atual. Pressione <ENTER> para fazer sua seleção.

A AWS CLI confirma sua seleção de função.

Using the role name "ReadOnly"

Agora você pode concluir a configuração do seu perfil especificando o formato de saída padrão, a região padrão da AWS para enviar comandos e fornecendo um nome para o perfil para fazer referência a ele entre todos os definidos no computador local. No exemplo a seguir, o usuário insere uma região padrão, um formato de saída padrão e o nome do perfil. Você pode pressionar <ENTER> para selecionar os valores padrão mostrados entre colchetes. O nome do perfil sugerido é o número de ID da conta seguido de um sublinhado e pelo nome da função.

CLI default client Region [None]: us-west-2<ENTER> CLI default output format [None]: json<ENTER> CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
nota

Se você especificar default como o nome do perfil, esse perfil será usado sempre que você executar um comando da AWS CLI e não especificar um nome de perfil.

Uma mensagem final descreve a configuração do perfil concluída.

Para usar esse perfil, especifique o nome do perfil usando --profile, conforme mostrado:

aws s3 ls --profile my-dev-profile

As entradas de exemplo anteriores resultariam em um perfil nomeado em ~/.aws/config que se parece com o exemplo a seguir.

[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

Neste ponto, você tem um perfil que pode usar para solicitar credenciais temporárias. Você deve usar o comando aws sso login para realmente solicitar e recuperar as credenciais temporárias necessárias para executar comandos. Para obter instruções, consulte Usar um perfil nomeado habilitado para AWS SSO.

nota

Você também pode executar um comando da AWS CLI usando o perfil especificado. Se você não estiver conectado ao portal do AWS SSO no momento, ele iniciará o processo de login para você automaticamente, como se você tivesse executado manualmente o comando aws sso login.

Configuração manual

Para adicionar suporte da AWS SSO manualmente a um perfil nomeado, você deve adicionar as seguintes chaves e valores à definição de perfil no arquivo ~/.aws/config (Linux ou macOS) ou %USERPROFILE%/.aws/config (Windows).

sso_start_url

O URL que aponta para o portal do usuário do AWS SSO da organização.

sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region

A região da AWS que contém o host do portal do AWS SSO. Isso é separado e pode ser uma região diferente do parâmetro region padrão da CLI.

sso_region = us-west-2
sso_account_id

O ID da conta da AWS que contém a função do IAM que você deseja usar com esse perfil.

sso_account_id = 123456789011
sso_role_name

O nome da função do IAM que define as permissões do usuário ao usar esse perfil.

sso_role_name = ReadAccess

A presença dessas chaves identifica esse perfil como um que usa o AWS SSO para autenticar o usuário.

Você também pode incluir quaisquer outras chaves e valores válidos no arquivo .aws/config, como region, output ou s3. No entanto, você não pode incluir nenhum valor relacionado à credencial, como role_arn ou aws_secret_access_key. Se você fizer isso, a AWS CLI produzirá um erro.

Portanto, um perfil típico do AWS SSO em .aws/config pode ser semelhante ao exemplo a seguir.

[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

Neste ponto, você tem um perfil que pode usar para solicitar credenciais temporárias. No entanto, você ainda não pode executar um comando de serviço da AWS CLI. Primeiro é necessário usar o comando aws sso login para realmente solicitar e recuperar as credenciais temporárias necessárias para executar comandos. Para obter instruções, consulte a próxima seção, Usar um perfil nomeado habilitado para AWS SSO.

Usar um perfil nomeado habilitado para AWS SSO

Esta seção descreve como usar o perfil do AWS SSO criado na seção anterior.

Iniciar sessão e obter credenciais temporárias

Depois de configurar um perfil nomeado automaticamente ou manualmente, você pode invocá-lo para solicitar credenciais temporárias da AWS. Antes de executar um comando de serviço da AWS CLI, primeiro é necessário recuperar e armazenar em cache um conjunto de credenciais temporárias. Para obter essas credenciais temporárias, execute o comando a seguir.

$ aws sso login --profile my-dev-profile

A AWS CLI abre seu navegador padrão e verifica seu login no AWS SSO.

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request. Successully logged into Start URL: https://my-sso-portal.awsapps.com/start

Se você não estiver conectado à sua conta do AWS SSO no momento, deverá fornecer o nome de usuário e a senha do AWS SSO.

Se a AWS CLI não conseguir abrir o navegador, você será solicitado a abri-lo e inserir o código especificado.

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

A AWS CLI abre o navegador padrão (ou você abre manualmente o navegador de sua escolha) para a página especificada e você insere o código fornecido. Depois, a página da web solicita suas credenciais do AWS SSO.

Suas credenciais de sessão do AWS SSO são armazenadas em cache e incluem um time stamp de expiração. Quando as credenciais expirarem, a AWS CLI solicitará que você entre novamente no AWS SSO.

Se suas credenciais do AWS SSO forem válidas, a AWS CLI as usará para recuperar com segurança as credenciais temporárias da AWS para a função do IAM especificada no perfil.

Welcome, you have successfully signed-in to the AWS-CLI.

Executar um comando com seu perfil habilitado para o AWS SSO

Você pode usar essas credenciais temporárias para chamar um comando da AWS CLI com o perfil nomeado associado. O exemplo a seguir mostra que o comando foi executado sob uma função assumida que faz parte da conta especificada.

$ aws sts get-caller-identity --profile my-dev-profile { "UserId": "AROA12345678901234567:test-user@example.com", "Account": "123456789011", "Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/test-user@example.com" }

Contanto que você entre no AWS SSO e essas credenciais armazenadas em cache não estejam expiradas, a AWS CLI renovará automaticamente as credenciais temporárias da AWS expiradas quando necessário. No entanto, se suas credenciais do AWS SSO expirarem, você deverá renová-las explicitamente fazendo login na sua conta do AWS SSO novamente.

$ aws s3 ls --profile my-sso-profile Your short-term credentials have expired. Please sign-in to renew your credentials SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

Você pode criar vários perfis nomeados habilitados para o AWS SSO e cada um apontando para uma conta ou função diferente da AWS. Você também pode usar o comando aws sso login em mais de um perfil por vez. Se algum deles compartilhar a mesma conta de usuário do AWS SSO, você deverá fazer login nessa conta de usuário do AWS SSO apenas uma vez e, depois, todos eles compartilharão um único conjunto de credenciais do AWS SSO armazenadas em cache.

# The following command retrieves temporary credentials for the AWS account and role # specified in one named profile. If you are not yet signed in to AWS SSO or your # cached credentials have expired, it opens your browser and prompts you for your # AWS SSO user name and password. It then retrieves AWS temporary credentials for # the IAM role associated with this profile. $ aws sso login --profile my-first-sso-profile # The next command retrieves a different set of temporary credentials for the AWS # account and role specified in the second named profile. It does not overwrite or # in any way compromise the first profile's credentials. If this profile specifies the # same AWS SSO portal, then it uses the SSO credentials that you retrieved in the # previous command. The AWS CLI then retrieves AWS temporary credentials for the # IAM role associated with the second profile. You don't have to sign in to # AWS SSO again. $ aws sso login --profile my-second-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the first profile. $ aws ec2 describe-instances --profile my-first-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the second profile. $ aws ec2 describe-instances --profile my-second-sso-profile

Sair de suas sessões do AWS SSO

Quando terminar de usar seus perfis habilitados para o AWS SSO, você poderá optar por não fazer nada e deixar as credenciais temporárias da AWS e suas credenciais do AWS SSO expirarem. No entanto, você também pode optar por executar o comando a seguir para excluir imediatamente todas as credenciais armazenadas em cache na pasta de cache de credenciais do SSO e todas as credenciais temporárias da AWS baseadas nas credenciais do AWS SSO. Isso torna essas credenciais indisponíveis para serem usadas em comandos futuros.

$ aws sso logout Successfully signed out of all SSO profiles.

Se você quiser executar comandos mais tarde com um de seus perfis compatíveis com o AWS SSO, execute novamente o comando aws sso login (consulte a seção anterior) e especifique o perfil que deve ser usado.