Usar uma identidade gerenciada pelo Azure em tarefas ACRUse an Azure-managed identity in ACR Tasks

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.Enable a managed identity for Azure resources in an ACR task, so the task can access other Azure resources, without needing to provide or manage credentials. Por exemplo, use uma identidade gerenciada para habilitar uma etapa de tarefa para efetuar pull ou enviar por push imagens de contêiner para outro registro.For example, use a managed identity to enable a task step to pull or push container images to another registry.

Neste artigo, você aprenderá a usar o CLI do Azure para habilitar uma identidade gerenciada atribuída pelo usuário ou pelo sistema em uma tarefa ACR.In this article, you learn how to use the Azure CLI to enable a user-assigned or system-assigned managed identity on an ACR task. Você pode usar o Azure Cloud Shell ou uma instalação local do CLI do Azure.You can use the Azure Cloud Shell or a local installation of the Azure CLI. Se você quiser usá-lo localmente, a versão 2.0.68 ou posterior será necessária.If you'd like to use it locally, version 2.0.68 or later is required. Execute az --version para encontrar a versão.Run az --version to find the version. Se você precisa instalar ou fazer upgrade, veja Instalar a CLI do Azure.If you need to install or upgrade, see Install Azure CLI.

Para cenários para acessar recursos protegidos de uma tarefa ACR usando uma identidade gerenciada, consulte:For scenarios to access secured resources from an ACR task using a managed identity, see:

Por que usar uma identidade gerenciada?Why use a managed identity?

Uma identidade gerenciada para recursos do Azure fornece serviços do Azure selecionados com uma identidade gerenciada automaticamente no Azure Active Directory (Azure AD).A managed identity for Azure resources provides selected Azure services with an automatically managed identity in Azure Active Directory (Azure AD). Você pode 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.You can configure an ACR task with a managed identity so that the task can access other secured Azure resources, without passing credentials in the task steps.

Identidades gerenciadas são de dois tipos:Managed identities are of two types:

  • Identidades atribuídas pelo usuário, que você pode atribuir a vários recursos e manter o tempo que desejar.User-assigned identities, which you can assign to multiple resources and persist for as long as you want. As identidades atribuídas pelo usuário estão atualmente em pré-visualização.User-assigned identities are currently in preview.

  • Uma identidade atribuída pelo sistema, que é exclusiva para um recurso específico, como uma tarefa ACR, e dura o tempo de vida desse recurso.A system-assigned identity, which is unique to a specific resource such as an ACR task and lasts for the lifetime of that resource.

Você pode habilitar um ou ambos os tipos de identidade em uma tarefa ACR.You can enable either or both types of identity in an ACR task. Conceda acesso de identidade a outro recurso, assim como qualquer entidade de segurança.Grant the identity access to another resource, just like any security principal. Quando a tarefa é executada, ela usa a identidade para acessar o recurso em qualquer etapa de tarefa que exija acesso.When the task runs, it uses the identity to access the resource in any task steps that require access.

Etapas para usar uma identidade gerenciadaSteps to use a managed identity

Siga estas etapas de alto nível para usar uma identidade gerenciada com uma tarefa ACR.Follow these high-level steps to use a managed identity with an ACR task.

1. (opcional) criar uma identidade atribuída pelo usuário1. (Optional) Create a user-assigned identity

Se você planeja usar uma identidade atribuída pelo usuário, você pode usar uma identidade existente.If you plan to use a user-assigned identity, you can use an existing identity. Ou crie a identidade usando o CLI do Azure ou outras ferramentas do Azure.Or, create the identity using the Azure CLI or other Azure tools. Por exemplo, use o comando AZ Identity Create .For example, use the az identity create command.

Se você planeja usar apenas uma identidade atribuída pelo sistema, ignore esta etapa.If you plan to use only a system-assigned identity, skip this step. Você pode criar uma identidade atribuída pelo sistema ao criar a tarefa ACR.You can create a system-assigned identity when you create the ACR task.

2. habilitar a identidade em uma tarefa ACR2. Enable identity on an ACR task

Ao criar uma tarefa ACR, opcionalmente, habilite uma identidade atribuída pelo usuário, uma identidade atribuída pelo sistema ou ambas.When you create an ACR task, optionally enable a user-assigned identity, a system-assigned identity, or both. Por exemplo, passe o parâmetro --assign-identity ao executar o comando AZ ACR Task Create no CLI do Azure.For example, pass the --assign-identity parameter when you run the az acr task create command in the Azure CLI.

