Usar uma identidade gerenciada pelo Azure em tarefas ACR

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

Neste artigo, você aprenderá a usar a CLI do Azure para habilitar uma identidade gerenciada atribuída por um 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. Para usá-lo localmente, é necessária a versão 2.0.68 ou mais recente. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Para fins de ilustração, os comandos de exemplo neste artigo usam a criar tarefa com comando az acr para criar uma tarefa de compilação de imagem básica que habilita uma identidade gerenciada. No caso de 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 dos recursos do Azure fornece serviços do Azure com uma identidade gerenciada automaticamente no Microsoft Entra ID. É possível configurar uma tarefa ACR com uma identidade gerenciada para que a tarefa possa acessar outros recursos protegidos do Azure, sem passar credenciais nas etapas da tarefa.

Identidades gerenciadas são de dois tipos:

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

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

É possível habilitar um ou ambos os tipos de identidade em uma tarefa ACR. Conceda à identidade gerenciada o acesso a outro recurso, assim como qualquer entidade de segurança. Quando a tarefa é executada, ela usa a identidade para acessar o recurso em qualquer etapa de tarefa que exija acesso.

Por que usar uma identidade gerenciada

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

1. (Opcional) Criar 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 criar identidade az.

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

2. Habilitar a identidade em uma tarefa do ACR (Registro de Contêiner do Azure)

Quando você cria uma tarefa do ACR, é possível habilitar de modo opcional uma identidade atribuída pelo usuário, uma identidade atribuída pelo sistema ou ambas. Por exemplo, passe o --assign-identity parâmetro ao executar o comando az acr task create no CLI do Azure.

Para habilitar uma identidade atribuída pelo sistema, passe --assign-identity sem nenhum valor ou assign-identity [system]. O comando de exemplo a seguir cria uma tarefa do Linux de um repositório GitHub público que cria a imagem e habilita uma identidade gerenciada atribuída hello-world pelo 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 da ID do recurso da identidade. O comando de exemplo a seguir cria uma tarefa do Linux de um repositório GitHub público que cria a hello-world imagem e habilita uma identidade gerenciada atribuída pelo 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 <resourceID>

Você pode obter a ID do recurso da identidade executando o comando az identity show. A ID do recurso para a ID myUserAssignedIdentity no grupo de recursos myResourceGroup é do formato:

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

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

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

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

Use o CLI do Azure ou outras ferramentas do Azure para gerenciar o acesso baseado em função aos recursos. Use o comando criar atribuição de função az para atribuir a identidade da função ao registro base.

O exemplo a seguir atribui a uma identidade gerenciada as permissões para pull 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 efetuar pull ou efetuar push de imagens para outro registro personalizado ou para acessar outros recursos, adicione credenciais à tarefa. Execute o comando adicionar credencial de tarefa az acr 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 contêiner do Azure targetregistry, 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 targetregistrydo registro, 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 a ID do recurso da identidade executando o comando az identity show. A ID do cliente é um GUID do formulário xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

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

5. Executar 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 executar tarefa az acr. Se você tiver configurado gatilhos de tarefa automatizados adicionais, a tarefa será executada quando disparado automaticamente.

Próximas etapas

Neste artigo, você aprenderá a usar a CLI do Azure para habilitar uma identidade gerenciada atribuída por um usuário ou pelo sistema em uma tarefa ACR. No caso de cenários de exemplo para acessar recursos protegidos de uma tarefa ACR usando uma identidade gerenciada, consulte: