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 en un grupo de lotes. En el artículo se describe cuándo debe configurar identidades administradas en una cuenta por lotes frente a un grupo de lotes. También se describen diferentes escenarios de comportamiento, ya que el uso de identidad administrada 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 quiere configurar identidades administradas en la cuenta de batch, primero debe configurar la cuenta de almacenamiento para que se use como el autotorage de la cuenta por lotes. Este autotorage se usa para almacenar los paquetes de aplicación y los archivos de recursos de tareas. Para configurar el almacenamiento automático, debe vincular la cuenta de almacenamiento a la cuenta de batch. También debe 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 Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas por lotes, seleccione el nombre de la cuenta por lotes.
En el panel de navegación de la cuenta por lotes, 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.
Después de terminar 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 la interacción entre los nodos por lotes 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 por lotes, se concede permiso para que la cuenta de lote se autentique solo en otros servicios. Esta configuración no permite autenticarse en nodos por lotes ni en máquinas virtuales (VM) del grupo de lotes.
Tiene dos opciones al configurar la identidad administrada en la cuenta por lotes: habilite la identidad administrada asignada por el sistema o cree una identidad administrada asignada por el usuario independiente para la cuenta por lotes.
Para configurar la identidad administrada en la cuenta de batch, siga estos pasos:
En Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas por lotes, seleccione el nombre de la cuenta por lotes.
En el panel de navegación de la cuenta por lotes, busque el encabezado Configuración y, a continuación, seleccione Identidad.
En el encabezado Tipo de identidad, seleccione Asignado por el sistema (para una identidad administrada asignada por el sistema) o Asignado por el usuario (para una identidad administrada asignada por el usuario).
Después de finalizar esta configuración, vuelva a la página de información general de la cuenta por lotes. 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 autotorage
La característica de identidad administrada de la cuenta de batch se usará para determinadas tareas, como cargar un paquete de aplicación en la cuenta de batch. Para cargar el paquete de aplicación, vaya a la página de información general de la cuenta por lotes en Azure Portal, seleccione Agregar aplicaciones> y siga las instrucciones del portal para completar la carga. Azure Batch almacena el paquete de aplicación en su cuenta de autotorage. Dado que anteriormente estableció el modo de autenticación de la cuenta por lotes en Identidad administrada de la cuenta de Batch, el sistema recupera la credencial de la identidad administrada de la cuenta de batch 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 Azure Portal, busque y seleccione Cuentas de almacenamiento.
En la lista de cuentas de almacenamiento, seleccione el nombre de la cuenta de autotorage.
En el panel de navegación de la cuenta de almacenamiento, seleccione Control de acceso (IAM) .
En la página Control de acceso (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 tiene permisos suficientes para cargar un paquete de aplicación. Si no hay una asignación de roles de este tipo, aparece el siguiente mensaje de error en las notificaciones de Azure Portal al intentar cargar el paquete de aplicación en la cuenta por lotes:
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 HTTP Archive (.har) de la solicitud de carga. Habrá una solicitud POST que contenga 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 por lotes. 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 por lotes no tiene permiso suficiente 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 instancia de Azure Key Vault, 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 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 por lotes).
Si quiere permitir que los nodos de Azure Batch 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 la cuenta de Batch, los nodos de Azure Batch reciben los tokens de identidad administrada. Los nodos usan los tokens de identidad administrada para autenticarse mediante la autenticación de Microsoft Entra mediante Azure Instance Metadata Service (IMDS).
El grupo de Azure Batch 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 tiene acceso a la cuenta de almacenamiento automático
En el caso de la identidad asignada por el usuario que usan los nodos de proceso para acceder a la escalabilidad automática, 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 de . Cuenta de Batch: actualizar AutoStorageBaseProperties, en la nodeIdentityReference
propiedad ). Por lo tanto, debe configurar la referencia de identidad de nodo en dos lugares en Azure Portal:
Referencia de identidad del nodo en la cuenta de almacenamiento automático de la cuenta por lotes
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, el 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 del nodo de la cuenta de almacenamiento automático
Para configurar la referencia de identidad del nodo en la cuenta de autotorage, siga estos pasos:
En Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas por lotes, seleccione el nombre de la cuenta por lotes.
En el panel de navegación de la cuenta por lotes, 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 De referencia de identidad del nodo y 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 Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas por lotes, seleccione el nombre de la cuenta por lotes.
En el panel de navegación de la cuenta por lotes, busque el encabezado Características y, a continuación, seleccione Grupos.
En la página 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 para la identidad administrada en un nodo por lotes
Puede usar la identidad administrada dentro de un nodo por lotes de maneras diferentes, como para las siguientes características:
- Descarga de paquetes de aplicación desde un grupo de lotes
- Descarga de archivos de recursos de tareas 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 autotorage e 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 por lotes 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 da 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ó mediante la misma identidad administrada o una identidad administrada diferente
En Azure Portal, puede encontrar los estados de descarga del nodo y del paquete 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 paquetes de aplicación e identidad administrada dentro de un grupo de lotes.
Número de escenario | Uso de la identidad administrada | Permisos de identidad administrada en la cuenta de autotorage | Especificación de creación de grupos | Estado del nodo | Estado de descarga del paquete |
---|---|---|---|---|---|
1 | Dado en la referencia de identidad del nodo | Permisos suficientes | Creado en el grupo mediante la misma identidad administrada | Iniciado correctamente | Descargado en el nodo en el directorio raíz o aplicaciones |
2 | Dado en la referencia de identidad del 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 proporcionan en la referencia de identidad del nodo | Permisos suficientes o insuficientes | Creado en el grupo mediante la misma identidad administrada o otra | Bloqueado indefinidamente en el estado Starting | No descargado en el nodo |
4 | Dado en la referencia de identidad del 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 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, después, 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 todavía, 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 del 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.
Se produjo 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 tareas 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 autotorage antes de ejecutar el comando de tarea. Para más información, consulte Tareas en Azure Batch. Para especificar archivos de recursos de tareas, siga estos pasos:
En Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas por lotes, seleccione el nombre de la cuenta por lotes.
En el panel de navegación de la cuenta por lotes, busque el encabezado Características y seleccione Trabajos.
En la página Trabajos , seleccione Agregar.
Rellene los campos obligatorios 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 obligatorios. 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 autotorage | La referencia de identidad aparece como None y no se puede modificar. El nodo accede a la cuenta de autotorage 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 han configurado 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 autotorage, la identidad debe definirse tanto en la referencia de identidad del nodo como en la identidad del grupo.
Al especificar 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 blobs. 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 recursos | Valor | Prefijo de blob | Ruta de acceso del archivo | Modo de archivo (solo Linux) | Referencia de identidad |
---|---|---|---|---|---|
AutoStorageContainerName | <name-of-app> | 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 al usar la identidad administrada para crear un grupo de lotes y, a continuación, crear una tarea que tenga archivos de recursos para recuperar un blob de un contenedor de almacenamiento automático.
Número de escenario | Uso de la identidad administrada | Permisos de identidad administrada en la cuenta de autotorage | Especificación de creación de grupos | Resultado |
---|---|---|---|---|
1 | Dado en la referencia de identidad del nodo | Permisos suficientes | Creado en el grupo mediante la misma identidad administrada | El archivo de blob se descarga correctamente en el nodo en el directorio root/wd/<file-path> , como se muestra en la página de información general de la tarea. |
2 | Dado en la referencia de identidad del nodo | Permisos insuficientes | Creado en el grupo mediante la misma identidad administrada | Error de tarea debido a un error ResourceContainerAccessDenied , mensaje de error "Acceso para uno de los contenedores de blobs de Azure especificados se deniega". |
3 | No se proporcionan en la referencia de identidad del nodo | Permisos suficientes o insuficientes | Creado en el grupo mediante la misma identidad administrada o otra | Error de tarea debido a un error ResourceContainerAccessDenied , mensaje de error "Acceso para uno de los contenedores de blobs de Azure especificados se deniega". |
4 | Dado en la referencia de identidad del nodo | Permisos suficientes o insuficientes | Creado en el grupo mediante una identidad administrada diferente | Error de 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 Azure Portal y 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, el error ResourceContainerListMiscError produce un error 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 asignada a un nodo de 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 Azure Instance Metadata Service (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 en 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 Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas por lotes, seleccione el nombre de la cuenta por lotes.
En el panel de navegación de la cuenta por lotes, 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 siguientes propiedades: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 larga, 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 autotorage. En este ejemplo, la identidad administrada no tiene permiso para acceder al almacenamiento. Por lo tanto, la cuenta de autotorage responde devolviendo un error HTTP 403 (error AuthorizationPermissionMismatch, mensaje "Esta solicitud no está autorizada para realizar esta operación mediante este permiso").
Nota:
El encabezado x-ms-version es necesario para recuperar el blob. Para más información, consulte Obtención de Blob API de Azure Storage.
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. Esta información de contacto puede cambiar sin previo aviso. 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.