Vault を業務に入れるときに最初に迷いやすいのが、Secret・Auth・Policy・Token の境界です。用語を正確に分けて理解すると、設計の選択肢や試験対策が一気に楽になります。
この記事は Vault Associate レベルで問われやすい安定概念に絞り、CLI 例と注意点を交えつつ、実運用でもそのまま使える形でまとめます。
Vault は「どの入口から入るか(Auth)」「入った人に何を許すか(Policy)」「実体の秘密はどこにあるか(Secret)」「入場券そのもの(Token)」という4要素で整理すると迷いません。Auth は認証の入口、Policy は入口を通った主体の行動許可、Secret は保護対象のデータや機能、Token はセッションと権限を持つクレデンシャルです。
設計の原則はシンプルです。Auth は Token を発行するだけで Secret には触れません。Secret は Lease と共に発行・破棄され、Policy は常にパス単位で許可/拒否を定義します。Token は Policy を担保に Secret にアクセスし、TTL/更新/失効が管理されます。
| 観点 | Secret | Auth Method | Policy |
|---|---|---|---|
| 目的 | 機密の保存/発行/暗号機能の提供 | 利用者/アプリの本人性確認と Token 発行 | パスごとの操作許可を定義 |
| 作成/管理主体 | 運用者が有効化/設定、アプリが読み取り | 運用者が有効化、利用者/アプリがログイン | 運用者が作成付与、CI で配布することも |
| 寿命/TTL | 静的: なし / 動的: Lease で時間制御 | なし(設定自体は恒久) | なし(定義は恒久、適用は Token 単位) |
| 定義/マウント | /kv, /database, /transit, /pki など | /auth/userpass, /auth/approle, /auth/kubernetes など | sys/policies/acl 下に HCL/JSON |
| 代表例 | kv v2, database 動的資格情報, aws, pki, transit | userpass, approle, jwt/oidc, kubernetes | capabilities: read/list/create/update/delete/sudo |
| 失効/取り消し | lease revoke, prefix revoke で一括無効化 | 無効化すると以降のログイン不可 | 変更直後の新規リクエストに即時適用 |
Secret/Auth/Policy/Token の関係図
最初に眺めるコマンド(状態・有効化済みエンドポイント)
export VAULT_ADDR=http://127.0.0.1:8200
# sealed/unsealed, HA 状態など
vault status
# シークレットエンジン一覧(/ 下にどれがマウントされているか)
vault secrets list
# 認証メソッド一覧(/auth 下)
vault auth listSecret は「静的」と「動的」に大別されます。kv v2 のような静的シークレットは更新まで内容が固定で Lease を伴いません。一方、database や aws などの動的シークレットは、要求のたびに一時的な資格情報を発行し、Lease(TTL、更新可否、最大 TTL)で寿命を管理します。
重要なのは、Lease はトークンだけでなく動的シークレット自体にも付く点です。renewable なら期限前に renew、不要になったら revoke、インシデント時は prefix 単位でまとめて revoke して被害を素早く収束できます。
静的と動的の基本操作(概念把握用)
# 静的: kv v2 にアプリ設定を書き込む
vault secrets enable -path=secret kv-v2
vault kv put secret/app/config username=svc-user password=s3cr3t
vault kv get secret/app/config
# 動的: database でロールから一時資格情報を取得(実環境では接続先の設定が必要)
# ロール作成例(概念)
# vault write database/roles/app-role db_name=mydb [email protected] default_ttl=1h max_ttl=24h
# 一時資格情報の払い出し(Lease 付き)
vault read database/creds/app-role
# Lease の確認・更新・失効
vault lease lookup <lease_id>
vault lease renew <lease_id>
vault lease revoke <lease_id>
# 影響範囲を一括遮断(プラグイン別やパス単位など)
vault lease revoke -prefix database/creds/Auth メソッドは入口です。認証が成功すると Vault は Token を発行します。Auth は Secret に直接アクセスしません。代表例は userpass(検証/学習用途)、AppRole(サーバ・ジョブ向け)、Kubernetes(ServiceAccount JWT と連携)、JWT/OIDC(IdP 連携)です。
各 Auth は「ロール」や「マッピング」を通じて発行 Token に付与するポリシー、TTL、制約を定義します。設計では「どのワークロードがどのロールで入り、どのポリシーを付与するか」を先に決めると、境界が明確になります。
AppRole でのログインから Token 取得(最小構成)
# AppRole を有効化
vault auth enable approle
# ロール作成(発行 Token に app-read ポリシーを付与、TTL は 1h)
vault write auth/approle/role/myapp token_policies="app-read" token_ttl=1h token_max_ttl=24h
# ロールID と SecretID を取得
ROLE_ID=$(vault read -field=role_id auth/approle/role/myapp/role-id)
SECRET_ID=$(vault write -field=secret_id -f auth/approle/role/myapp/secret-id)
# 認証して Token を得る
vault write auth/approle/login role_id="$ROLE_ID" secret_id="$SECRET_ID"
# 出力 JSON の auth.client_token が以降の API/CLI に利用する TokenPolicy はパスに対する操作権限の集合です。capabilities は主に create, read, update, delete, list, sudo。deny は最優先で、allow を上書きします。root は全許可で、本番では使用を避けます。
設計のコツは「Secret の論理境界=パス構造」に落とし、アプリ単位ロールと読み取り専用/書き込み境界を分離すること。Enterprise の Namespaces は別機能(Associate では前提外にしても可)なので混同しないようにします。
最小ポリシー例(HCL)と適用
# app-read.hcl
path "secret/data/app/*" {
capabilities = ["read", "list"]
}
# ロール/ユーザーに付与する管理用の最小限
path "sys/leases/*" {
capabilities = ["read", "list"]
}
# ポリシーを登録
vault policy write app-read app-read.hcl
# Token の権限を検証
vault token capabilities -policy=app-read secret/data/app/configToken は権限と TTL を持つクレデンシャルです。service は標準の永続型で更新/失効/親子関係あり。batch は軽量・非永続・非更新(高スループット用途)。periodic は最大 TTL を持たず、定期的な更新が必須です。必要に応じて orphan(親なし)で作れば親失効のカスケードを避けられます。
レスポンスラッピングは、API 応答を一度きりの wrapping token で包む仕組みです。unwrap するまで中身は cubbyhole(Token 固有の一時領域)に保存され、横取りリスクの軽減に役立ちます。
Token 作成・更新・失効とレスポンスラッピング
# 標準の service トークン
vault token create -policy=app-read -ttl=1h
# batch(非永続・非更新)
vault token create -type=batch -policy=app-read -ttl=15m
# periodic(上限なし、更新必須)
vault token create -policy=app-read -period=24h
# orphan(親なしで連鎖失効を避ける)
vault token create -policy=app-read -orphan -ttl=1h
# 更新・失効
vault token renew <token>
vault token lookup <token>
vault token revoke -accessor <accessor>
# レスポンスラッピング(例: 動的資格情報を 60s で包む)
vault write -wrap-ttl=60s database/creds/app-role
# 別ホップで unwrap(1回限り)
vault unwrap <wrapping_token>試験では、Auth と Secret の責務分離、Policy の優先順位、Token/Lease の更新と失効、動的シークレットの利点、ラッピング/キュビーホールの用途が頻出です。実務では、緊急時の revoke 手順と、誰がどのロールで入るかを明文化するのが肝です。
現場チェックとして、Auth ロール→ポリシー→パスの対応表を作り、最小権限で通ることを capabilities で検証し、Lease の prefix revoke で遮断できることを演習しておきましょう。
確認に使えるワンライナー集
# このトークンでどこまで許可されているか(ポリシーデバッグ)
vault token capabilities -token=$VAULT_TOKEN secret/data/app/*
# パスのヘルプ(利用可能操作の確認)
vault path-help database/creds
# 失効の安全弁(プレフィックス単位)
vault lease revoke -prefix database/creds/
# アクセサでの失効(ログに残したアクセサから)
vault token revoke -accessor <accessor>Associate
問題 1
Vault における Auth Method と Secrets Engine の違いとして最も正しいのはどれか。
正解: A
Auth Method は /auth/* にマウントされ利用者の本人性を確認し Token を発行する。一方、Secrets Engine は /kv, /database, /transit などでシークレットの保存や動的発行、暗号サービスを提供する。両者とも最終的なアクセスは Token に付与された Policy に従う。
default ポリシーは削除できる? 付与を外せる?
default ポリシー自体はシステムに必須で削除できませんが、特定の Token から外すことは可能です。ただし default を外すと sys/ 下の最小操作が失われる場合があるため、検証のうえで最小限の代替権限を付与してください。
Token の TTL と動的シークレットの Lease TTL は連動する?
連動しません。Token の TTL は Token 自体の寿命、動的シークレットの Lease TTL はその資格情報の寿命です。Token が失効しても、シークレットの Lease が残っていれば外部リソース側の資格情報は有効な場合があります(prefix revoke 等で明示的に失効可能)。
インシデント時に最速でアクセスを止めるには?
被害範囲に応じて使い分けます。特定 Token のみなら token revoke(アクセサがあれば -accessor)。動的シークレットの横断遮断は lease revoke -prefix。親子関係ごと遮断したい場合は親 Token を revoke。Auth 自体を止めたい場合は当該 /auth を disable します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
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...
Vault Token Accessorの実務と試験対策: 監査とトークン無効化を最短で行う
HashiCorp VaultのToken Accessorを使って、監査ログからの事後追跡と即時のトークン無効化を安全...