Para habilitar uma identidade atribuída pelo sistema, passe --assign-identity sem valor ou assign-identity [system].To enable a system-assigned identity, pass --assign-identity with no value or assign-identity [system]. O comando a seguir cria uma tarefa do Linux de um repositório GitHub público que cria a imagem hello-world com um gatilho de confirmação git e com uma identidade gerenciada atribuída pelo sistema:The following command creates a Linux task from a public GitHub repository which builds the hello-world image with a Git commit trigger and with a system-assigned managed identity:

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 \
    --file Dockerfile \
    --assign-identity

Para habilitar uma identidade atribuída pelo usuário, passe --assign-identity com um valor da ID de recurso da identidade.To enable a user-assigned identity, pass --assign-identity with a value of the resource ID of the identity. O comando a seguir cria uma tarefa do Linux de um repositório GitHub público que cria a imagem hello-world com um gatilho de confirmação git e com uma identidade gerenciada atribuída pelo usuário:The following command creates a Linux task from a public GitHub repository which builds the hello-world image with a Git commit trigger and with a user-assigned managed identity:

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 \
    --file Dockerfile \
    --assign-identity <resourceID>

Você pode obter a ID de recurso da identidade executando o comando AZ Identity show .You can get the resource ID of the identity by running the az identity show command. A ID de recurso para a ID myUserAssignedIdentity no grupo de recursos MyResource Group está no formato.The resource ID for the ID myUserAssignedIdentity in resource group myResourceGroup is of the form.

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

3. conceder as permissões de identidade para acessar outros recursos do Azure3. Grant the identity permissions to access other Azure resources

Dependendo dos requisitos da sua tarefa, conceda permissões de identidade para acessar outros recursos do Azure.Depending on the requirements of your task, grant the identity permissions to access other Azure resources. Alguns exemplos incluem:Examples include:

  • Atribua a identidade gerenciada uma função com pull, push e pull ou outras permissões a um registro de contêiner de destino no Azure.Assign the managed identity a role with pull, push and pull, or other permissions to a target container registry in Azure. Para obter uma lista completa de funções de registro, consulte funções e permissões do registro de contêiner do Azure.For a complete list of registry roles, see Azure Container Registry roles and permissions.
  • Atribua à identidade gerenciada uma função para ler segredos em um cofre de chaves do Azure.Assign the managed identity a role to read secrets in an Azure key vault.

Use o CLI do Azure ou outras ferramentas do Azure para gerenciar o acesso baseado em função aos recursos.Use the Azure CLI or other Azure tools to manage role-based access to resources. Por exemplo, execute o comando AZ role Assignment Create para atribuir a identidade uma função à identidade.For example, run the az role assignment create command to assign the identity a role to the identity.

O exemplo a seguir atribui uma identidade gerenciada às permissões para efetuar pull de um registro de contêiner.The following example assigns a managed identity the permissions to pull from a container registry. O comando especifica a ID da entidade de serviço da identidade e a ID de recurso do registro de destino.The command specifies the service principal ID of the identity and the resource ID of the target registry.

az role assignment create --assignee <servicePrincipalID> --scope <registryID> --role acrpull

4. (opcional) adicionar credenciais à tarefa4. (Optional) Add credentials to the task

Se sua tarefa efetua pull ou envia imagens por push para outro registro de contêiner do Azure, adicione as credenciais à tarefa para que a identidade seja autenticada.If your task pulls or pushes images to another Azure container registry, add credentials to the task for the identity to authenticate. Execute o comando AZ ACR Task Credential Add e passe o parâmetro --use-identity para adicionar as credenciais da identidade à tarefa.Run the az acr task credential add command and pass the --use-identity parameter to add the identity's credentials to the task.

Por exemplo, para adicionar credenciais para uma identidade atribuída pelo sistema para autenticar com o registro targetregistry, passe use-identity [system]:For example, to add credentials for a system-assigned identity to authenticate with the registry targetregistry, pass 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.To add credentials for a user-assigned identity to authenticate with the registry targetregistry, pass use-identity with a value of the client ID of the identity. Por exemplo:For example:

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

Você pode obter a ID do cliente da identidade executando o comando AZ Identity show .You can get the client ID of the identity by running the az identity show command. A ID do cliente é um GUID do formulário xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.The client ID is a GUID of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Próximas etapasNext steps

Neste artigo, você aprendeu como habilitar e usar uma identidade gerenciada atribuída pelo usuário ou pelo sistema em uma tarefa ACR.In this article, you learned how to enable and use a user-assigned or system-assigned managed identity on an ACR task. Para cenários para acessar recursos protegidos de uma tarefa ACR usando uma identidade gerenciada, consulte:For scenarios to access secured resources from an ACR task using a managed identity, see: