Key Vault での認証は 、Microsoft Entra ID と組み合わせて機能します。これは、特定の セキュリティ プリンシパルの ID を認証する役割を担います。
セキュリティ プリンシパルは、Azure リソースへのアクセスを要求するユーザー、グループ、サービス、またはアプリケーションを表すオブジェクトです。 すべてのセキュリティ プリンシパルには、Azure によって一意のオブジェクト ID が割り当てられます。
ユーザー セキュリティ プリンシパルでは、Microsoft Entra ID 内にプロファイルを持つ個人が示されます。
グループ セキュリティ プリンシパルでは、Microsoft Entra ID 内に作成されたユーザーのセットが示されます。 グループに割り当てられたすべてのロールまたはアクセス許可は、グループ内のすべてのユーザーに付与されます。
サービス プリンシパルは、アプリケーションまたはサービスを識別するセキュリティ プリンシパルの一種です。つまり、ユーザーやグループではなく、コードの一部です。 サービス プリンシパルのオブジェクト ID は、そのユーザー名と同様に機能します。サービス プリンシパルの クライアント シークレット は、そのパスワードのように機能します。
アプリケーションの場合、サービス プリンシパルを取得する方法は 2 つあります。
推奨: アプリケーションのシステム割り当て マネージド ID を 有効にします。
マネージド ID を使用すると、Azure はアプリケーションのサービス プリンシパルを内部的に管理し、他の Azure サービスでアプリケーションを自動的に認証します。 マネージド ID は、さまざまなサービスにデプロイされたアプリケーションで使用できます。
詳細については、 マネージド ID の概要を参照してください。 また、 マネージド ID をサポートする Azure サービスについては、特定のサービス (App Service、Azure Functions、Virtual Machines など) のマネージド ID を有効にする方法を説明する記事へのリンクも参照してください。
マネージド ID を使用できない場合は、「クイック スタート: Azure ID プラットフォームにアプリケーションを登録する」で説明されているように、代わりにアプリケーションを Microsoft Entra テナントに登録します。 登録により、すべてのテナントでアプリを識別する 2 つ目のアプリケーション オブジェクトも作成されます。
Key Vault ファイアウォールを構成する
Key Vault では、パブリック IP アドレスを使用してリソースにアクセスすることが既定で許可されます。 セキュリティを強化するため、特定の IP 範囲、サービス エンドポイント、仮想ネットワーク、またはプライベート エンドポイントにアクセスを制限することもできます。
詳細については、「ファイアウォールの向こう側にある Azure Key Vault へのアクセス」を参照してください。
認証を伴う Key Vault 要求操作フロー
Key Vault の認証は、Key Vault に対するあらゆる要求操作の過程で行われます。 トークンは、いったん取得されると、後続の呼び出しで再利用することができます。 認証フローの例:
トークンは、次に例を示す Microsoft Entra ID で認証を要求します。
- 仮想マシンや App Service アプリケーションなど、マネージド ID を割り当てられた Azure リソースが、REST エンドポイントに接続してアクセス トークンを取得します。
- ユーザーが、ユーザー名とパスワードを使用して Azure portal にログインします。
Microsoft Entra ID での認証が成功すると、セキュリティ プリンシパルに OAuth トークンが付与されます。
Key Vault のエンドポイント (URI) を通して Key Vault REST API を呼び出します。
Key Vault ファイアウォールにより、次の条件がチェックされます。 いずれかの条件が満たされた場合、呼び出しは許可されます。 それ以外の場合、呼び出しはブロックされ、不許可の応答が返されます。
- ファイアウォールは無効になっており、Key Vault のパブリック エンドポイントにパブリック インターネットから到達できます。
- 呼び出し元は Key Vault の信頼されたサービスであり、ファイアウォールをバイパスできます。
- 呼び出し元は、IP アドレス、仮想ネットワーク、またはサービス エンドポイントによってファイアウォールのリストに登録されています。
- 呼び出し元は、構成されたプライベート リンク接続を通して Key Vault に到達できます。
ファイアウォールで呼び出しが許可された場合、Key Vault によって Microsoft Entra ID が呼び出されて、セキュリティ プリンシパルのアクセス トークンの検証が行われます。
Key Vault により、要求された操作に必要なアクセス許可をサービス プリンシパルが持っているかどうかが確認されます。 そうでない場合、Key Vault からは禁止応答が返されます。
Key Vault により、要求された操作が実行されて、結果が返されます。
次の図は、Key Vault "シークレットの取得" API を呼び出すアプリケーションのプロセスを示しています。
注
シークレット、証明書、キーの Key Vault SDK クライアントは、アクセス トークンなしで Key Vault を追加で呼び出すので、テナント情報を取得する際に 401 応答が返されます。 詳細については、「認証、要求、および応答」を参照してください。
アプリケーション コードでの Key Vault への認証
Key Vault SDK には Azure ID クライアント ライブラリが使用されており、Key Vault に対する環境の垣根を越えたシームレスな認証が同じコードで実現されます。
Azure ID クライアント ライブラリ
.NET | Python(プログラミング言語) | ジャワ | JavaScript |
---|---|---|---|
Azure Identity SDK .NET | Azure Identity SDK Python | Azure Identity SDK Java | Azure Identity SDK JavaScript |
ベスト プラクティスと開発者の例の詳細については、「コードでの Key Vault に対する認証」を参照してください