次の方法で共有


Azure Identity ライブラリを使用して Java アプリを Azure サービスに認証する

アプリでは、Azure ID ライブラリを使用してMicrosoft Entra IDに対する認証を行うことができます。これにより、アプリはAzureのサービスとリソースにアクセスできます。 この認証要件は、アプリがAzureに展開されているか、オンプレミスでホストされているか、開発者ワークステーションでローカルに実行されているかに関係なく適用されます。 この記事では、Azure SDK クライアント ライブラリを使用するときに、さまざまな環境でMicrosoft Entra IDするようにアプリを認証するための推奨される方法について説明します。

接続文字列やキーベースのオプションを使用する代わりに、Microsoft Entra IDによるトークンベースの認証は、Azureするアプリを認証するための推奨される方法です。 Azure ID ライブラリは、トークン ベースの認証をサポートし、アプリがローカル、Azure、またはオンプレミス サーバーで実行されているかどうかにかかわらず、Azureリソースに対してアプリを認証できるようにするクラスを提供します。

トークンベースの認証の利点

トークンベースの認証は、接続文字列よりも次の利点を提供します。

  • トークンベースの認証により、Azure リソースにアクセスすることを目的とした特定のアプリのみがアクセスできるようになりますが、接続文字列を持つすべてのアプリはAzure リソースに接続できます。
  • トークンベースの認証を使用すると、Azureリソース アクセスを、アプリで必要な特定のアクセス許可のみに制限できます。 この方法は、 最小特権の原則に従います。 これに対し、接続文字列は、Azure リソースに対する完全な権限を付与します。
  • トークン ベースの認証に 管理 ID を使用する場合、Azureは管理機能を自動的に処理するため、シークレットのセキュリティ保護やローテーションなどのタスクについて心配する必要はありません。 この方法では、侵害される可能性のある接続文字列やアプリケーション シークレットがないため、アプリの安全性が高くなります。
  • Azure ID ライブラリは、Microsoft Entraトークンを取得して管理します。

接続文字列の使用を、トークンベースの認証がオプションではないシナリオ、初期の概念実証アプリ、または運用データや機密データにアクセスしない開発プロトタイプに限定します。 可能な場合は、Azure ID ライブラリで使用できるトークン ベースの認証クラスを使用して、Azure リソースに対する認証を行います。

異なる環境での認証

Azure リソースに対する認証にアプリが使用するトークン ベースの認証の特定の種類は、アプリの実行場所によって異なります。 次の図は、さまざまなシナリオと環境に関するガイダンスを示しています。

アプリの実行場所に応じて、アプリに推奨されるトークンベースの認証戦略を示す図。

アプリの使用環境によってお勧めの認証方法が異なります。

  • Azure: アプリは、マネージド ID を使用してAzure リソースに対して認証する必要があります。 詳細については、「Authentication for Azure-hosted apps」セクションを参照してください。
  • 開発中にローカルで実行する: アプリは、デベロッパー アカウントブローカー、またはサービス プリンシパルを使用してAzureに認証できます。 詳細については、「 ローカル開発時の認証 」セクションを参照してください。
  • Hosted on-premises: アプリは、アプリケーション サービス プリンシパルまたはAzure Arcの場合はマネージド ID を使用して、Azure リソースに対して認証する必要があります。オンプレミスのワークフローの詳細については、「オンプレミスでホストされているアプリの認証で詳しく説明します。

Azureでホストされるアプリの認証

Azureでアプリをホストする場合、資格情報を管理しなくても、マネージド ID を使用してAzureリソースに対する認証を行うことができます。 ユーザー割り当てとシステム割り当てという 2 種類のマネージド ID を使用できます。

ユーザー割り当てマネージド ID を使用する

ユーザー割り当てマネージド ID は、スタンドアロン Azure リソースとして作成できます。 その後、1 つ以上のAzure リソースに割り当てて、それらのリソースが同じ ID とアクセス許可を共有できるようにします。 ユーザー割り当てマネージド ID を使用して認証するには、ID を作成し、Azure リソースに割り当て、クライアント ID、リソース ID、またはオブジェクト ID を指定して、認証にこの ID を使用するようにアプリを構成します。

ユーザー割り当てマネージド ID を使用して認証する

システム割り当てマネージド ID を使用する

Azure リソースでシステム割り当てマネージド ID を直接有効にすることができます。 ID はそのリソースのライフサイクルに関連付けられ、リソースが削除されると自動的に削除されます。 システム割り当てマネージド ID を使用して認証するには、Azure リソースで ID を有効にし、認証にこの ID を使用するようにアプリを構成します。

システム割り当てマネージド ID を使用して認証する

ローカル開発時の認証

ローカル開発時に、開発者の資格情報、ブローカー、またはサービス プリンシパルを使用して、Azure リソースに対する認証を行うことができます。 これらの方法のいずれかを使用すると、アプリの認証ロジックをAzureにデプロイせずにテストできます。

開発者の資格情報を使用する

独自のAzure資格情報を使用して、ローカル開発中にAzureリソースへの認証を行うことができます。 通常は、Azure CLI、Azure Developer CLI、Azure PowerShell、Visual Studio Code、IntelliJ IDEA などの開発ツールを使用します。 これらのツールは、Azure サービスにアクセスするために必要なトークンをアプリに提供できます。 この方法は便利ですが、開発目的でのみ使用する必要があります。

開発者アカウントを使用してローカルで認証する

ブローカーを使用する

ブローカー認証では、システム認証ブローカーを使用してユーザー資格情報を収集し、アプリを認証します。 システム認証ブローカーは、ユーザーのコンピューター上で実行され、接続されているすべてのアカウントの認証ハンドシェイクとトークンのメンテナンスを管理します。

ブローカーを使用してローカルで認証する

サービス プリンシパルの使用

Microsoft Entra テナントにサービス プリンシパルを作成して、アプリを表し、Azure リソースに対して認証することができます。 ローカル開発時にサービス プリンシパルの資格情報を使用するようにアプリを構成できます。 この方法は、開発者の資格情報を使用するよりも安全であり、運用環境でのアプリの認証方法に近いです。 ただし、シークレットが必要なため、マネージド ID を使用するよりも理想的ではありません。

サービス プリンシパルを使用してローカルで認証する

オンプレミスでホストされているアプリの認証

オンプレミスでホストされているアプリの場合は、サービス プリンシパルを使用して、Azure リソースに対する認証を行うことができます。 これには、Microsoft Entra IDでサービス プリンシパルを作成し、必要なアクセス許可を割り当て、その資格情報を使用するようにアプリを構成する必要があります。 この方法により、オンプレミス のアプリはAzureサービスに安全にアクセスできます。

サービス プリンシパルを使用してオンプレミス アプリを認証する