Konfigurieren der verwalteten Identität für einen dauerhaften Aufgabenplaner

Der dauerhafte Aufgabenplaner verwendet verwaltete Identität für die Authentifizierung. Sie können entweder eine vom Benutzer zugewiesene oder vom System zugewiesene verwaltete Identität verwenden. Vom Benutzer zugewiesene Identitäten werden empfohlen, da sie nicht an den Lebenszyklus der App gebunden sind und nach der Stilllegung der App wiederverwendet werden können.

In diesem Artikel werden zwei Möglichkeiten zum Konfigurieren der verwalteten Identität behandelt:

  • Schnellkonfiguration – Ein einzelner CLI-Befehl, der die Rollenzuweisung, Identitätsverknüpfung und die Konfiguration von Umgebungsvariablen automatisiert.
  • Manuelle Einrichtung – Schrittweise Anleitungen zur vollständigen Kontrolle über die einzelnen Konfigurationsschritte.

Voraussetzungen

Durable Task Scheduler RBAC-Rollen

Sie können einer Identität die folgenden Rollen des langlebigen Aufgabenplaners zuweisen:

Rolle Beschreibung
Mitwirkender an langlebigen Aufgabendaten Rolle für alle Datenzugriffsvorgänge. Diese Rolle ist allen anderen Rollen übergeordnet.
Worker für langlebige Aufgaben Rolle, die von Arbeitsanwendungen verwendet wird, um mit dem Durable Task Scheduler zu interagieren. Weisen Sie diese Rolle zu, wenn Ihre App nur für die Verarbeitung von Orchestrierungen, Aktivitäten und Entitäten verwendet wird.
Permanenter Aufgabendatenleser Rolle zum Lesen aller Daten des Durable Task Scheduler. Weisen Sie diese Rolle zu, wenn Sie nur Orchestrierungen auflisten und Entitätsnutzlasten lesen müssen.

Hinweis

Für die meisten Apps ist die Rolle "Durable Task Data Contributor" erforderlich.

Schnelles Einrichten mit az durabletask scheduler attach

Der az durabletask scheduler attach Befehl automatisiert die Rollenzuweisung, das Anhängen von Identitäten und die Konfiguration von Umgebungsvariablen in einem einzigen Befehl.

Im folgenden Beispiel wird ein Scheduler an eine Funktions-App angefügt, die eine vom Benutzer zugewiesene verwaltete Identität mit der Rolle Durable Task Data Contributor verwendet:

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

Für eine Container-App:

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

Hinweis

Wenn Sie den --identity Parameter weglassen, verwendet der Befehl stattdessen die vom System zugewiesene verwaltete Identität.

Weitere Informationen finden Sie unter az durabletask scheduler attach.

Manuelle Einrichtung

Wenn Sie eine präzise Kontrolle über jeden Schritt benötigen, befolgen Sie die nachstehenden manuellen Anweisungen, um RBAC zuzuweisen, die Identität anzufügen und Umgebungsvariablen einzeln zu konfigurieren.

Zuweisen von RBAC (rollenbasierte Zugriffssteuerung) zu einer verwalteten Identitätsressource

  1. Erstellen einer benutzerseitig zugewiesenen verwalteten Identität

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Festlegen der zugewiesenen Person auf die erstellte Identitätsressource

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Legen Sie den Bereich fest. Verwenden Sie den Aufgabenhubbereich für den Zugriff auf die geringsten Rechte. Verwenden Sie den Scheduler-Bereich nur, wenn die Identität Zugang zu allen Task Hubs in einem Scheduler benötigt.

    Aufgabenhubbereich (empfohlen)

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

    Scheduler-Bereich (alle Task Hubs)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Gewähren des Zugriffs. Führen Sie den folgenden Befehl aus, um die Rollenzuweisung zu erstellen und Zugriff zu gewähren.

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

    Erwartete Ausgabe

    Das folgende Ausgabebeispiel zeigt eine Entwickleridentität, der die Rolle „Mitwirkender an langlebigen Aufgabendaten“ auf Planerebene zugewiesen ist:

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

Hinweis

