Uso de una identidad administrada de Azure en ACR TasksUse an Azure-managed identity in ACR Tasks

Habilite una identidad administrada para recursos de Azure en una tarea de ACR, con el fin de que la tarea pueda acceder a otros recursos de Azure sin necesidad de proporcionar o administrar credenciales.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 ejemplo, use una identidad administrada para habilitar un paso de una tarea para extraer o insertar imágenes en otro registro.For example, use a managed identity to enable a task step to pull or push container images to another registry.

En este artículo, aprenderá a usar el CLI de Azure para habilitar una identidad administrada asignada por el usuario o asignada por el sistema en una tarea de 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. Puede usar Azure Cloud Shell o una instalación local de la CLI de Azure.You can use the Azure Cloud Shell or a local installation of the Azure CLI. Si desea usarlo de forma local, se requiere la versión 2.0.68 o cualquier versión posterior.If you'd like to use it locally, version 2.0.68 or later is required. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.If you need to install or upgrade, see Install Azure CLI.

Con fines ilustrativos, los comandos de ejemplo de este artículo usan az acr task create para crear una tarea de compilación de imágenes básica que habilite una identidad administrada.For illustration purposes, the example commands in this article use az acr task create to create a basic image build task that enables a managed identity. Para ver escenarios de muestra en los que se accede a recursos protegidos desde una tarea de ACR mediante una identidad administrada, consulte:For sample scenarios to access secured resources from an ACR task using a managed identity, see:

¿Por qué usar una identidad administrada?Why use a managed identity?

Una identidad administrada para recursos de Azure proporciona a determinados servicios de Azure una identidad administrada automáticamente en Azure Active Directory.A managed identity for Azure resources provides selected Azure services with an automatically managed identity in Azure Active Directory. Puede configurar una tarea de ACR con una identidad administrada, con el fin de que la tarea pueda acceder a otros recursos de Azure protegidos, sin pasar credenciales en los pasos de la tarea.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.

Las identidades administradas son de dos tipos:Managed identities are of two types:

  • Las identidades asignadas por el usuario, que puede asignar a varios recursos y conservar durante tanto tiempo como necesite.User-assigned identities, which you can assign to multiple resources and persist for as long as you want. Las identidades asignadas por el usuario están actualmente en versión preliminar.User-assigned identities are currently in preview.

  • Una identidad administrada por el sistema, que es única para un recurso especifico, como una tarea de ACR, y dura toda la vigencia del 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.

Puede habilitar uno de los dos tipos de identidad, o ambos, en una tarea de ACR.You can enable either or both types of identity in an ACR task. Conceda a la identidad acceso a otro recurso, igual que cualquier entidad de seguridad.Grant the identity access to another resource, just like any security principal. Cuando la tarea se ejecuta, usa la identidad para acceder al recurso en los pasos de la tarea que requieran acceso.When the task runs, it uses the identity to access the resource in any task steps that require access.

Pasos para usar una identidad administradaSteps to use a managed identity

Siga estos pasos de alto nivel para usar una identidad administrada con una tarea de ACR.Follow these high-level steps to use a managed identity with an ACR task.

1. (Opcional) Creación de una identidad asignada por el usuario1. (Optional) Create a user-assigned identity

Si tiene previsto usar una identidad asignada por el usuario, use una identidad existente o créela mediante la CLI de Azure u otras herramientas de Azure.If you plan to use a user-assigned identity, use an existing identity, or create the identity using the Azure CLI or other Azure tools. Por ejemplo, use el comando az identity create.For example, use the az identity create command.

Si planea usar solo una identidad asignada por el sistema, omita este paso.If you plan to use only a system-assigned identity, skip this step. Al crear la tarea de ACR, puede crear también una identidad asignada por el sistema.You create a system-assigned identity when you create the ACR task.

2. Habilitación de la identidad en una tarea de ACR2. Enable identity on an ACR task

Al crear una tarea de ACR, tiene la opción de habilitar una identidad asignada por el usuario o una identidad asignada por el sistema, o ambas.When you create an ACR task, optionally enable a user-assigned identity, a system-assigned identity, or both. Por ejemplo, pase el parámetro --assign-identity al ejecutar el comando az acr task create en la CLI de Azure.For example, pass the --assign-identity parameter when you run the az acr task create command in the Azure CLI.

Para habilitar una identidad asignada por el sistema, pase --assign-identity sin ningún o assign-identity [system].To enable a system-assigned identity, pass --assign-identity with no value or assign-identity [system]. El siguiente comando de ejemplo crea una tarea de Linux desde un repositorio de GitHub público que compila la imagen hello-world y habilita una identidad administrada asignada por el sistema:The following example command creates a Linux task from a public GitHub repository which builds the hello-world image and enables 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 \
    --commit-trigger-enabled false \
    --assign-identity

