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) を割り当てる
ユーザー割り当てマネージド ID を作成する
az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
作成された ID リソースに割り当て先を設定する
assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv)
スコープを設定します。 スケジューラ スコープにアクセス権を付与すると、そのスケジューラ 内のすべての タスク ハブにアクセスできるようになります。
タスク ハブ
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"
アクセス権を付与します。 次のコマンドを実行して、ロールの割り当てを作成し、アクセス権を付与します。
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" }
注
次の手順は、特定のタスク ハブを対象としたロールの割り当てを示しています。 スケジューラ 内のすべての タスク ハブにアクセスする必要がある場合は、スケジューラ レベルで割り当てを実行します。
「ユーザー割り当てマネージド ID を作成する」の手順を使用して、ユーザー割り当てマネージド ID を作成します。
ポータルで持続的タスク スケジューラ リソースに移動します。
タスク ハブ名をクリックします。
左側のメニューで [アクセス制御 (IAM)] を選択します。
[ 追加] をクリックしてロールの割り当てを追加します。
[永続タスク データ共同作成者] を検索して選択します。 [次へ] をクリックします。
[ メンバー ] タブの [ アクセスの割り当て] で、[ マネージド ID] を選択します。
[メンバー] の場合は、[+ メンバーの選択] をクリックします。
[ マネージド ID の選択 ] ウィンドウで、[ マネージド ID ] ドロップダウンを展開し、[ ユーザー割り当てマネージド ID] を選択します。
以前に作成したユーザーマネージド ID を選択し、[ 選択 ] ボタンをクリックします。
[ 確認と割り当て ] をクリックしてロールの割り当てを完了します。
アプリにマネージド ID を割り当てる
ID に Durable Task Scheduler にアクセスするために必要な RBAC が割り当てられたので、アプリに割り当てる必要があります。
マネージド ID のリソース ID を取得します。
resource_id=$(az resource show --resource-group RESOURCE_GROUP --name MANAGED_IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
アプリに ID を割り当てます。
az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
ポータルでアプリから 、[設定]>[Identity] を選択します。
[ ユーザー割り当て ] タブをクリックします。
[ + 追加] をクリックし、最後のセクションで作成した ID を選択します。 [ の追加] ボタンをクリックします。
アプリに環境変数を追加する
次の 2 つの環境変数をアプリ設定に追加します。
-
TASKHUB_NAME
: タスク ハブの名前 -
DURABLE_TASK_SCHEDULER_CONNECTION_STRING
: 文字列の形式は"Endpoint={scheduler point};Authentication=ManagedIdentity;ClientID={client id}"
。ここで、Endpoint
はスケジューラ エンドポイント、client id
は ID のクライアント ID です。
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
次のコマンドを使用して、スケジューラ接続文字列の環境変数をアプリに追加します。
az functionapp config appsettings set --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --settings KEY_NAME=KEY_VALUE
前の手順を繰り返して、タスク ハブ名の環境変数を追加します。
Durable Task Scheduler 接続文字列に必要な情報を取得します。
スケジューラ エンドポイントを取得するには、スケジューラ リソースの [ 概要 ] タブに移動し、上部の [要点 ] セクションで [エンドポイント] を見つけます。
マネージド ID クライアント ID を取得するには、リソースの [概要 ] タブに移動し、上部の [要点 ] セクションで [クライアント ID] を見つけます。
ポータルでアプリに移動します。
左側のメニューで、[ 設定]>[環境変数]をクリックします。
Durable Task Scheduler 接続文字列の環境変数を追加します。
タスク ハブ名の環境変数を追加します。
[ 適用 ] をクリックし、[ 確認] をクリックして変数を追加します。
注
システム割り当て ID を使用する場合、接続文字列には ID リソースのクライアント ID () は必要"Endpoint={scheduler endpoint};Authentication=ManagedIdentity"
。