Vault で実際にリクエストを許可するのは「トークン」です。どの認証方式(OIDC/Kubernetes/AppRole など)でログインしても、最終的にクライアントが手にするのは Vault が発行したトークンであり、これが権限の実体になります。
本稿では、安定機能を軸にトークンの基本、タイプ/属性の違い、更新と失効、ポリシーとの関係、よくある設計パターンを整理します。Associate レベルの試験で頻出のポイントも明示します。
Vault では、認証バックエンド(例: userpass, OIDC, Kubernetes, AppRole)は“ログイン手段”であり、最終的にはクライアントにトークンを発行します。このトークンにポリシーと有効期限が結び付けられ、以降のすべてのリクエストはこのトークンで評価されます。
つまり、認証の成否だけでなく、アクセス制御(どのパスに何ができるか)や有効期限、取り消しの影響範囲もトークンが担います。試験では「どの方式でログインしても最終的にトークンが権限を表現する」という前提を問われやすい点に注意してください。
認証からトークン発行、リクエスト評価までの流れ
トークンは発行時に TTL(有効期限)が設定され、更新可能かどうか、最大TTLがあるか、使用回数制限(use-limit)があるか等が決まります。通常のサービス・トークンはストレートなTTL消費型で、更新APIで延長できます(上限は最大TTL)。
親子関係は失効の伝播に関係します。親トークンを取り消すと、その親から作った子トークン(さらに孫…)が一括で失効します。-orphan で作られたオーファン・トークンは親を持たないため、親の失効の影響を受けません。Periodic トークンは設定した period ごとに更新を要求され、最大TTLの制限を受けずに運用できる一方、更新を止めると期限で失効します。
Vault のトークンは主にサービス・トークンとバッチ・トークンに大別され、加えてオーファン(親なし)や Periodic(更新必須)といった属性を付与できます。タイプは機能面、属性は挙動面に効くと捉えると混乱しにくくなります。
バッチ・トークンは高スループット用途向けに軽量化されており、更新不可・子トークン不可・アクセサなし等の制約があります。サービス・トークンは運用機能(更新/取り消し/アクセサ/子作成)が揃っており、一般的な常駐サービスに向きます。
| 種別/属性 | 主な特徴 | 更新/失効 | 親子/アクセサ |
|---|---|---|---|
| サービス・トークン | 永続化され機能が豊富 | 更新可(max_ttl の範囲)/ 明示的な失効可 | 子作成可/アクセサあり/Lookup可 |
| バッチ・トークン | 軽量・高スループット向け | 更新不可/ TTL 満了で失効(明示的失効・Lookupには制限) | 子作成不可/アクセサなし |
| オーファン(属性) | 親を持たない独立トークン | 通常のタイプに準ずる | 親失効の伝播なし |
| Periodic(属性) | period ごとに更新必須 | 最大TTLなし/ 更新停止で期限失効 | 通常の親子モデルに準ずる |
トークンは1つ以上のポリシーを保持し、各ポリシーがパス単位で read/create/update/delete/list/sudo 等の capabilities を定義します。Vault は各リクエストの対象パスをポリシーに照らして可否を判定します。
デフォルトでは default ポリシーが付与されますが、トークン作成時に除外もできます。試験では「ポリシーは許可の集合であり、最小権限で設計する」「capabilities の自己点検が可能」の2点が頻出です。
サービス向けには短寿命トークン+自動更新が基本です。Periodic を選ぶと最大TTLに縛られず、更新のヘルスチェックで監視もしやすくなります。更新失敗時に安全に停止するパターンを組み込みましょう。
高スループットのリードオンリー・プロキシや短時間のバッチ処理ではバッチ・トークンが有効です。更新不可を前提に TTL を厳格に短くし、必要に応じて新規発行でローテーションします。
以下は典型的な操作例です。試験ではオプションの意味(-policy, -ttl, -period, -use-limit, -orphan, -type=batch)を押さえ、更新/失効/Lookup/Accessor の関係を整理しておくと得点源になります。
バッチ・トークンは更新不可・アクセサなし・Lookupに制限がある点に注意。Periodic は period ごとに必ず更新が必要で、更新停止で期日失効します。
よく使う vault トークン操作
# ログイン(例: userpass/OIDC など)
$ vault login
# サービス・トークンを発行(30分TTL、100回まで、オーファン、ポリシーapp付与)
$ vault token create -policy=app -ttl=30m -use-limit=100 -orphan
# Periodic トークン(24時間 period、更新必須)
$ vault token create -policy=svc -period=24h
# バッチ・トークン(更新不可・軽量)
$ vault token create -type=batch -policy=read-only -ttl=5m
# トークンの能力確認(自分自身のcapabilitiesを確認)
$ vault token capabilities secret/data/*
# Lookup(サービス・トークン向け)
$ vault token lookup s.Ku1...
# アクセサ取得(ログに残すのはアクセサ推奨)
$ vault token lookup -format=json s.Ku1... | jq -r .data.accessor
# アクセサで取り消し(トークン文字列を扱わない)
$ vault token revoke -accessor A1bC2...
# 更新(更新可能なサービス・トークンのみ)
$ vault token renew s.Ku1...
# 親トークンの取り消しは子孫まで伝播
$ vault token revoke s.Parent...
Associate
問題 1
高スループットな読み取り専用プロキシが Vault からシークレットを取得します。更新は不要で、短時間で失効してよいが、処理性能を最大化したい。この用途に最適なトークン選択と設計はどれか。
正解: A
高スループット・短寿命・更新不要という要件にはバッチ・トークンが最適。更新不可で軽量なため性能面に向いている。Periodic は長期運用サービス向け、ルート・トークンの常用は非推奨、最大TTLに依存した延命はリスクが高い。
Periodic トークンはなぜ最大TTLを超えて更新できるのですか?
Periodic は period を満たす定期更新が前提の設計で、最大TTLの概念ではなく「更新し続ける限り有効」という運用モデルだからです。更新を止めると期限で失効します。
アクセサ(token accessor)は何に使いますか?
トークン本体を扱わずに Lookup や Revoke を行うための識別子です。監査ログにもアクセサが記録されるため、運用ではアクセサ中心で管理すると安全です(バッチ・トークンにはアクセサがありません)。
default ポリシーは常に付与されますか?
既定では付与されますが、トークン作成時に除外できます(例: CLI の -no-default-policy)。最小権限設計が原則なので、不要なら外すことを検討します。
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 のトークン種類を正しく使い分ける: service / batch 実践
HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...
Vault Token Accessorの実務と試験対策: 監査とトークン無効化を最短で行う
HashiCorp VaultのToken Accessorを使って、監査ログからの事後追跡と即時のトークン無効化を安全...