次の方法で共有


開発者アカウントを使用したローカル開発中に Azure サービスに対して .NET アプリを認証する

ローカル開発時に、アプリケーションはさまざまな Azure サービスにアクセスするために Azure に対して認証を行う必要があります。 ローカル認証の 2 つの一般的な方法は、サービス プリンシパル を使用するか、開発者アカウントを使用することです。 この記事では、開発者アカウントを使用する方法について説明します。 以下のセクションでは、次のことを説明します。

  • Microsoft Entra グループを使用して複数の開発者アカウントのアクセス許可を効率的に管理する方法
  • 開発者アカウントにロールを割り当てて権限の範囲を決定する方法
  • サポートされているローカル開発ツールにサインインする方法
  • アプリ コードから開発者アカウントを使用して認証する方法

開発者ツール ID を使用して Azure リソースに接続するローカル開発で実行されているアプリを示す図。

開発者の Azure 資格情報を使用してローカル開発中にアプリが Azure に対して認証されるようにするには、開発者は次のいずれかの開発者ツールから Azure にサインインする必要があります。

  • Azure CLI(コマンドラインインターフェイス)
  • Azure 開発者コマンドラインインターフェイス
  • Azure PowerShell
  • Visual Studio

Azure Identity ライブラリは、開発者がこれらのツールのいずれかからサインインしていることを検出できます。 その後、ライブラリはツールを使用して Microsoft Entra アクセス トークンを取得し、サインインしているユーザーとして Azure に対してアプリを認証できます。

この方法では、開発者の既存の Azure アカウントを利用して認証プロセスを効率化します。 ただし、開発者のアカウントには、アプリが必要とするよりも多くのアクセス許可があるため、運用環境でアプリが実行するアクセス許可を超える可能性があります。 または、ローカル開発中に使用するアプリケーションサービスプリンシパルを作成することもできます。これは、アプリが必要とするアクセスのみを持つように範囲を設定できます。

ローカル開発用の Microsoft Entra グループを作成する

個々のサービス プリンシパル オブジェクトにロールを割り当てるのではなく、アプリがローカル開発で必要とするロール (アクセス許可) をカプセル化する Microsoft Entra グループを作成します。 この方法には、次の利点があります。

  • すべての開発者には、グループ レベルで同じロールが割り当てられます。
  • アプリに新しいロールが必要な場合は、アプリのグループにのみ追加する必要があります。
  • 新しい開発者がチームに参加すると、開発者用に新しいアプリケーション サービス プリンシパルが作成され、グループに追加され、開発者がアプリで作業するための適切なアクセス許可を持っている必要があります。
  1. Azure portal の Microsoft Entra ID 概要ページに移動します。

  2. 左側 メニューから [すべてのグループ] を選択します。

  3. [グループ] ページで、[新しいグループ] を選択します。

  4. 新しいグループ ページで、次のフォームの欄に入力してください。

    • グループの種類: セキュリティを選択します。
    • グループ名: アプリ名または環境名への参照を含むグループの名前を入力します。
    • グループの説明: グループの目的を説明する説明を入力します。

    Azure portal でグループを作成する方法を示すスクリーンショット。

  5. [メンバー] の下の [メンバーが選択されていません] リンクを選択して、グループにメンバーを追加します。

  6. 開いたポップアップ パネルで、先ほど作成したサービス プリンシパルを検索し、フィルター処理された結果から選択します。 パネルの下部にある [ 選択] ボタンを選択して、選択内容を確認します。

  7. [新しいグループ] ページの下部にある [の作成] 選択してグループを作成し、[すべてのグループ] ページに戻ります。 新しいグループが表示されない場合は、しばらく待ってからページを更新してください。

グループにロールを割り当てる

