Azure の Managed Identity を使えば、アプリや VM がシークレットを保持せずに Vault へ認証できます。漏洩リスクを下げつつ、運用の手間も小さくできます。
本稿は Vault Associate レベルで押さえるべき公式ドキュメント準拠の概念と、現場でそのまま使える最短構成手順を整理します。
Managed Identity(MI)は Azure AD によって自動管理される ID で、資格情報の作成・保存・ローテーションが不要です。Vault の Azure 認証メソッドと組み合わせると、ワークロードは Azure AD から取得したアクセストークンを使って Vault にログインできます。
試験観点では「認証(Auth Method)と認可(Policy)の分離」「ロールでのバインド条件(どの MI/どのリソースから来たリクエストか)」「トークン TTL/Max TTL/再認証」の基礎が頻出です。
| 項目 | Managed Identity(推奨) | Service Principal(クライアントシークレット) | 手動保管の固定シークレット |
|---|---|---|---|
| シークレット管理 | 不要(Azure が自動) | 必要(保管・ローテーション必要) | 必要(人的オペミスリスク高) |
| 漏洩リスク | 低(端末に秘密材料なし) | 中(漏洩すれば横展開) | 高(流出・再利用の危険) |
| ローテーション | 自動(利用側は意識不要) | 必要(CI/CD 連携・期限管理が手間) | ほぼ手動(運用コスト大) |
| Vault ロール条件化 | 可(サブスクリプション/リソースグループ/VM/VMSS 等で制約) | 可(SPN ID で制約) | 不可(発行元不明確になりがち) |
| 監査容易性 | 高(トークン発行元とワークロード紐付け) | 中(SPN 共有の懸念) | 低(利用主体の追跡が難しい) |
Vault の Azure Auth Method は、Azure AD が署名したアクセストークン(MI または Service Principal で取得)を受け取り、署名検証とクレーム検査を行います。ロールに設定したバインド条件(例: サブスクリプション ID、リソースグループ、VM/VMSS 名など)に合致すれば、Vault はポリシー付きのクライアントトークンを発行します。
ポイントは Audience(resource)の一致、トークン有効期限内であること、そしてロール側の制約条件に合致していることです。
Managed Identity を用いた Vault 認証フロー
まず Azure 認証メソッドを有効化し、テナント情報やリソース(audience)を設定します。次に、どの Azure リソースからのトークンを許可するかをロールで定義し、最後にアクセス権限を与える Vault ポリシーを関連付けます。
以下は最小構成の例です。環境や要件(サブスクリプション/リソースグループ/VM 名などの制約)は実際のリソース ID に置き換えてください。
Vault 設定例(CLI と HTTP API)
# 1) Azure 認証メソッドの有効化
vault auth enable azure
# 2) テナントと audience(resource) の設定
vault write auth/azure/config \
tenant_id="00000000-0000-0000-0000-000000000000" \
resource="https://management.azure.com/"
# 3) ロール定義(例)
# - 実運用では、サブスクリプション/リソースグループ/VM(SS)名などで厳格に縛る
# - token_policies で付与するポリシーを指定
vault write auth/azure/role/app-role \
bound_subscription_ids="11111111-1111-1111-1111-111111111111" \
bound_resource_groups="rg-app-prod" \
# 必要に応じて VM/VMSS 名、スケールセット、SPN ID などの制約を追加 \
token_policies="app-kv-read" \
token_ttl=1h token_max_ttl=4h
# 4) 最小権限ポリシー例(読み取りのみ)
tee /tmp/app-kv-read.hcl <<'POLICY'
path "kv/data/app/*" {
capabilities = ["read"]
}
POLICY
vault policy write app-kv-read /tmp/app-kv-read.hcl
# 参考: HTTP API でのログイン例(後述のワークロード側で実行)
# curl --request POST \
# --data '{"role":"app-role","jwt":"<AAD_access_token>"}' \
# http://<vault_addr>/v1/auth/azure/loginワークロードは Azure IMDS を通じて Azure AD のアクセストークンを取得します。resource は Vault 側の auth/azure/config で指定した値(既定では https://management.azure.com/)と一致させます。一致しないと Audience mismatch で拒否されます。
System-assigned MI の場合はそのまま、User-assigned MI を使う場合は client_id を付与して IMDS から該当 MI のトークンを取得します。その後、取得した jwt を Vault の /auth/azure/login に渡して Vault トークンを受け取ります。受け取った Vault トークンで kv/ や他エンジンのシークレットを取得します。
ロールは「誰が Vault に来てよいか」の境界であり、ポリシーは「来た人に何を許すか」です。これを混同しない設計が安定運用の鍵です。
同じアプリでも環境(dev/stg/prd)ごとにロールとポリシーを分割し、攻撃面積と blast radius を小さくします。
Audience mismatch: IMDS から取得するトークンの resource と Vault の auth/azure/config の resource が一致していない。両方を https://management.azure.com/ に合わせるのが無難。
User-assigned MI: IMDS でトークンを取る際に client_id を指定しないと 403 になる。正しい MI の client_id を使う。
時計ずれ: AAD トークン検証は有効期限と発行時刻に厳密。NTP を整える。
Associate
問題 1
Vault の Azure 認証メソッドを用いて Managed Identity から認証する最小フローとして最も適切なのはどれか。
正解: A
Azure Auth Method は Azure AD の署名済みトークン(通常は IMDS から取得、resource は Vault 側設定と一致)を /auth/azure/login に渡して認証する。B は認証を省略しており不正。C は別メソッドであり MI は不要。D は Secrets Engine(動的クレデンシャル発行)と Auth Method を混同している。
Azure Auth Method と Azure Secrets Engine の違いは?
Auth Method は「Vault に入るための認証」を担当し、Azure AD のトークンを検証します。Secrets Engine は「入った後に何ができるか」で、Azure の動的クレデンシャル(例: 一時的な Service Principal 資格情報)を発行します。前者で身元確認、後者で権限付与という役割分担です。
AKS の Pod からも Managed Identity で認証できますか?
可能です。近年は Azure AD Workload Identity(OIDC フェデレーション)で Pod が AAD トークンを取得し、それを Azure Auth Method に渡すパターンが主流です。クラスタとアプリのバージョンに依存するため、IMDS 直叩きや旧 AAD Pod Identity との混在には注意してください。
中国や政府系クラウドのエンドポイントはどう扱いますか?
Vault 側の auth/azure/config で resource や環境(例: AzurePublicCloud 以外)を適切に設定します。ワークロード側が IMDS から取得するトークンの resource と Vault 側設定が一致していることを必ず確認してください。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token
HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...
Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる
HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...
Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く
HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...
Vault Tokens の基礎: 認証の起点となる概念
HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...
Vault のトークン種類を正しく使い分ける: service / batch 実践
HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...