Azure App Service から Azure サービスおよびデータベースに安全に接続する

App サービスは、データベース、ストレージ、または別アプリなどの他の Azure サービスに接続する必要がある場合があります。 この概要では、接続するさまざまな方法と、それらを使用するタイミングを推奨します。

接続方法 いつ使用するか
アプリ ID を使用して接続する * 認証済みユーザーが存在しない状態で、またはアプリ ID を使用して、リソースに接続する必要があります。
* 資格情報、キー、シークレットを管理する必要はありません。また、資格情報には自分もアクセスできません。
* マネージド ID を使用して資格情報を管理できます。
* Azure リソースにアクセスするには、Microsoft Entra ID が必要です。 たとえば、Microsoft Graph や Azure 管理 SDK などのサービスです。
認証済みユーザーとして接続する * リソースにアクセスし、サインインしているユーザーとして何らかのアクションを実行する必要があります。
シークレットを使用して接続する * 環境変数としてアプリにシークレットを渡す必要があります。
* GitHub、Twitter、Facebook、Google などの Azure 以外のサービスに接続する必要があります。
* ダウンストリーム リソースでは Microsoft Entra 認証はサポートされていません。
* ダウンストリーム リソースには、接続文字列、キー、またはシークレット (何らかの) が必要です。

シークレットを使用して接続する

アプリでシークレットを使用するには、Azure Key Vault に格納されているシークレットと App Service アプリケーション設定のシークレットを使用する方法の 2 つをお勧めします。

アプリ設定でシークレットを使用する

一部のアプリでは、環境変数を使用してシークレットにアクセスします。 従来、App Service アプリ設定は、接続文字列、API キー、およびその他の環境変数を格納するために使用されてきました。 これらのシークレットは、アプリの起動時に環境変数としてアプリケーション コードに挿入されます。 アプリの設定は、格納されるときに常に暗号化されます (保存時の暗号化)。 シークレットのアクセス ポリシーと監査履歴も必要な場合は、それらを Azure Key Vault に配置し、アプリ設定で Key Vault リファレンスを使用することを検討してください。

アプリケーション シークレットを使用してデータベースに接続する例:

キー コンテナーのシークレットを使用する

Azure Key Vault を使用すると、シークレットとキーを安全に格納し、シークレットのアクセスと使用を監視し、アプリケーション シークレットの管理を簡素化できます。 アプリのダウンストリーム サービスで Microsoft Entra 認証がサポートされていない場合、あるいは接続文字列またはキーが必要な場合は、Key Vault を使用してシークレットを格納し、マネージド ID を使ってアプリを Key Vault に接続し、シークレットを取得します。

Key Vault と統合されたマネージド ID の利点は次のとおりです。

  • Key Vault へのアクセスはこのアプリに制限されます。
  • アプリの共同作成者 (管理者など) は、App Service リソースを完全に制御できる場合がありますが、同時に、Key Vault シークレットにアクセスすることはできません。
  • アプリケーション コードが既にアプリ設定を使用して接続シークレットにアクセスしている場合、コードの変更は必要ありません。
  • Key Vault では、シークレットにアクセスしたユーザーの監視と監査が提供されます。
  • Key Vault の接続情報のローテーションでは、App Service を変更する必要はありません。

次の図は、App Service がマネージド ID を使用して Key Vault に接続し、Key Vault に格納されているシークレットを使って Azure サービスにアクセスする方法を示しています。

Image showing app service using a secret stored in Key Vault and managed with Managed identity to connect to Azure AI services.

アプリ ID を使用して接続する

場合によっては、アプリ自体の ID で、またはサインインしているユーザーが存在しない状態で、アプリがデータにアクセスする必要があります。 Microsoft Entra ID のマネージド ID を使用すると、App Service では、アプリの資格情報を必要とせずに、ロールベースのアクセス制御 (RBAC) を使ってリソースにアクセスできます。 マネージド ID は、Microsoft Entra 認証をサポートする任意のリソースに接続できます。 マネージド ID を対象の Web アプリに割り当てると、Azure では証明書の作成と配布が行われます。 シークレットまたはアプリの資格情報の管理について心配する必要はありません。

次の図は、他の Azure サービスに接続する App Service を示しています:

  • A: ユーザーは Azure app service の web サイトにアクセスします。
  • B: マネージド ID を使用して、App Service から別の Azure サービス安全に接続します。
  • C: マネージド ID を使用して、App Service から Microsoft Graph 安全に接続します。

Diagram showing managed identity accessing a resource with or without the user's identity.

認証済みユーザーとして接続する

場合によっては、アプリがリソースに接続し、サインインしているユーザーのみが実行できるアクションを実行する必要があります。 サインインしているユーザーの ID を使用して、リソースに接続するための委任されたアクセス許可をアプリに付与します。

次の図は、サインインしているユーザーの代わりに SQL データベースに安全にアクセスするアプリケーションを示しています。

Architecture diagram for tutorial scenario.

一般的なシナリオを次に示します。

次のステップ

具体的には、次の方法を学習します。