次に、アプリで必要なリソースのロール (アクセス許可) を決定し、作成した Microsoft Entra グループにそれらのロールを割り当てます。 グループには、リソース、リソース グループ、またはサブスクリプション スコープでロールを割り当てることができます。 この例では、ほとんどのアプリがすべての Azure リソースを 1 つのリソース グループにグループ化するため、リソース グループ スコープでロールを割り当てる方法を示します。

  1. Azure portal で、アプリを含むリソース グループの の [概要] ページに移動します。

  2. 左側のナビゲーションから アクセス制御 (IAM) を選択します。

  3. [アクセス制御 (IAM)] ページで、[+ の追加] を選択し、ドロップダウン メニューから [ロールの割り当て 追加] を選択します。 ロールの割り当ての追加 ページには、ロールを構成して割り当てるためのタブがいくつか用意されています。

  4. [ロール] タブで、検索ボックスを使用して、割り当てるロールを見つけます。 ロールを選択してから、次へを選択します。

  5. [メンバー] タブで、次の手順を実行します。

    • へのアクセスを割り当てる値の場合、ユーザー、グループ、またはサービス プリンシパルを選択し、または を指定します。
    • [メンバー] の値として、[+ メンバーの選択] を選択し、[メンバーの選択] ポップアップ パネルを開きます。
    • 先ほど作成した Microsoft Entra グループを検索し、フィルター処理された結果から選択します。 [を選択]してグループを選択し、展開パネルを閉じます。
    • [メンバー] タブの下部にある [レビューと割り当て] を選択します。

    Microsoft Entra グループにロールを割り当てる方法を示すスクリーンショット。

  6. [レビューと割り当て] タブで、ページの下部にある [レビューと割り当て] を選択します。

開発者ツールを使用して Azure にサインインする

次に、開発環境で認証を実行するために使用できるいくつかの開発者ツールのいずれかを使用して Azure にサインインします。 認証するアカウントは、先ほど作成して構成した Microsoft Entra グループにも存在する必要があります。

Visual Studio 2017 以降を使用する開発者は、IDE を使用して開発者アカウントを使用して認証できます。 DefaultAzureCredential または VisualStudioCredential を使用するアプリは、このアカウントを検出して使用して、ローカルで実行するときにアプリ要求を認証できます。 このアカウントは、Visual Studio から Azure にアプリを直接発行する場合にも使用されます。

重要

Azure の認証、開発、デプロイ用の Visual Studio ツールを有効にするには、Azure 開発 ワークロード インストールする必要があります。

  1. Visual Studio で、[ツール]>[オプション] に移動して、オプション ダイアログを開きます。

  2. 上部の [検索オプション] ボックスに、Azure を入力して、使用可能なオプションを絞り込みます。

  3. [Azure サービス認証] で、[アカウントの選択] を選択します。

  4. [アカウントの選択] の下にあるドロップダウン メニューを選択して、Microsoft アカウントの追加を選択します。

  5. 開いたウィンドウで、目的の Azure アカウントの資格情報を入力し、入力を確認します。

    Visual Studio を使用して Azure にサインインする方法を示すスクリーンショット。

  6. [OK] 選択して、オプション ダイアログを閉じます。

アプリから Azure サービスに対して認証する

Azure ID ライブラリ では、さまざまな 資格情報、さまざまなシナリオと Microsoft Entra 認証フローのサポートに適応した TokenCredential の実装が提供されます。 この手順では、ユーザー アカウントをローカルで操作するときに DefaultAzureCredential を使用する方法を示します。

コードを実装する

DefaultAzureCredential は、Microsoft Entra ID に対する認証のための、堅牢な順序付けられた一連のメカニズムです。 各認証メカニズムは、TokenCredential クラスから派生したクラスであり、資格情報と呼ばれます。 実行時に、DefaultAzureCredential は最初の資格情報を使用して認証を試みます。 その資格情報がアクセス トークンの取得に失敗した場合は、アクセス トークンが正常に取得されるまで、シーケンス内の次の資格情報が試行されます。 これにより、アプリは環境固有のコードを記述することなく、異なる環境で異なる資格情報を使用できます。

DefaultAzureCredentialを使用するには、Azure.Identity と必要に応じて、Microsoft.Extensions.Azure パッケージをアプリケーションに追加します。

選択したターミナルで、アプリケーション プロジェクト ディレクトリに移動し、次のコマンドを実行します。

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Azure サービスには、さまざまな Azure SDK クライアント ライブラリの特殊なクライアント クラスを使用してアクセスします。 これらのクラスと独自のカスタム サービスは、アプリ全体で依存関係の挿入を介してアクセスできるように登録する必要があります。 Program.csで、次の手順を実行してクライアント クラスと DefaultAzureCredentialを登録します。

  1. Azure.Identity ディレクティブを使用して、Microsoft.Extensions.Azureusing 名前空間を含めます。
  2. 対応する Addプレフィックス付き拡張メソッドを使用して、Azure サービス クライアントを登録します。
  3. DefaultAzureCredential のインスタンスを UseCredential メソッドに渡します。
builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));

    clientBuilder.UseCredential(new DefaultAzureCredential());
});

UseCredential 方法の代わりに、サービス クライアントに資格情報を直接提供します。

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));