次の方法で共有


Durable Task Scheduler のマネージド ID を構成する (プレビュー)

Durable Task Scheduler では、ユーザー割り当てまたはシステム割り当てマネージド ID 認証のみがサポートされますユーザー割り当て ID はアプリ のライフサイクルに関連付けられず、アプリのプロビジョニング解除後に再利用できるため、推奨されます。

次の Durable Task Scheduler 関連ロールを ID に付与できます。

役割 説明
永続タスク データ共同作成者 すべてのデータ アクセス操作のロール。 このロールは、他のすべてのロールのスーパーセットです。
耐久性タスクワーカー(Durable Task Worker) ワーカー アプリケーションが Durable Task Scheduler と対話するために使用するロール。 アプリがオーケストレーション、アクティビティ、エンティティの処理 にのみ 使用される場合は、このロールを割り当てます。
耐久タスクデータリーダー Durable Task Scheduler のすべてのデータを読み取るロール。 オーケストレーションとエンティティペイロードの一覧のみが必要な場合は、このロールを割り当てます。

ほとんどの Durable Functions アプリには、 Durable Task Data Contributor ロールが必要です。

この記事では、ID リソースにアクセス許可を付与し、スケジューラとタスク ハブへのアクセスに ID を使用するようにコンピューティング アプリを構成する方法について説明します。

マネージド ID リソースにロールベースのアクセス制御 (RBAC) を割り当てる

  1. ユーザー割り当てマネージド ID を作成する

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. 作成された ID リソースに割り当て先を設定する

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. スコープを設定します。 スケジューラ スコープにアクセス権を付与すると、そのスケジューラ 内のすべての タスク ハブにアクセスできるようになります。

    タスク ハブ

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

    スケジューラ

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. アクセス権を付与します。 次のコマンドを実行して、ロールの割り当てを作成し、アクセス権を付与します。

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

    想定される出力

    次の出力例は、 スケジューラ レベルで Durable Task Data Contributor ロールが割り当てられた開発者 ID を示しています。

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

次の手順は、特定のタスク ハブを対象としたロールの割り当てを示しています。 スケジューラ 内のすべての タスク ハブにアクセスする必要がある場合は、スケジューラ レベルで割り当てを実行します。

  1. ユーザー割り当てマネージド ID を作成する」の手順を使用して、ユーザー割り当てマネージド ID を作成します。

  2. ポータルで持続的タスク スケジューラ リソースに移動します。

  3. タスク ハブ名をクリックします。

  4. 左側のメニューで [アクセス制御 (IAM)] を選択します。

  5. [ 追加] をクリックしてロールの割り当てを追加します。

    ポータルの [アクセス制御] ウィンドウでのロールの割り当ての追加のスクリーンショット。

  6. [永続タスク データ共同作成者] を検索して選択します。 [次へ] をクリックします。

    ポータルで Durable Task Data Contributor ロールの割り当てを選択するスクリーンショット。

  7. [ メンバー ] タブの [ アクセスの割り当て] で、[ マネージド ID] を選択します。

  8. [メンバー] の場合は、[+ メンバーの選択] をクリックします。

  9. [ マネージド ID の選択 ] ウィンドウで、[ マネージド ID ] ドロップダウンを展開し、[ ユーザー割り当てマネージド ID] を選択します。

    ポータルで使用するユーザー割り当てマネージド ID の種類を選択するスクリーンショット。

  10. 以前に作成したユーザーマネージド ID を選択し、[ 選択 ] ボタンをクリックします。

  11. [ 確認と割り当て ] をクリックしてロールの割り当てを完了します。

アプリにマネージド ID を割り当てる

ID に Durable Task Scheduler にアクセスするために必要な RBAC が割り当てられたので、アプリに割り当てる必要があります。

  1. マネージド ID のリソース ID を取得します。

    resource_id=$(az resource show --resource-group RESOURCE_GROUP --name MANAGED_IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. アプリに ID を割り当てます。

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. ポータルでアプリから 、[設定]>[Identity] を選択します。

  2. [ ユーザー割り当て ] タブをクリックします。

  3. [ + 追加] をクリックし、最後のセクションで作成した ID を選択します。 [ の追加] ボタンをクリックします。

    ポータルで関数アプリにユーザー割り当てマネージド ID を追加するスクリーンショット。

アプリに環境変数を追加する

次の 2 つの環境変数をアプリ設定に追加します。

  • TASKHUB_NAME: タスク ハブの名前
  • DURABLE_TASK_SCHEDULER_CONNECTION_STRING: 文字列の形式は "Endpoint={scheduler point};Authentication=ManagedIdentity;ClientID={client id}"。ここで、 Endpoint はスケジューラ エンドポイント、 client id は ID のクライアント ID です。
  1. Durable Task Scheduler 接続文字列に必要な情報を取得します。

    スケジューラ エンドポイントを取得するために。

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

    マネージド ID のクライアント ID を取得します。

    az identity show --name MANAGED_IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. 次のコマンドを使用して、スケジューラ接続文字列の環境変数をアプリに追加します。

    az functionapp config appsettings set --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --settings KEY_NAME=KEY_VALUE
    
  3. 前の手順を繰り返して、タスク ハブ名の環境変数を追加します。

  1. Durable Task Scheduler 接続文字列に必要な情報を取得します。

    スケジューラ エンドポイントを取得するには、スケジューラ リソースの [ 概要 ] タブに移動し、上部の [要点 ] セクションで [エンドポイント] を見つけます。

    マネージド ID クライアント ID を取得するには、リソースの [概要 ] タブに移動し、上部の [要点 ] セクションで [クライアント ID] を見つけます。

  2. ポータルでアプリに移動します。

  3. 左側のメニューで、[ 設定]>[環境変数]をクリックします。

  4. Durable Task Scheduler 接続文字列の環境変数を追加します。

  5. タスク ハブ名の環境変数を追加します。

  6. [ 適用 ] をクリックし、[ 確認] をクリックして変数を追加します。

システム割り当て ID を使用する場合、接続文字列には ID リソースのクライアント ID () は必要"Endpoint={scheduler endpoint};Authentication=ManagedIdentity"

次のステップ