Configuración de la identidad administrada para el Durable Task Scheduler

Durable Task Scheduler usa la identidad administrada para la autenticación. Puede usar una identidad administrada asignada por el usuario o asignada por el sistema . Se recomiendan identidades asignadas por el usuario porque no están vinculadas al ciclo de vida de la aplicación y se pueden reutilizar después de desaprovisionar la aplicación.

En este artículo se tratan dos maneras de configurar la identidad administrada:

  • Configuración rápida : un único comando de la CLI que automatiza la asignación de roles, los datos adjuntos de identidad y la configuración de variables de entorno.
  • Configuración manual : instrucciones paso a paso para el control total sobre cada paso de configuración.

Prerrequisitos

Roles RBAC del programador de tareas duraderas

Puede conceder los siguientes roles relacionados con el Programador de Tareas Duraderas a una identidad:

Función Descripción
Colaborador de datos de Durable Task Rol para todas las operaciones de acceso a datos. Este rol es un superconjunto de todos los demás roles.
Trabajador de Tareas Duraderas Rol usado por las aplicaciones de trabajo para interactuar con el Programador de tareas duraderas. Asigne este rol en caso de que la aplicación se use solo para procesar orquestaciones, actividades y entidades.
Lector de datos de Durable Task Rol para leer todos los datos del Programador de tareas duraderas. Asigne este rol si solo necesita enumerar orquestaciones y leer cargas de entidad.

Nota:

La mayoría de las aplicaciones requieren el rol de Colaborador de Datos de Durable Task.

Configuración rápida con az durabletask scheduler attach

El az durabletask scheduler attach comando automatiza la asignación de roles, los datos adjuntos de identidad y la configuración de variables de entorno en un solo comando.

En el ejemplo siguiente se asocia un programador a una aplicación de funciones mediante una identidad administrada asignada por el usuario con el rol Colaborador de datos de tareas duraderas :

az durabletask scheduler attach \
  --resource-group RESOURCE_GROUP_NAME \
  --name SCHEDULER_NAME \
  --task-hub-name TASKHUB_NAME \
  --role-type contributor \
  --target /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/FUNCTION_APP_NAME \
  --identity /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME

Para una aplicación de contenedor:

az durabletask scheduler attach \
  --resource-group RESOURCE_GROUP_NAME \
  --name SCHEDULER_NAME \
  --task-hub-name TASKHUB_NAME \
  --role-type contributor \
  --target /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.App/containerApps/CONTAINER_APP_NAME \
  --identity /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME

Nota:

Si omite el --identity parámetro , el comando usa la identidad administrada asignada por el sistema en su lugar.

Para obtener más información, consulte Asociación del programador de tareas duraderas de Azure.

Configuración manual

Si necesita un control pormenorizado sobre cada paso, siga las instrucciones manuales siguientes para asignar RBAC, adjuntar la identidad y configurar variables de entorno individualmente.

Asignación del control de acceso basado en rol (RBAC) a un recurso de identidad administrada

  1. Creación de una identidad administrada asignada por el usuario

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Establezca el usuario asignado en el recurso de identidad creado

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Establezca el ámbito. Use ambito de concentrador de tareas para acceso con privilegios mínimos. Use el ámbito del planificador solo si la identidad necesita acceso a todos los centros de tareas de un planificador.

    Ámbito del centro de tareas (recomendado)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/taskHubs/TASKHUB_NAME"
    

    Ámbito del planificador (todos los concentradores de tareas)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Conceder acceso. Ejecute el comando siguiente para crear la asignación de roles y conceder acceso.

    az role assignment create \
      --assignee "$assignee" \
      --role "Durable Task Data Contributor" \
      --scope "$scope"
    

    Salida prevista

    En el ejemplo de salida siguiente, se muestra una identidad de desarrollador asignada con el rol Colaborador de datos de tareas duraderas a nivel del programador:

    {
      "condition": null,
      "conditionVersion": null,
      "createdBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "createdOn": "2024-12-20T01:36:45.022356+00:00",
      "delegatedManagedIdentityResourceId": null,
      "description": null,
      "id": "/subscriptions/YOUR_SUBSCRIPTION_ID/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID",
      "name": "ROLE_ASSIGNMENT_ID",
      "principalId": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "principalName": "YOUR_EMAIL",
      "principalType": "User",
      "resourceGroup": "YOUR_RESOURCE_GROUP",
      "roleDefinitionId": "/subscriptions/YOUR_SUBSCRIPTION/providers/Microsoft.Authorization/roleDefinitions/ROLE_DEFINITION_ID",
      "roleDefinitionName": "Durable Task Data Contributor",
      "scope": "/subscriptions/YOUR_SUBSCRIPTION/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME",
      "type": "Microsoft.Authorization/roleAssignments",
      "updatedBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "updatedOn": "2024-12-20T01:36:45.022356+00:00"
    }
    

