Antes de enviar ou baixar imagens do Container Registry (ACR) com Docker, containerd ou outros clientes, configure credenciais de acesso para autenticação. As credenciais incluem senhas permanentes e temporárias. Após a autenticação, você poderá enviar e baixar imagens de contêiner ou gráficos Helm.
Descrição das credenciais
Após a autenticação, o sistema autoriza operações com base na RAM access control policy e controla o escopo das ações permitidas.
As credenciais de acesso são independentes da sua conta Alibaba Cloud e da respectiva senha. A senha permanente do ACR não é a mesma usada para login no console da sua conta (conta Alibaba Cloud ou usuário do Resource Access Management (RAM)). Trata-se de uma senha dedicada ao Registry, definida na página Access Credential no console do ACR. Existem dois tipos de credenciais:
Senha permanente: esta senha não expira. Em caso de vazamento, ela permanece válida até que você a redefina ativamente. Para maior segurança, recomenda-se o uso de senha temporária. Caso perca a senha, redefina-a na página de credenciais de acesso.
Senha temporária: esta senha tem validade de 1 hora. Se solicitada por meio do Security Token Service (STS), sua duração será igual à do token do Security Token Service usado na solicitação.
As credenciais de acesso de uma conta Alibaba Cloud e de um usuário RAM são independentes entre si. Um usuário RAM não pode utilizar a senha permanente definida pela conta Alibaba Cloud. Cada usuário RAM deve fazer login no console do ACR com sua própria conta Alibaba Cloud e definir uma senha permanente dedicada.
Ao fazer login no ACR usando Docker ou outros clientes, o valor do parâmetro --username varia conforme o tipo de conta:
Conta Alibaba Cloud: o nome de usuário corresponde ao nome de login da conta Alibaba Cloud. Visualize o comando completo
docker logine o nome de usuário correspondente na página Access Credentials no console do ACR. Esse nome de usuário difere do ID da conta Alibaba Cloud, que é uma string numérica. O uso do ID da conta como nome de usuário resultará em falha na autenticação.Usuário RAM: o nome de usuário é o nome de login do usuário RAM, no formato
<RAM-user-login-name>@<default-domain-of-alibaba-cloud-account>, por exemplousername@China-1234567890.onaliyun.com.
Antes de executar docker login, verifique o formato correto do nome de usuário na página Access Credentials no console do ACR para evitar o erro unauthorized: authentication required causado por um nome de usuário incorreto.
Usar uma senha permanente
O Container Registry (ACR) não oferece suporte a login baseado em funções. Faça login usando Use a temporary password.
Usuário RAM: para definir uma senha permanente como usuário RAM no console do ACR, a conta Alibaba Cloud deve habilitar previamente a permissão Console Login para esse usuário. Um usuário RAM sem acesso ao console habilitado não consegue fazer login no console do ACR nem configurar credenciais de acesso.
A conta Alibaba Cloud não pode definir ou gerenciar a senha permanente em nome de um usuário RAM. O próprio usuário RAM deve fazer login no console do ACR com sua conta e configurar as credenciais de acesso pessoalmente.
Faça login no console do Container Registry.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, clique em Instances.
Na página Instances, clique na instância Enterprise Edition que deseja gerenciar.
No painel de navegação à esquerda da página de gerenciamento da instância Enterprise, escolha .
Na página Access Credentials, clique em Set Password.
-
Na caixa de diálogo Set Password, insira a Password e a Confirm Password. Em seguida, clique em Confirm.
A senha deve ter entre 8 e 32 caracteres e conter pelo menos dois dos seguintes tipos: letras, símbolos e dígitos. Evite senhas fracas conhecidas publicamente, como
P@ssw0rd. O símbolo$não é suportado.Botão Confirm desativado sem mensagem de erro: se o botão Confirm ficar desativado após o clique e nenhuma mensagem de erro aparecer, provavelmente a senha não atende aos requisitos de segurança (por exemplo, contém caracteres proibidos como
$ou utiliza uma senha fraca comum). Verifique e ajuste a senha e tente novamente.Falha no login do Docker devido a caracteres especiais: se a senha contiver caracteres especiais como
@, a execução dedocker loginno terminal pode falhar devido ao escape do shell, resultando no errounauthorized: authentication required. Nesse caso, redefina a senha na página Access Credentials e utilize uma senha sem caracteres especiais.Senhas anteriores não podem ser recuperadas: após a definição de uma senha permanente, seu histórico não pode ser visualizado. Caso perca a senha, redefina-a na página Access Credentials.
Próximos passos
Faça login na instância Enterprise.
Configure o controle de acesso para uma VPC ou para a Internet. Para mais informações, consulte Configure internet access control ou Configure VPC access control.
-
No terminal, insira a credencial de acesso para fazer login na instância Enterprise. Use o seguinte comando de exemplo como referência:
docker login <Enterprise-Edition-instance-name>-registry.<region-of-the-Enterprise-Edition-instance>.cr.aliyuncs.com
Usar uma senha temporária
Instale a Alibaba Cloud CLI e Configure and manage credentials.
Instale o comando jq.
Crie um Create a RAM user.
Execute a operação GetAuthorizationToken diretamente no OpenAPI Explorer para obter o nome de usuário e a senha temporários de login da instância desejada.
Utilize um par de AccessKey existente ou consulte Create an AccessKey para criar um novo. Anote o AccessKey ID e o AccessKey secret.
-
Use o conteúdo a seguir para Using the script editor e Manage RAM user permissions.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetAuthorizationToken", "cr:PullRepository", "cr:PushRepository" ], "Resource": "*" } ] } -
Execute os comandos abaixo para obter a senha temporária.
ACR_ENDPOINT="<acr service endpoint>"onde<acr service endpoint>é o Endpoints da região onde a instância do ACR está localizada.export ALIYUN_AK="<aliyun access key>" # The AccessKey ID from Step 1. export ALIYUN_SK="<aliyun access key secret>" # The AccessKey Secret from Step 1. export ACR_INSTANCE_ID="<id of acr instance>" # The target ACR instance ID. export ACR_ENDPOINT="<acr service endpoint>"aliyun cr GetAuthorizationToken --endpoint $ACR_ENDPOINT --InstanceId $ACR_INSTANCE_ID --access-key-id $ALIYUN_AK --access-key-secret $ALIYUN_SK | jq -r '.AuthorizationToken'