Autenticar com um registo de contentor do Azure
Há várias maneiras de autenticar com um registro de contêiner do Azure, cada uma das quais é aplicável a um ou mais cenários de uso do Registro.
As formas recomendadas incluem:
- Autenticar em um registro diretamente através de login individual
- Aplicativos e orquestradores de contêineres podem executar autenticação autônoma ou "sem cabeça" usando uma entidade de serviço Microsoft Entra
Se você usar um registro de contêiner com o Serviço Kubernetes do Azure (AKS) ou outro cluster Kubernetes, consulte Cenários para autenticar com o Registro de Contêiner do Azure do Kubernetes.
Opções de autenticação
A tabela a seguir lista os métodos de autenticação disponíveis e os cenários típicos. Consulte o conteúdo vinculado para obter detalhes.
Método | Como autenticar | Cenários | Controle de acesso baseado em função do Azure (Azure RBAC) | Limitações |
---|---|---|---|---|
Identidade individual do AD | az acr login na CLI do AzureConnect-AzContainerRegistry no Azure PowerShell |
Push/pull interativo por desenvolvedores, testadores | Sim | O token do AD deve ser renovado a cada 3 horas |
Entidade de serviço do AD | docker login az acr login na CLI do AzureConnect-AzContainerRegistry no Azure PowerShellConfigurações de login do Registro em APIs ou ferramentas Kubernetes puxam segredo |
Push autônomo do pipeline de CI/CD Pull autônomo para o Azure ou serviços externos |
Sim | A expiração padrão da senha do SP é de 1 ano |
Identidade gerenciada para recursos do Azure | docker login az acr login na CLI do AzureConnect-AzContainerRegistry no Azure PowerShell |
Envio autônomo do pipeline de CI/CD do Azure Pull autônomo para serviços do Azure |
Sim | Usar somente de serviços selecionados do Azure que dão suporte a identidades gerenciadas para recursos do Azure |
Identidade gerenciada do cluster AKS | Anexar o registo quando o cluster AKS for criado ou atualizado | Pull autônomo para cluster AKS na mesma assinatura ou em uma assinatura diferente | Não, puxe apenas o acesso | Disponível apenas com cluster AKS Não pode ser usado para autenticação entre locatários |
Entidade de serviço de cluster AKS | Ativar quando o cluster AKS for criado ou atualizado | Pull autônomo para cluster AKS do registro em outro locatário do AD | Não, puxe apenas o acesso | Disponível apenas com cluster AKS |
Usuário administrador | docker login |
Push/pull interativo por desenvolvedor ou testador individual Implantação de imagem do Registro no Serviço de Aplicativo do Azure ou nas Instâncias de Contêiner do Azure |
Não, puxe e empurre sempre o acesso | Conta única por registro, não recomendada para vários usuários |
Token de acesso com escopo de repositório | docker login az acr login na CLI do AzureConnect-AzContainerRegistry no Azure PowerShellKubernetes puxam segredo |
Push/pull interativo para o repositório por desenvolvedor ou testador individual Pull autônomo do repositório por sistema individual ou dispositivo externo |
Sim | Atualmente não integrado com a identidade do AD |
Login individual com ID do Microsoft Entra
Ao trabalhar diretamente com seu registro, como extrair imagens e enviar imagens de uma estação de trabalho de desenvolvimento para um registro que você criou, autentique-se usando sua identidade individual do Azure. Entre na CLI do Azure com az login e execute o comando az acr login:
az login
az acr login --name <acrName>
Quando você efetua login com az acr login
o , a CLI usa o token criado quando você executou az login
para autenticar perfeitamente sua sessão com seu registro. Para concluir o fluxo de autenticação, a CLI do Docker e o daemon do Docker devem ser instalados e executados em seu ambiente. az acr login
usa o cliente Docker para definir um token Microsoft Entra no docker.config
arquivo. Depois de iniciar sessão desta forma, as suas credenciais são armazenadas em cache e os comandos subsequentes docker
na sua sessão não requerem um nome de utilizador ou palavra-passe.
Gorjeta
Use também az acr login
para autenticar uma identidade individual quando quiser enviar ou extrair artefatos diferentes de imagens do Docker para seu registro, como artefatos OCI.
Para acesso ao Registro, o token usado por az acr login
é válido por 3 horas, portanto, recomendamos que você sempre faça login no Registro antes de executar um docker
comando. Se o token expirar, você poderá atualizá-lo usando o az acr login
comando novamente para autenticar novamente.
Usar az acr login
com identidades do Azure fornece controle de acesso baseado em função do Azure (Azure RBAC). Para alguns cenários, talvez você queira fazer logon em um registro com sua própria identidade individual na ID do Microsoft Entra ou configurar outros usuários do Azure com funções e permissões específicas do Azure. Para cenários entre serviços ou para lidar com as necessidades de um grupo de trabalho ou de um fluxo de trabalho de desenvolvimento em que você não deseja gerenciar o acesso individual, você também pode fazer logon com uma identidade gerenciada para recursos do Azure.
az acr login com --expose-token
Em alguns casos, você precisa autenticar quando az acr login
o daemon do Docker não está em execução em seu ambiente. Por exemplo, talvez seja necessário executar az acr login
um script no Azure Cloud Shell, que fornece a CLI do Docker, mas não executa o daemon do Docker.
Para esse cenário, execute az acr login
primeiro com o --expose-token
parâmetro. Essa opção expõe um token de acesso em vez de efetuar login por meio da CLI do Docker.
az acr login --name <acrName> --expose-token
A saída exibe o token de acesso, abreviado aqui:
{
"accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
"loginServer": "myregistry.azurecr.io"
}
Para autenticação do Registro, recomendamos que você armazene a credencial de token em um local seguro e siga as práticas recomendadas para gerenciar as credenciais de login do docker. Por exemplo, armazene o valor do token em uma variável de ambiente:
TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)
Em seguida, execute docker login
, passando 00000000-0000-0000-0000-000000000000
como o nome de usuário e usando o token de acesso como senha:
docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
Da mesma forma, você pode usar o token retornado por az acr login
com o helm registry login
comando para autenticar com o registro:
echo $TOKEN | helm registry login myregistry.azurecr.io \
--username 00000000-0000-0000-0000-000000000000 \
--password-stdin
Service principal (Principal de serviço)
Se você atribuir uma entidade de serviço ao seu registro, seu aplicativo ou serviço poderá usá-la para autenticação sem cabeça. As entidades de serviço permitem o controle de acesso baseado em função do Azure (Azure RBAC) a um registro e você pode atribuir várias entidades de serviço a um registro. Várias entidades de serviço permitem definir diferentes acessos para diferentes aplicativos.
O token de autenticação ACR é criado após o login no ACR e é atualizado nas operações subsequentes. O tempo de vida para esse token é de 3 horas.
As funções disponíveis para um registro de contêiner incluem:
AcrPull: puxar
AcrPush: puxe e empurre
Proprietário: puxar, empurrar e atribuir funções a outros usuários
Para obter uma lista completa de funções, consulte Funções e permissões do Registro de Contêiner do Azure.
Para scripts de CLI para criar uma entidade de serviço para autenticação com um registro de contêiner do Azure e mais orientações, consulte Autenticação do Registro de Contêiner do Azure com entidades de serviço.
Conta de administrador
Cada registo de contentor inclui uma conta de utilizador administrador, que está desativada por predefinição. Você pode habilitar o usuário administrador e gerenciar suas credenciais no portal do Azure ou usando a CLI do Azure, o Azure PowerShell ou outras ferramentas do Azure. A conta de administrador tem permissões totais para o registo.
A conta de administrador é atualmente necessária para alguns cenários para implantar uma imagem de um registro de contêiner para determinados serviços do Azure. Por exemplo, a conta de administrador é necessária quando você usa o portal do Azure para implantar uma imagem de contêiner de um registro diretamente nas Instâncias de Contêiner do Azure ou nos Aplicativos Web do Azure para Contêineres.
Importante
A conta de administrador foi concebida para que um único utilizador aceda ao registo, principalmente para fins de teste. Não recomendamos a partilha das credenciais da conta de administrador entre vários utilizadores. Todos os utilizadores que façam a autenticação com a conta de administrador aparecem como um único utilizador com acesso push e pull ao registo. Alterar ou desativar essa conta desabilita o acesso ao Registro para todos os usuários que usam suas credenciais. A identidade individual é recomendada para usuários e entidades de serviço para cenários sem cabeça.
A conta de administrador é fornecida com duas senhas, ambas podem ser regeneradas. Novas senhas criadas para contas de administrador estão disponíveis imediatamente. A regeneração de senhas para contas de administrador levará 60 segundos para ser replicada e estar disponível. Duas senhas permitem que você mantenha a conexão com o registro usando uma senha enquanto você regenera a outra. Se a conta de administrador estiver habilitada, você poderá passar o nome de usuário e a senha para o docker login
comando quando for solicitada a autenticação básica para o Registro. Por exemplo:
docker login myregistry.azurecr.io
Para obter as práticas recomendadas para gerenciar credenciais de login, consulte a referência do comando de login do docker.
Para habilitar o usuário administrador para um registro existente, você pode usar o --admin-enabled
parâmetro do comando az acr update na CLI do Azure:
az acr update -n <acrName> --admin-enabled true
Você pode habilitar o usuário administrador no portal do Azure navegando pelo Registro, selecionando Chaves de acesso em CONFIGURAÇÕES e, em seguida, Habilitar em Usuário administrador.
Faça login com uma ferramenta de contêiner alternativa em vez do Docker
Em alguns cenários, você precisa usar ferramentas de contêiner alternativas, como podman
em vez da ferramenta docker
de contêiner comum. Por exemplo: o Docker não está mais disponível no RHEL 8 e 9, então você precisa alternar sua ferramenta de contêiner.
A ferramenta de contêiner padrão é definida como docker
para az acr login
comandos. Se você não definir a ferramenta de contêiner padrão e o docker
comando estiver faltando em seu ambiente, o seguinte erro será exibido:
az acr login --name <acrName>
2024-03-29 07:30:10.014426 An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.
Para alterar a ferramenta de contêiner padrão usada pelo az acr login
comando, você pode definir a variável DOCKER_COMMAND
de ambiente . Por exemplo:
DOCKER_COMMAND=podman \
az acr login --name <acrName>
Nota
Você precisa da CLI do Azure versão 2.59.0 ou posterior instalada e configurada para usar esse recurso. Executar az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).