Periodic Tokenは、明示的に更新し続ける限り有効でいられるサービス用トークンです。長期間稼働するデーモンやエージェントに適しています。
一方で、更新の失敗や盗難時の影響をどう抑えるか、運用・監視・ガバナンスの仕組みが不可欠です。
Periodic Tokenはサービス用トークンの一種で、一定の期間ごとに明示的な更新を要求します。期限切れ前に更新し続ける限り、上限TTLに達して失効することはありません。更新に失敗すると即時に無効化されます。
作成方法は大きく2つです。1つはauth/token経由でperiodを明示して作成する方法、もう1つは各認証方式(例: AppRole、Kubernetes)のロール側でtoken_periodを設定して発行させる方法です。いずれもサービス用トークンとして発行され、Batch TokenはPeriodicにはなりません。
親子関係のない孤児化(orphan)を併用すると、親トークンの失効に巻き込まれず長期安定運用に向きます。ただし、明示的な失効やロールの変更、ポリシーの更新の影響は受けます。
| 項目 | Periodicサービス | 通常サービス | Batch |
|---|---|---|---|
| 更新可否 | 可(期限前更新必須) | 可(max_ttl上限あり) | 不可 |
| 有効期間 | 無制限(更新し続ければ) | ttl〜max_ttlの範囲 | 固定ttlのみ |
| 用途 | 長寿命デーモン・Agent | 一般的なアプリ・短中期 | 高スループット・一過性 |
| 作成例 | period指定/token_period | ttl/max_ttl指定 | token_type=batch |
| 親子関係 | 任意(orphan推奨) | 親子ツリー有(既定) | なし(軽量) |
基本的な作成・確認(CLI)
vault token create -policy=app -period=24h -orphan
vault token lookup <TOKEN>
# 出力例: renewable: true, period: 24h, orphan: true長寿命トークンの安定運用では、更新を人手に頼らず自動化することが必須です。Vault AgentのAuto-Authと自動更新を利用し、ファイルシンクや環境変数でアプリへ安全に受け渡します。Kubernetesではサイドカー運用が分かりやすく、systemdサービスでも同様に常駐更新が可能です。
親子関係は運用方針で選びます。親トークンや上位ジョブのローテーションに影響されたくない場合はorphan化します。逆に、上位のリモート失効で一括停止したい場合はorphanを避けて階層を残します。
Periodic Tokenの取得・更新フロー(orphan推奨)
Vault Agentでの自動更新(抜粋)
auto_auth {
method "approle" {
mount_path = "auth/approle"
config = {
role_id_file_path = "/etc/vault/role_id"
secret_id_file_path = "/etc/vault/secret_id"
}
}
sink "file" {
config = { path = "/run/secrets/vault.token" }
}
}
cache { use_auto_auth_token = true }auth/token経由で直接作る場合はperiodを指定します。運用での再現性を確保するには、auth/token/rolesにロールを作り、そのロールから発行するのが定石です。KubernetesやAppRoleなどの認証ロールにもtoken_periodを持つ設定項目があります。
更新はrenew-self(自分自身のトークン)を使うのが安全です。外部のトークンを更新する場合はauth/token/renewに対する特権が必要です。
CLIとHTTP APIの例
# 1) tokenロールを作成(Periodicを強制)
vault write auth/token/roles/longlife \
allowed_policies="app" \
orphan=true \
period=24h
# 2) ロールからPeriodic Token発行
vault token create -role=longlife
# 3) 直接period指定で作成(必要な能力がある場合)
vault token create -policy=app -period=24h -orphan
# 4) 更新(自分自身)
VAULT_TOKEN=<TOKEN> vault token renew -increment=24h
# 5) HTTP APIでの更新(self)
curl -s \
--header "X-Vault-Token: $TOKEN" \
--request POST \
--data '{"increment":"24h"}' \
"$VAULT_ADDR/v1/auth/token/renew-self"
# 6) AppRoleロール側でPeriodicを付与
vault write auth/approle/role/webapp \
token_policies="app" \
token_type="service" \
token_period="24h"
# 7) トークン情報の確認
vault token lookup $TOKENPeriodic Tokenの安定運用は、期限の十分手前で確実に更新できているかの監視が肝です。Agent運用ではプロセス生存監視とログ監視、アプリ直更新ならメトリクスと警報を用意します。Vaultの監査ログでauth/token/renew-selfの成功可否を追跡し、異常時に切替・再取得のプレイブックを整備します。
よくある障害は、非更新型トークン(Batchやrenewable=false)を誤使用、親トークン失効に巻き込まれる、増分更新の指定ミス、時刻ずれ、ネットワーク断などです。
自己更新と他者更新の使い分け(ポリシーとAPI)
# 自分自身の更新(特権不要、renewable=trueが前提)
curl -s -H "X-Vault-Token: $TOKEN" -X POST \
-d '{"increment":"12h"}' \
"$VAULT_ADDR/v1/auth/token/renew-self"
# 他トークンの更新は管理者向け(sudo相当の権限が必要)
# 参考ポリシー(厳格に限定すること)
path "auth/token/renew" {
capabilities = ["update", "sudo"]
}
# トークン属性の確認
curl -s -H "X-Vault-Token: $TOKEN" \
"$VAULT_ADDR/v1/auth/token/lookup-self"長寿命トークンは盗難時の被害が拡大しやすいため、配布と格納の経路を最小化し、最小権限ポリシーを徹底します。CIDR制限やnum_uses制限を適用できる場合は併用してリスクをさらに抑えます。
Periodic Tokenはmax_ttlやexplicit_max_ttlと併用できません。ロール設定ではtoken_periodとtoken_max_ttlは排他です。上限を持つライフサイクルを求める場合は通常のサービス用トークンを選びます。
組織ガバナンスとして、ロール定義のレビュー、監査ログの保全、漏洩時の失効手順(auth/token/revoke-selfと即時のロールローテーション)を手順化します。
最小権限ポリシー例(HCL)
path "secret/data/app/*" {
capabilities = ["read", "list"]
}
# 自己更新のみ許可(selfはトークン固有判定に依存)
path "auth/token/renew-self" {
capabilities = ["update"]
}
# CIDR制限はロールやトークン発行時に付与(例)
# vault write auth/token/roles/longlife token_bound_cidrs="10.0.0.0/8,192.168.0.0/16"Periodic Tokenはサービス用トークンであり、更新し続ける限り有効期限の上限を持ちません。Batch Tokenは更新不可でPeriodicになりません。ロールのtoken_period、auth/tokenのperiod、orphanの意味を正確に押さえてください。
renew-selfとrenewの違い、親子関係の影響、Vault Agentによる自動更新の有無はAssociate/Opsレベルで頻出です。
チートシート
# Periodic発行(ロール経由)
vault write auth/token/roles/ll allowed_policies=app orphan=true period=24h
vault token create -role=ll
# Periodic発行(AppRoleロール)
vault write auth/approle/role/app token_type=service token_period=24h token_policies=app
# 自己更新と確認
vault token renew -increment=24h $TOKEN
vault token lookup $TOKENAssociate / Ops
問題 1
長期間稼働するデーモンに対し、運用中も安全に資格情報を維持したい。上位トークンの更新や失効の影響を受けず、自動更新で長期安定運用したい。最も適切な構成はどれか。
正解: A
長寿命かつ安全性を両立するには、Periodic Token(サービス用)にperiodを設定し、orphanで親の影響を避け、Vault Agent等でrenew-selfを自動化するのが定石。Batchは更新不可、rootの使い回しは不適切、通常トークンのmax_ttl引き延ばしは期限切れリスクとガバナンス上の問題がある。
Periodic Tokenはどれくらいの間有効ですか?
クライアントがperiod内に継続的にrenewを行う限り、上限TTLなく有効です。更新に失敗すると直ちに無効になります。
Periodic Tokenとtoken_max_ttlを同時に設定できますか?
できません。ロールや発行時の設定でtoken_period(またはperiod)とmax_ttl系は排他です。上限を持たせたい場合は通常のサービス用トークンを選びます。
Batch TokenをPeriodicにできますか?
できません。Batch Tokenは軽量・非更新・固定TTLが特性で、Periodicはサービス用トークンのみ対応です。
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...