次の方法で共有


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

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

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

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

  • Azure CLI
  • Azure Developer CLI
  • Azure PowerShell

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 グループにも存在する必要があります。

開発者は 、Azure CLI を使用して Microsoft Entra ID に対する認証を行うことができます。 DefaultAzureCredentialまたはAzureCliCredentialを使用するアプリでは、ローカルで実行するときにこのアカウントを使用してアプリ要求を認証できます。

Azure CLI で認証するには、 az login コマンドを実行します。 既定の Web ブラウザーを使用するシステムでは、Azure CLI によってブラウザーが起動され、ユーザーが認証されます。

az login

既定の Web ブラウザーがないシステムの場合、az login コマンドはデバイス コード認証フローを使用します。 ユーザーは、--use-device-code 引数を指定してブラウザーを起動するのではなく、デバイス コード フローを使用するように Azure CLI に強制することもできます。

az login --use-device-code

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

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

コードを実装する

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

DefaultAzureCredentialを使用するには、@azure/ID パッケージをアプリケーションに追加します。 選択したターミナルで、アプリケーション プロジェクト ディレクトリに移動し、次のコマンドを実行します。

npm install @azure/identity

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

  1. @azure/identity パッケージをインポートします。
  2. Azure サービス クライアントを作成し、 DefaultAzureCredentialの新しいインスタンスに渡します。
import { DefaultAzureCredential } from "@azure/identity";
import { SomeAzureServiceClient } from "@azure/arm-some-service";

const client = new SomeAzureServiceClient(new DefaultAzureCredential());