次の方法で共有


Azure ID ライブラリを使用して Azure サービスに対して .NET アプリを認証する

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

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

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

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

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

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

異なる環境での認証

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

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

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

  • Azure でホスト: アプリは、マネージド ID を使用して Azure リソースに対して認証する必要があります。 このオプションについて詳しくは、サーバー環境での認証に関するセクションをご覧ください。
  • 開発中にローカルで実行する: アプリは、ローカル開発用のアプリケーション サービス プリンシパルを使用するか、開発者の Azure 資格情報を使用して Azure に対して認証できます。 各オプションについて詳しくは、ローカル開発時の認証に関するセクションをご覧ください。
  • オンプレミスでホストされる: アプリは、アプリケーション サービス プリンシパルまたは 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 などの開発ツールを使用して行われます。これにより、Azure サービスにアクセスするために必要なトークンをアプリに提供できます。 この方法は便利ですが、開発目的でのみ使用してください。

サービス プリンシパルを使用する

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

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

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