Vaultでは通常、トークンは親子ツリーに属し、親を失効すると子も連鎖的に失効します。しかしOrphan Tokenはこのツリーに属さず、親の失効に連鎖しません。
本稿では、Orphan Tokenの定義、Periodicトークンとの関係、検出と是正方法、設定の落とし穴までを、資格対策と運用の両面から解説します。
Vaultのトークンはデフォルトで親子関係を持ち、親トークンの失効が子トークンに連鎖します。これに対してOrphan Tokenは親を持たず、親の失効連鎖の対象外です。CLIではvault token create -orphan、APIでは/auth/token/create-orphanで作成します。
注意点として、Rootトークンはシステム起動直後に作られる特別なトークンで、広範な権限を持ちます。概念的には親を持たない点でOrphanに近いですが、用途・リスクは全く異なります。試験や実務では「Orphanは失効連鎖から独立する性質」「Rootは非常時・初期設定用の強力トークン」という観点を分けて覚えてください。
Vaultトークン階層とOrphanの位置づけ(概念図)
子トークンとOrphanトークンの作成と確認
## 子トークン(デフォルト: 親あり)
$ vault token create -policy=app -ttl=1h
## Orphanトークン(親なし)
$ vault token create -policy=app -ttl=1h -orphan
## トークン属性の確認(orphanフラグなど)
$ vault token lookup s.xxxxxx
Key Value
--- -----
orphan true
policies ["app" "default"]
ttl 1hAssociateレベルでは、失効連鎖・更新(renew)・作成パスの違いが頻出です。特にPeriodicトークンは親子ツリーに属さず(実質的にOrphan特性を持つ)、親トークンのrevokeに連鎖しません。
作成時にどのAPIパス/CLIオプションを用いたか、どのTTL/periodを与えたかで挙動が変わります。下の比較で素早く見分けられるようにしましょう。
| 種別 | 親の有無 | 失効の連鎖 | 有効期限/更新 |
|---|---|---|---|
| 子トークン(デフォルト) | あり(発行者が親) | 親revokeで連鎖失効 | ttlとmax_ttlの範囲で更新可 |
| Orphanトークン | なし | 非連鎖(独立) | ttl・max_ttlに従う。必要なら手動revoke |
| Periodicトークン | (ツリー外)実質なし | 非連鎖(独立) | periodごとに更新必須(max_ttlなし) |
APIパスの差異(子/Orphan)とPeriodicロール例
# 子トークン(デフォルト)
curl -sS -H "X-Vault-Token: $PARENT" \
-d '{"policies":["app"],"ttl":"1h"}' \
$VAULT_ADDR/v1/auth/token/create
# Orphanトークン
curl -sS -H "X-Vault-Token: $PARENT" \
-d '{"policies":["app"],"ttl":"1h"}' \
$VAULT_ADDR/v1/auth/token/create-orphan
# Periodicトークンのためのロール
vault write auth/token/roles/ci \
allowed_policies=build \
period=24h
# ロールから発行(Periodic)
vault token create -role=ciOrphanは明示的に-orphan(または/auth/token/create-orphan)を使った場合、またはPeriodicロールから発行した場合に生じます。既存の子トークンが途中でOrphanに“変化”することは基本的にありません。
検出はlookupが確実です。監査の観点ではアクセサで列挙→個別lookupが実務的です。Periodicはlookupでperiodが設定され、orphanもtrueで示されます(Vaultの出力項目名はバージョンで表記が変わる可能性があるため、実環境で確認してください)。
アクセサ列挙と属性確認(棚卸しの基本)
# アクセサの一覧
$ vault list auth/token/accessors
Keys
----
accessor-AAAA
accessor-BBBB
# アクセサでlookup(トークン本体を知らなくても確認可能)
$ vault token lookup -accessor accessor-AAAA
Key Value
--- -----
orphan true
period 24h
policies ["app" "default"]
# 必要に応じてアクセサでrevoke(漏えいリスク低減)
$ vault token revoke -accessor accessor-AAAAOrphan/Periodicは親に依存しない安定性をもたらす一方、親revokeで止まらないため、意図せず長生きしやすい点がリスクです。漏えい時も親revokeでは止まらないため、TTL/period設計と監視・明示revokeが前提になります。
監査デバイスの有効化、定期棚卸し(アクセサ列挙とlookup)、トークンロールでの最小権限化と短い更新間隔の設定が実務では有効です。
Periodicロールの保守的設定(短いperiodと最小権限)
vault write auth/token/roles/automation \
allowed_policies="read-only" \
period=1h
# 1時間ごとに明示更新が必要。未更新なら自動失効し、残存リスクを縮小。
# 更新例
vault token renew $(vault token lookup -format=json | jq -r .data.id)既存のOrphanを子トークン化する“変換”はできません。正攻法は新トークンを望ましい親関係で再発行し、旧トークンをrevokeする置換です。運用停止が許容されるメンテナンス時間に計画的に行います。
予防として、トークンロールでの標準化(allowed_policies、ttl/period、renewポリシー)と、Vaultサーバ設定のtoken_ttl/token_max_ttlの見直しが有効です。必要な場合にのみ-orphanやperiodを使うルール化が肝要です。
置換とサーバ既定TTL(例)
# 1) 望ましい親関係で新トークン発行(親あり=デフォルト)
NEW=$(vault token create -policy=app -ttl=30m -format=json | jq -r .auth.client_token)
# 2) 旧Orphanをアクセサで失効
OLD_ACCESSOR=accessor-BBBB
vault token revoke -accessor $OLD_ACCESSOR
# 3) Vaultサーバ設定(HCL)の既定TTL再確認(例)
# token_ttl = "30m"
# token_max_ttl = "24h"
# 実際の適用はサーバ設定ファイルで行い、再起動が必要頻出テーマは「親revokeの連鎖が及ぶか」「作成パス(create vs create-orphan)」「Periodicの更新要求(period)」。具体的なコマンド・APIパスとセットで記憶してください。
RootとOrphanの混同、Periodicを通常TTLと同様に考える誤解、lookupでの属性確認を失念する、といった落とし穴に注意。
最小セットの確認コマンド(暗記推奨)
# 作成
vault token create -policy=app # 子
vault token create -policy=app -orphan # Orphan
vault write auth/token/roles/ci period=24h # Periodicロール
vault token create -role=ci # Periodic
# 検出
vault token lookup <token>
vault token lookup -accessor <accessor>
# 失効
vault token revoke <token>
vault token revoke -accessor <accessor>Associate
問題 1
Vaultで親トークンをrevokeした直後、どのトークンが影響を受けずに引き続き利用できますか?
正解: A
Periodicトークンは親子ツリーに属さず、親トークンのrevokeに連鎖しません。デフォルトの子トークンやunwrapで得た子トークンは親の失効連鎖対象です。
OrphanトークンとRootトークンは何が違いますか?
両者とも親連鎖に依存しない点は似ていますが、Rootは初期設定・緊急作業用の極めて強力な特別トークンで、通常運用では使用を避けます。Orphanは通常の権限範囲で親連鎖から独立させたい用途(自律ジョブなど)に限定して使います。
既存の子トークンをOrphanに変換できますか?逆は可能ですか?
どちらの方向も変換はできません。望ましい属性を持つ新トークンを発行し、旧トークンをrevokeする置換が必要です。
Periodicトークンは常にOrphanと考えてよいですか?
Periodicは親子ツリーに属さず、親のrevokeで失効しない点でOrphan同等の性質を持ちます。ただし更新要件(period内でのrenew)が必須で、TTLベースの通常トークンとは運用が異なります。
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...