Após instalar o Workbench CLI em sua máquina local Linux, macOS ou Windows, anexe uma política de privilégio mínimo a um usuário RAM e gere um AccessKey para acesso imediato às credenciais. Em ambientes de produção, alterne para RamRoleArn, CredentialsCmd ou CredentialsURI para habilitar a atualização automática de credenciais e garantir o princípio do menor privilégio.
Limites
Sistema operacional da instância de destino: O Workbench CLI conecta-se apenas a instâncias Linux via Secure Shell Protocol (SSH) e não oferece suporte a instâncias Windows.
Sistema operacional da máquina local: O próprio Workbench CLI executa em Linux, macOS (amd64 / arm64) e Windows (amd64).
Conectividade de rede: A máquina local precisa acessar
*.aliyuncs.come o endpoint WebSocket de backend do Workbench.
Connect to an instance by using Workbench
O Workbench CLI ainda não suporta instâncias Windows. Para se conectar a uma instância Windows, consulte .
Etapa 1: Instalar o Workbench CLI
Escolha o comando de instalação conforme o sistema operacional da máquina local. O script detecta automaticamente a arquitetura (amd64 / arm64), baixa o binário da CDN do OSS, verifica o checksum SHA256 e o instala no caminho padrão do sistema.
Linux ou macOS
Execute o comando abaixo para instalar a versão mais recente do Workbench CLI.
curl -fsSL https://workbench-cli.oss-cn-hangzhou.aliyuncs.com/install.sh | bash
Após a instalação, o binário fica localizado em /usr/local/bin/workbench. No macOS, o binário é reassinado automaticamente e seu atributo de quarentena é removido. Caso o diretório de destino exija privilégios de administrador, o script utiliza sudo automaticamente.
Windows
No PowerShell, execute o comando a seguir para instalar a versão mais recente do Workbench CLI.
irm https://workbench-cli.oss-cn-hangzhou.aliyuncs.com/install.ps1 | iex
Depois de instalado, o binário estará em C:\Program Files\workbench\, e o script configurará automaticamente a variável de ambiente PATH. Se a instalação ocorrer em uma sessão de área de trabalho ou Remote Desktop Protocol (RDP), o novo PATH só entrará em vigor após você sair e entrar novamente na conta.
Verificar a instalação
Para confirmar que a instalação foi bem-sucedida, execute este comando:
workbench version
Em condições normais, a saída exibe o número da versão atual, o ID do commit e a data de compilação. Se aparecer a mensagem command not found, geralmente significa que o PATH ainda não entrou em vigor. Tente uma das ações abaixo:
Linux / macOS: Reabra a janela do terminal ou execute
source ~/.bashrc(ou~/.zshrc) e tente novamente.Windows: Feche e reabra a janela do PowerShell para que o novo PATH seja aplicado.
Etapa 2: Preparar um AccessKey com permissões de privilégio mínimo para o Workbench CLI
O Workbench CLI chama as APIs da Alibaba Cloud usando um AccessKey. O objetivo desta etapa é obter um AccessKey com apenas as permissões mínimas necessárias, permitindo que você o configure na CLI da sua máquina local na próxima etapa. O procedimento recomendado é: Criar um usuário RAM → Conceder as permissões mínimas → Criar um AccessKey para o usuário RAM.
Não utilize o AK/SK da sua conta Alibaba Cloud para configurar a CLI. O AccessKey de uma conta Alibaba Cloud possui permissões operacionais sobre todos os recursos cloud associados a ela. Em caso de vazamento, todos os seus ativos ficam expostos. Utilize sempre o AccessKey de um usuário RAM com apenas as permissões estritamente necessárias.
Caso já possua um usuário RAM com as permissões mínimas exigidas pelo Workbench CLI, pule as etapas 1 a 3 e inicie diretamente pela Etapa 4: Criar um AccessKey para o usuário RAM.
-
Criar um usuário RAM. Faça login no e navegue até a página . Clique em Create User. Na página de criação, insira o User Login Name e o Display Name e clique em OK.
Não crie um AccessKey neste momento. Ele será gerado na etapa 4, após a conclusão da autorização.
-
Criar uma política personalizada. No console RAM, acesse a página e clique em Create Policy. Mude para o modo Script Editor, cole o JSON abaixo e clique em OK.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs-workbench:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecs:DescribeInstances", "ecs:DescribeCloudAssistantStatus", "ecs:StartTerminalSession" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "ram:ServiceName": "workbench.ecs.aliyuncs.com" } } } ] }A tabela a seguir descreve a finalidade de cada Action na política:
Action
Finalidade
ecs:DescribeInstancesworkbench list ecsConsulta a lista de instâncias.ecs:DescribeCloudAssistantStatusVerifica o status do Cloud Assistant Agent na instância de destino.
ecs:StartTerminalSessionEstabelece uma sessão de terminal com a instância ECS.
ecs-workbench:LoginECSInstanceLogin sem senha através do canal Workbench (utilizado por connect, exec, upload e download).
ecs-workbench:ChatMessagesPermissões necessárias para o assistente AI Agent durante a sessão (modo
/agent).ecs-workbench:EndSessionsEncerra a sessão do Workbench (chamado por
session closee pela limpeza automática de sessões).ram:CreateServiceLinkedRoleCria a função vinculada ao serviço Workbench no primeiro uso, utilizando
Conditionpara restringir a criação à função vinculada do serviçoworkbench.ecs.aliyuncs.com.Por padrão, a política acima concede acesso a todas as instâncias. Para limitar o escopo a instâncias específicas, utilize ARNs de instância apenas para operações que suportam autorização no nível da instância e divida-as em blocos
Statementseparados conforme necessário para modificar o campoResource:"Resource": "acs:ecs:<region>:<account-id>:instance/<instance-id>"NotaAs ações
ecs-workbench:ChatMessageseram:CreateServiceLinkedRolenão permitem restrição por ARN de instância e devem permanecer como"Resource": "*". -
Conceder a política ao usuário RAM. Acesse a página de detalhes do usuário RAM criado na etapa 1 e clique na aba Permissions. Clique em Grant Permission
Manage the permissions of a RAM user
Grant Permission, selecione a política personalizada criada anteriormente e conclua a autorização. Para mais instruções, consulte .
-
Criar um AccessKey para o usuário RAM. Na página de detalhes do usuário RAM, vá para a aba e clique em Create AccessKey. Na tela exibida, selecione Use the AccessKey in the CLI, marque I confirm that I must create an AccessKey e clique em Continue
Continue. Para instruções detalhadas, veja .
ImportanteO segredo do AccessKey é exibido apenas uma vez, no momento da criação, e não pode ser consultado novamente após fechar a página. Salve o AccessKey ID e o segredo imediatamente em um gerenciador de senhas ou keystore. Caso os perca, será necessário criar um novo par de AccessKey.
Um AccessKey é uma credencial de longo prazo; se vazada, pode ser explorada por muito tempo. Em ambientes de produção, mude para um modo de credencial com atualização automática, como RamRoleArn, assim que concluir a configuração na Etapa 3. Consulte a seção Outros métodos de configuração para detalhes.
Etapa 3: Configurar o par de AccessKey na CLI local
Execute o comando abaixo e insira o AccessKey ID e o segredo obtidos na Etapa 2 quando solicitado.
workbench config
Ao finalizar a configuração, as credenciais são salvas em ~/.workbench/config.json, e as permissões do arquivo são definidas automaticamente como 0600 (leitura e escrita permitidas apenas para o usuário atual). Exemplo do conteúdo do arquivo:
{
"current": "default",
"profiles": {
"default": {
"mode": "AK",
"access_key_id": "LTAI...",
"access_key_secret": "..."
}
}
}
Para verificar se a conexão funciona, execute o comando a seguir (substitua cn-hangzhou pela sua região real):
workbench list ecs -r cn-hangzhou
Se tudo estiver correto, a lista de instâncias da região será retornada. Caso receba erros como InvalidAccessKeyId ou NoPermission, consulte a seção FAQ.
(Opcional) Definir o idioma da interface
O Workbench CLI suporta chinês (zh) e inglês (en) como idiomas de interface. Por padrão, o idioma é chinês. Execute o comando abaixo para alterar:
workbench config set language en # Switch to English
workbench config set language zh # Switch back to Chinese
Também é possível definir o idioma no fluxo interativo do workbench config ou editar diretamente o arquivo ~/.workbench/config.json, adicionando o campo language no perfil correspondente:
{
"current": "default",
"profiles": {
"default": {
"mode": "AK",
"language": "en"
}
}
}
A alteração entra em vigor na próxima reconexão, sem necessidade de reiniciar o daemon.
(Opcional) Gerenciar múltiplos perfis
Para alternar entre várias contas Alibaba Cloud ou diferentes conjuntos de credenciais, utilize o recurso de perfis e evite reconfigurar as credenciais repetidamente. Todos os perfis ficam armazenados no mesmo arquivo ~/.workbench/config.json, onde o campo current indica o perfil ativo.
workbench config --profile prod # Create or edit the prod Profile
workbench config list # List all profiles (* marks the active one)
workbench config get --profile prod # Show the details of the specified profile
workbench config switch --profile prod # Switch the active Profile
workbench config delete --profile old # Delete a profile (the active profile cannot be deleted)
workbench exec -i i-xxx -c "hostname" --profile prod # For this command only, use the specified Profile
Exemplo de config.json com múltiplos perfis:
{
"current": "default",
"profiles": {
"default": {
"mode": "AK",
"access_key_id": "LTAI...",
"access_key_secret": "..."
},
"prod": {
"mode": "RamRoleArn",
"access_key_id": "LTAI...",
"access_key_secret": "...",
"ram_role_arn": "acs:ram::123456:role/prod",
"role_session_name": "workbench"
}
}
}
Se o arquivo de configuração ainda estiver no formato antigo plano (sem o campo profiles), a CLI o migrará automaticamente para o novo formato na primeira execução, movendo as credenciais existentes para um perfil chamado default. Nenhuma ação manual é necessária.
Outros métodos de configuração
Um AccessKey estático é uma credencial de longo prazo e, se comprometida, pode ser abusada por um período extenso. Em ambientes de produção ou sob requisitos de segurança mais rigorosos, opte por um dos outros seis modos disponíveis:
|
Modo |
Cenário aplicável |
Comando de configuração |
|
AK (Etapas 2 a 3 deste tópico) |
AccessKey estático. Ideal para início rápido em ambientes de desenvolvimento. |
|
|
StsToken |
Credenciais de segurança temporárias (par de AccessKey e token do Security Token Service - STS). Adequado quando você já possui credenciais temporárias STS. |
|
|
RamRoleArn |
Recomendado para produção: um AK de baixo privilégio assume uma função RAM de alto privilégio, e as credenciais temporárias STS são atualizadas automaticamente. |
|
|
CredentialsCmd |
Obtém credenciais dinamicamente de um programa externo, integrando-se ao sistema de distribuição de credenciais ou gerenciamento de segredos da sua empresa. |
|
|
CredentialsURI |
Recupera credenciais dinamicamente via serviço HTTP, como um serviço de metadados ou sidecar. |
|
|
EcsRamRole |
A CLI roda em uma instância ECS vinculada a uma função RAM e obtém credenciais automaticamente do serviço de metadados da instância (IMDS). |
|
|
AliyunCLI |
Reutiliza as credenciais já configuradas na Alibaba Cloud CLI local ( |
|
Usar credenciais temporárias STS (StsToken)
Este modo autentica diretamente com credenciais de segurança temporárias (AccessKey ID + segredo do AccessKey + token STS) obtidas via STS. Utilize-o quando já possuir credenciais temporárias válidas. Como elas possuem tempo de expiração, será necessário reconfigurá-las após o vencimento. Para atualização automática, consulte .
Método de configuração
workbench config --mode StsToken
Insira os seguintes dados na ordem solicitada:
Access Key ID: o AccessKey ID temporário.
AccessKey Secret: o segredo do AccessKey temporário.
STS Token: a credencial de acesso temporária.
Visualização do resultado da configuração
Após concluir a configuração, verifique o resultado consultando o arquivo ~/.workbench/config.json. Veja um exemplo completo:
{
"current": "default",
"profiles": {
"default": {
"mode": "StsToken",
"access_key_id": "STS.LTAI...",
"access_key_secret": "...",
"sts_token": "..."
}
}
}
Usar uma função RAM (RamRoleArn)
Indicado para cenários onde um AccessKey de baixo privilégio assume uma função RAM de alto privilégio. A CLI chama automaticamente o STS AssumeRole para obter credenciais temporárias e as renova antes da expiração. Para mais detalhes sobre assunção de funções RAM, veja .
Método de configuração
workbench config --mode RamRoleArn
Forneça as informações abaixo conforme solicitado:
Access Key ID: o AccessKey ID com permissão
AliyunSTSAssumeRoleAccess.Access Key Secret: a chave secreta correspondente ao AccessKey ID.
RAM Role ARN: o ARN da função RAM a ser assumida (formato:
acs:ram::<account-id>:role/<role-name>)Role Session Name: identificador da sessão, usado para logs de auditoria (padrão:
workbench-session).
Visualização do resultado da configuração
Terminada a configuração, valide o resultado verificando o arquivo ~/.workbench/config.json.
É possível adicionar campos avançados (como expired_seconds, sts_region e external_id, usado para prevenção de confused deputy entre contas) editando manualmente o
config.json. Para saber mais sobre o mecanismo STS, consulte .
Veja um exemplo completo de configuração:
{
"current": "default",
"profiles": {
"default": {
"mode": "RamRoleArn",
"access_key_id": "LTAI...",
"access_key_secret": "...",
"ram_role_arn": "acs:ram::123456789:role/WorkbenchRole",
"role_session_name": "workbench-session"
}
}
}
Usar credenciais via comando externo (CredentialsCmd)
Ideal para obter credenciais dinamicamente por meio de ferramentas externas, como aliyun-zerotrust-credential-provider ou scripts personalizados. Sempre que precisar de credenciais, a CLI executará o comando configurado e interpretará a saída JSON como as credenciais válidas.
Método de configuração
workbench config --mode CredentialsCmd
Informe os dados solicitados:
-
Process Command — caminho completo e parâmetros do comando externo de credenciais. Este comando deve atender aos seguintes requisitos:
O código de saída deve ser 0. Qualquer valor diferente indica falha.
-
A saída padrão deve estar em formato JSON. Dois formatos são suportados:
Formato AK (credenciais estáticas):
{ "mode": "AK", "access_key_id": "<AccessKeyID>", "access_key_secret": "<AccessKeySecret>" }Formato StsToken (credenciais temporárias):
{ "mode": "StsToken", "access_key_id": "<AccessKeyID>", "access_key_secret": "<AccessKeySecret>", "sts_token": "<SecurityToken>" }
Exemplo 1: Usar aliyun-zerotrust-credential-provider
O aliyun-zerotrust-credential-provider é a interface de linha de comando para credenciais de confiança zero da Alibaba Cloud.
workbench config --mode CredentialsCmd
# Process Command input:
# /usr/local/bin/aliyun-zerotrust-credential-provider --app-name=myapp --role=acs:ram::123456789:role/WorkbenchRole
Após configurar, valide o resultado verificando o arquivo ~/.workbench/config.json. Exemplo completo:
{
"current": "default",
"profiles": {
"default": {
"mode": "CredentialsCmd",
"process_command": "/usr/local/bin/aliyun-zerotrust-credential-provider --app-name=myapp --role=acs:ram::123456789:role/WorkbenchRole"
}
}
}
Exemplo 2: Usar um script personalizado
output format Você pode escrever um script como fonte de credenciais, desde que ele atenda aos :
#!/bin/bash
# ~/.workbench/get-creds.sh
# Obtain credentials from Vault or another key management system
vault read -format=json secret/aliyun | jq '{
mode: "StsToken",
access_key_id: .data.access_key_id,
access_key_secret: .data.access_key_secret,
sts_token: .data.security_token
}'
Usar uma URI de credenciais (CredentialsURI)
Apropriado para serviços de distribuição de credenciais autogerenciados, serviço de metadados de instância ECS ou endpoints sidecar. A CLI envia uma requisição HTTP GET para a URL configurada a fim de obter credenciais temporárias dinamicamente, renovando-as automaticamente antes da expiração.
Método de configuração
workbench config --mode CredentialsURI
Insira o seguinte quando solicitado:
-
Credentials URI: Endereço HTTP/HTTPS do serviço de credenciais. A resposta do serviço deve obedecer aos critérios abaixo:
O código de status da resposta deve ser 200
-
O corpo da resposta deve seguir este formato:
{ "Code": "Success", "AccessKeyId": "<AccessKeyID>", "AccessKeySecret": "<AccessKeySecret>", "SecurityToken": "<SecurityToken>", "Expiration": "2026-01-01T12:00:00Z" }ImportanteO campo
Codedeve ser exatamenteSuccess(case-sensitive). O campoExpirationsegue o formato ISO 8601, e o SDK buscará novas credenciais automaticamente antes do vencimento.
Visualização do resultado da configuração
Após concluir, confirme a configuração verificando o arquivo ~/.workbench/config.json. Exemplo completo:
{
"current": "default",
"profiles": {
"default": {
"mode": "CredentialsURI",
"credentials_uri": "http://localhost:8080/credentials"
}
}
}
Usar uma função RAM de instância ECS (EcsRamRole)
Aplica-se a cenários onde a CLI executa em uma instância ECS da Alibaba Cloud com uma função RAM anexada. A CLI obtém credenciais STS temporárias diretamente do serviço de metadados da instância (IMDS http://100.100.100.200) e não requer AccessKey. O IMDS renova as credenciais automaticamente antes da expiração.
AK, RamRoleArn, or CredentialsURI
Disponível apenas em instâncias ECS/ECI da Alibaba Cloud. Ambientes fora do ECS (máquinas locais, outras clouds) não acessam o IMDS, fazendo com que este modo falhe. Nesses casos, utilize modos como , ou .
Método de configuração
workbench config --mode EcsRamRole
Responda às solicitações conforme indicado:
RAM Role Name: Nome da função RAM anexada à instância. Pode ficar vazio. Se omitido, a CLI detectará automaticamente a função atual via IMDS (comportamento equivalente ao parâmetro opcional
--ram-role-nameda Alibaba Cloud CLI oficial).IMDSv2 hardening mode (y/n): O padrão é
y(ativa o endurecimento IMDSv2). Se a instância for antiga e não suportar IMDSv2, respondanpara usar IMDSv1.
Uma vez configurado, utilize os comandos normalmente. A obtenção e renovação de credenciais ocorrem de forma totalmente automática.
Visualização do resultado da configuração
Para validar a configuração, verifique o arquivo ~/.workbench/config.json.
Campos do arquivo de configuração:
mode: Valor fixoEcsRamRolerole_name(Opcional): Deixe vazio para detecção automáticadisable_imds_v1(Opcional): Omitir ou definir comotrueativa o endurecimento IMDSv2 (padrão);falsepermite fallback para IMDSv1
Exemplos completos de configuração:
-
Configuração mínima (detecção automática de função + endurecimento IMDSv2):
{ "current": "default", "profiles": { "default": { "mode": "EcsRamRole" } } } -
Especificando nome da função e permitindo fallback para IMDSv1:
{ "current": "default", "profiles": { "default": { "mode": "EcsRamRole", "role_name": "ECSAdmin", "disable_imds_v1": false } } }
Reutilizar credenciais da Alibaba Cloud CLI (AliyunCLI)
Se a Alibaba Cloud CLI estiver instalada e configurada na sua máquina, você poderá reutilizar diretamente as credenciais dela, sem precisar armazenar um AccessKey ID e segredo separados no Workbench.
Pré-requisitos
Alibaba Cloud CLI instalada e configurada (
aliyun configure).Arquivo de configuração localizado em
~/.aliyun/config.jsonou especificado viaALIBABA_CLOUD_CONFIG_FILE. O Workbench apenas lê este arquivo, sem modificar seu conteúdo.
Os modos da Alibaba Cloud CLI como AK, StsToken, RamRoleArn, EcsRamRole, OIDC, CloudSSO, OAuth e ChainableRamRoleArn são suportados. Para credenciais dinâmicas (como RamRoleArn), os tokens temporários do Security Token Service são atualizados automaticamente.
Método de configuração
workbench config --mode AliyunCLI
Informe o seguinte quando solicitado:
aliyun_profile(Opcional): Nome do perfil da Alibaba Cloud CLI a ser reutilizado. Se deixado em branco, o perfil atual será usado.
Visualização do resultado da configuração
Após configurar, valide o resultado verificando o arquivo ~/.workbench/config.json. Exemplo completo:
{
"current": "default",
"profiles": {
"default": {
"mode": "AliyunCLI",
"aliyun_profile": "wb-sub-01"
}
}
}
Atualizar o Workbench CLI
O Workbench CLI suporta autoatualização em uma única etapa. Execute o comando abaixo para obter a versão mais recente:
workbench upgrade
Durante a atualização, o binário da versão mais recente é baixado, verificado e substitui a versão atual automaticamente.
Se o binário estiver em um diretório que exige privilégios de administrador (por exemplo, /usr/local/bin no Linux ou macOS), utilize sudo workbench upgrade.
Desinstalar
O Workbench CLI não registra serviços nem altera configurações do sistema. Para desinstalá-lo, pare o daemon, remova o binário e (opcionalmente) exclua o diretório de configuração local.
Linux ou macOS
Execute os comandos abaixo em sequência:
workbench daemon stop
sudo rm -f /usr/local/bin/workbench
rm -rf ~/.workbench
O terceiro comando (que remove ~/.workbench) é opcional e apaga todas as credenciais e arquivos de configuração locais.
Windows
No PowerShell, execute os comandos a seguir em ordem:
workbench daemon stop
Remove-Item "$env:ProgramFiles\workbench" -Recurse -Force
# Delete the item created during installation in the Cloud Assistant scenario: shim
Remove-Item "$env:SystemRoot\System32\workbench.cmd" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.workbench" -Recurse -Force
# Remove the workbench path that the installation script (remote desktop scenario) added to the user PATH
$path = [Environment]::GetEnvironmentVariable("Path", "User")
if ($path -match "workbench") {
$cleaned = ($path -split ";" | Where-Object { $_ -notmatch "workbench" }) -join ";"
[Environment]::SetEnvironmentVariable("Path", $cleaned, "User")
}
Excluir o diretório .workbench é opcional e remove todas as credenciais e configurações locais.
Os comandos acima limpam apenas a CLI local e as credenciais armazenadas nela. O usuário RAM e o AccessKey na nuvem não são excluídos. Para removê-los também, acesse o console RAM e exclua o usuário correspondente ou desative o AccessKey.
FAQ
Executar workbench após instalação retorna command not found
Causa: O diretório adicionado ao PATH pelo script de instalação ainda não está ativo na sessão shell atual.
Solução:
Linux ou macOS: Reabra o terminal, execute
source ~/.bashrc(ou~/.zshrc) ou use o caminho absoluto/usr/local/bin/workbench versionpara verificar.Windows: Feche e reabra a janela do PowerShell.
Executar workbench config retorna erro de permissão no arquivo de configuração
Causa: A CLI rejeita o arquivo ~/.workbench/config.json se as permissões forem muito amplas (por exemplo, 0644 ou leitura permitida para grupo), evitando que outros usuários na mesma máquina leiam suas credenciais.
Solução: No Linux ou macOS, execute o comando abaixo para corrigir as permissões:
chmod 600 ~/.workbench/config.json
workbench list ecs retorna InvalidAccessKeyId.NotFound ou IncompleteSignature
Causa: Geralmente ocorre por um dos motivos abaixo:
O AccessKey ID ou segredo inserido durante a configuração está incorreto (por exemplo, contém espaços no início/fim ou cópia incompleta).
O AccessKey correspondente foi desativado ou excluído no console RAM.
Solução: Execute novamente workbench config e certifique-se de que o AccessKey ID e o segredo pertencem ao mesmo par, estão completos e sem espaços extras; ou confirme no console RAM se o status do AccessKey está Enabled.
Referências
Connect using Workbench CLI: Tópico pai, abordando posicionamento da ferramenta, matriz de capacidades e início rápido.
Manage ECS instances by using Workbench CLI: Descrições detalhadas de cada comando e cenários comuns.
Operate ECS instances by using Workbench CLI in AI agents: Integração do Workbench CLI com ferramentas de codificação por IA.