コンテンツにスキップ

ガバナンスと承認(human-in-the-loop)

このページは、少なくとも1つのソースを接続し、これから estate を ガバナンス する必要のある 運用者向けです: 誰が・何が行動できるかを決め、プラットフォームが提示するものをレビューし、 それに対処する。ガバナンスは モジュール VI(アイデンティティ、権限、ガバナンス) に存在し、 API の他の部分と同じ認可コアの上に乗っており、完全に監査されます

あなたがその中でガバナンスする認可モデル

Section titled “あなたがその中でガバナンスする認可モデル”

あらゆるガバナンス決定は、control plane の他の部分を保護するのと同じ認可コアによって下されます。 何かを変更する前に、その3つの性質を理解してください。

認可は RBAC が最初に 走ります。あるテナントにメンバーシップを持たないプリンシパルは 拒否 されます ── 暗黙の付与はありません。権限はテナントにスコープされ、ハンドラは リクエストが解決した 単一のテナントに対してのみ 作用し、それが再導出するテナントには 決して作用しません。これにより confused-deputy と IDOR のクラスを構造的に封じます。

組み込みロールは能力が増していくはしごを成します:

ロール何ができるか
viewer運用データと監査証跡を読む
editor上記に加え、運用データの書き込み
admin上記に加え、テナント IAM ── ユーザー、メンバーシップ、トークン、設定
ownerテナント内のすべての権限

モジュールは自身の名前空間付き権限(<namespace>:<resource>:<verb>)を宣言し、ロールには それらの権限が 動詞層ごとに 付与されます(viewer は read、editor は write、admin と owner は admin にマッピング)。したがって新しいモジュールは、エンジンのリリースなしにガバナンス画面を 導入します。

ポリシーシーム(ABAC/PDP)は restrict のみ

Section titled “ポリシーシーム(ABAC/PDP)は restrict のみ”

RBAC の上に、運用者は属性ベースのルールのために外部の policy decision point(PDP) を配線できます。 エンジンは単一の環境変数で選びます:

Terminal window
# Choose one. Cedar is the embedded, pure-Go primary; OPA is an over-HTTP adapter.
OLIVARES_PDP_ENGINE=cedar # or: opa | none

両エンジンは1つのシームの背後に位置し、そのシームには、それについてどう推論すべきかを支配する 1つの不変条件があります:

2つのアダプタはその不変条件を異なる方法で保ちます。あなたはそれに応じてポリシーを記述します:

  • Cedar(組み込み、主要、pure-Go)。 forbid ルールを書きます。マッチするルールは制限であり、 空のルールセットは RBAC の決定がそのまま残ることを意味します。Cedar の permit が決定を 広げることは決してありません。
  • OPA(HTTP 経由)。 あなたの Rego は permit-by-default でなければなりません (default allow := true に、拒否のための allow := false 句を添える)。true の結果は 制限なしを意味します。false、結果の欠如、またはあらゆるトランスポートや非 2xx エラーは fail closed します ── リクエストは拒否されます。

無効な PDP 設定は外部 PDP のみを無効化 し、その事実をログに記録します ── ネイティブ ABAC と RBAC はガバナンスを続けます。設定ミスのポリシーエンジンが、リクエストをガバナンスされないまま 放置することも、control plane をダウンさせることも決してありません。PDP が適用するあらゆる制限は 監査されます。

画面があなたに対処を促すもの

Section titled “画面があなたに対処を促すもの”

human-in-the-loop ガバナンスは、プラットフォームが観測し提示するものによって駆動されます。 2つのストリームが、何が判断に値するかを運用者に伝えます:

ストリームモジュール何を提示するか
least-privilege driftIII(access map)permitted-vs-observed の差分 ── 誰も意図しなかった形で使われた付与済みケイパビリティ、または到達可能だが一度も行使されていない経路
検出結果(findings)IX(セキュリティ、guardrails、フォレンジクス)guardrail と red-team の検出結果、加えてプラットフォームがルーティングする通知ストリーム

モジュール III、すなわち access map は read-first です ── ログ、OpenTelemetry、そして (非協調的なカーネルバックストップとして)eBPF を通じて観測し、エージェントのデータ経路には 決して入りません。したがってコレクタの障害が本番を壊すことはありません。それはまた minimal-data です: 関係 agent → resource (read/write) を格納するだけで、ペイロード、シークレット、 PII は決して格納しません。それが運ぶシグナルは、自身の確信度(attributedapproximate か)と 自身の到達範囲について正直です。

