Partilhar via


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 utilizar um registo de contentores com o Serviço de Kubernetes do Azure (AKS) ou outro cluster Kubernetes, consulte Cenários para autenticar com o Registo de Contentores do Azure a partir 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 (RBAC) do Microsoft Entra Limitações
Identidade individual do Microsoft Entra  az acr login na CLI do Azure

Connect-AzContainerRegistry no Azure PowerShell
Interação push/pull feita por desenvolvedores e testadores Sim O token Microsoft Entra deve ser renovado a cada 3 horas
Entidade de serviço Microsoft Entra  docker login

az acr login na CLI do Azure

Connect-AzContainerRegistry no Azure PowerShell

Configurações de login do Registro em APIs ou ferramentas

Segredo de pull do Kubernetes   
Push automático 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 do Microsoft Entra para recursos do Azure  docker login

az acr login na CLI do Azure

Connect-AzContainerRegistry no Azure PowerShell
Envio não supervisionado do CI/CD do pipeline do Azure

Pull automático para serviços do Azure

Para obter uma lista de cenários de atribuição de função de identidade gerenciada, consulte os cenários de atribuição de função ACR.
Sim

Atribuições de função do Microsoft Entra RBAC com funções internas do ACR

Controle de acesso baseado em atributos (ABAC) do Microsoft Entra para permissões de repositório baseadas no Microsoft Entra 
Usar somente de serviços selecionados do Azure que dão suporte a identidades gerenciadas para recursos do Azure
Identidade gerida do kubelet do nó do cluster AKS  Anexar o registo quando for criado ou atualizado o cluster AKS Puxar não supervisionado no nó de cluster AKS na mesma subscrição ou numa subscrição diferente Não, puxe apenas o acesso Disponível apenas com cluster AKS

Não pode ser usado para autenticação entre locatários
Principal de serviço do cluster AKS  Ativar quando o cluster AKS for criado ou atualizado Pull não assistido para cluster AKS do registo de outro tenant do Entra Não, puxe apenas o acesso Disponível apenas com cluster AKS
Usuário administrador  docker login  Interação de push/pull por um único desenvolvedor ou testador

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
Permissões de repositório não baseadas em tokens do Microsoft Entra  docker login

az acr login na CLI do Azure

Connect-AzContainerRegistry no Azure PowerShell

Segredo de pull do Kubernetes 
Push/pull interativo para o repositório por programador ou testador individual

Extração não supervisionada do repositório por sistema individual ou dispositivo externo
As permissões de repositório baseadas em tokens não suportam atribuições de função RBAC do Microsoft Entra.

Para permissões de repositório baseadas no Microsoft Entra, consulte controle de acesso baseado em atributos (ABAC) para permissões de repositório baseadas no Microsoft Entra em vez disso.
Atualmente não integrado com a identidade do Microsoft Entra

Início de sessão individual com Microsoft Entra ID

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 tu efetuas login com az acr login, a CLI usa o token criado quando executaste az login para autenticar sem problemas a tua sessão com o teu registo. 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.

O uso de az acr login com identidades do Azure fornece o RBAC (controle de acesso baseado em função) do Azure. 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 específicas. Consulte Visão geral das permissões e funções do Azure Container Registry Entra. 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, precisa autenticar com az acr login quando o daemon do Docker não está em execução no 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 este cenário, execute az acr login primeiro com o parâmetro --expose-token. 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

Entidade de serviço

Se atribuir um principal de serviço ao seu registo, a sua aplicação ou serviço poderá usá-lo para autenticação sem interface gráfica. As entidades de serviço permitem o RBAC (controlo de acesso baseado em função) do Azure a um registo, e é possível atribuir várias entidades de serviço a um registo. Vários principais de serviço permitem definir diferentes acessos para diferentes aplicações.

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.

Para obter uma lista de funções disponíveis, consulte Visão geral das permissões e funções do Azure Container Registry Entra.

Para scripts de CLI para criar um princípio de serviço para autenticar com um registo de contentores do Azure, e para mais orientações, consulte Autenticação do Registo de Contentores do Azure com princípios 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 o compartilhamento das credenciais da conta de administrador entre vários usuários. 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 utilizadores e entidades de serviço para cenários sem interface.

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.

Habilitar a interface do usuário administrador no portal do Azure

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 dockerde 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_COMMANDde 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).

Próximos passos