Configurare l'identità gestita per il schedulatore delle attività durevoli

Durable Task Scheduler usa l'identità gestita per l'autenticazione. È possibile usare un'identità gestita assegnata dall'utente o assegnata dal sistema . Le identità assegnate dall'utente sono consigliate perché non sono associate al ciclo di vita dell'app e possono essere riutilizzate dopo il deprovisioning dell'app.

Questo articolo illustra due modi per configurare l'identità gestita:

  • Installazione rapida : un singolo comando dell'interfaccia della riga di comando che automatizza l'assegnazione di ruolo, l'allegato di identità e la configurazione delle variabili di ambiente.
  • Installazione manuale : istruzioni dettagliate per il controllo completo su ogni passaggio di configurazione.

Prerequisiti

Ruoli RBAC del pianificatore di attività durevoli

È possibile concedere a un'entità i seguenti ruoli correlati a Durable Task Scheduler:

Ruolo Descrizione
Collaboratore ai dati delle attività durevoli Ruolo per tutte le operazioni di accesso ai dati. Questo ruolo è un superset di tutti gli altri ruoli.
Lavoratore attività durevoli Ruolo usato dalle applicazioni di lavoro per interagire con Durable Task Scheduler. Assegnare questo ruolo se l'app viene usata solo per l'elaborazione di orchestrazioni, attività ed entità.
Lettore dati attività durevoli Ruolo per leggere tutti i dati del pianificatore di attività durevoli. Assegna questo ruolo se hai solo bisogno di elencare le orchestrazioni e leggere i payload delle entità.

Annotazioni

La maggior parte delle app richiede il ruolo Collaboratore dati processi permanenti.

Configurazione rapida con az durabletask scheduler attach

Il az durabletask scheduler attach comando automatizza l'assegnazione di ruolo, l'allegato di identità e la configurazione delle variabili di ambiente in un singolo comando.

L'esempio seguente collega un pianificatore a un'app Function utilizzando un'identità gestita assegnata dall'utente con il ruolo Collaboratore dati attività permanenti :

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

Per un'app contenitore:

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

Annotazioni

Se si omette il --identity parametro , il comando usa invece l'identità gestita assegnata dal sistema.

Per altre informazioni, vedere az durabletask scheduler attach.

Configurazione manuale

Se hai bisogno di un controllo granulare su ogni passaggio, segui le istruzioni manuali riportate di seguito per assegnare il RBAC, associare l'identità e configurare singolarmente le variabili di ambiente.

Assegnare il controllo degli accessi in base al ruolo a una risorsa di identità gestita

  1. Creare un'identità gestita assegnata dall'utente

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Impostare l'assegnatario nella risorsa di identità creata

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Impostare l'ambito. Usare l'ambito dell'hub di attività per l'accesso con privilegi minimi. Usare ambito dello scheduler solo se l'identità deve accedere a tutti gli hub di attività in uno scheduler.

    Ambito del task hub (scelta consigliata)

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

    Ambito del pianificatore (tutti gli hub attività)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Concedere l'accesso. Eseguire il comando seguente per creare l'assegnazione di ruolo e concedere l'accesso.

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

    Output previsto

    L'esempio di output seguente mostra un'identità dello sviluppatore a cui è stato assegnato il ruolo di Collaboratore ai dati dell'attività durevole al livello del pianificatore:

    {
      "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"
    }
    

Annotazioni

L'istruzione seguente mostra un'assegnazione di ruolo limitata a un hub di attività specifico. Se è necessario accedere a tutti gli hub di attività in un pianificatore, eseguire l'assegnazione a livello del pianificatore.

  1. Creare un'identità gestita assegnata dall'utente.

  2. Passare alla risorsa Utilità di pianificazione permanente nel portale.

  3. Seleziona un nome per l'hub delle attività.

  4. Nel menu a sinistra selezionare Controllo di accesso (IAM).

  5. Selezionare Aggiungi per aggiungere un'assegnazione di ruolo.

    Screenshot dell'aggiunta dell'assegnazione di ruolo nel riquadro Controllo di accesso nel portale.

  6. Cercare e selezionare Collaboratore dati attività durevole. Seleziona Avanti.

    Screenshot della selezione dell'assegnazione del ruolo Collaboratore dati di attività durevole nel portale.

  7. Nella scheda Membri , per Assegna accesso a, selezionare Identità gestita.

  8. In Membri selezionare + Seleziona membri.

  9. Nel riquadro Seleziona identità gestite espandere l'elenco a discesa Identità gestite e selezionare Identità gestita assegnata dall'utente.

    Screenshot della selezione del tipo di identità gestita assegnata dall'utente che si intende usare nel portale.

  10. Selezionare l'identità gestita dall'utente creata in precedenza e fare clic su Seleziona.

  11. Selezionare Rivedi e assegna per completare l'assegnazione del ruolo.

Assegnare un'identità gestita all'app

Ora che l'identità dispone del controllo degli accessi in base al ruolo (RBAC) necessario per accedere al pianificatore di attività durevole, è necessario assegnarlo all'app.

  1. Ottenere l'ID risorsa dell'identità gestita.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Assegnare l'identità all'app.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. Nell'app nel portale selezionare Impostazioni>Identità.

  2. Selezionare la scheda Assegnato all'utente.

  3. Selezionare + Aggiungi, quindi selezionare l'identità creata nell'ultima sezione. Seleziona Aggiungi.

    Screenshot dell'aggiunta dell'identità gestita assegnata dall'utente all'app per le funzioni nel portale.

Aggiungere variabili di ambiente all'app

Aggiungere le due variabili di ambiente seguenti all'app:

Variabile di ambiente Value Example
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 Nome dell'hub delle attività my-task-hub

Annotazioni

Se si usa system-assigned identity, omettere il parametro ClientID dal stringa di connessione: "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity".

  1. Ottieni le informazioni necessarie per la stringa di connessione.

    Ottieni l'endpoint dello scheduler

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

    Ottenere l'ID client dell'identità gestita:

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Impostare entrambe le variabili di ambiente nell'app.

    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. Ottieni le informazioni necessarie per la stringa di connessione.

    Per ottenere l'endpoint dello scheduler, passare alla scheda Panoramica della risorsa dello scheduler e trovare Endpoint nella sezione Elementi Essenziali.

    Per ottenere l'ID client dell'identità gestita, passare alla scheda Panoramica della risorsa di identità gestita e trovare l'ID client nella sezione Informazioni di base .

    Screenshot della pagina di panoramica dell'identità gestita che mostra la posizione dell'ID client nel portale di Azure.

  2. Vai alla tua app nel portale.

  3. Nel menu a sinistra selezionare Impostazioni Variabili>di ambiente.

  4. Aggiungere una variabile di ambiente denominata DURABLE_TASK_SCHEDULER_CONNECTION_STRING con il valore Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>.

  5. Aggiungi una variabile di ambiente denominata TASKHUB_NAME con il nome dell'hub delle attività.

  6. Selezionare Applica, quindi Conferma per salvare le variabili.