Durable Task Scheduler では、認証にマネージド ID が使用されます。 ユーザー割り当てマネージド ID またはシステム割り当てマネージド ID を使用できます。 ユーザー割り当て ID はアプリ のライフサイクルに関連付けられていないため、アプリのプロビジョニング解除後に再利用できるため、推奨されます。
この記事では、マネージド ID を構成する 2 つの方法について説明します。
- クイック セットアップ — ロールの割り当て、ID 添付ファイル、環境変数の構成を自動化する 1 つの CLI コマンド。
- 手動セットアップ — 各構成手順を完全に制御するための詳細な手順。
前提条件
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- Durable Task Scheduler とタスク ハブ リソースは既にプロビジョニングされています。
-
Azure CLI
durabletask拡張機能がインストールされています (az extension add --name durabletask)。 - スケジューラ リソースの所有者またはユーザー アクセス管理者ロール (ロールの割り当てを作成するために必要)。
永続タスク スケジューラー RBAC ロール
次の Durable Task Scheduler 関連ロールを ID に付与できます。
| 役割 | 説明 |
|---|---|
| 永続タスク データ共同作成者 | すべてのデータ アクセス操作のロール。 このロールは、他のすべてのロールのスーパーセットです。 |
| 耐久性タスクワーカー(Durable Task Worker) | ワーカー アプリケーションが Durable Task Scheduler と対話するために使用するロール。 アプリがオーケストレーション、アクティビティ、エンティティの処理 にのみ 使用される場合は、このロールを割り当てます。 |
| 耐久タスクデータリーダー | Durable Task Scheduler のすべてのデータを読み取るロール。 オーケストレーションの一覧表示とエンティティ ペイロードの読み取りのみが必要な場合は、このロールを割り当てます。 |
注
ほとんどのアプリには、 Durable Task Data Contributor ロールが必要です。
az durabletask scheduler attach を使ったクイックセットアップ
az durabletask scheduler attach コマンドは、ロールの割り当て、ID の添付ファイル、環境変数の構成を 1 つのコマンドで自動化します。
次の例では、 Durable Task Data Contributor ロールを持つユーザー割り当てマネージド ID を使用して、スケジューラを Function 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.Web/sites/FUNCTION_APP_NAME \
--identity /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME
コンテナー アプリの場合:
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
注
--identity パラメーターを省略すると、代わりにシステム割り当てマネージド ID が使用されます。
詳細については、「 az durabletask scheduler attach」を参照してください。
手動セットアップ
各手順を細かく制御する必要がある場合は、以下の手動の手順に従って RBAC を割り当て、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)スコープを設定します。 最小特権アクセスには 、タスク ハブ スコープ を使用します。 スケジューラ スコープは、ID がスケジューラ内のすべてのタスク ハブにアクセスする必要がある場合にのみ使用します。
タスク ハブのスコープ (推奨)
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" }
注
次の手順は、特定のタスク ハブを対象としたロールの割り当てを示しています。 スケジューラ 内のすべての タスク ハブにアクセスする必要がある場合は、スケジューラ レベルで割り当てを実行します。
ポータルで Durable Task Scheduler リソースに移動します。
タスク ハブ名を選択します。
左側のメニューで [アクセス制御 (IAM)] を選択します。
[ 追加] を選択してロールの割り当てを追加します。
[永続タスク データ共同作成者] を検索して選択します。 次へを選択します。
[ メンバー ] タブの [ アクセスの割り当て] で、[ マネージド ID] を選択します。
[メンバー] で、[+ メンバーの選択] を選択します。
[ マネージド ID の選択 ] ウィンドウで、[ マネージド ID ] ドロップダウンを展開し、[ ユーザー割り当てマネージド ID] を選択します。
以前に作成したユーザーマネージド ID を選択し、[選択] を 選択します。
[ 確認と割り当て] を選択してロールの割り当てを完了します。
アプリにマネージド ID を割り当てる
ID に Durable Task Scheduler にアクセスするために必要な RBAC が割り当てられたので、アプリに割り当てる必要があります。
マネージド ID のリソース ID を取得します。
resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name 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 つの環境変数をアプリに追加します。
| 環境変数 | Value | 例 |
|---|---|---|
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 |
タスク ハブの名前 | my-task-hub |
注
system-assigned ID を使用する場合は、接続文字列: ClientID から "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity" パラメーターを省略します。
接続文字列に必要な情報を取得します。
スケジューラ エンドポイントを取得します。
az durabletask scheduler show --resource-group RESOURCE_GROUP_NAME --name SCHEDULER_NAME --query 'properties.endpoint' --output tsvマネージド ID のクライアント ID を取得します。
az identity show --name 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 \ DURABLE_TASK_SCHEDULER_CONNECTION_STRING="Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>" \ TASKHUB_NAME="<TASKHUB_NAME>"
接続文字列に必要な情報を取得します。
スケジューラ エンドポイントを取得するには、スケジューラ リソースの [概要] タブに移動し、[要点] セクションで [エンドポイント] を見つけます。
マネージド ID クライアント ID を取得するには、マネージド ID リソースの [概要] タブに移動し、[要点] セクションで [クライアント ID] を見つけます。
Azure ポータルでクライアント ID の場所を示す、マネージド ID の概要ページのスクリーンショット ポータルでアプリに移動します。
左側のメニューで、 設定>Environment 変数を選択します。
DURABLE_TASK_SCHEDULER_CONNECTION_STRING値を持つEndpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>という名前の環境変数を追加します。タスク ハブの名前を持つ
TASKHUB_NAMEという名前の環境変数を追加します。[ 適用] を選択し、[ 確認] を選択して変数を保存します。