アクセス管理サービスのマネージド ID Microsoft Entra ID を使用すると、アプリはシークレットを手動で処理することなく、Azure Storage アカウントなどの他のMicrosoft Entra保護されたリソースにアクセスできます。 ID は Azure プラットフォームによって管理されるため、シークレットをプロビジョニングまたはローテーションする必要>
このクイック スタートでは、既定の Azure Storage プロバイダー を使用してDurable Functions アプリを構成し、ストレージ アカウントへのアクセスに ID ベースの接続を使用する手順を実行します。
注記
マネージド ID は、Durable Functions 拡張機能 バージョン 2.7.0 以降でサポートされています。
Azure アカウントがない場合は、開始する前に free アカウントを作成します。
前提条件
このクイック スタートを完了するには、次のものが必要です。
- Azure ポータルで作成された既存のDurable Functions プロジェクト、またはAzureに配置されたローカル Durable Functions プロジェクト。
- AzureでDurable Functions アプリを実行する知識。
Azureに既存のDurable Functions プロジェクトをデプロイしていない場合は、次のいずれかのクイック スタートから開始することをお勧めします。
- 最初の永続関数を作成する - C#
- 最初の持続的な関数を作成する - JavaScript
- 最初の持続的関数を作成する - Python
- 最初の持続的な関数を作成する - PowerShell
- 最初の持続的関数を作成する - Java
ローカル開発
エミュレーター Azure Storage使用する
ローカルで開発する場合は、Azure Storageのローカル エミュレーターである Azurite を使用することをお勧めします。 local.settings.jsonで "AzureWebJobsStorage": "UseDevelopmentStorage=true" を指定して、エミュレーター用にアプリを構成します。
ローカル開発のための ID ベースの接続
厳密に言えば、マネージド ID は、Azureで実行する場合にのみアプリで使用できます。 ただし、開発者の資格情報を使用して Azure リソースに対して認証することで、ID ベースの接続を使用するようにローカルで実行されているアプリを構成することもできます。 その後、Azureにデプロイすると、アプリは代わりにマネージド ID 構成を利用します。
開発者の資格情報を使用する場合、接続は、Azure リソースにアクセスするために、上記の順序で次の場所からトークンを取得しようとします。
- Microsoft アプリケーション間で共有されるローカル キャッシュ
- Visual Studioの現在のユーザー コンテキスト
- Visual Studio Codeの現在のユーザー コンテキスト
- Azure CLIの現在のユーザー コンテキスト
これらのいずれのオプションも成功しなかった場合は、アプリがAzure リソースの認証トークンを取得できないことを示すエラーが表示されます。
ローカル開発者 ID を使用するようにランタイムを構成する
local.settings.jsonでAzure Storage アカウントの名前を指定します。次に例を示します。
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Azure ポータルでAzure Storage アカウント リソースに移動し、Access Control (IAM) タブに移動し、ロールの割り当ての追加 をクリックします。 次のロールを探してください。
- ストレージ キュー データ共同作成者
- ストレージ BLOB データ貢献者
- ストレージ テーブル データ共同作成者
[+ メンバーの選択] をクリックし、ポップアップ ウィンドウで自分のメール アドレスを見つけて、自分にロールを割り当てます。 (この電子メールは、Visual Studio ファミリの Microsoft アプリケーション、Azure CLI、またはエディターにログインするために使用します)。
Azureにデプロイされたアプリの ID ベースの接続
マネージド ID リソースを有効にする
開始するには、アプリケーションのマネージド ID を有効にします。 関数アプリでは、システム割り当てマネージド ID またはユーザー割り当てマネージド ID のいずれかが必要になります。 関数アプリのマネージド ID を有効にし、2 種類の ID の違いについて確認するには、マネージド ID の概要に関するページを参照してください。
マネージド ID にアクセス ロールを割り当てる
Azure ポータルでアプリのAzure Storage リソースに移動し、assign 3 つのロールベースのアクセス制御 (RBAC) ロールをマネージド ID リソースに移動します。
- ストレージ キュー データ共同作成者
- ストレージ BLOB データ貢献者
- ストレージ テーブル データ共同作成者
自分の ID リソースを見つけるには、[アクセスの割り当て先] の [マネージド ID] を選んでから、[+ メンバーの選択] を選びます
マネージド ID の構成をアプリに追加する
アプリのマネージド ID を使うには、その前にアプリの設定をいくつか変更する必要があります。
Azure ポータルの Settings の関数アプリ リソース メニューで、Environment 変数 を選択します。
Azure ストレージ アカウントをアプリケーションにリンクする設定を追加します。
アプリが実行されているクラウドに応じて、"次のいずれかの方法" を使用します。
Azure cloud: アプリが global Azure で実行されている場合は、Azureストレージ アカウント名を識別する設定
AzureWebJobsStorage__accountNameを追加します。 値の例:mystorageaccount123非Azure クラウド: Azure外のクラウドでアプリケーションを実行する場合は、アカウント名ではなくストレージ アカウントの特定のサービス URI (または endpoints) を提供するために、次の 3 つの設定を追加する必要があります。
設定名:
AzureWebJobsStorage__blobServiceUri値の例:
https://mystorageaccount123.blob.core.windows.net/設定名:
AzureWebJobsStorage__queueServiceUri値の例:
https://mystorageaccount123.queue.core.windows.net/設定名:
AzureWebJobsStorage__tableServiceUri値の例:
https://mystorageaccount123.table.core.windows.net/
これらの URI 変数の値は、ストレージ アカウント情報の [エンドポイント] タブから入手できます。
注記
Azure Government またはグローバル Azureとは別の他のクラウドを使用している場合は、ストレージ アカウント名だけでなく、特定のサービス URI を提供するオプションを使用する必要があります。 Azure Government で Azure Storage を使用する方法の詳細については、「Azure Government で Storage API を使用した開発」を参照してください。
マネージド ID の構成を終了します (設定を変更した後、忘れずに [適用] をクリックしてください)。
システム割り当て ID を使用する場合は、他の変更は行いません。
"ユーザー割り当て ID" を使う場合は、次の設定をアプリの構成に追加します。
AzureWebJobsStorage__credential: 「managedidentity」と入力します
AzureWebJobsStorage__clientId: この GUID 値はマネージド ID リソースから取得します
注記
Durable Functions はユーザー割り当て ID を使用する場合、サポートされません
managedIdentityResourceId。clientIdを代わりに使用します。