Usar uma identidade gerenciada pelo Azure em tarefas do ACR

Habilite uma identidade gerenciada para recursos do Azure em uma tarefa ACR, para que a tarefa possa acessar outros recursos do Azure, sem precisar fornecer ou gerenciar credenciais. Por exemplo, use uma identidade gerenciada para habilitar uma etapa de tarefa para extrair ou enviar imagens de contêiner para outro registro.

Neste artigo, você aprenderá a usar a CLI do Azure para habilitar uma identidade gerenciada atribuída pelo usuário ou pelo sistema em uma tarefa ACR. Você pode usar o Azure Cloud Shell ou uma instalação local da CLI do Azure. Se você quiser usá-lo localmente, a versão 2.0.68 ou posterior é necessária. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Para fins de ilustração, os comandos de exemplo neste artigo usam az acr task create para criar uma tarefa básica de construção de imagem que permite uma identidade gerenciada. Para cenários de exemplo para acessar recursos protegidos de uma tarefa ACR usando uma identidade gerenciada, consulte:

Por que usar uma identidade gerenciada?

Uma identidade gerenciada para recursos do Azure fornece serviços selecionados do Azure com uma identidade gerenciada automaticamente no Microsoft Entra ID. Você pode configurar uma tarefa ACR com uma identidade gerenciada para que a tarefa possa acessar outros recursos seguros do Azure, sem passar credenciais nas etapas da tarefa.

As identidades gerenciadas são de dois tipos:

  • Identidades atribuídas pelo usuário, que você pode atribuir a vários recursos e persistir pelo tempo que desejar. As identidades atribuídas pelo usuário estão atualmente em visualização.

  • Uma identidade atribuída ao sistema, que é exclusiva para um recurso específico, como uma tarefa ACR, e dura o tempo de vida desse recurso.

Você pode habilitar um ou ambos os tipos de identidade em uma tarefa ACR. Conceda à identidade acesso a outro recurso, como qualquer entidade de segurança. Quando a tarefa é executada, ela usa a identidade para acessar o recurso em todas as etapas da tarefa que exigem acesso.

Etapas para usar uma identidade gerenciada

Siga estas etapas de alto nível para usar uma identidade gerenciada com uma tarefa ACR.

1. (Opcional) Crie uma identidade atribuída pelo usuário

Se você planeja usar uma identidade atribuída pelo usuário, use uma identidade existente ou crie a identidade usando a CLI do Azure ou outras ferramentas do Azure. Por exemplo, use o comando az identity create .

Se você planeja usar apenas uma identidade atribuída ao sistema, ignore esta etapa. Você cria uma identidade atribuída ao sistema ao criar a tarefa ACR.

2. Habilitar identidade em uma tarefa ACR

Ao criar uma tarefa ACR, opcionalmente, habilite uma identidade atribuída pelo usuário, uma identidade atribuída pelo sistema ou ambas. Por exemplo, passe o parâmetro quando você executa o --assign-identitycomando az acr task create na CLI do Azure.

Para habilitar uma identidade atribuída ao sistema, passe --assign-identity sem valor ou assign-identity [system]. O comando de exemplo a seguir cria uma tarefa Linux a partir de um repositório público do GitHub que cria a imagem e habilita uma identidade gerenciada atribuída ao hello-world sistema:

az acr task create \
    --image hello-world:{{.Run.ID}} \
    --name hello-world --registry MyRegistry \
    --context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
    --file Dockerfile \
    --commit-trigger-enabled false \
    --assign-identity

Para habilitar uma identidade atribuída pelo usuário, passe --assign-identity com um valor do ID do recurso da identidade. O comando de exemplo a seguir cria uma tarefa Linux a partir de um repositório público do GitHub que cria a imagem e permite uma identidade gerenciada atribuída pelo hello-world usuário:

az acr task create \
    --image hello-world:{{.Run.ID}} \
    --name hello-world --registry MyRegistry \
    --context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
    --file Dockerfile \
    --commit-trigger-enabled false
    --assign-identity <resourceID>

Você pode obter o ID de recurso da identidade executando o comando az identity show . O ID de recurso para o ID myUserAssignedIdentity no grupo de recursos myResourceGroup tem o seguinte formato:

"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"

3. Conceda as permissões de identidade para acessar outros recursos do Azure

Dependendo dos requisitos da sua tarefa, conceda as permissões de identidade para acessar outros recursos do Azure. Exemplos incluem:

  • Atribua à identidade gerenciada uma função com pull, push and pull ou outras permissões a um registro de contêiner de destino no Azure. Para obter uma lista completa de funções de registo, veja Permissões e funções do Azure Container Registry.
  • Atribua à identidade gerenciada uma função para ler segredos em um cofre de chaves do Azure.

Use a CLI do Azure ou outras ferramentas do Azure para gerenciar o acesso baseado em função aos recursos. Por exemplo, execute o comando az role assignment create para atribuir a identidade de uma função ao recurso.

O exemplo a seguir atribui a uma identidade gerenciada as permissões para extrair de um registro de contêiner. O comando especifica a ID principal da identidade da tarefa e a ID do recurso do registro de destino.

az role assignment create \
  --assignee <principalID> \
  --scope <registryID> \
  --role acrpull

4. (Opcional) Adicionar credenciais à tarefa

Se sua tarefa precisar de credenciais para extrair ou enviar imagens para outro registro personalizado ou para acessar outros recursos, adicione credenciais à tarefa. Execute o comando az acr task credential add para adicionar credenciais e passe o --use-identity parâmetro para indicar que a identidade pode acessar as credenciais.

Por exemplo, para adicionar credenciais para uma identidade atribuída pelo sistema para autenticar com o registro de destino do contêiner do Azure, passe use-identity [system]:

az acr task credential add \
    --name helloworld \
    --registry myregistry \
    --login-server targetregistry.azurecr.io \
    --use-identity [system]

Para adicionar credenciais para uma identidade atribuída pelo usuário para autenticar com o registro de destino, passe use-identity com um valor da ID do cliente da identidade. Por exemplo:

az acr task credential add \
    --name helloworld \
    --registry myregistry \
    --login-server targetregistry.azurecr.io \
    --use-identity <clientID>

Você pode obter o ID do cliente da identidade executando o comando az identity show . O ID do cliente é um GUID do formulário xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

O --use-identity parâmetro não é opcional, se o registro tiver o acesso à rede pública desabilitado e depender apenas de determinados serviços confiáveis para executar tarefas ACR. Consulte o exemplo de tarefas ACR como um serviço confiável.

5. Execute a tarefa

Depois de configurar uma tarefa com uma identidade gerenciada, execute a tarefa. Por exemplo, para testar uma das tarefas criadas neste artigo, acione-a manualmente usando o comando az acr task run . Se você configurou gatilhos de tarefa adicionais e automatizados, a tarefa será executada quando acionada automaticamente.

Próximos passos

Neste artigo, você aprendeu como habilitar e usar uma identidade gerenciada atribuída pelo usuário ou pelo sistema em uma tarefa ACR. Para cenários para acessar recursos protegidos de uma tarefa ACR usando uma identidade gerenciada, consulte: