Utilizar uma identidade gerida do Azure para autenticar num registo de contentor do Azure
Use uma identidade gerenciada para recursos do Azure para autenticar em um registro de contêiner do Azure a partir de outro recurso do Azure, sem precisar fornecer ou gerenciar credenciais do Registro. Por exemplo, configure uma identidade gerenciada atribuída pelo usuário ou pelo sistema em uma VM Linux para acessar imagens de contêiner do seu registro de contêiner, tão facilmente quanto você usa um registro público. Ou configure um cluster do Serviço Kubernetes do Azure para usar sua identidade gerenciada para extrair imagens de contêiner do Registro de Contêiner do Azure para implantações de pod.
Neste artigo, você aprenderá mais sobre identidades gerenciadas e como:
- Habilitar uma identidade atribuída pelo usuário ou pelo sistema em uma VM do Azure
- Conceder acesso de identidade a um registro de contêiner do Azure
- Use a identidade gerenciada para acessar o registro e extrair uma imagem de contêiner
Para criar os recursos do Azure, este artigo requer que você execute a CLI do Azure versão 2.0.55 ou posterior. Executar az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
Para configurar um registro de contêiner e enviar uma imagem de contêiner para ele, você também deve ter o Docker instalado localmente. O Docker disponibiliza pacotes que o configuram facilmente em qualquer sistema macOS, Windows ou Linux.
Por que usar uma identidade gerenciada?
Se não estiver familiarizado com a funcionalidade das identidades geridas para os recursos do Azure, veja esta descrição geral.
Depois de configurar os recursos selecionados do Azure com uma identidade gerenciada, dê à identidade o acesso desejado a outro recurso, assim como qualquer entidade de segurança. Por exemplo, atribua uma identidade gerenciada uma função com pull, push and pull ou outras permissões a um registro privado no Azure. (Para obter uma lista completa das funções do Registro, consulte Funções e permissões do Registro de Contêiner do Azure.) Você pode conceder a uma identidade acesso a um ou mais recursos.
Em seguida, use a identidade para autenticar em qualquer serviço que ofereça suporte à autenticação do Microsoft Entra, sem credenciais em seu código. Escolha como autenticar usando a identidade gerenciada, dependendo do seu cenário. Para usar a identidade para acessar um registro de contêiner do Azure a partir de uma máquina virtual, autentique-se com o Azure Resource Manager.
Criar um registo de contentores
Se você ainda não tiver um registro de contêiner do Azure, crie um registro e envie uma imagem de contêiner de exemplo para ele. Para conhecer as etapas, consulte Guia de início rápido: criar um registro de contêiner privado usando a CLI do Azure.
Este artigo pressupõe que você tenha a imagem do aci-helloworld:v1
contêiner armazenada no registro. Os exemplos usam um nome de registro de myContainerRegistry. Substitua por seus próprios nomes de registro e imagem em etapas posteriores.
Criar uma VM habilitada para Docker
Crie uma máquina virtual Ubuntu habilitada para Docker. Você também precisa instalar a CLI do Azure na máquina virtual. Se você já tiver uma máquina virtual do Azure, ignore esta etapa para criar a máquina virtual.
Implante uma máquina virtual padrão do Ubuntu Azure com az vm create. O exemplo a seguir cria uma VM chamada myDockerVM em um grupo de recursos existente chamado myResourceGroup:
az vm create \
--resource-group myResourceGroup \
--name myDockerVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Demora alguns minutos até que a VM seja criada. Quando o comando for concluído, anote o publicIpAddress
exibido pela CLI do Azure. Use esse endereço para fazer conexões SSH com a VM.
Instalar o Docker na VM
Para executar contêineres do Docker em sua máquina virtual, você precisa instalar o Docker. Esta seção fornece as etapas para instalar o Docker em uma VM do Ubuntu, garantindo que sua VM esteja pronta para extrair e executar imagens de contêiner do seu Registro de Contêiner do Azure.
Depois que a VM estiver em execução, faça uma conexão SSH com a VM. Substitua publicIpAddress pelo endereço IP público da sua VM.
ssh azureuser@publicIpAddress
Execute o seguinte comando para instalar o Docker na VM:
sudo apt update
sudo apt install docker.io -y
Após a instalação, execute o seguinte comando para verificar se o Docker está sendo executado corretamente na VM:
sudo docker run -it mcr.microsoft.com/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Instalar a CLI do Azure
Siga as etapas em Instalar a CLI do Azure com o apt para instalar a CLI do Azure em sua máquina virtual do Ubuntu. Para este artigo, certifique-se de instalar a versão 2.0.55 ou posterior.
Saia da sessão SSH.
Exemplo 1: Acesso com uma identidade atribuída pelo utilizador
Criar uma identidade
Crie uma identidade em sua assinatura usando o comando az identity create . Você pode usar o mesmo grupo de recursos usado anteriormente para criar o registro de contêiner ou a máquina virtual, ou um diferente.
az identity create --resource-group myResourceGroup --name myACRId
Para configurar a identidade nas etapas a seguir, use o comando az identity show para armazenar o ID de recurso da identidade e o ID da entidade de serviço em variáveis.
# Get resource ID of the user-assigned identity
userID=$(az identity show --resource-group myResourceGroup --name myACRId --query id --output tsv)
# Get service principal ID of the user-assigned identity
spID=$(az identity show --resource-group myResourceGroup --name myACRId --query principalId --output tsv)
Como você precisa do ID da identidade em uma etapa posterior quando entrar na CLI a partir de sua máquina virtual, mostre o valor:
echo $userID
O ID é do formulário:
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId
Configurar a VM com a identidade
O seguinte comando az vm identity assign configura sua VM do Docker com a identidade atribuída pelo usuário:
az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID
Conceder acesso de identidade ao registro de contêiner
Agora configure a identidade para acessar seu registro de contêiner. Primeiro, use o comando az acr show para obter o ID do recurso do registro:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Use o comando az role assignment create para atribuir a função AcrPull à identidade. Essa função fornece permissões de pull para o registro. Para fornecer permissões pull e push, atribua a função AcrPush.
az role assignment create --assignee $spID --scope $resourceID --role acrpull
Utilizar a identidade para aceder ao registo
SSH na máquina virtual do Docker configurada com a identidade. Execute os seguintes comandos da CLI do Azure, usando a CLI do Azure instalada na VM.
Primeiro, autentique-se na CLI do Azure com az login, usando a identidade que você configurou na VM. Para <userID>
, substitua a ID da identidade recuperada em uma etapa anterior.
az login --identity --username <userID>
Em seguida, autentique-se no registro com az acr login. Quando você usa esse comando, a CLI usa o token do Ative Directory criado quando você executou az login
para autenticar perfeitamente sua sessão com o registro do contêiner. (Dependendo da configuração da sua VM, talvez seja necessário executar este comando e os comandos docker com sudo
.)
az acr login --name myContainerRegistry
Deverá ver uma Login succeeded
mensagem. Em seguida, você pode executar docker
comandos sem fornecer credenciais. Por exemplo, execute docker pull para extrair a aci-helloworld:v1
imagem, especificando o nome do servidor de login do seu registro. O nome do servidor de login consiste no nome do registro do contêiner (todas minúsculas) seguido por .azurecr.io
- por exemplo, mycontainerregistry.azurecr.io
.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Configurar a VM com uma identidade gerenciada pelo sistema
Uma identidade gerenciada atribuída ao sistema é um recurso do Azure que permite que sua máquina virtual gerencie automaticamente sua própria identidade no Azure Ative Directory. Esta seção explica como configurar sua VM com uma identidade atribuída pelo sistema para acessar com segurança seu Registro de Contêiner do Azure.
Configurar a VM com uma identidade gerenciada pelo sistema
O seguinte comando az vm identity assign configura sua VM do Docker com uma identidade atribuída pelo sistema:
az vm identity assign --resource-group myResourceGroup --name myDockerVM
Use o comando az vm show para definir uma variável com o valor de (o ID da entidade de principalId
serviço) da identidade da VM, para usar em etapas posteriores.
spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)
Conceder acesso de identidade ao registro de contêiner
Agora configure a identidade para acessar seu registro de contêiner. Primeiro, use o comando az acr show para obter o ID do recurso do registro:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Use o comando az role assignment create para atribuir a função AcrPull à identidade. Essa função fornece permissões de pull para o registro. Para fornecer permissões pull e push, atribua a função AcrPush.
az role assignment create --assignee $spID --scope $resourceID --role acrpull
Utilizar a identidade para aceder ao registo
SSH na máquina virtual do Docker configurada com a identidade. Execute os seguintes comandos da CLI do Azure, usando a CLI do Azure instalada na VM.
Primeiro, autentique a CLI do Azure com az login, usando a identidade atribuída pelo sistema na VM.
az login --identity
Em seguida, autentique-se no registro com az acr login. Quando você usa esse comando, a CLI usa o token do Ative Directory criado quando você executou az login
para autenticar perfeitamente sua sessão com o registro do contêiner. (Dependendo da configuração da sua VM, talvez seja necessário executar este comando e os comandos docker com sudo
.)
az acr login --name myContainerRegistry
Deverá ver uma Login succeeded
mensagem. Em seguida, você pode executar docker
comandos sem fornecer credenciais. Por exemplo, execute docker pull para extrair a aci-helloworld:v1
imagem, especificando o nome do servidor de login do seu registro. O nome do servidor de login consiste no nome do registro do contêiner (todas minúsculas) seguido por .azurecr.io
- por exemplo, mycontainerregistry.azurecr.io
.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Próximos passos
Neste artigo, você aprendeu sobre como usar identidades gerenciadas com o Registro de Contêiner do Azure e como:
- Habilitar uma identidade atribuída pelo usuário ou pelo sistema em uma VM do Azure
- Conceder acesso de identidade a um registro de contêiner do Azure
- Use a identidade gerenciada para acessar o registro e extrair uma imagem de contêiner
- Saiba mais sobre identidades gerenciadas para recursos do Azure.
- Saiba como usar uma identidade gerenciada atribuída pelo sistema ou pelo usuário com o Serviço de Aplicativo e o Registro de Contêiner do Azure.
- Saiba como implantar uma imagem de contêiner do Registro de Contêiner do Azure usando uma identidade gerenciada.