ローカル開発時に、アプリケーションはさまざまな Azure サービスにアクセスするために Azure に対して認証を行う必要があります。 ローカル認証の 2 つの一般的な方法は 、サービス プリンシパルを使用 するか、開発者アカウントを使用することです。 この記事では、開発者アカウントを使用する方法について説明します。 前のセクションでは、次の内容について説明します。
- Microsoft Entra グループを使用して複数の開発者アカウントのアクセス許可を効率的に管理する方法
- 開発者アカウントにロールを割り当ててアクセス許可のスコープを定義する方法
- サポートされているローカル開発ツールにサインインする方法
- アプリ コードから開発者アカウントを使用して認証する方法
開発者の Azure 資格情報を使用してローカル開発中にアプリが Azure に対して認証されるようにするには、開発者は次のいずれかの開発者ツールから Azure にサインインする必要があります。
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
- 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 グループにも存在する必要があります。
開発者は 、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 または特定の開発ツールの資格情報を使用する方法を示します。
ヒント
チームが複数の開発ツールを使用して Azure で認証する場合は、ツール固有の資格情報よりも、 DefaultAzureCredential のローカル開発最適化インスタンスを優先します。
コードを実装する
@azure/ID パッケージをアプリケーションに追加します。
npm install @azure/identity注
VisualStudioCodeCredentialを使用する場合は、@azure/identity-vscode プラグイン パッケージもインストールする必要があります。 次に、資格情報を明示的に読み込みます。 例については、 @azure/identity-vscode README を参照してください。シナリオに基づいて、資格情報の実装 のいずれかを 選択します。
- 開発ツールに固有の資格情報を使用します。このオプションは、1 人または 1 つのツールのシナリオに最適です。
- 任意の開発ツールで使用できる資格情報を使用します。このオプションは、オープン ソース プロジェクトや多様なツール チームに最適です。
開発ツールに固有の資格情報を使用する
特定の開発ツールに対応する TokenCredential インスタンスを、 AzureCliCredentialなどの Azure サービス クライアント コンストラクターに渡します。
import { AzureCliCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";
const credential = new AzureCliCredential();
const client = new BlobServiceClient(
"https://<storage-account-name>.blob.core.windows.net",
credential
);
任意の開発ツールで使用できる資格情報を使用する
すべてのローカル開発ツール用に最適化された DefaultAzureCredential インスタンスを使用します。 この例では、環境変数AZURE_TOKEN_CREDENTIALSdevに設定する必要があります。 詳細については、「 資格情報の種類のカテゴリを除外する」を参照してください。
import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";
// Set environment variable AZURE_TOKEN_CREDENTIALS to "dev"
const credential = new DefaultAzureCredential({
requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]
});
const client = new BlobServiceClient(
"https://<storage-account-name>.blob.core.windows.net",
credential
);