Ao configurar o Alibaba Cloud CLI para assumir uma função RAM, você utiliza um AccessKey com baixos privilégios para obter automaticamente credenciais temporárias STS e acessar recursos na nuvem, sem expor diretamente um AccessKey com altos privilégios. Este tópico descreve dois métodos de configuração: RamRoleArn (assunção direta de uma função RAM) e ChainableRamRoleArn (assunção de uma função RAM encadeada a partir de credenciais existentes no CLI), além de seus cenários aplicáveis.
Requisito de versão
Versão do Alibaba Cloud CLI ≥ 3.3.0. Execute aliyun version para verificar a versão atual. Se a versão for anterior, consulte Instalar, atualizar e desinstalar o Alibaba Cloud CLI para fazer upgrade.
RamRoleArn
O modo RamRoleArn utiliza um AccessKey com baixos privilégios para assumir uma função RAM com privilégios mais elevados e obter credenciais temporárias STS. O AccessKey precisa apenas da política AliyunSTSAssumeRoleAccess. As permissões efetivas são determinadas pelas políticas anexadas à função de destino. Essa abordagem é ideal para ambientes de desenvolvimento local e cenários que exigem separação de privilégios.
Pré-requisitos
Um AccessKey foi criado para o usuário RAM e a política
AliyunSTSAssumeRoleAccessfoi concedida.Uma função RAM de destino foi criada e a política de confiança dessa função permite que o usuário RAM a assuma.
O ARN da função RAM de destino foi obtido. Visualize-o na página de detalhes da função no console RAM. O formato é
acs:ram::<ACCOUNT_ID>:role/<RoleName>.
Para obter detalhes sobre o preparo dos pré-requisitos, consulte as etapas em Usar indiretamente um AccessKey em Usar um par de AccessKey para chamar APIs.
Configurar credenciais
Configuração interativa
-
Execute o comando a seguir para iniciar a configuração. Substitua
<ProfileName>por um nome de perfil personalizado (por exemplo,RamRoleProfile):aliyun configure --mode RamRoleArn --profile <ProfileName> -
Insira as informações de configuração conforme solicitado:
Configuring profile 'RamRoleArnProfile' in 'RamRoleArn' authenticate mode... Access Key Id []: <yourAccessKeyID> Access Key Secret []: <yourAccessKeySecret> Sts Region []: cn-hangzhou Ram Role Arn []: acs:ram::012345678910****:role/Alice Role Session Name []: alice External ID []: abcd1234 Expired Seconds [900]: 900 Default Region Id []: cn-hangzhou Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[RamRoleArnProfile] ...Done. Quando o terminal exibir
Configure Doneseguido de uma mensagem de boas-vindas, a configuração estará concluída.
Após a conclusão da configuração, o perfil torna-se automaticamente o perfil ativo. Para alternar para outro perfil, execute o comando aliyun configure switch --profile <ProfileName>.
Configuração não interativa
Bash
aliyun configure set \
--profile RamRoleArnProfile \
--mode RamRoleArn \
--access-key-id <yourAccessKeyID> \
--access-key-secret <yourAccessKeySecret> \
--sts-region "cn-hangzhou" \
--ram-role-arn "acs:ram::012345678910****:role/Alice" \
--role-session-name "alice" \
--external-id "abcd1234" \
--expired-seconds 900 \
--region "cn-shanghai"
PowerShell
aliyun configure set `
--profile RamRoleArnProfile `
--mode RamRoleArn `
--access-key-id <yourAccessKeyID> `
--access-key-secret <yourAccessKeySecret> `
--sts-region "cn-hangzhou" `
--ram-role-arn "acs:ram::012345678910****:role/Alice" `
--role-session-name "alice" `
--external-id "abcd1234" `
--expired-seconds 900 `
--region "cn-shanghai"
Verificar credenciais
Após concluir a configuração, execute o comando a seguir para verificar se as credenciais estão ativas:
aliyun sts get-caller-identity
Saída:
{
"AccountId": "191317683912****",
"Arn": "acs:ram::191317683912****:assumed-role/<role-name>/<role-session-name>",
"IdentityType": "AssumedRoleUser",
"PrincipalId": "30004467717606****:<role-session-name>",
"RequestId": "0FFADC33-EA49-5E2A-977F-0BA820D6****",
"RoleId": "30004467717606****"
}
Atualização de credenciais
O CLI gerencia automaticamente a atualização das credenciais, sem necessidade de intervenção manual. Antes que as credenciais temporárias STS expirem, o CLI chama novamente o STS AssumeRole para obter novas credenciais. Isso não afeta os comandos do CLI em execução.
ChainableRamRoleArn
O modo ChainableRamRoleArn assume outra função RAM encadeando a partir de um perfil de credenciais existente no CLI (o perfil de origem). O CLI primeiro obtém credenciais intermediárias do perfil de origem e, em seguida, usa essas credenciais para chamar o STS AssumeRole e obter as credenciais temporárias STS finais. Esse método é adequado para cenários de encadeamento de funções com múltiplos saltos entre contas ou para situações em que você precisa assumir funções adicionais com base em um EcsRamRole.
O tipo de credencial ChainableRamRoleArn funciona especificando um perfil de credenciais de origem, obtendo credenciais intermediárias (um AccessKey ou credenciais temporárias STS) desse perfil e, então, utilizando-as para assumir a função de destino e obter as credenciais temporárias STS finais.
Pré-requisitos
Já existe um perfil válido no CLI (perfil de origem), como um perfil EcsRamRole, AK ou RamRoleArn configurado.
A entidade principal (usuário ou função RAM) associada ao perfil de origem tem permissão para assumir a função RAM de destino (a política de confiança da função de destino permite que a entidade principal a assuma).
O ARN da função RAM de destino foi obtido, no formato
acs:ram::<ACCOUNT_ID>:role/<RoleName>.
Configurar credenciais
Configuração interativa
-
Execute o comando a seguir para iniciar a configuração. Substitua
<ProfileName>por um nome de perfil personalizado (por exemplo,ChainProfile):aliyun configure --mode ChainableRamRoleArn --profile <ProfileName> -
Insira as informações de configuração conforme solicitado:
Configuring profile 'ChainableProfile' in 'ChainableRamRoleArn' authenticate mode... Source Profile []: RamRoleArnProfile Sts Region []: cn-hangzhou Ram Role Arn []: acs:ram::012345678910****:role/Alice Role Session Name []: alice External ID []: abcd1234 Expired Seconds [900]: 900 Default Region Id []: cn-hangzhou Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[ChainableProfile] ...Done.NotaNo exemplo anterior,
RamRoleArnProfileé o nome de um perfil de origem existente, e o ARN da função RAM é um valor de exemplo. Substitua-os pelos valores reais. Pressione Enter para ignorar os promptsSts RegioneExternal Id. Quando o terminal exibir
Configure Doneseguido de uma mensagem de boas-vindas, a configuração estará concluída.
Após a conclusão da configuração, o perfil torna-se automaticamente o perfil ativo. Para alternar para outro perfil, execute o comando aliyun configure switch --profile <ProfileName>.
Configuração não interativa
Exemplo de comando:
Bash
aliyun configure set \
--profile ChainableProfile \
--mode ChainableRamRoleArn \
--source-profile RamRoleArnProfile \
--sts-region "cn-hangzhou" \
--ram-role-arn "acs:ram::012345678910****:role/Alice" \
--role-session-name "alice" \
--external-id "abcd1234" \
--expired-seconds 900 \
--region "cn-shanghai"
PowerShell
aliyun configure set `
--profile ChainProfile `
--mode ChainableRamRoleArn `
--region cn-hangzhou `
--source-profile EcsRoleProfile `
--ram-role-arn acs:ram::<UID>:role/<RoleName> `
--role-session-name chain-session `
--expired-seconds 900
O perfil especificado por --source-profile já deve existir no arquivo de configuração do CLI. Caso contrário, o erro can not load the source profile: <name> será retornado. Execute aliyun configure list para visualizar todos os perfis existentes.
Verificar credenciais
Após concluir a configuração, execute o comando aliyun sts get-caller-identity para verificar se as credenciais estão ativas.
Atualização de credenciais
O CLI gerencia automaticamente a atualização das credenciais, sem necessidade de intervenção manual. Antes que as credenciais temporárias STS expirem, o CLI primeiro atualiza as credenciais do perfil de origem (seguindo a lógica de atualização desse perfil; por exemplo, o EcsRamRole atualiza via IMDS) e, em seguida, chama novamente o STS AssumeRole para obter novas credenciais.
Excluir credenciais
Exclua as credenciais da função RAM da configuração local do CLI:
aliyun configure delete --profile <ProfileName>
Se o perfil excluído for o perfil ativo atual, o CLI alternará automaticamente para o primeiro perfil da lista de perfis.