Nota:

En la siguiente instrucción se muestra una asignación de roles con ámbito de una central de tareas específica. Si necesita acceso a todos los centros de tareas de un programador, realice la asignación en el nivel del programador.

  1. Creación de una identidad administrada asignada por el usuario.

  2. Vaya al recurso Programador de tareas duraderas en el portal.

  3. Seleccione un nombre del centro de tareas.

  4. En el menú izquierdo, seleccione Control de acceso (IAM) .

  5. Seleccione Agregar para agregar una asignación de roles.

    Captura de pantalla de agregar la asignación de roles en el panel de control de acceso del portal.

  6. Busque y seleccione Colaborador de datos de Durable Task. Seleccione Siguiente.

    Recorte de pantalla de la selección de la asignación de roles Colaborador de datos de Durable Task en el portal.

  7. En la pestaña Miembros, para Asignar acceso a, seleccione Identidad administrada.

  8. En Miembros, seleccione + Seleccionar miembros.

  9. En el panel Seleccionar identidades administradas, expanda la lista desplegable Identidad administrada y seleccione Identidad administrada asignada por el usuario.

    Recorte de pantalla de la selección del tipo de identidad administrada asignada por el usuario que usará en el portal.

  10. Elija la identidad administrada por el usuario creada anteriormente y seleccione Seleccionar.

  11. Seleccione Revisar y asignar para terminar de asignar el rol.

Asignación de una identidad administrada a la aplicación

Ahora que la identidad tiene el RBAC necesario para acceder al Programador de tareas duraderas, debe asignarlo a la aplicación.

  1. Obtenga el identificador del recurso de la identidad administrada.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Asigne la identidad a la aplicación.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. En la aplicación del portal, seleccione Configuración>Identidad.

  2. Seleccione la pestaña Usuario asignado.

  3. Seleccione + Agregar y, a continuación, elija la identidad creada en la última sección. Selecciona Agregar.

    Captura de pantalla de la adición de la identidad administrada asignada por el usuario a la aplicación de funciones en el portal.

Adición de variables de entorno a la aplicación

Agregue las dos variables de entorno siguientes a la aplicación:

Variable del entorno Value Ejemplo
DURABLE_TASK_SCHEDULER_CONNECTION_STRING Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID> Endpoint=https://myscheduler.westus2.durabletask.io;Authentication=ManagedIdentity;ClientID=00000000-0000-0000-0000-000000000000
TASKHUB_NAME Nombre del centro de tareas my-task-hub

Nota:

Si usa identidad asignada por el sistema, omita el parámetro ClientID del cadena de conexión: "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity".

  1. Obtenga la información necesaria para la cadena de conexión.

    Obtenga el punto de conexión del programador:

    az durabletask scheduler show --resource-group RESOURCE_GROUP_NAME --name SCHEDULER_NAME --query 'properties.endpoint' --output tsv
    

    Obtenga el identificador de cliente de la identidad administrada:

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Establezca ambas variables de entorno en la aplicación.

    az functionapp config appsettings set \
      --resource-group RESOURCE_GROUP_NAME \
      --name FUNCTION_APP_NAME \
      --settings \
        DURABLE_TASK_SCHEDULER_CONNECTION_STRING="Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>" \
        TASKHUB_NAME="<TASKHUB_NAME>"
    
  1. Obtenga la información necesaria para la cadena de conexión.

    Para obtener el punto de conexión del planificador, vaya a la pestaña Información general del recurso del planificador y busque Punto de conexión en la sección Esenciales.

    Para obtener el ID de Cliente de la identidad administrada, vaya a la pestaña Resumen del recurso de identidad administrada y busque el ID de Cliente en la sección Elementos esenciales.

    Captura de pantalla de la página de información general de la identidad administrada que muestra la ubicación del ID de Cliente en el portal de Azure.

  2. Navega a tu aplicación en el portal.

  3. En el menú izquierdo, seleccione Configuración Variables> deentorno.

  4. Agregue una variable de entorno denominada DURABLE_TASK_SCHEDULER_CONNECTION_STRING con el valor Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>.

  5. Agregue una variable de entorno denominada TASKHUB_NAME con el nombre del centro de tareas.

  6. Seleccione Aplicar y, a continuación, Confirmar para guardar las variables.