ローカル開発時に、アプリケーションは異なる Azure サービスを使用するために Azure に対して認証を行う必要があります。 次のいずれかの方法を使用してローカルで認証します。
- Azure Identity ライブラリでサポートされている開発者ツールの 1 つで開発者アカウントを使用します。
- ブローカーを使用して資格情報を管理します。
- サービスプリンシパルを使用してください。
この記事では、Azure Identity ライブラリでサポートされているツールを使用して開発者アカウントを使用して認証する方法について説明します。 以下のセクションでは、次のことを説明します。
- Microsoft Entra グループを使用して、複数の開発者アカウントのアクセス許可を効率的に管理する方法。
- 開発者アカウントにロールを割り当てて、アクセス権限の範囲を設定する方法。
- サポートされているローカル開発ツールにサインインする方法。
- アプリ コードから開発者アカウントを使用して認証する方法。
認証でサポートされている開発者ツール
開発者の Azure 資格情報を使用してローカル開発中にアプリが Azure に対して認証されるようにするには、開発者は次のいずれかの開発者ツールから Azure にサインインする必要があります。
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
- Visual Studio
- Visual Studio Code
Azure Identity ライブラリは、開発者がこれらのツールのいずれかからサインインしていることを検出できます。 その後、ライブラリはツールを使用して Microsoft Entra アクセス トークンを取得し、サインインしているユーザーとして Azure に対してアプリを認証できます。
この方法では、開発者の既存の Azure アカウントを利用して認証プロセスを効率化します。 ただし、開発者のアカウントには、アプリが必要とするよりも多くのアクセス許可があるため、運用環境でアプリが実行するアクセス許可を超える可能性があります。 または、ローカル開発中に使用するアプリケーションサービスプリンシパルを作成することもできます。これは、アプリが必要とするアクセスのみを持つように範囲を設定できます。
ローカル開発用の Microsoft Entra グループを作成する
個々のサービス プリンシパル オブジェクトにロールを割り当てるのではなく、アプリがローカル開発で必要とするロール (アクセス許可) をカプセル化する Microsoft Entra グループを作成します。 この方法には、次の利点があります。
- すべての開発者には、グループ レベルで同じロールが割り当てられます。
- アプリに新しいロールが必要な場合は、アプリのグループにのみ追加する必要があります。
- 新しい開発者がチームに参加すると、開発者用に新しいアプリケーション サービス プリンシパルが作成され、グループに追加され、開発者がアプリで作業するための適切なアクセス許可を持っている必要があります。
Azure portal の Microsoft Entra ID 概要ページに移動します。
左側 メニューから [すべてのグループ] を選択します。
[グループ] ページで、[新しいグループ] を選択します。
新しいグループ ページで、次のフォームの欄に入力してください。
- グループの種類: セキュリティを選択します。
- グループ名: アプリ名または環境名への参照を含むグループの名前を入力します。
- グループの説明: グループの目的を説明する説明を入力します。
[メンバー] の下の [メンバーが選択されていません] リンクを選択して、グループにメンバーを追加します。
開いたポップアップ パネルで、先ほど作成したサービス プリンシパルを検索し、フィルター処理された結果から選択します。 パネルの下部にある [ 選択] ボタンを選択して、選択内容を確認します。
[新しいグループ] ページの下部にある [の作成] 選択してグループを作成し、[すべてのグループ] ページに戻ります。 新しいグループが表示されない場合は、しばらく待ってからページを更新してください。
グループにロールを割り当てる
次に、アプリで必要なリソースのロール (アクセス許可) を決定し、作成した Microsoft Entra グループにそれらのロールを割り当てます。 グループには、リソース、リソース グループ、またはサブスクリプション スコープでロールを割り当てることができます。 この例では、ほとんどのアプリがすべての Azure リソースを 1 つのリソース グループにグループ化するため、リソース グループ スコープでロールを割り当てる方法を示します。
Azure portal で、アプリを含むリソース グループの の [概要] ページに移動します。
左側のナビゲーションから アクセス制御 (IAM) を選択します。
[アクセス制御 (IAM)] ページで、[+ の追加] を選択し、ドロップダウン メニューから [ロールの割り当て 追加] を選択します。 ロールの割り当ての追加 ページには、ロールを構成して割り当てるためのタブがいくつか用意されています。
[ロール] タブで、検索ボックスを使用して、割り当てるロールを見つけます。 ロールを選択してから、次へを選択します。
[メンバー] タブで、次の手順を実行します。
- へのアクセスを割り当てる値の場合、ユーザー、グループ、またはサービス プリンシパルを選択し、または を指定します。
- [メンバー] の値として、[+ メンバーの選択] を選択し、[メンバーの選択] ポップアップ パネルを開きます。
- 先ほど作成した Microsoft Entra グループを検索し、フィルター処理された結果から選択します。 [を選択]してグループを選択し、展開パネルを閉じます。
- [メンバー] タブの下部にある [レビューと割り当て] を選択します。
[レビューと割り当て] タブで、ページの下部にある [レビューと割り当て] を選択します。
開発者ツールを使用して Azure にサインインする
次に、開発環境で認証を実行するために使用できるいくつかの開発者ツールのいずれかを使用して Azure にサインインします。 認証するアカウントは、先ほど作成して構成した Microsoft Entra グループにも存在する必要があります。
Visual Studio 2017 以降を使用する開発者は、IDE を使用して開発者アカウントを使用して認証できます。 DefaultAzureCredential または VisualStudioCredential を使用するアプリは、このアカウントを検出して使用して、ローカルで実行するときにアプリ要求を認証できます。 このアカウントは、Visual Studio から Azure にアプリを直接発行する場合にも使用されます。
重要
Azure の認証、開発、デプロイ用の Visual Studio ツールを有効にするには、Azure 開発 ワークロード を インストールする必要があります。
Visual Studio で、[ツール]>[オプション] に移動して、オプション ダイアログを開きます。
上部の [検索オプション] ボックスに、Azure を入力して、使用可能なオプションを絞り込みます。
[Azure サービス認証] で、[アカウントの選択] を選択します。
[アカウントの選択] の下にあるドロップダウン メニューを選択して、Microsoft アカウントの追加を選択します。
開いたウィンドウで、目的の Azure アカウントの資格情報を入力し、入力を確認します。
[OK] 選択して、オプション ダイアログを閉じます。
アプリから Azure サービスに対して認証する
Azure Identity ライブラリには、さまざまなシナリオと Microsoft Entra 認証フローをサポートするTokenCredentialの実装が用意されています。 この手順では、ユーザー アカウントをローカルで操作するときに、 DefaultAzureCredential または特定の開発ツールの資格情報を使用する方法を示します。
コードを実装する
次の手順を実行します。
プロジェクトで Azure.Identity と Microsoft.Extensions.Azure パッケージへの参照を追加します。
dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AzureProgram.csで、usingおよびAzure.Identity名前空間のMicrosoft.Extensions.Azureディレクティブを追加します。対応する
Addプレフィックス付き拡張メソッドを使用して、Azure サービス クライアントを登録します。Azure サービスには、Azure SDK クライアント ライブラリの特殊なクライアント クラスを使用してアクセスします。 これらのクライアントの種類を登録して、アプリ全体の依存関係の挿入を通じてアクセスできるようにします。
TokenCredentialインスタンスをUseCredentialメソッドに渡します。 一般的なTokenCredential例を次に示します。ローカル開発用に最適化された
DefaultAzureCredentialインスタンス。 次の使用例は、環境変数のAZURE_TOKEN_CREDENTIALSをdevに設定します。 詳細については、「 資格情報の種類のカテゴリを除外する」を参照してください。builder.Services.AddAzureClients(clientBuilder => { clientBuilder.AddBlobServiceClient( new Uri("https://<account-name>.blob.core.windows.net")); DefaultAzureCredential credential = new( DefaultAzureCredential.DefaultEnvironmentVariableName); clientBuilder.UseCredential(credential); });VisualStudioCredentialなど、特定の開発ツールに対応する資格情報のインスタンス。builder.Services.AddAzureClients(clientBuilder => { clientBuilder.AddBlobServiceClient( new Uri("https://<account-name>.blob.core.windows.net")); VisualStudioCredential credential = new(); clientBuilder.UseCredential(credential); });
ヒント
チームが複数の開発ツールを使用して Azure で認証する場合は、ツール固有の資格情報よりも、
DefaultAzureCredentialのローカル開発最適化インスタンスを優先します。
.NET