あるシグナルのクラスは、明示的なガバナンス判断を必要とします。MCP のツールアノテーション (readOnlyHint / destructiveHint)は有用な read/write のヒントですが、MCP 仕様によって untrusted です ── クライアントはそれらを untrusted として扱わなければなりません。プラットフォームは それらを信頼できるシグナルに対して 裏付け(corroborate) し、決して単独では信頼しません。 アノテーションのみに依拠する drift 項目に対して行動するとき、あなたもそうすべきです。

意図されたガバナンスループは次のとおりです: 画面が提示する(モジュール III からの drift、 モジュール IX からの検出結果)→ 権限を持つ運用者が決定するその決定が監査台帳に記録される

このループの3つの部分すべてが今日稼働しています。画面は実在します ── モジュール III が permitted-vs-observed の差分を生成し、モジュール IX が検出結果を生成します。承認エンジンは 実在します ── ガバナンス対象の承認リクエストがガバナンスモジュールに対して開かれ (deny-closed、プランハッシュ紐付け、時間制限付き)、権限を持つ運用者が決定エンドポイント経由で 承認または拒否し、職務分掌、重複決定者、有効期限がサーバー側で強制 されるため、リクエスト者が 自身のリクエストを決定することは決してできず、期限切れのものが拘束することも決してできません。 そして 記録は実在し、強固です ── 下記の保証を参照してください。なお設計段階 なのは、 作り込まれた 運用者レビューコンソール です ── リッチな承認キュー UI。エンドポイントとエンジンは 出荷済みで、洗練されたレビュー画面がモジュール VI の今後の道筋です。

このループを信頼に足るものにする依存関係は、エージェントごとのアイデンティティ です。 プラットフォームの監査は、活動を認証情報やロールに帰属させるのであって、本質的にエージェントに 帰属させるわけではありません。コネクションプールを持つ共有サービスアカウントは帰属を崩壊させます。 したがってうまくガバナンスするとは、エージェントごとにアイデンティティを発行し強制する ことを 意味します ── 観測(モジュール III)からガバナンス(モジュール VI)への架け橋です。この アイデンティティ側は、不透明で失効可能なファーストパーティ認証情報と、非人間アイデンティティの 名簿を中心に構築されています。製品中の 唯一の認証情報発行プリミティブ はオプトインで、 attested で、監査され、発行されたトークンを決して永続化しません。アイデンティティ、権限、 ガバナンスが estate 全体でどう合成されるかについては モジュールカタログ を参照してください。

外部の不変なコピー ── ネイティブテレメトリが提供しない、エンタープライズ監査人が求めるもの ── のために、台帳は 認証付きのプル方式エクスポート として公開されます:

Terminal window
# Pull the signed, hash-chained ledger for offline re-verification.
# Requires a token whose role can read the audit trail (viewer and up).
curl -fsS "https://localhost:8443/v1/audit/export?format=cef" \
-H "Authorization: Bearer $OLVK_TOKEN" \
-H "X-Olivares-Tenant: $TENANT" >> /var/log/olivares/audit.cef

サポートされる format 値は cefleefsyslogotlpotlp_envelopeotlp_log_recordocsf です。 otlp は完全で POST 可能なエクスポートリクエストを出力し、otlp_envelope はその厳密なエイリアス、 otlp_log_record は 1 行 1 LogRecord の素の射影です。すべてのレコードは チェーン整合性フィールドを保持するため、SIEM や WORM ストアが チェーンをオフラインで再検証 できます。分離された署名は、DB のみの侵害(インジェクション、盗まれたバックアップやレプリカ、 RLS をバイパスするロール)とチェックポイント削除に対して防御します。オフボックスのコピー が、 完全に侵害されたホストに対する制御です。完全なファイル追従パイプラインについては Splunk への監査転送 を参照してください。

これらの決定が対処する least-privilege drift は、access map の permitted-vs-observed の結果です。 zero-to-graph チュートリアル は、デモ estate 上でそこに具体的に 到達する手順を案内します。access-map モジュールの画面は、他のすべてと同じ deny-by-default RBAC、 テナントスコープ、読み取りごとの監査の対象であり、だからこそその読み取りが editor 以上のアクションなのです。

  • セキュリティモデル ── 特権、テナントスコープ、 自己監査、そして minimal-data の運用形態を完全に。
  • 脅威モデル ── 資産、信頼境界、そして各カバレッジ段階が 何を立証できるか。
  • モジュールカタログ ── アイデンティティ、権限、ガバナンス (モジュール VI)が、access map(モジュール III)と検出結果(モジュール IX)とどう合成するか。
  • ソースを接続する ── drift と検出結果が構築される元となるシグナルを配線する。