本稿は、HashiCorp Vault の認定試験(Associate / Operations)で頻出のドメインを、実務に直結する観点でまとめた問題例集です。
バージョン依存の細部は避け、公式ドキュメントに準拠した安定した振る舞いに基づきます。Enterprise 固有機能(名前空間・複製など)は明記します。
Associate はコア概念(初期化/Unseal、トークン/ポリシー、認証方式、主要な Secrets Engine、TTL/リース/ラップ、監査)を広く浅く。Ops はこれに加え、HA/ストレージ、バックアップ/復旧、運用オペレーション、(Enterprise 前提の)複製の基礎が問われます。
多くの設問は「どのコンポーネントがどの責務を持つか」を正しく結びつけられるかで決まります。クライアントの認証、ポリシー適用、Secrets Engine の発行・失効、監査の記録、これらの流れを頭に描けるようにします。
| 領域 | 典型タスク | 試験での焦点 |
|---|---|---|
| トークン/ポリシー | Capability 設計、最小権限、トークン種別の使い分け | default/deny 優先、TTL と max_ttl、batch と service の違い |
| 認証方式 | AppRole/Kubernetes/OIDC の選択と構成 | ワークロード適合性、短期資格情報、ローテーション容易性 |
| Secrets Engine | KV v2 / DB / Transit / PKI の適材適所 | 動的秘密と失効、KV v1/2 の違い、Transit は暗号化のみ |
| 運用/HA | 初期化・Unseal、Raft(統合ストレージ) クラスタ運用 | Active/Standby、スナップショット、Auto Unseal の意味 |
クライアント要求からシークレット発行までの流れ(概略)
Client --> [Auth Method] --(login)--> [Token]
| |
|---- request w/ token ------------> | (policy check)
v
[Secrets Engine]
|
v
[Lease/TTL]
|
v
[Audit]
概念把握向けの最小コマンド例(KV v2 読み取り)
vault login <TOKEN>
# ポリシーで許可されたパスのみ成功
vault kv get -mount=secret app/config
Vault の権限制御はポリシーが中心です。path ブロックに対する capabilities(read, create, update, delete, list, deny, sudo など)を最小権限で付与します。deny は常に最優先で、明示 deny があれば許可は打ち消されます。default ポリシーは最小限の自己情報取得のみで、root トークンの常用は不可です。
トークンは大別して service トークンと batch トークン。service は永続化・更新可能で子トークン発行可。batch は非永続・非更新・子トークン不可で高スループット用途に向きます。orphan トークンは親に連鎖失効しません。periodic トークンは指定期間で更新必須(max_ttl に縛られない設計)です。
ポリシーとトークン作成の例
# ポリシー(HCL)
path "secret/data/app/*" {
capabilities = ["read", "list"]
}
# ポリシー適用
vault policy write app-read app-read.hcl
# service トークン(1h、更新可)
vault token create -policy=app-read -ttl=1h
# batch トークン(非永続・非更新)
vault token create -type=batch -policy=app-read -ttl=15m
# orphan トークン
yes | vault token create -policy=app-read -orphan
ワークロードの配置とアイデンティティ供給元で認証方式を選びます。例: Pod なら Kubernetes Auth、サーバアプリなら AppRole、SaaS/人なら OIDC/JWT、クラウドランタイムは各クラウド Auth を優先。人手運用の一時利用は GitHub/LDAP/ユーザパスなどを最小権限で。
Secrets Engine は用途中心に選定します。KV v2 はバージョン管理つきの静的シークレット、Database は動的資格情報の発行と失効、Transit はデータを保存せず暗号化/署名、PKI は短命証明書の発行。試験では「データは保存せず暗号だけしたい→Transit」のような適材適所がよく問われます。
代表的な有効化例
# 認証方式の有効化(例: AppRole)
vault auth enable approle
vault write auth/approle/role/app ttl=1h policies=app-read
vault read -field=role_id auth/approle/role/app/role-id
vault write -f -field=secret_id auth/approle/role/app/secret-id
# Secrets Engine の有効化(例: KV v2)
vault secrets enable -path=secret -version=2 kv
vault kv put secret/app/config username=svc password=s3cr3t
動的シークレット(例: Database Engine)が返す資格情報にはリースが付きます。リースは期限切れで自動失効、もしくはクライアントが更新(renew)して延命できます。prefix で失効(revoke -prefix)すれば同一マウント配下の全動的資格情報を回収します。静的シークレット(KV)は通常リース対象ではありません。
レスポンスラップは X-Vault-Wrap-TTL を指定して応答を一回限りのラップトークンで包み、安全に引き渡します。unwrap は受領者のみが実行でき、内容は Cubbyhole に一時保管されます。試験では「資格情報の中継経路を安全にしたい」要求に対する正解として頻出です。
更新と失効の典型操作
# トークン更新(可能な場合)
vault token renew -increment=30m
# リース ID を指定して更新/失効
vault lease renew database/creds/app/abc123
vault lease revoke database/creds/app/abc123
# プレフィックス配下を一括失効
yes | vault lease revoke -prefix database/creds/app
# レスポンスラップで安全に受け渡し
VAULT_ADDR=https://vault:8200 \
curl -H "X-Vault-Token: $TOKEN" -H "X-Vault-Wrap-TTL: 5m" \
$VAULT_ADDR/v1/secret/data/app/config
# 受領側: vault unwrap
初期化では Shamir 方式で分割されたキー(閾値で復元)と初期 root トークンが生成されます。手動 Unseal の代わりにクラウド KMS/HSM による Auto Unseal を構成すると、起動時に自動解錠できます。この場合、復旧時に用いるリカバリ用のキーが別途用意される構成があります。
HA では Active/Standby の構成を取り、書き込みは Active のみ。統合ストレージ(Raft)は Vault 自身がストレージの合意形成を行い、複数ノードで可用性を確保します。スナップショットで一貫性のあるバックアップを取得し、計画停止や障害時の復旧に用います。
初期化/Unseal と Raft の代表手順
# 初期化(例: 5分割・3閾値)
vault operator init -key-shares=5 -key-threshold=3
# Unseal(閾値分のキーを入力)
vault operator unseal
# Raft クラスタ参加
vault operator raft join http://vault-1:8200
# Auto Unseal の例(設定ファイル抜粋)
seal "awskms" {
region = "ap-northeast-1"
kms_key_id = "arn:aws:kms:..."
}
監査デバイスは全 API リクエスト/レスポンスのメタデータを記録します。機微なフィールドは HMAC 化され、漏えいリスクを下げます。実運用では出力先のローテーションや保全、時刻同期が重要です。
バックアップは統合ストレージのスナップショットを取得します。整合性のある状態を保存し、同一メジャー互換範囲での復元を行います。Enterprise では DR/Performance 複製が利用可能で、DR は待機系へのフェイルオーバー、Performance は読み取りスケールアウトに用います(試験では用語と用途の区別が問われます)。
監査/スナップショット/複製(Enterprise 機能を含む)
# 監査デバイスの有効化(ファイル出力)
vault audit enable file file_path=/var/log/vault_audit.log
# 統合ストレージのスナップショット
vault operator raft snapshot save backup.snap
# 復元(メンテ状態で実施)
vault operator raft snapshot restore backup.snap
# Enterprise(用語の把握が主題)
# DR/Performance 複製の有効化はライセンス前提。CLI は概念理解に留める。
Associate / Ops
問題 1
Kubernetes 上のアプリが Vault から DB の動的資格情報を安全に取得する設計として、最も適切な組み合わせはどれか。
正解: A
Kubernetes 環境では Kubernetes Auth を用いて Pod のアイデンティティを検証し、必要最小限のポリシーを付与するのが定石。DB 資格情報は Database Secrets Engine の動的発行を使い、受け渡しの経路安全性にはレスポンスラップが適切。B は静的シークレットと無期限 TTL で不適切、C は root トークンの共有で論外、D は用途が噛み合っていない(PKI は証明書発行、DB 資格情報とは別)。
KV v1 と KV v2 の違いは試験でどう問われますか?
KV v2 はバージョン管理があり、data/ と metadata/ の二層 API、削除(復元可)と破壊(復元不可)の区別がある点が焦点になります。設問では v2 の機能を前提にした操作(削除の取り消しなど)や、パス指定の違いがよく出ます。
batch トークンと service トークンの使い分けは?
batch は非永続・非更新・子トークン不可で、高スループットや短命用途に適します。service は永続化・更新可・子トークン可で一般的なアプリ運用に向きます。更新や失効の挙動、監査時の追跡可能性の違いが問われやすいです。
レスポンスラップはいつ使うべきですか?
中継経路での漏えいを避けたいときに使います。発行側は X-Vault-Wrap-TTL を指定し、一回限りのラップトークンを受領者が unwrap します。CI/CD での初期ブートストラップや、人からシステムへの安全な引き渡しに適しています。
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...