Configurar a AWS CLI para usar o AWS IAM Identity Center (successor to AWS Single Sign-On) - AWS Command Line Interface

Configurar a AWS CLI para usar o AWS IAM Identity Center (successor to AWS Single Sign-On)

Se sua organização usar o AWS IAM Identity Center (successor to AWS Single Sign-On) (IAM Identity Center), os usuários poderão entrar no Active Directory, um diretório integrado do IAM Identity Center, ou em outro IdP conectado ao IAM Identity Center e ser mapeados para um perfil do AWS Identity and Access Management (IAM) que possibilita que você execute comandos da AWS CLI. Independentemente do IdP que você usa, o IAM Identity Center 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 de blog The Next Evolution in AWS IAM Identity Center (successor to AWS Single Sign-On) (O que há de mais novo em logon único).

Para obter mais informações sobre o IAM Identity Center, consulte o Guia do usuário do AWS IAM Identity Center (successor to AWS Single Sign-On).

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

Configurar um perfil nomeado para usar o IAM Identity Center

É possível configurar um ou mais dos perfis nomeados da AWS CLI para usar um perfil do IAM Identity Center.

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 IAM Identity Center à AWS CLI executando o comando a seguir e fornecendo o URL de início do IAM Identity Center e a região da AWS que hospeda o diretório do Identity Center.

$ 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 IAM Identity Center.

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 IAM Identity Center usa o código para associar a sessão do IAM Identity Center à sessão atual da AWS CLI. A página do navegador do IAM Identity Center solicita que você insira suas credenciais do IAM Identity Center. Isso permite que a AWS CLI (por meio das permissões associadas à sua conta do Identity Center) recupere e exiba as contas e os perfis da AWS que você está autorizado a usar com o IAM Identity Center.

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 IAM Identity Center.

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. Os perfis que estão disponíveis para uso são determinados pela configuração do usuário no IAM Identity Center.

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 da AWS padrão para enviar comandos e fornecendo um nome para o perfil para poder 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 este perfil, especifique o nome do perfil usando --profile, como 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 o IAM Identity Center.

nota

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

Configuração manual

Para adicionar suporte do IAM Identity Center manualmente a um perfil nomeado, você deve adicionar as chaves e os valores a seguir à definição de perfil no arquivo ~/.aws/config (Linux ou macOS) ou %USERPROFILE%/.aws/config (Windows).

sso_start_url

Especifica o URL que aponta para o portal de acesso da AWS da organização. A AWS CLI usa esse URL a fim de estabelecer uma sessão no serviço do IAM Identity Center para autenticar os respectivos usuários. Para encontrar o URL do portal de acesso da AWS, use um dos seguintes procedimentos:

  • Abra seu e-mail de convite, onde o URL do portal de acesso da AWS está listado.

  • Abra o console do AWS IAM Identity Center (successor to AWS Single Sign-On) em https://console.aws.amazon.com/singlesignon/. O URL do portal de acesso da AWS está listado em suas configurações.

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

A região da AWS que contém o host do portal de acesso da AWS. Isso é separado e pode ser uma região diferente do parâmetro padrão region 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 IAM Identity Center 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 IAM Identity Center 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 o IAM Identity Center.

Usar um perfil nomeado habilitado para o IAM Identity Center

Esta seção descreve como usar o perfil do IAM Identity Center 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 IAM Identity Center.

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

Se você não estiver conectado ao IAM Identity Center, forneça suas credenciais do IAM Identity Center.

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. Em seguida, a página da Web solicita suas credenciais do IAM Identity Center.

Suas credenciais de sessão do IAM Identity Center são armazenadas em cache e incluem um carimbo de data e hora de expiração. Quando as credenciais expirarem, a AWS CLI solicitará que você entre novamente no IAM Identity Center.

Se suas credenciais do IAM Identity Center forem válidas, a AWS CLI as usará a fim de recuperar com segurança as credenciais temporárias da AWS para o perfil do IAM especificado no perfil.

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

Executar um comando com seu perfil habilitado para o IAM Identity Center

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 IAM Identity Center e essas credenciais armazenadas em cache não estejam expiradas, a AWS CLI renovará automaticamente as credenciais temporárias expiradas da AWS quando necessário. No entanto, se suas credenciais do IAM Identity Center expirarem, você deverá renová-las explicitamente fazendo login em sua conta do IAM Identity Center 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 IAM Identity Center e cada um apontando para uma conta ou perfil 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 IAM Identity Center, você deverá fazer login nessa conta de usuário do IAM Identity Center apenas uma vez e, depois, todos eles compartilharão um único conjunto de credenciais do IAM Identity Center 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 IAM Identity Center or your # cached credentials have expired, it opens your browser and prompts you for your # IAM Identity Center 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 access 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 # IAM Identity Center 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 sessões do IAM Identity Center

Quando terminar de usar seus perfis habilitados para o IAM Identity Center, você poderá optar por não fazer nada e deixar as credenciais temporárias da AWS e suas credenciais do IAM Identity Center 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 IAM Identity Center. 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 IAM Identity Center, execute novamente o comando aws sso login (consulte a seção anterior) e especifique o perfil que deve ser usado.