RGP(Role Governing Policy)は、Vault EnterpriseにおけるSentinelポリシーの一種で、特定の認証ロールから発行されたトークンに対し、追加のガバナンス(時間帯やネットワークなどの条件)を課すための仕組みです。
ACLポリシーで機能的な許可を定義し、EGP/RGPでコンテキストに応じた絞り込みを行うのが実務の定石です。本稿では、Ops視点でのRGPの捉え方、実装ステップ、比較観点、試験対応の勘所をまとめます。
RGP(Role Governing Policy)はVault Enterprise専用の機能で、Sentinel言語で記述されたポリシーを、認証ロール単位で適用します。ACLで「何をできるか」を定めたうえで、RGPは「いつ・どこから・どの条件なら許可するか」を絞り込む補完層です。RGPは許可を拡張せず、条件に合致しなければリクエストを否認します。
RGPの適用対象は、AppRoleやKubernetes、AWSなどの各認証メソッドに定義されたロールです。対象ロールで発行されたトークンのリクエストに対して評価されます。これにより、人間と機械、CIと本番アプリなど、性質の異なる主体ごとにガバナンスを分離できます。
Vaultのアクセス制御は多層です。ACLは基本の許可(read/write/listなど)をパス単位で定義します。EGPはエンドポイント(パス)に対してコンテキスト条件を付与し、RGPは認証ロール由来のトークンに対して条件を付与します。運用では、ACLで“できること”を定義し、EGP/RGPで“してよい時/場所/主体”に絞るのが安全です。
資格試験では、ユースケースに即して“どの層で縛るべきか”を選ばせる設問が頻出です。時間帯や発信元ネットワークなど、主体(ロール)に依存する条件はRGP、パスに依存する条件はEGP、と切り分けるのが定石です。
| 層 | スコープ/紐付け | 代表用途 | 許可の性質 |
|---|---|---|---|
| ACL | シークレットパス/名前空間 | 基本的なread/write/list/deny | 許可を定義(基礎) |
| EGP | エンドポイント(パス/パス接頭) | 時間・リクエスト属性でパス操作を制御 | 許可を絞り込む(否認のみ) |
| RGP | 認証ロール(AppRole/K8s/AWSなど) | 主体(ロール)に応じた条件付与 | 許可を絞り込む(否認のみ) |
Vaultリクエストにおける多層ガバナンス(概念図)
RGPは、指定した認証ロールから発行されたトークンによるリクエストに対して評価されます。未認証エンドポイントや、対象ロールと無関係のトークンには適用されません。評価結果がdenyであれば、ACLで許可されていても処理は否認されます。
運用上は、ロールを粗くしすぎるとRGPの影響範囲が広がり、意図しない否認が発生しやすくなります。逆に細かく分けすぎるとロール管理が肥大化します。境界(人/機械、CI/本番、Prod/Non-Prod)ごとにロールとRGPをセットで設計すると、影響を読みやすくなります。
次のような要件は、RGPでロール単位に制御するのが適しています。ACLでは表現しづらい“いつ/どこから/誰が”の条件を、ロールの性質に応じて実装します。
時間やネットワークに依存する要件は、環境差(本番/検証)や主体の特性(人/機械)で最適な条件が異なりやすいため、ロール分割とRGPの組み合わせが効果的です。
例として、人間系のKubernetesロールに対し“平日9:00〜18:00のみ書き込み許可”のガバナンスを追加します。ACL側では必要なcapabilities(read/writeなど)を既に付与済みとし、RGPで時間帯外の書き込みをdenyします。
RGPは“enforcement_level”をsoft-mandatory(違反時に許可しつつ警告)またはhard-mandatory(違反時に否認)で設定できます。段階移行ではsoftで影響を観測し、問題がないことを確認してからhardへ切り替えるのが実務的です。
RGPの定義と適用(例:就業時間内のみwrite許可)
# 1) Sentinelポリシー(office-hours.sentinel)
import "time"
main = rule {
# 現在時刻(サーバのタイムゾーン/UTCに注意)
t = time.now()
# 平日かつ 09:00〜18:00 の時間帯のみ許可
weekday = t.weekday
in_office_hours = t.hour >= 9 && t.hour < 18
is_weekday = weekday >= 1 && weekday <= 5 # 1=Mon ... 5=Fri
# 書き込み系操作のみ絞り込み(read等は本ポリシーでdenyしない)
write_ops = ["create", "update", "patch"]
is_write = rule { request.operation in write_ops }
# 書き込みであれば時間帯条件を満たす必要あり
# 書き込み以外の操作(read/list等)はこのRGPでは否認しない
(is_write and (is_weekday and in_office_hours)) or (!is_write)
}
# 2) RGPの作成(Enterpriseのみ)
# 例: hard-mandatoryで適用。まずはsoftで様子見が推奨
vault write sys/policies/rgp/office-hours \
[email protected] \
enforcement_level=hard-mandatory \
roles="auth/kubernetes/role/human-ops"
# 3) 検証
# 対象ロールで認証し、時間外にwrite操作を試すとdenyとなる
# 時間内はACLで許された操作が実行できる
# ログ/監査ログでRGPによるdenyを確認することRGPは“ロール由来のトークンに対するコンテキスト制御”である点を押さえてください。EGPはパス単位、ACLは基礎許可です。ユースケースから“何を縛るか(主体か、パスか)”を素早く見抜く力が問われます。
段階導入(soft-mandatory→hard-mandatory)、影響範囲の把握(対象ロールの棚卸し)、監査ログでの検証(deny理由の確認)がOpsの基本動作です。ロール統合/改名時にRGPの対象更新を忘れると、想定外denyが起きやすい点に注意。
Ops
問題 1
Vault Enterpriseで、Kubernetesの“human-ops”ロールから発行されたトークンについて、平日の就業時間外はシークレットの書き込みを禁止し、他のロールには影響を与えたくありません。最も適切なアプローチはどれですか。
正解: A
主体(認証ロール)に依存する時間帯制御はRGPで行うのが適切です。human-opsロールに限定してhard-mandatoryで適用すれば、他ロールへ影響を出さずに確実に否認できます。EGPはパス起点の制御であり、全ロールへ影響します。ACLの動的更新は運用負荷とリスクが高く非推奨です。全ロール適用からの除外運用も安全ではありません。
RGPはオープンソース版Vaultでも使えますか?
いいえ。RGP(およびEGPを含むSentinel連携のガバナンスポリシー)はVault Enterpriseの機能です。OSS版には含まれません。
RGPの影響を安全に評価するにはどうすればよいですか?
enforcement_levelをsoft-mandatoryで適用すると、条件違反時でもリクエストは通過しつつ警告が記録されます。監査ログを確認して影響範囲を把握し、問題がないことを確認してからhard-mandatoryへ切り替えるのが推奨です。
RGPとEGPはどちらを先に設計すべきですか?
まずACLで最小権限を設計し、次に境界の強い条件(ネットワークや時間などパスに依存するもの)をEGPで、主体(ロール)に依存する条件をRGPで補完します。順序自体に絶対解はありませんが、“何を縛るか(パスか主体か)”で役割を分けるのが設計の基本です。
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...