Vault Associate は、Vault の基本アーキテクチャ、認証・認可、シークレットエンジン、リース管理、データ保護(Transit など)、運用監査を横断的に問うエントリーレベル資格です。
本稿は、出題範囲と配点の考え方、受験申込の実務、学習の着眼点をまとめています。最新情報は公式ドキュメントと認定ページを優先してください(https://developer.hashicorp.com/vault / https://developer.hashicorp.com/certifications/security-automation)。
Vault Associate は多肢選択式(単一/複数選択を含む)が中心で、ブループリントに沿ってドメイン毎に出題されます。問題数・制限時間・合格基準は改定されることがあるため、受験直前に公式認定ページで確認してください。
配点はドメイン比率で大枠が決まり、個々の問題は均等とは限りません。部分点は基本的にありません。見直し時間を確保し、取り切れる問題から解く順番設計が有効です。
| 出題ドメイン | 配点レンジの目安 | 代表トピック | 演習の軸 |
|---|---|---|---|
| 認証/認可(Auth・Token・Policy) | 20–30% | Auth 有効化、ログインフロー、トークン種別、ポリシーHCL | AppRole/Kubernetes で最小権限を設計 |
| シークレットエンジンとリース | 20–30% | KV v2、動的シークレット、TTL/Max TTL、失効 | lease 取得〜更新〜失効の挙動をCLIで確認 |
| データ保護(Transit 等) | 10–20% | 暗号化/復号、署名/検証、レスポンスラッピング | transit の鍵管理とラップ/アンラップを通しで試す |
| 運用基盤(初期化/シール/HA/ストレージ) | 10–20% | init/unseal、Raft(Integrated Storage)、オートアンシール | dev と Raft で status の違いを比較 |
| 監査・可観測性・トラブルシュート | 5–10% | Audit デバイス、ログ形式、典型エラー | 監査ログでリクエスト/レスポンスIDを追跡 |
| HCP/エコシステムの理解 | 5–10% | HCP Vault の運用境界、Agent、テンプレート | Agent のキャッシュ/テンプレート最小構成を把握 |
Vault Associate 出題マップ(概念のつながり)
試験前に最低限手を動かす: バージョンとステータス確認
vault --version
VAULT_ADDR=http://127.0.0.1:8200 vault status
# dev サーバ起動中なら Seal Type/Key Shares/HA Mode などが確認できるVault は単一バイナリで、ストレージ、API サーバ、暗号コアを内包します。ストレージには Integrated Storage(Raft)が広く使われ、HA 構成ではリーダー選出が行われます。初期化(init)でマスターキーが生成され、シール/アンシールにより鍵素材の取り扱いが制御されます。
試験では、init/unseal の流れ、Raft と外部ストレージの違い、オートアンシールの概念、vault status 出力の読み方が頻出です。
| シール/アンシール方式 | 鍵の所在 | 特徴 | 試験のツボ |
|---|---|---|---|
| Shamir(手動アンシール) | 回復キーを複数人で分割保持 | 閾値到達でアンシール可能 | key-shares と key-threshold の意味を説明できる |
| Auto Unseal(KMS 等) | 外部 KMS に暗号化鍵を委任 | 起動時自動アンシール | KMS の可用性が起動に影響する点に注意 |
| Recovery Keys(Enterprise/HCP) | 障害時の回復用キー | root とは別経路での回復 | 回復と日常運用の権限を分離する意図を理解 |
Raft を用いた HA クラスタ概略
初期化とアンシールの最短手順(検証用)
# 初期化(学習用に 1/1 構成)
vault operator init -key-shares=1 -key-threshold=1 > init.out
UNSEAL_KEY=$(grep 'Unseal Key 1:' init.out | awk '{print $4}')
ROOT_TOKEN=$(grep 'Initial Root Token:' init.out | awk '{print $4}')
# アンシールとログイン
vault operator unseal "$UNSEAL_KEY"
vault login "$ROOT_TOKEN"
# 状態確認
vault statusVault では、Auth Method が誰かを証明し、ポリシーが何ができるかを決めます。トークンは一時的な権限の容器であり、親子継承や TTL により権限の寿命が管理されます。
試験では、各 Auth の適用シナリオ、トークン種別(service/ batch など)の違い、ポリシーのパス構文(capabilities)を文脈に合わせて選べるかが問われます。
| Auth メソッド | 主用途 | 強み | 試験の観点 |
|---|---|---|---|
| userpass | 人手の PoC/学習 | シンプル、導入容易 | 本番には不向き。パスワードローテーション負荷 |
| AppRole | サーバ間・バッチ | ID/SecretID による発行制御 | ラップ配布と CIDR 制限。発行カウント・TTL を設計 |
| Kubernetes | K8s Pod | SA トークンと自動検証 | ポッド毎のサービスアカウント境界とポリシー紐付け |
| Cloud(AWS/GCP/Azure) | クラウドネイティブ | IAM 証明と短期トークン | メタデータ検証とバインド条件の整合性 |
AppRole と Kubernetes の認証フロー比較
ポリシー定義と Auth 有効化の最小例
# ポリシー(読み取りのみ)
cat > readonly.hcl <<'EOF'
path "kv/data/app/*" {
capabilities = ["read", "list"]
}
EOF
vault policy write app-read readonly.hcl
# KV v2 とポリシー対象パスの作成
vault secrets enable -path=kv kv-v2
vault kv put kv/app/config api_key=redacted
# AppRole の有効化とロール作成
vault auth enable approle
vault write auth/approle/role/app-role token_policies="app-read" token_ttl=1h token_max_ttl=4h
vault read -field=role_id auth/approle/role/app-role/role-id
vault write -f -field=wrapping_token -wrap-ttl=5m auth/approle/role/app-role/secret-idKV は静的シークレット(バージョニング可)、Database や Cloud は動的シークレット(都度発行、期限到来で無効化)を提供します。Vault は発行した資格情報にリースを付与し、TTL/Max TTL/Explicit Max TTL を組み合わせて寿命を制御します。
試験では、renew(更新)とrevoke(失効)の違い、親トークン失効による子リースの巻き戻し、KV v2 のデータパスとメタデータパスの違いが頻出です。
| エンジン | 秘密の性質 | リース可否 | 運用ポイント |
|---|---|---|---|
| KV v2 | 静的(バージョン管理) | リース対象外(読み取り自体は監査) | データ/メタ/削除/破棄の API 差分を理解 |
| Database | 動的ユーザ発行 | 可(TTL/自動失効) | DB ロールの creation/rollback ステートメント設計 |
| Cloud(AWS/GCP 等) | 一時的クレデンシャル | 可 | IAM 権限の最小化とリーク時の影響範囲 |
| PKI | 短期証明書 | 可 | CRL/OCSP と証明書ロールの制約 |
リースライフサイクルの概念
KV v2 とリース操作の手慣らし
# KV v2 の基本
vault secrets enable -path=kv kv-v2
vault kv put kv/app/config token=abc version=1
vault kv get kv/app/config
# リースの概念は動的シークレットで確認する
# 例: database エンジン(接続先はダミー、実務では有効な DSN を指定)
# vault secrets enable database
# vault write database/config/mydb plugin_name=postgresql-database-plugin \
# allowed_roles="app-role" connection_url="postgres://..."
# vault write database/roles/app-role db_name=mydb [email protected] \
# default_ttl=1h max_ttl=4h
# creds 発行と lease 確認
# vault read database/creds/app-role
# vault lease renew <lease_id>
# vault lease revoke <lease_id>Transit はデータを保存せず、暗号操作(暗号化/復号、署名/検証、トークン化)を提供します。アプリ側は暗号鍵を持たず、Vault の鍵管理ポリシーに従います。レスポンスラッピングは、センシティブなレスポンスを一度限りのラップトークンで包み、別経路で配布するための仕組みです。
監査デバイスを有効化すると、リクエスト/レスポンスのメタ情報が記録され、トレース可能性が向上します。シークレット値はハッシュ化されて記録される点を理解します。
| メカニズム | 主目的 | 監査/安全性の論点 | 試験の注意点 |
|---|---|---|---|
| Transit | 暗号操作の外部化 | 鍵の保護境界を Vault に集約 | encrypt/decrypt の API パスと鍵バージョンに注意 |
| Response Wrapping | 安全な受け渡し | ラップトークンの単回使用 | wrap-ttl 超過時の再発行戦略 |
| Audit Device | 可観測性 | リクエストID/ハッシュ化フィールド | どのデバイスが有効かとログ出力形式 |
Transit による暗号化の呼び出し経路
Transit と Response Wrapping の小さな実験
# Transit を有効化し鍵を作成
vault secrets enable transit
vault write -f transit/keys/app-key
# 暗号化と復号
cipher=$(vault write -field=ciphertext transit/encrypt/app-key plaintext=$(base64 <<< 'hello'))
echo "$cipher"
vault write -field=plaintext transit/decrypt/app-key ciphertext="$cipher" | base64 -d
# ラッピングして配布(5分で失効)
vault kv get -wrap-ttl=5m kv/app/config > wrapped.json
WRAP_TOKEN=$(jq -r '.wrap_info.token' wrapped.json)
VAULT_TOKEN=$WRAP_TOKEN vault unwrap申込は HashiCorp Certification のポータルから行います。アカウント作成後、Vault Associate を選択し、希望の受験方式(オンライン監督や地域により提供されるテストセンター)と日時を予約します。受験方式・料金・再受験規約は更新される場合があるため、直前に公式ページを確認してください(https://developer.hashicorp.com/certifications/security-automation)。
学習は公式ドキュメントとチュートリアルを主軸に、手元の dev サーバで CLI を反復するのが最短です。出題は操作の流れを理解しているかを見るため、コマンドと API パスの両方を意識すると得点効率が上がります。
| 申込チャネル | 支払い/再受験の一般論 | 注意点 | 備考 |
|---|---|---|---|
| 公式認定ポータル | クレジットカード等。再受験ポリシーは待機期間等が定義される | 地域/通貨で価格が異なる場合あり | スケジュール変更・キャンセル期限に注意 |
| オンライン監督 | 日程柔軟、在宅受験 | 室内環境制約・通信品質が合否に影響しうる | 当日は早めにチェックイン |
| テストセンター(地域差) | 設備安定 | 空き枠が限定的 | 身分証・到着時刻の規定を順守 |
申込から合否までのタイムライン
学習用に dev サーバを最速で立ち上げる
# 開発用サーバ(揮発、学習専用)
export VAULT_DEV_ROOT_TOKEN_ID=root
vault server -dev -dev-root-token-id=$VAULT_DEV_ROOT_TOKEN_ID &
export VAULT_ADDR=http://127.0.0.1:8200
vault status
# 以降、本文のコマンドをそのまま試せるAssociate
問題 1
Kubernetes 上のアプリが Vault からアプリ専用のシークレットを取得します。最小権限と運用容易性の両立という要件に最も適した設計はどれか。
正解: A
Kubernetes Auth は ServiceAccount トークンの検証により Pod 単位でアイデンティティを確立でき、ポリシーで最小権限を付与しやすい。userpass や root トークン配布はセキュリティ上不適切。AppRole の SecretID をハードコードする設計もNG。
問題数・試験時間・料金は固定ですか?
固定ではありません。HashiCorp は随時更新することがあり、最新の問題数・制限時間・価格・再受験規約は公式認定ページで確認してください。
CLI と API のどちらを優先して学べばよいですか?
CLI を軸にしつつ、背後の API パス(例: kv/data、transit/encrypt)を合わせて覚えるのが得点効率が良いです。設問はパスの違いや TTL/Max TTL といった概念を突いてきます。
HCP Vault の知識は必要ですか?
基礎概念は OSS と共通で、HCP 特有の運用境界や自動化ポイントが軽く問われることがあります。細かな SKU 差異より、管理責任分界やオートアンシールなどの概念を押さえておけば充分です。
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...