EGPはVault EnterpriseのSentinel統合により、APIエンドポイント単位で事前・事後の評価を行い、柔軟な制御を追加できる仕組みです。
本稿ではACLとの違い、評価フロー、パス/操作のマッチング方法、ポリシー記述パターン、安全な導入手順、運用上の落とし穴をOps視点でまとめます。
EGP(Endpoint Governing Policy)は、VaultのAPIエンドポイント(例: secret/data/*, sys/mounts/* など)に対して、追加的なガバナンスを与える仕組みです。記述にはSentinel言語を用い、リクエスト内容や呼び出し主体(Identity連携が有効な場合)などのコンテキストに基づく条件分岐が可能です。
ACLは認可の基盤であり、能力(capabilities: read, create, update, delete, list, sudo)を付与・拒否します。EGPはACLを通過した後の要求に対し、さらなる条件(時間帯、パス命名規約、ラベル、発行者属性など)で制御を強化します。RGP(Role Governing Policy)は認証ロール単位でのガバナンスに適し、EGPはエンドポイント単位でのガバナンスに適します。EGP/RGPはいずれもVault Enterpriseの機能です。
EGPは一般に、ACL評価の後に“事前(pre)評価”として実行され、バックエンド処理の後に“事後(post)評価”として実行されます。事後評価はレスポンス内容(利用可能な範囲のメタデータ)に基づく検証に使えます。これにより、たとえば“返却されるシークレットのキー数が上限を超えない”といった検査が可能です(対応可否は対象エンドポイントに依存します)。
Sentinelの強制レベル(advisory / soft-mandatory / hard-mandatory)をEGPでも利用できます。運用ではまずadvisoryで監視し、問題がなければhard-mandatoryに引き上げる段階適用が安全です。
| 項目 | ACL | EGP | RGP |
|---|---|---|---|
| 適用対象 | トークン/パスの能力 | APIエンドポイント(パス+操作) | 認証ロール/トークンロール |
| 評価タイミング | 常に最初 | ACL後のpre/post | 認証・トークン発行時が中心 |
| 表現力 | 静的な能力中心 | 条件分岐・属性評価に強い | ロール要件の一元化 |
| 代表ユースケース | 基本的な許可/拒否 | 命名規約・時間帯・属性での制御 | TTL/最大使用回数などロール基準の制御 |
| エディション | OSS/Enterprise | Enterprise/HCP | Enterprise/HCP |
VaultにおけるEGPの評価フロー(概念図)
EGPは、対象とするエンドポイントをパス(ワイルドカードを含むパターン)と操作(capabilities)で絞り込みます。よく使う操作はread, create, update, delete, list, sudoです。たとえば secret/data/prod/* に対する create と update のみを対象とする、といった設定が可能です。
Vault Enterpriseのネームスペース機能を併用すると、同じEGPポリシーを上位で定義して子ネームスペースに継承させたり、特定のネームスペースのみに適用する、といった配置が可能です。大規模環境では“グローバルで緩やかに、下位で厳格に”という二段構えが運用しやすいです。
EGPポリシーはSentinelで記述します。以下は“prodパスへの書き込みはprod-writersグループに属するエンティティのみ許可する”という概念例です。Identity統合が有効なことを前提にしています(テスト時はグループ属性が実際に付与されているかを必ず確認してください)。
書き味のポイントは、対象パスと操作を明確にし、該当しないケースは通す、該当するケースのみ厳しく判定するという流れにすることです。これにより不要な副作用を避けられます。
EGP向けSentinelポリシー(概念例)
import "strings"
# prod配下かどうか
prod_path = strings.has_prefix(request.path, "secret/data/prod/")
# 書き込み操作か(create/update)
is_write = rule { request.operation in ["create", "update"] }
# 呼び出し主体が必要グループに属するか(Identity連携が有効な場合)
allowed_writer = rule { identity.groups contains "prod-writers" }
# メイン判定:prod配下かつ書き込みの場合はグループ所属を要求
main = rule {
!(prod_path and is_write) or allowed_writer
}
導入は小さく始めて段階的に強化します。まずは限定的なパス(例: secret/data/prod/app1/*)に対してadvisoryで適用し、監査ログとメトリクスを観察します。誤検知がないことを確認したらsoft-mandatory、最終的にhard-mandatoryへと引き上げます。
変更は常にコード化し、ステージングでリプレイテスト(代表的なAPIシナリオの再生)を行います。特に事後評価を使う場合、対象エンドポイントが返却するレスポンス構造に依存するため、バージョン差異の影響を最小化するための回帰テストが有効です。
ハードマンダトリのEGPはrootトークンであっても迂回できません。緊急時対応は“ポリシーの適用範囲から外す or 強制レベルを一時的に下げる”という運用で行います。これはOpsの現場で頻出する誤解ポイントです。
評価順序(ACL→EGP(pre)→バックエンド→EGP(post))と、EGPが“追加検証”であることの理解は資格試験でも問われやすい観点です。設定時は常に“ACLで基本許可、EGPで条件強化”の役割分担を意識してください。
Ops
問題 1
Vault EnterpriseでEGP(Endpoint Governing Policy)を用いる場合の評価順序として最も正しいものはどれか。
正解: A
EGPはACLで基礎的な許可が通った後に事前評価(pre)として実行され、バックエンド処理の後に事後評価(post)が実行されます。RGPはロール側のガバナンスであり、EGPの順序には割り込まないのが基本です。
EGPはVault OSSでも使えるか?
EGPはVault Enterprise(およびHCP Vaultの該当プラン)で提供されるSentinel統合の一部です。OSS単体では利用できません。
rootトークンならEGPを無視できるか?
いいえ。EGPのhard-mandatoryはrootトークンでも迂回できません。緊急時はポリシーの適用範囲や強制レベルを調整するなど、明示的な変更が必要です。
どのエンドポイントでも事後(post)評価は使えるか?
多くのエンドポイントで事後評価が可能ですが、利用できるレスポンスコンテキストや適用の可否はエンドポイントに依存します。要件に合わせて対象エンドポイントの挙動を確認してください。
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...