本稿は Vault で「通常操作はそのまま、特定の高リスク操作では追加要素を要求する」Step-up 認証を設計・運用するための実務ガイドです。
公式ドキュメントの安定機能(Identity MFA、Enforcement、トークン管理、監査)に基づき、Ops 観点の落とし穴と試験で狙われやすい論点を整理します。
Vault の MFA は、Identity 機能に統合された多要素認証フレームワークを用いて、ログイン時や特定パスのリクエスト時に追加要素(TOTP、プッシュ認証など)を要求する仕組みです。運用では「通常は 1 要素で十分だが、高感度操作のみ 2 要素へ引き上げる」Step-up 認証がよく求められます。
Step-up 認証の中核は Enforcement(強制)の粒度設計です。Auth method 単位(ログイン時)だけでなく、パス単位(リクエスト時)に設定することで、特定のシークレット読取りや暗号操作だけに MFA を課すことができます。これにより、利便性とリスク低減の両立が可能になります。
Step-up 認証の実装は MFA 手段の選択に強く依存します。TOTP はネットワーク要件が少なくシンプル、Duo/Okta はプッシュ型でユーザ体験が良い反面、外部連携の可用性を考慮する必要があります。
Ops 観点では、時刻同期(TOTP)、外部サービスの到達性(Duo/Okta)、非常時バイパスの手当(Break-glass トークンや DR 手順)を合わせて評価するのが定石です。
| 方法 | 主な特徴 | ネットワーク要件 | 運用ポイント |
|---|---|---|---|
| TOTP | 時刻ベース OTP。シンプルでオフライン耐性 | 不要(時刻同期のみ) | 時計ずれ監視、発行・失効プロセス |
| Duo | プッシュ/電話/SMS など多彩 | Duo API 到達性 | 外部障害時のバイパス方針、レート制御 |
| Okta Verify | プッシュ/TOTP。IdP 連携前提 | Okta API 到達性 | IdP 側のライフサイクル連動、監査統合 |
実装の流れは概ね次の通りです。1) MFA method の作成(例:TOTP で issuer、桁数、期間を定義)、2) Enforcement の定義(どの auth method・どのパスで MFA を要求するか)、3) テストと監査確認(想定外のブロックやバイパスがないか)。
Auth method の accessor を正しく特定すること、時刻同期(NTP)の徹底、メソッド別の運用系障害(外部 API 到達不可など)に対するフェイルクローズ/フェイルオープン方針の明文化が重要です。
運用で使う基本コマンド/定義例
## Auth method の accessor を確認
vault auth list -detailed
## (例)Enforcement の定義イメージ(JSON、実体は API へ送信)
{
"name": "ops-login",
"mfa_method_ids": ["<METHOD_ID_TOTP>"],
"auth_method_accessors": ["<ACCESSOR_USERPASS>"]
}
## (例)パス単位 Enforcement の定義イメージ(高リスクのみ)
{
"name": "prod-kv-read",
"mfa_method_ids": ["<METHOD_ID_TOTP>"],
"paths": ["kv/data/prod/*"]
}Step-up の本命はパス単位の Enforcement です。通常操作はそのまま通し、例えば kv/data/prod/* や transit/sign/prod-* といった高リスクのリード/書き込み時だけ MFA を要求します。
クライアントは該当パスへアクセスする際、通常の X-Vault-Token に加え、MFA コードを X-Vault-MFA ヘッダで提示します。TOTP の場合は method_id:code 形式が典型です。
Step-up 認証(パス単位 Enforcement)の概念フロー
Client Vault
| read kv/data/prod/db-pass (no MFA) X
|---------------------------------------->|
| 403 w/ MFA required |
|<----------------------------------------|
| resend with X-Vault-MFA: <id>:<code> |
|---------------------------------------->|
| 200 OK |
|<----------------------------------------|MFA ヘッダ付きリクエスト例(TOTP)
## X-Vault-Token は通常どおり、MFA は method_id:code で送付
curl -sS \
-H "X-Vault-Token: $VAULT_TOKEN" \
-H "X-Vault-MFA: 3dd1b360-....:123456" \
-H "X-Vault-Namespace: $VAULT_NAMESPACE" \
"$VAULT_ADDR/v1/kv/data/prod/db-pass" | jqもう一つの有効なパターンが「短命トークンによる一時的権限付与」です。Step-up 対象のパスに対して MFA を強制した上で、成功時のみ短 TTL のトークンを払い出す専用 API(例:auth/token/create もしくはラッパー)を用意します。
通常トークンでは prod-* への権限を与えず、短命トークンのみに付与します。これにより権限昇格の時間窓を最小化し、監査上も判別しやすくなります。
短命トークンの作成と利用(例)
## 高権限ポリシー prod-stepup を短命トークンにのみ付与
vault token create -policy=prod-stepup -ttl=5m -orphan -format=json | jq -r '.auth.client_token' > /tmp/stepup.token
## 以後の高リスク操作にのみ短命トークンを使用
STEPUP_TOKEN=$(cat /tmp/stepup.token)
curl -H "X-Vault-Token: $STEPUP_TOKEN" \
"$VAULT_ADDR/v1/transit/sign/prod-app" -d '{"input":"..."}'MFA は利便性と安全性のバランス設計が肝です。導入後 1〜2 週間は失敗率・遅延・再送率を監視し、ヘッダ付与の抜けや外部連携の断続的障害を早期に洗い出します。
監査では、MFA が要求されたパスへのアクセスが適切に成功/失敗として記録されているか、短命トークン発行と使用が同一主体であるか、を重点確認します。DR/セカンダリ環境でも Enforcement と method が整合していることを定期的に検証します。
監査観点のチェック例(擬似)
# 監査ログから対象パスと 403/200 を抽出(例:jq)
cat /var/log/vault_audit.log | jq 'select(.request.path | test("^kv/data/prod/")) | {path: .request.path, status: .response.status}'Ops
問題 1
運用チームは kv/data/prod/* の読み取り時のみ追加の MFA を要求したい。認証自体やステージング環境には影響を与えたくない。最も適切なアプローチはどれか。
正解: A
要求は「prod の読取り時のみ」MFA を課す Step-up。パス単位 Enforcement によりリクエスト時に MFA を要求できる。AppRole の secret_id 必須化や TTL 延長は要件を満たさず、Control Group を全体に適用すると過剰で利便性を損なう。
MFA はトークンの更新や自動ローテーション API にも適用されるか?
MFA Enforcement は定義した対象(ログイン時、または特定パスのリクエスト時)に適用されます。トークン更新や自動ローテーションに対しても適用したい場合は、該当 API パスを Enforcement の対象に含める設計を検討します。
非対話バッチ処理で Step-up が必要な場合はどうすべきか?
人手の介在が難しい自動処理では、MFA よりも Control Group、短命トークン+承認フロー、あるいは時間帯・CIDR 制約の併用など、機械可用な統制を優先するのが現実的です。人主導の運用手順に限定できる箇所で Step-up(MFA)を要求します。
監査ログに MFA の結果は出力されるか?
監査ログにはリクエストの成否、対象パス、ヘッダの一部メタ情報などが記録されます(機密値はマスキングされます)。MFA 要求により 403 が返却された後、同一主体からの再リクエストで 200 になっているかを追跡することで Step-up の有効性を確認できます。
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...