Para habilitar una identidad asignada por el usuario, pase --assign-identity con un valor del Id. de recurso de la identidad.To enable a user-assigned identity, pass --assign-identity with a value of the resource ID of the identity. El siguiente comando de ejemplo crea una tarea de Linux desde un repositorio de GitHub público que compila la imagen hello-world y habilita una identidad administrada asignada por el usuario:The following example command creates a Linux task from a public GitHub repository which builds the hello-world image and enables 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 \
    --commit-trigger-enabled false
    --assign-identity <resourceID>

Para obtener el Id. de recurso de la identidad, ejecute el comando az Identity show.You can get the resource ID of the identity by running the az identity show command. El identificador de recurso del identificador myUserAssignedIdentity del grupo de recursos myResourceGroup tiene el 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. Concesión de los permisos de identidad para acceder a otros recursos de Azure3. Grant the identity permissions to access other Azure resources

En función de los requisitos de la tarea, conceda los permisos de identidad necesarios para acceder a otros recursos de Azure.Depending on the requirements of your task, grant the identity permissions to access other Azure resources. Algunos ejemplos son:Examples include:

  • Asigne a la identidad administrada un rol con permisos de extracción, de inserción y extracción o de otro tipo en un registro de contenedor destino de Azure.Assign the managed identity a role with pull, push and pull, or other permissions to a target container registry in Azure. Para obtener una lista completa de los roles de registros, consulte Roles y permisos de Azure Container Registry.For a complete list of registry roles, see Azure Container Registry roles and permissions.
  • Asigne a la identidad administrada un rol para leer secretos en Azure Key Vault.Assign the managed identity a role to read secrets in an Azure key vault.

Use la CLI de Azure o cualquier otra herramientas de Azure para administrar el acceso basado en roles a los recursos.Use the Azure CLI or other Azure tools to manage role-based access to resources. Por ejemplo, ejecute el comando az role assignment create para asignar un rol al recurso.For example, run the az role assignment create command to assign the identity a role to the resource.

En el ejemplo siguiente se asignan a una identidad administrada los permisos necesarios para extraer de un registro de contenedor.The following example assigns a managed identity the permissions to pull from a container registry. El comando especifica el id. de la entidad de servicio de la identidad de la tarea y el identificador de recurso del registro de destino.The command specifies the principal ID of the task identity and the resource ID of the target registry.

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

4. (Opcional) Incorporación de credenciales a la tarea4. (Optional) Add credentials to the task

Si la tarea necesita credenciales para extraer imágenes de otro registro personalizado o para insertarlas, o para acceder a otros recursos, agregue credenciales a la tarea.If your task needs credentials to pull or push images to another custom registry, or to access other resources, add credentials to the task. Ejecute el comando az acr task credential add para agregar credenciales y pase el parámetro --use-identity para indicar que la identidad puede acceder a ellas.Run the az acr task credential add command to add credentials, and pass the --use-identity parameter to indicate that the identity can access the credentials.

Por ejemplo, para agregar credenciales para que una identidad asignada por el sistema se autentique en el registro de contenedor de Azure targetregistry , pase use-identity [system]:For example, to add credentials for a system-assigned identity to authenticate with the Azure container registry targetregistry, pass use-identity [system]:

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

Para agregar credenciales para que una identidad asignada por el usuario se autentique en el registro targetregistry pase use-identity con un valor del Id. de cliente de la identidad.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 ejemplo:For example:

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

Para obtener el Id. de cliente de la identidad, ejecute el comando az identity show.You can get the client ID of the identity by running the az identity show command. El Id. de cliente es un GUID con el formatoxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.The client ID is a GUID of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

5. Ejecución de la tarea5. Run the task

Después de configurar una tarea con una identidad administrada, ejecute la tarea.After configuring a task with a managed identity, run the task. Por ejemplo, para probar una de las tareas creadas en este artículo, debe desencadenarla manualmente mediante el comando az acr task run.For example, to test one of the tasks created in this article, manually trigger it using the az acr task run command. Si configuró más desencadenadores de tareas automatizados, la tarea se ejecutará cuando se desencadene automáticamente.If you configured additional, automated task triggers, the task runs when automatically triggered.

Pasos siguientesNext steps

En este artículo, ha aprendido a habilitar y usar una identidad administrada asignada por el usuario o asignada por el sistema en una tarea de ACR.In this article, you learned how to enable and use a user-assigned or system-assigned managed identity on an ACR task. Para ver escenarios en los que se accede a recursos protegidos desde una tarea de ACR mediante una identidad administrada, consulte:For scenarios to access secured resources from an ACR task using a managed identity, see: