Vault

Azure 認証: Managed Identity 連携で Vault を安全に使う(Associate 向け)

2026-04-19
NicheeLab編集部

Azure の Managed Identity を使えば、アプリや VM がシークレットを保持せずに Vault へ認証できます。漏洩リスクを下げつつ、運用の手間も小さくできます。

本稿は Vault Associate レベルで押さえるべき公式ドキュメント準拠の概念と、現場でそのまま使える最短構成手順を整理します。

なぜ Managed Identity で Vault に認証するのか

Managed Identity(MI)は Azure AD によって自動管理される ID で、資格情報の作成・保存・ローテーションが不要です。Vault の Azure 認証メソッドと組み合わせると、ワークロードは Azure AD から取得したアクセストークンを使って Vault にログインできます。

試験観点では「認証(Auth Method)と認可(Policy)の分離」「ロールでのバインド条件(どの MI/どのリソースから来たリクエストか)」「トークン TTL/Max TTL/再認証」の基礎が頻出です。

  • 対象ワークロード: VM/VMSS、App Service、Functions、AKS ノードや Pod(Workload Identity 経由)
  • 利点: シークレットレス、ローテーション不要、スケールしやすい RBAC 設計
  • Vault 側: Azure Auth Method によるトークン検証 + Policy での最小権限付与
項目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)の一致、トークン有効期限内であること、そしてロール側の制約条件に合致していることです。

  • Azure IMDS から MI のトークンを取得(resource は通常 https://management.azure.com/)
  • Vault は Azure AD の公開鍵で署名検証し、クレーム(xms_mirid 等)からリソース属性を突き合わせる
  • 認可は Vault Policy で制御(パス単位の最小権限)

Managed Identity を用いた Vault 認証フロー

Azure WorkloadVM/VMSS/AppAzure IMDS169.254.169.254Azure AD (AAD)Token ServiceVault1. resource=mgmt.azure.com でトークン要求2. AAD へ仲介/発行3. アクセストークン受領4. Vault へ認証 (auth/azure/login, role, jwt)5. 署名/クレーム検証 → Vault Token (ポリシー付与)6. 秘密情報/動的クレデンシャル取得 (kv/, database/, etc.)

Vault 側の設定手順(Azure Auth Method + Policy)

まず Azure 認証メソッドを有効化し、テナント情報やリソース(audience)を設定します。次に、どの Azure リソースからのトークンを許可するかをロールで定義し、最後にアクセス権限を与える Vault ポリシーを関連付けます。

以下は最小構成の例です。環境や要件(サブスクリプション/リソースグループ/VM 名などの制約)は実際のリソース ID に置き換えてください。

  • auth/azure/config: tenant_id と resource(通常 https://management.azure.com/)を設定
  • auth/azure/role/<name>: サブスクリプション/リソースグループ/VM/VMSS などのバインド条件と token_policies を設定
  • ポリシー: 最小権限のパス許可(read/list/write を必要最小限)

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/ワークロード側の設定(MI でトークン取得し Vault へログイン)

ワークロードは 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/ や他エンジンのシークレットを取得します。

  • IMDS エンドポイント: http://169.254.169.254/metadata/identity/oauth2/token
  • 必須ヘッダ: Metadata: true
  • クエリ: api-version、resource(および必要に応じて client_id)
  • Vault 側 audience(resource) と一致していることを確認

ロール設計とポリシー最小権限のコツ

ロールは「誰が Vault に来てよいか」の境界であり、ポリシーは「来た人に何を許すか」です。これを混同しない設計が安定運用の鍵です。

同じアプリでも環境(dev/stg/prd)ごとにロールとポリシーを分割し、攻撃面積と blast radius を小さくします。

  • 1 ワークロード 1 ロールを原則にし、リソースグループや VM/VMSS 名で厳格にバインド
  • ポリシーはパスの粒度を小さく(例: kv/data/app/prod/* の read のみ)
  • TTL は短め、定期再認証を前提にする(token_ttl と token_max_ttl の差を理解)
  • 監査ログ(audit device)を有効化し、role_name と path の突合で事後分析可能に

トラブルシューティングと試験に出やすい要点

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 を整える。

  • ログ確認: Vault サーバの監査ログと auth/azure のログレベルを上げる
  • 最小再現: 単純な kv 読み取りに絞ったポリシーでまず疎通確認
  • クラウド環境: Public/China/Gov などクラウドごとのエンドポイント差異に注意

問題で確認

Associate

問題 1

Vault の Azure 認証メソッドを用いて Managed Identity から認証する最小フローとして最も適切なのはどれか。

  1. IMDS で resource=https://management.azure.com/ のトークンを取得し、その JWT と role 名を /auth/azure/login に送信。Vault は署名とクレームを検証し、ロールとポリシーに基づくトークンを発行する。
  2. IMDS から取得したトークンをそのまま kv/ に送信すれば、Vault は自動的に Azure AD を信頼してシークレットを返す。
  3. Azure Portal で Export した MI の秘密鍵を Vault に登録し、App はその鍵で /auth/approle/login にログインする。
  4. Vault の Azure Secrets Engine で SPN を発行すれば、追加設定なしで MI から自動ログインできる。

正解: 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 側設定が一致していることを必ず確認してください。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Vault

Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token

HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...

Vault

Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる

HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...

Vault

Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く

HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...

Vault

Vault Tokens の基礎: 認証の起点となる概念

HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...

Vault

Vault のトークン種類を正しく使い分ける: service / batch 実践

HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...

Vaultの記事一覧 (101件)
© 2026 NicheeLab All rights reserved.