Die folgende Anweisung zeigt eine Rollenzuweisung, die auf einen bestimmten Aufgabenhub festgelegt ist. Wenn Sie Zugriff auf alle Aufgabenhubs in einem Planer benötigen, führen Sie die Zuordnung auf der Planerebene aus.

  1. Erstellen einer benutzerseitig zugewiesenen verwalteten Identität.

  2. Navigieren Sie im Portal zur Ressource "Durable Task Scheduler".

  3. Wählen Sie einen Aufgabenhubnamen aus.

  4. Wählen Sie im linken Menü Zugriffssteuerung (IAM) aus.

  5. Wählen Sie "Hinzufügen" aus, um eine Rollenzuweisung hinzuzufügen.

    Screenshot des Hinzufügens der Rollenzuweisung im Bereich

  6. Suchen Sie Mitwirkender an langlebigen Aufgabendaten, und wählen Sie die Rolle aus. Wählen Sie Weiteraus.

    Screenshot der Auswahl der Rollenzuweisung „Mitwirkender an langlebigen Aufgabendaten“ im Portal

  7. Wählen Sie auf der Registerkarte " Mitglieder " für "Zugriff zuweisen"die Option "Verwaltete Identität" aus.

  8. Wählen Sie für Mitglieder die Option + Mitglieder auswählen aus.

  9. Erweitern Sie im Bereich "Verwaltete Identitäten auswählen " die Dropdownliste "Verwaltete Identität " und wählen Sie "Vom Benutzer zugewiesene verwaltete Identität" aus.

    Screenshot der Auswahl des vom Benutzer zugewiesenen verwalteten Identitätstyps, den Sie im Portal verwenden möchten.

  10. Wählen Sie die zuvor erstellte vom Benutzer verwaltete Identität und dann "Auswählen" aus.

  11. Wählen Sie "Überprüfen" und "Zuweisen " aus, um die Zuweisung der Rolle abzuschließen.

Weisen Sie Ihrer App eine verwaltete Identität zu.

Nachdem die Identität nun über die erforderliche RBAC verfügt, um auf den langlebigen Aufgabenplaner zuzugreifen, müssen Sie sie Ihrer App zuweisen.

  1. Erhalte die Ressourcen-ID der verwalteten Identität.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Weisen Sie der App die Identität zu.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. Wählen Sie in Ihrer App im Portal Einstellungen>Identität aus.

  2. Wählen Sie die Registerkarte Benutzer zugewiesen aus.

  3. Wählen Sie +Hinzufügen aus, und wählen Sie dann die im letzten Abschnitt erstellte Identität aus. Wählen Sie Hinzufügen.

    Screenshot des Hinzufügens der vom Benutzer zugewiesenen verwalteten Identität zu Ihrer Funktions-App im Portal.

Hinzufügen von Umgebungsvariablen zu Ihrer App

Fügen Sie Ihrer App die folgenden beiden Umgebungsvariablen hinzu:

Umgebungsvariable Wert 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 Der Name des Aufgabenhubs my-task-hub

Hinweis

Wenn Sie system-assigned Identity verwenden, lassen Sie den Parameter ClientID aus dem Verbindungszeichenfolge: "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity" aus.

  1. Rufen Sie die erforderlichen Informationen für die Verbindungszeichenfolge ab.

    Den Scheduler-Endpunkt abrufen:

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

    Client-ID der verwalteten Identität abrufen:

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Legen Sie beide Umgebungsvariablen für Ihre App fest.

    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. Rufen Sie die erforderlichen Informationen für die Verbindungszeichenfolge ab.

    Um Ihren Scheduler-Endpunkt zu erhalten, navigieren Sie zur Registerkarte "Übersicht" Ihrer Scheduler-Ressource und suchen Sie Endpunkt im Abschnitt "Essentials".

    Um Ihre verwaltete Identitätsclient-ID abzurufen, navigieren Sie zur Registerkarte "Übersicht" Ihrer verwalteten Identitätsressource, und suchen Sie im Abschnitt "Essentials" die Client-ID.

    Screenshot der Seite

  2. Navigieren Sie im Portal zu Ihrer App.

  3. Wählen Sie im linken Menü Einstellungen>Umgebungsvariablen aus.

  4. Fügen Sie eine Umgebungsvariable mit dem Namen DURABLE_TASK_SCHEDULER_CONNECTION_STRING und dem Wert Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID> hinzu.

  5. Fügen Sie eine Umgebungsvariable TASKHUB_NAME mit dem Namen Des Aufgabenhubs hinzu.

  6. Wählen Sie "Übernehmen" und anschließend "Bestätigen" aus, um die Variablen zu speichern.