次の方法で共有


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

ローカル開発時に、アプリケーションは、さまざまなAzure サービスにアクセスするためにAzureに対して認証を行う必要があります。 ローカルで認証するには、次のいずれかの方法を使用します。

  • Azure ID ライブラリでサポートされているいずれかの開発者ツールで開発者アカウントを使用します。
  • サービス プリンシパルを使用します。 詳細については、「サービス プリンシパルを使用して、ローカル開発中にサービスをAzureするJava アプリを認証する方法に関する説明を参照してください。

この記事では、Azure ID ライブラリでサポートされているツールを使用して開発者アカウントを使用して認証する方法について説明します。 この記事では、次のことについて説明します。

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

認証でサポートされている開発者ツール

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

  • Azure CLI
  • Azure Developer CLI 開発者用コマンドラインインターフェイス
  • Azure PowerShell
  • Visual Studio Code
  • IntelliJ アイデア

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

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

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

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

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

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

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

  4. [ 新しいグループ ] ページで、次のフォーム フィールドに入力します。

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

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

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

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

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

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

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

  1. Azure ポータルで、アプリを含むリソース グループの Overview ページに移動します。

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

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

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

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

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

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

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

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

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

Visual Studio Codeを使用する開発者は、ブローカーを介してエディターを介して開発者アカウントで直接認証できます。 DefaultAzureCredentialまたはVisualStudioCodeCredentialを使用するアプリでは、このアカウントを使用して、シームレスなシングル サインオン エクスペリエンスを通じてアプリ要求を認証できます。

  1. Visual Studio Codeで、Extensions パネルに移動し、Azure Resources 拡張機能をインストールします。 この拡張機能を使用すると、Visual Studio Codeから直接Azureリソースを表示および管理できます。 また、組み込みのVisual Studio Code Microsoft 認証プロバイダーを使用して、Azureで認証します。

    Azure Resources エクステンションを示すスクリーンショットです。

  2. Visual Studio Codeでコマンド パレットを開き、 Azure: サインインを検索して選択します。

    Visual Studio CodeでAzureにサインインする方法を示すスクリーンショット

    ヒント

    Windows/Linux では Ctrl+Shift+P、macOS では Cmd+Shift+P を使用してコマンド パレットを開きます。

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

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

コードを実装する

  1. azure-identity ファイルにpom.xmlの依存関係を追加します。

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
    </dependency>
    
  2. シナリオに基づいて、資格情報の実装のいずれかを選択します。

開発ツールに固有の資格情報を使用する

特定の開発ツールに対応する TokenCredential インスタンスを Azure サービス クライアント コンストラクター (AzureCliCredential など) に渡します。

import com.azure.identity.AzureCliCredential;
import com.azure.identity.AzureCliCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

AzureCliCredential credential = new AzureCliCredentialBuilder().build();

SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

各ツール資格情報は同じパターンに従います。 必要に応じて、資格情報の種類とそれに対応するビルダーを置き換えます。

  • AzureCliCredential / AzureCliCredentialBuilder
  • AzureDeveloperCliCredential / AzureDeveloperCliCredentialBuilder
  • AzurePowerShellCredential / AzurePowerShellCredentialBuilder
  • IntelliJCredential / IntelliJCredentialBuilder
  • VisualStudioCodeCredential / VisualStudioCodeCredentialBuilder

任意の開発ツールで使用できる資格情報を使用する

すべてのローカル開発ツール用に最適化された DefaultAzureCredential インスタンスを使用します。 この例では、環境変数AZURE_TOKEN_CREDENTIALSdevに設定する必要があります。 詳細については、「 資格情報の種類のカテゴリを除外する」を参照してください。

import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
    .requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)
    .build();

SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

次のステップ

この記事では、コンピューターで使用できる資格情報を使用した開発中の認証について説明しました。 この形式の認証は、JavaのAzure SDKで認証できる複数の方法の 1 つです。 次の記事では、その他の方法について説明します。

開発環境の認証に関連する問題が発生した場合は、「開発環境認証の トラブルシューティング」を参照してください。

認証を習得した後、SDK によって提供されるログ機能の詳細については、 Azure SDK for Java のログ記録の構成を参照してください。