Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Durable Task Scheduler solo admite la autenticación de identidad administrada asignada por el usuario o asignada por el sistema . Se recomiendan identidades asignadas por el usuario, ya que no están vinculadas al ciclo de vida de la aplicación y se pueden reutilizar después de desaprovisionar la aplicación.
Puede conceder los siguientes roles relacionados con el Programador de Tareas Duraderas a una identidad:
Rol | 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 en caso de que solo necesite una lista de orquestaciones y cargas de entidades. |
Nota:
La mayoría de las aplicaciones de Durable Functions requieren el rol Colaborador de datos de Durable Task .
En este artículo, aprenderá a conceder permisos a un recurso de identidad y a configurar su aplicación de procesamiento para usar la identidad al acceder a planificadores y concentradores de tareas.
Asignación del control de acceso basado en rol (RBAC) a un recurso de identidad administrada
Creación de una identidad administrada asignada por el usuario
az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
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)
Establezca el ámbito. Conceder acceso en el ámbito del programador proporciona acceso a todas las centrales de tareas de ese programador.
Central de tareas
scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/taskHubs/TASKHUB_NAME"
Planificador
scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
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 esperada
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. En caso de necesitar acceso a todas las centrales de tareas de un programador, realice la asignación a nivel del programador.
Vaya al recurso del programador de tareas duraderas en el portal.
Haga clic en un nombre de la central de tareas.
En el menú izquierdo, seleccione Control de acceso (IAM) .
Haga clic en Agregar para agregar una asignación de roles.
Busque y seleccione Colaborador de datos de tareas duraderas. Haga clic en Next.
En la pestaña Miembros, para Asignar acceso a, seleccione Identidad administrada.
En Miembros, haga clic en + Seleccionar miembros.
En el panel Seleccionar identidades administradas, expanda la lista desplegable Identidad administrada y seleccione Identidad administrada asignada por el usuario.
Elija la identidad administrada por el usuario creada anteriormente y haga clic en el botón Seleccionar.
Haga clic en 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.
Obtenga el id. de recurso de la identidad administrada.
resource_id=$(az resource show --resource-group RESOURCE_GROUP --name MANAGED_IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
Asigne la identidad a la aplicación.
az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
En la aplicación del portal, seleccione Configuración>Identidad.
Haga clic en la pestaña Usuario asignado.
Haga clic en + Agregar y elija la identidad creada en la última sección. Haga clic en el botón Agregar.
Adición de variables de entorno a la aplicación
Agregue estas dos variables de entorno a la configuración de la aplicación:
-
TASKHUB_NAME
: nombre de la central de tareas -
DURABLE_TASK_SCHEDULER_CONNECTION_STRING
: el formato de la cadena es"Endpoint={scheduler point};Authentication=ManagedIdentity;ClientID={client id}"
, dondeEndpoint
es el punto de conexión del programador yclient id
es el id. de cliente de la identidad.
Obtenga la información necesaria para la cadena de conexión del Programador de tareas duraderas.
Para obtener el punto de conexión del programador.
az durabletask scheduler show --resource-group RESOURCE_GROUP_NAME --name DTS_NAME --query 'properties.endpoint' --output tsv
Para obtener el id. de cliente de la identidad administrada.
az identity show --name MANAGED_IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
Use el siguiente comando para agregar una variable de entorno para la cadena de conexión del programador a la aplicación.
az functionapp config appsettings set --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --settings KEY_NAME=KEY_VALUE
Repita el paso anterior para agregar una variable de entorno para el nombre de la central de tareas.
Obtenga la información necesaria para la cadena de conexión del Programador de tareas duraderas.
Para obtener el punto de conexión del programador, vaya a la pestaña Información general del recurso del programador y busque "Punto de conexión" en la sección superior Essentials.
Para obtener el id. de cliente de la identidad administrada, vaya a la pestaña Información general del recurso y busque "Id. de cliente" en la sección superior Essentials.
Vaya a la aplicación en el portal.
En el menú de la izquierda, haga clic en Configuración>Variables de entorno.
Agregue una variable de entorno para la cadena de conexión del programador de tareas duraderas.
Agregue una variable de entorno para el nombre de la central de tareas.
Haga clic en Aplicar y en Confirmar para agregar las variables.
Nota:
En caso de usar la identidad asignada por el sistema, la cadena de conexión no necesitará el id. de cliente del recurso de identidad: "Endpoint={scheduler endpoint};Authentication=ManagedIdentity"
.