Azure Key Vault の認証

Key Vault による認証は、特定のセキュリティ プリンシパルの ID の認証を行う Microsoft Entra ID と連携して機能します。

セキュリティ プリンシパルは、Azure リソースへのアクセスを要求するユーザー、グループ、サービス、またはアプリケーションを表すオブジェクトです。 すべてのセキュリティ プリンシパルには、Azure によって一意のオブジェクト ID が割り当てられます。

  • ユーザー セキュリティ プリンシパルでは、Microsoft Entra ID 内にプロファイルを持つ個人が示されます。

  • グループ セキュリティ プリンシパルでは、Microsoft Entra ID 内に作成されたユーザーのセットが示されます。 グループに割り当てられたすべてのロールまたはアクセス許可は、グループ内のすべてのユーザーに付与されます。

  • サービス プリンシパルは、アプリケーションまたはサービス、つまりユーザーまたはグループではなくコードを示すセキュリティ プリンシパルの一種です。 サービス プリンシパルのオブジェクト ID は、そのユーザー名のように機能します。サービス プリンシパルのクライアント シークレットは、そのパスワードのように動作します。

アプリケーションの場合、サービス プリンシパルを取得するには次の 2 つの方法があります。

  • 推奨: アプリケーションに対してシステム割り当てのマネージド ID を有効にします。

    Azure では、マネージ ID を使用することにより、アプリケーションのサービス プリンシパルが内部的に管理され、他の Azure サービスでのアプリケーションの認証が自動的に行われます。 マネージド ID は、さまざまなサービスにデプロイされたアプリケーションで使用できます。

    詳細については、マネージド ID の概要に関する記事を参照してください。 また、マネージド ID がサポートされている Azure サービスに関する記事も参照してください。それには、特定のサービス (App Service、Azure Functions、Virtual Machines など) でマネージド ID を有効にする方法について説明されている記事へのリンクが含まれます。

  • マネージド ID を使用できない場合は、代わりに Microsoft Entra テナントにアプリケーションを登録します。詳細については、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」を参照してください。 また、登録によって、すべてのテナントでそのアプリを示す 2 つ目のアプリケーション オブジェクトも作成されます。

Key Vault ファイアウォールを構成する

Key Vault では、パブリック IP アドレスを使用してリソースにアクセスすることが既定で許可されます。 セキュリティを強化するため、特定の IP 範囲、サービス エンドポイント、仮想ネットワーク、またはプライベート エンドポイントにアクセスを制限することもできます。

詳細については、「ファイアウォールの向こう側にある Azure Key Vault へのアクセス」を参照してください。

認証を伴う Key Vault 要求操作フロー

Key Vault の認証は、Key Vault に対するあらゆる要求操作の過程で行われます。 トークンは、いったん取得されると、後続の呼び出しで再利用することができます。 認証フローの例:

  1. Microsoft Entra ID で認証を行うためのトークンを要求します。その例を次に示します。

    • 仮想マシンや App Service アプリケーションなど、マネージド ID を割り当てられた Azure リソースが、REST エンドポイントに接続してアクセス トークンを取得します。
    • ユーザーが、ユーザー名とパスワードを使用して Azure portal にログインします。
  2. Microsoft Entra ID での認証が成功すると、セキュリティ プリンシパルに OAuth トークンが付与されます。

  3. Key Vault のエンドポイント (URI) を通して Key Vault REST API を呼び出します。

  4. Key Vault ファイアウォールにより、次の条件がチェックされます。 いずれかの条件が満たされた場合、呼び出しは許可されます。 それ以外の場合、呼び出しはブロックされ、不許可の応答が返されます。

    • ファイアウォールは無効になっており、Key Vault のパブリック エンドポイントにパブリック インターネットから到達できます。
    • 呼び出し元は Key Vault の信頼できるサービスであり、ファイアウォールをバイパスすることができます。
    • 呼び出し元は、IP アドレス、仮想ネットワーク、またはサービス エンドポイントによってファイアウォールのリストに登録されています。
    • 呼び出し元は、構成されたプライベート リンク接続を通して Key Vault に到達できます。
  5. ファイアウォールで呼び出しが許可された場合、Key Vault によって Microsoft Entra ID が呼び出されて、セキュリティ プリンシパルのアクセス トークンの検証が行われます。

  6. Key Vault により、要求された操作に必要なアクセス許可をサービス プリンシパルが持っているかどうかが確認されます。 そうでない場合、Key Vault からは禁止応答が返されます。

  7. Key Vault により、要求された操作が実行されて、結果が返されます。

次の図は、アプリケーションが Key Vault の "シークレットの取得" API を呼び出すプロセスを示したものです。

The Azure Key Vault authentication flow

Note

シークレット、証明書、キーの Key Vault SDK クライアントは、アクセス トークンなしで Key Vault を追加で呼び出すので、テナント情報を取得する際に 401 応答が返されます。 詳細については、「認証、要求、応答」を参照してください。

アプリケーション コードでの Key Vault に対する認証

Key Vault SDK には Azure ID クライアント ライブラリが使用されており、Key Vault に対する環境の垣根を越えたシームレスな認証が同じコードで実現されます。

Azure ID クライアント ライブラリ

.NET Python Java JavaScript
Azure Identity SDK .NET Azure Identity SDK Python Azure Identity SDK Java Azure Identity SDK JavaScript

ベスト プラクティスと開発者の例について詳しくは、「コードでの Key Vault に対する認証」を参照してください。

次の手順