アプリでは、Azure ID ライブラリを使用してMicrosoft Entra IDに対する認証を行うことができます。これにより、アプリはAzureのサービスとリソースにアクセスできます。 この認証要件は、アプリがAzureに展開されているか、オンプレミスでホストされているか、開発者ワークステーションでローカルに実行されているかに関係なく適用されます。 このセクションでは、Azure SDK クライアント ライブラリを使用するときに、さまざまな環境でMicrosoft Entra IDするようにアプリを認証するための推奨される方法について説明します。
アプリ認証の推奨される方法
接続文字列やキーベースのオプションを使用する代わりに、Microsoft Entra IDを使用したトークンベースの認証は、Azureするアプリを認証するための推奨される方法です。 Azure ID ライブラリ は、トークン ベースの認証をサポートし、アプリがローカル、Azure、またはオンプレミス サーバーで実行されているかどうかにかかわらず、Azure リソースに対する認証をアプリに許可するクラスを提供します。
トークンベースの認証の利点
トークンベースの認証は、接続文字列よりも次の利点を提供します。
- トークンベースの認証では、Azure リソースにアクセスすることを意図した特定のアプリのみがこれを行うことができますが、connection stringを持つすべてのアプリはAzure リソースに接続できます。
- トークン ベースの認証を使用すると、Azureリソース アクセスを、アプリで必要な特定のアクセス許可のみに制限できます。 これは、最小限の特権の原則に従います。 これに対し、connection stringは、Azure リソースに対する完全な権限を付与します。
- トークン ベースの認証に管理 ID を使用する場合、Azureは管理機能を自動的に処理するため、シークレットのセキュリティ保護やローテーションなどのタスクについて心配する必要はありません。 これにより、侵害される可能性のあるconnection stringやアプリケーション シークレットがないため、アプリの安全性が高くなります。
- Azure ID ライブラリは、Microsoft Entraトークンを取得して管理します。
接続文字列の使用は、トークンベースの認証がオプションではないシナリオ、初期概念実証アプリ、または運用データや機密データにアクセスしない開発プロトタイプに限定する必要があります。 可能な場合は、Azure ID ライブラリで使用できるトークン ベースの認証クラスを使用して、Azure リソースに対する認証を行います。
異なる環境での認証
Azure リソースに対する認証にアプリが使用するトークン ベースの認証の特定の種類は、アプリの実行場所によって異なります。 次の図は、さまざまなシナリオと環境に関するガイダンスを示しています。
アプリの使用環境によってお勧めの認証方法が異なります。
Azure : アプリは、マネージド ID を使用してAzureリソースに対して認証する必要があります。 このオプションについて詳しくは、サーバー環境での認証に関するセクションをご覧ください。- 開発中にローカルで実行する: アプリは、developer アカウント、ブローカー、またはサービス プリンシパルを使用してAzureに対して認証できます。 各オプションについて詳しくは、ローカル開発時の認証に関するセクションをご覧ください。
- Hosted on-premises: アプリは、アプリケーション サービス プリンシパルまたはAzure Arcの場合はマネージド ID を使用して、Azure リソースに対して認証する必要があります。オンプレミスのワークフローの詳細については、「オンプレミスでホストされているアプリの認証で詳しく説明します。
Azureでホストされるアプリの認証
アプリがAzureでホストされている場合は、マネージド ID を使用して、資格情報を管理することなく、Azureリソースに対する認証を行うことができます。 マネージド ID には、ユーザー割り当て ID とシステム割り当て ID の 2 種類があります。
ユーザー割り当てマネージド ID を使用する
ユーザー割り当てマネージド ID は、スタンドアロン Azure リソースとして作成されます。 1 つ以上のAzure リソースに割り当てることができ、それらのリソースで同じ ID とアクセス許可を共有できます。 ユーザー割り当てマネージド ID を使用して認証するには、ID を作成し、Azure リソースに割り当て、クライアント ID、リソース ID、またはオブジェクト ID を指定して、認証にこの ID を使用するようにアプリを構成します。
システム割り当てマネージド ID を使用する
システム割り当てマネージド ID は、Azure リソースで直接有効になります。 ID はそのリソースのライフサイクルに関連付けられ、リソースが削除されると自動的に削除されます。 システム割り当てマネージド ID を使用して認証するには、Azure リソースで ID を有効にし、認証にこの ID を使用するようにアプリを構成します。
ローカル開発時の認証
ローカル開発時に、開発者の資格情報またはサービス プリンシパルを使用して、Azureリソースに対する認証を行うことができます。 これにより、アプリの認証ロジックをAzureにデプロイせずにテストできます。
開発者の資格情報を使用する
独自のAzure資格情報を使用して、ローカル開発中にAzureリソースへ認証を行うことができます。 これは通常、Azure CLIやVisual Studio Codeなどの開発ツールを使用して行われます。これにより、Azure サービスにアクセスするために必要なトークンをアプリに提供できます。 この方法は便利ですが、開発目的でのみ使用してください。
ブローカーを使用する
ブローカー認証では、システム認証ブローカーを使用してユーザー資格情報を収集し、アプリを認証します。 システム認証ブローカーは、ユーザーのコンピューター上で実行され、接続されているすべてのアカウントの認証ハンドシェイクとトークンのメンテナンスを管理します。
サービス プリンシパルの使用
サービス プリンシパルは、アプリを表現するためにMicrosoft Entra テナントで作成され、Azureリソースに対する認証に使用されます。 ローカル開発時にサービス プリンシパルの資格情報を使用するようにアプリを構成できます。 この方法は、開発者の資格情報を使用するよりも安全であり、運用環境でのアプリの認証方法に近いです。 ただし、シークレットが必要なため、マネージド ID を使用するよりも理想的ではありません。
オンプレミスでホストされているアプリの認証
オンプレミスでホストされているアプリの場合は、サービス プリンシパルを使用して、Azure リソースに対する認証を行うことができます。 これには、Microsoft Entra IDでサービス プリンシパルを作成し、必要なアクセス許可を割り当て、その資格情報を使用するようにアプリを構成する必要があります。 この方法により、オンプレミス のアプリはAzureサービスに安全にアクセスできます。