Uso de identidades administradas en una cuenta o grupo de Azure Batch
En este artículo se explica cómo usar identidades administradas en una cuenta de Microsoft Azure Batch o un grupo de lotes. En el artículo se describe cuándo debe configurar las identidades administradas en una cuenta de lote frente a un grupo de lotes. También describe diferentes escenarios de comportamiento, ya que el uso de identidades administradas puede causar confusión en algunas situaciones de error.
Requisitos previos
- Una cuenta de Azure Batch.
- Una cuenta de Azure Storage.
- Postman.
Configuración de la cuenta de almacenamiento para usarla con la cuenta de batch
Si desea configurar identidades administradas en la cuenta de batch, primero debe configurar la cuenta de almacenamiento para que se use como almacenamiento automático de la cuenta de batch. Este almacenamiento automático se usa para almacenar los paquetes de aplicación y los archivos de recursos de tarea. Para configurar el almacenamiento automático, debe vincular la cuenta de almacenamiento a la cuenta de batch. También tiene que establecer la cuenta de almacenamiento automático para usar identidades administradas de cuenta por lotes como modo de autenticación.
Para completar esta configuración, siga estos pasos:
En el Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas de lote, seleccione el nombre de la cuenta de lote.
En el panel de navegación de la cuenta de lote, busque el encabezado Configuración y, a continuación, seleccione Cuenta de almacenamiento.
En la sección INFORMACIÓN DE LA CUENTA DE ALMACENAMIENTO , seleccione Seleccionar una cuenta de almacenamiento.
Una vez que haya terminado de seleccionar la cuenta de almacenamiento, vuelva a la sección INFORMACIÓN DE LA CUENTA DE ALMACENAMIENTO y cambie el campo Modo de autenticación a Identidad administrada de la cuenta de Batch.
Configuración de la identidad administrada en la cuenta de batch
Nota:
La interacción que se describe en esta sección es entre una cuenta por lotes y Azure Storage o Azure Key Vault. Para obtener información sobre la interacción entre los nodos de batch y otros recursos de Azure, consulte la sección siguiente (Configuración de la identidad administrada en el grupo de lotes).
Al configurar la identidad administrada en una cuenta de lote, se concede permiso para que la cuenta de lote se autentique solo en otros servicios. Esta configuración no le permite autenticarse en nodos por lotes ni en máquinas virtuales (VM) de grupo de lotes.
Tiene dos opciones al configurar la identidad administrada en la cuenta de lote: habilitar la identidad administrada asignada por el sistema o crear una identidad administrada asignada por el usuario independiente para la cuenta de lote.
Para configurar la identidad administrada en la cuenta de batch, siga estos pasos:
En el Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas de lote, seleccione el nombre de la cuenta de lote.
En el panel de navegación de la cuenta de lote, busque el encabezado Configuración y, a continuación, seleccione Identidad.
En el encabezado Tipo de identidad , seleccione Sistema asignado (para una identidad administrada asignada por el sistema) o Usuario asignado (para una identidad administrada asignada por el usuario).
Una vez finalizada esta configuración, vuelva a la página de información general de la cuenta de batch. En la sección Essentials de la página, seleccione Vista JSON. La representación JSON de la identidad administrada aparecerá en uno de los siguientes formatos:
Identidad administrada asignada por el sistema
"identity": { "principalId": "<principal-guid>", "tenantId": "<tenant-guid>", "type": "SystemAssigned" }
Identidad administrada asignada por el usuario
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>": { "principalId": "<principal-guid>", "clientId": "<client-guid>" } } }
Uso de una identidad administrada para acceder a la cuenta de almacenamiento automático
La característica de identidad administrada de la cuenta de lote se usará para determinadas tareas, como cargar un paquete de aplicación en la cuenta de lote. Para cargar el paquete de aplicación, vaya a la página de información general de la cuenta de batch en el Azure Portal, seleccione Agregar aplicaciones> y, a continuación, siga las instrucciones del portal para completar la carga. Azure Batch almacena el paquete de aplicación en su cuenta de almacenamiento automático. Dado que anteriormente estableció el modo de autenticación de la cuenta por lotes en Identidad administrada de cuenta de Batch, el sistema recupera la credencial de la identidad administrada de la cuenta de lote para acceder a la cuenta de almacenamiento automático.
Es posible que tenga que comprobar si la identidad administrada tiene suficientes permisos en la cuenta de almacenamiento automático. Para comprobar estos permisos, siga estos pasos:
En el Azure Portal, busque y seleccione Cuentas de almacenamiento.
En la lista de cuentas de almacenamiento, seleccione el nombre de la cuenta de almacenamiento automático.
En el panel de navegación de la cuenta de almacenamiento, seleccione Access Control (IAM).
En la página Access Control (IAM), seleccione el botón Comprobar acceso.
En el panel Comprobar acceso , seleccione la opción Identidad administrada .
En el campo Identidad administrada , seleccione la identidad administrada para la que desea ver los permisos.
En la pestaña Asignaciones de roles actuales , compruebe si hay un rol asignado que tenga permisos suficientes para cargar un paquete de aplicación. Si no hay tal asignación de roles, aparece el siguiente mensaje de error en las notificaciones de Azure Portal al intentar cargar el paquete de aplicación en la cuenta de batch:
Error de carga del <nombre> del paquete.zip
La carga de archivos encontró un error inesperado durante la carga.
Si experimenta este error de carga, compruebe el archivo de archivo HTTP (.har) de la solicitud de carga. Habrá una solicitud POST que contiene un prefijo de nombre de batch
(por ejemplo, batch?api-version=2020-06-01
), y verá un estado HTTP de 200. En la carga, observará la solicitud PUT real que se envía a la cuenta de batch. La respuesta a la solicitud PUT mostrará un estado HTTP de 409. La respuesta de error completa será similar al texto siguiente:
{responses: [{name: "<response-guid>", httpStatusCode: 409,...}]}
{responses: [{name: "<response-guid>", httpStatusCode: 409,...}]}
0: {name: "<response-guid>", httpStatusCode, 409,...}
content: {error: {code: "AutoStorageNoPermission",...}}
error: {code: "AutoStorageNoPermission",...}
code: "AutoStorageNoPermission"
message: "The managed identity does not have permission to access auto storage account. Please use Azure RBAC to assign the managed identity access to auto storage."
target: "BatchAccount"
contentLength: 318
Este error significa que la identidad administrada asignada por el sistema o asignada por el usuario en la cuenta de batch no tiene suficiente permiso para realizar acciones en la cuenta de almacenamiento automático.
Uso de una identidad administrada para acceder al almacén de claves
Para obtener información sobre cómo usar una identidad administrada para acceder a una Key Vault de Azure, consulte Configuración de claves administradas por el cliente para la cuenta de Azure Batch con Azure Key Vault e Identidad administrada.
Configuración de la identidad administrada en el grupo de lotes
Nota:
La interacción que se describe en esta sección es entre un nodo por lotes y otros recursos de Azure. Para obtener información sobre la interacción entre una cuenta por lotes y Azure Storage o Azure Key Vault, consulte la sección anterior (Configuración de la identidad administrada en la cuenta de batch).
Si desea permitir que Azure Batch nodos accedan a otros recursos de Azure, use una identidad administrada configurada en el grupo de Azure Batch.
Si el modo de autenticación de la cuenta de almacenamiento automático se establece en Identidad administrada de cuenta de Batch, los nodos Azure Batch reciben los tokens de identidad administrada. Los nodos usan los tokens de identidad administrada para autenticarse a través de Microsoft Entra autenticación mediante el servicio de metadatos de instancia de Azure (IMDS).
El grupo de lotes de Azure solo admite la versión asignada por el usuario de la identidad administrada. Por lo tanto, tendrá que crear una identidad administrada asignada por el usuario en el mismo inquilino que la cuenta de Azure Batch. Además, tendrá que conceder permiso en el plano de datos de almacenamiento (por ejemplo, a través del propietario de datos de Storage Blob) a la identidad administrada asignada por el usuario.
Asociación de la identidad administrada al nodo que accede a la cuenta de almacenamiento automático
Para la identidad asignada por el usuario que los nodos de proceso usan para acceder al almacenamiento automático, debe asignar esta referencia de identidad a los grupos que tienen nodos de proceso que necesitan acceso al almacenamiento automático. (Los detalles sobre este requisito se describen en la API REST para la cuenta de Batch: AutoStorageBaseProperties de Update, en la nodeIdentityReference
propiedad ). Por lo tanto, debe configurar la referencia de identidad del nodo en dos lugares de la Azure Portal:
Referencia de identidad de Nodo en la cuenta de almacenamiento automático de la cuenta de batch
Identidad administrada asignada por el usuario en el grupo de lotes
Importante
Puede definir más de una identidad administrada asignada por el usuario en la identidad del grupo. Sin embargo, la que se define en la referencia de identidad del nodo también debe definirse en la identidad del grupo.
Configuración de la referencia de identidad de nodo de la cuenta de almacenamiento automático
Para configurar la referencia de identidad de nodo en la cuenta de almacenamiento automático, siga estos pasos:
En el Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas de lote, seleccione el nombre de la cuenta de lote.
En el panel de navegación de la cuenta de lote, busque el encabezado Configuración y, a continuación, seleccione Cuenta de almacenamiento.
En la sección INFORMACIÓN DE LA CUENTA DE ALMACENAMIENTO , seleccione Seleccionar una cuenta de almacenamiento y, a continuación, seleccione la cuenta de almacenamiento automático.
Vaya al encabezado Referencia de identidad de nodo y, a continuación, seleccione Agregar.
Complete el proceso para agregar la nueva referencia de identidad de nodo asignada por el usuario.
Configuración de la identidad administrada asignada por el usuario del grupo de lotes
Para configurar la identidad administrada asignada por el usuario en el grupo de lotes, siga estos pasos:
En el Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas de lote, seleccione el nombre de la cuenta de lote.
En el panel de navegación de la cuenta de lote, busque el encabezado Características y, a continuación, seleccione Grupos.
En la página del grupo de lotes, seleccione Agregar.
En la página Agregar grupo , escriba un identificador de grupo. En el campo Identidad , seleccione Usuario asignado.
Busque el encabezado Identidad administrada asignada por el usuario y, a continuación, seleccione Agregar.
Complete el proceso para agregar la referencia de identidad de nodo que creó anteriormente al grupo de lotes.
Casos de uso de identidad administrada en un nodo por lotes
Puede usar la identidad administrada dentro de un nodo por lotes de diferentes maneras, como para las características siguientes:
- Descarga de paquetes de aplicación desde un grupo de lotes
- Descarga de archivos de recursos de tarea desde un grupo de lotes
Descarga de paquetes de aplicación desde un grupo de lotes
Al crear un grupo de lotes, puede especificar paquetes de aplicación en el nivel de grupo. Los paquetes de aplicación se descargarán de la cuenta de almacenamiento automático y se instalarán en todos los nodos de este grupo. Para obtener más información, consulte Carga y administración de aplicaciones. Cargue los paquetes de aplicación en la cuenta de batch antes de hacer referencia a ellos durante la creación del grupo de lotes. Para agregar paquetes de aplicación al grupo de lotes, vaya a la página Agregar grupo de la cuenta de batch, busque el encabezado CONFIGURACIÓN OPCIONAL y, a continuación, seleccione Paquetes de aplicación.
Escenarios de comportamiento
En esta sección se describe el estado operativo del nodo y el estado de la descarga del paquete de aplicación para los siguientes parámetros de identidad administrada:
Si la identidad administrada se especifica en la referencia de identidad del nodo
Si la identidad administrada tiene permisos suficientes en la cuenta de almacenamiento automático
Si el grupo de lotes se creó con la misma identidad administrada o una identidad administrada diferente
En el Azure Portal, puede encontrar los estados de descarga de paquetes y nodos en la página de información general del nodo por lotes. Para llegar a esta página, busque el encabezado General del panel de navegación del grupo de lotes, seleccione Nodos y, a continuación, seleccione el nombre del nodo que desea ver.
En la tabla siguiente se describen cuatro escenarios de comportamiento que implican la identidad administrada y los paquetes de aplicación dentro de un grupo de lotes.
Número de escenario | Uso de identidad administrada | Permisos de identidad administrada en la cuenta de almacenamiento automático | Especificación de creación de grupos | Estado del nodo | Estado de descarga del paquete |
---|---|---|---|---|---|
1 | Se indica en la referencia de identidad de nodo | Permisos suficientes | Creado en el grupo mediante la misma identidad administrada | Iniciado correctamente | Descargado en el nodo en el directorio raíz/aplicaciones |
2 | Se indica en la referencia de identidad de nodo | Permisos insuficientes | Creado en el grupo mediante la misma identidad administrada | Se inició correctamente, pero en estado inactivo | No descargado en el nodo |
3 | No se especifica en la referencia de identidad de nodo | Permisos suficientes o insuficientes | Creado en el grupo mediante la misma identidad administrada o otra | Bloqueado indefinidamente en el estado De inicio | No descargado en el nodo |
4 | Se indica en la referencia de identidad de nodo | Permisos suficientes o insuficientes | Creado en el grupo mediante una identidad administrada diferente | Estado inutilizable | No descargado en el nodo |
En el escenario 3, cuando el servicio Azure Batch intenta iniciar el nodo, la referencia de identidad del nodo se convierte en null. Esto hace que el nodo permanezca bloqueado en un estado De inicio . Para comprobar este estado, vaya a la página Información general del nodo del grupo de lotes y, a continuación, seleccione Cargar registros por lotes para cargar los registros por lotes en un contenedor de almacenamiento. En el panel Cargar registros por lotes , seleccione el contenedor de Azure Storage, seleccione el botón Seleccionar contenedor de almacenamiento y, a continuación, seleccione y descargue el archivo agent-debug.log del contenedor de almacenamiento. El archivo de registro contendrá varias entradas que tienen el mensaje "pool not fully joined yet, health=Status.TvmJoinPoolInProgress".
En el escenario 4, puede definir más de una identidad administrada al crear el grupo de lotes. ¿Qué ocurre si la identidad administrada que define en la referencia de identidad de nodo no se agrega a la identidad del grupo? En ese caso, el servicio Azure Batch no puede encontrar la identidad administrada correcta que coincida con la definida en la referencia del nodo. En su lugar, el servicio mostrará el siguiente mensaje de error de nodo:
El nodo tiene 1 error(s).
Se encontró un error en el nodo
Código: ApplicationPackageError
Mensaje:
Uno o varios paquetes de aplicación especificados para el grupo no son válidos
Descarga de archivos de recursos de tarea desde un grupo de lotes
Mientras crea una tarea, puede especificar los archivos de recursos que se usarán en la tarea. Estos archivos se descargan automáticamente en el nodo desde la cuenta de almacenamiento automático antes de que se ejecute el comando de tarea. Para obtener más información, vea Tareas en Azure Batch. Para especificar archivos de recursos de tarea, siga estos pasos:
En el Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas de lote, seleccione el nombre de la cuenta de lote.
En el panel de navegación de la cuenta de lote, busque el encabezado Características y seleccione Trabajos.
En la página Trabajos , seleccione Agregar.
Rellene los campos necesarios en el panel Agregar trabajos y, a continuación, seleccione Aceptar.
En el panel de navegación del trabajo por lotes, busque el encabezado General y, a continuación, seleccione Tareas.
En la página Tareas , seleccione Agregar.
En el panel Agregar tareas , rellene los campos necesarios. A continuación, busque el encabezado CONFIGURACIÓN AVANZADA y seleccione Archivos de recursos.
Puede especificar los archivos de recursos mediante los métodos que se describen en la tabla siguiente.
Método | Notas |
---|---|
Contenedor de almacenamiento automático | La referencia de identidad aparece como Ninguno y no se puede modificar. El nodo accede a la cuenta de almacenamiento automático para recuperar archivos de recursos. |
Dirección URL del contenedor o dirección URL HTTP | Puede definir la dirección URL de otra cuenta de Azure Storage si se configuraron suficientes permisos en esa cuenta de Azure Storage para la referencia de identidad y la identidad se agregó al grupo de lotes. |
Si necesita acceso a la cuenta de almacenamiento automático, la identidad debe definirse tanto en la referencia de identidad del nodo como en la identidad del grupo.
Cuando se especifican las definiciones de archivo de recursos, los parámetros Prefijo de blob y Ruta de acceso de archivo son opcionales. El prefijo de blob se usa para filtrar blobs específicos. La ruta de acceso del archivo se usa para crear una subcarpeta en el nodo para almacenar los archivos de blob. Si no se define la ruta de acceso del archivo, los archivos se almacenarán en la ruta de acceso para cada tarea (root/wd).
Tipo de archivo de recurso | Valor | Prefijo de blob | Ruta de acceso de archivo | Modo de archivo (solo Linux) | Referencia de identidad |
---|---|---|---|---|---|
AutoStorageContainerName | <nombre de la aplicación> | mypath1 | |||
StorageContainerUrl | <https:// account-name.blob.core.windows.net/con> | mypath2 | /subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name> | ||
HttpUrl | <https:// account-name.blob.core.windows.net/con/api.crt> | mypath3 | /subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name> |
Escenarios de comportamiento
En la tabla siguiente se describen cuatro escenarios de comportamiento que pueden producirse cuando se usa la identidad administrada para crear un grupo de lotes y, a continuación, se crea una tarea que tiene archivos de recursos para recuperar un blob de un contenedor de almacenamiento automático.
Número de escenario | Uso de identidad administrada | Permisos de identidad administrada en la cuenta de almacenamiento automático | Especificación de creación de grupos | Resultado |
---|---|---|---|---|
1 | Se indica en la referencia de identidad de nodo | Permisos suficientes | Creado en el grupo mediante la misma identidad administrada | El archivo de blob se descarga correctamente en el nodo del directorio root/wd/<file-path> , como se muestra en la página de información general de la tarea. |
2 | Se indica en la referencia de identidad de nodo | Permisos insuficientes | Creado en el grupo mediante la misma identidad administrada | Se produce un error en la tarea debido a un error ResourceContainerAccessDenied , mensaje de error "Se deniega el acceso a uno de los contenedores de blobs de Azure especificados". |
3 | No se especifica en la referencia de identidad de nodo | Permisos suficientes o insuficientes | Creado en el grupo mediante la misma identidad administrada o otra | Se produce un error en la tarea debido a un error ResourceContainerAccessDenied , mensaje de error "Se deniega el acceso a uno de los contenedores de blobs de Azure especificados". |
4 | Se indica en la referencia de identidad de nodo | Permisos suficientes o insuficientes | Creado en el grupo mediante una identidad administrada diferente | Se produce un error en la tarea debido a un error ResourceContainerListMiscError , mensaje de error "Error varios encontrado al enumerar uno de los contenedores de blobs de Azure especificados". |
En escenarios en los que se produce un error en la tarea de recuperación de blobs, vaya a la página Tareas de la Azure Portal y, a continuación, seleccione el nombre de la tarea que aparece junto al código de error. A continuación, en el panel de navegación de la página de tareas, busque el encabezado General , seleccione Propiedades y, a continuación, seleccione Vista json. La presentación JSON de las propiedades mostrará el mensaje de error correspondiente y otros detalles sobre la tarea con errores. Por ejemplo, en el escenario 4, se produce un error ResourceContainerListMiscError debido a un error "Solicitud incorrecta HTTP 400". Esto se debe a que la identidad administrada definida en la referencia de identidad del nodo no coincide con ninguna de las identidades administradas definidas en la configuración de identidad del grupo.
Comprobación de que la identidad administrada puede acceder a los recursos de Azure
Para comprobar en Windows que una identidad administrada a la que se asigna un nodo Azure Batch tiene permisos suficientes para acceder a los recursos de Azure (como una cuenta de almacenamiento), siga estos pasos:
Nota:
Este procedimiento emula el último paso que debe realizar para obtener un token que tenga un identificador de identidad válido para acceder a la cuenta de almacenamiento y comprobar si hay permisos suficientes. Si la identidad no está definida en la referencia de identidad del nodo, el nodo no puede obtener el identificador de identidad. En ese caso, todo el proceso ya está bloqueado antes de poder ejecutar el último paso. Antes de realizar este procedimiento, compruebe que la identidad está definida en la referencia de identidad del nodo.
Use el Protocolo de Escritorio remoto (RDP) para conectarse al nodo.
En Postman, envíe una solicitud GET que contenga el
Metadata: true
encabezado a la siguiente dirección URL:http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01& resource=https://storage.azure.com/& mi_res_id=/subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>
La
169.254.169.254
dirección IP también se conoce como El servicio de metadatos de instancia de Azure (IMDS). IMDS proporciona información sobre la instancia de máquina virtual. Si tiene esta información de instancia de máquina virtual, puede usar la máquina virtual para solicitar tokens para la identidad administrada.El
mi_res_id
valor del parámetro de la dirección URL está en negrita. Este es el identificador de recurso de la identidad administrada asignada por el usuario que definió en la identidad del grupo. Para buscar ese identificador de recurso, junto con el identificador de cliente y el identificador de entidad de seguridad, siga estos pasos:En el Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas de lote, seleccione el nombre de la cuenta de lote.
En el panel de navegación de la cuenta de lote, busque el encabezado Características y, a continuación, seleccione Grupos.
En la lista de grupos de lotes, seleccione el nombre del grupo de lotes.
En el panel de navegación del grupo de lotes, busque el encabezado General y, a continuación, seleccione Propiedades.
En la página de propiedades del grupo, seleccione Vista Json.
En el texto JSON, busque la
identity
/userAssignedIdentities
lista. Para la identidad administrada asignada por el usuario que usa, copie los valores de las propiedades siguientes:resourceId
-
clientId
(un GUID) -
principalId
(un GUID)
Después de enviar la dirección URL en Postman, el cuerpo de la respuesta JSON contendrá entradas para
access_token
(una cadena de texto largo, también conocida como token de portador) yclient_id
(un GUID). Elclient_id
valor de respuesta debe coincidir con elclientId
valor que copió de la página de propiedades del grupo de lotes.Copie el token de portador completo y, a continuación, pruébelo en Postman recuperando el blob de la cuenta de almacenamiento automático. En este ejemplo, la identidad administrada no tiene permiso para acceder al almacenamiento. Por lo tanto, la cuenta de almacenamiento automático responde devolviendo un error HTTP 403 (error AuthorizationPermissionMismatch, mensaje "Esta solicitud no está autorizada para realizar esta operación con este permiso").
Nota:
El encabezado x-ms-version es necesario para recuperar el blob. Para obtener más información, consulte Azure Storage Get Blob API.
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.
Aviso de declinación de responsabilidades sobre la información de contacto de terceros
Microsoft proporciona información de contacto de otros proveedores para ayudarle a encontrar información adicional sobre este tema. Dicha información de contacto puede cambiar sin notificación previa. Microsoft no garantiza la precisión de esta información de contacto de terceros.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.