モジュール VI — アイデンティティ、権限、ガバナンス
モジュール VI は、エンジンの既存の認可モデルの上に立つガバナンスプレーンです。 エンフォーサーやアイデンティティ・コネクターを再実装することはせず、それらを消費します。 5つのサブシステムを1つの境界づけられたコンテキスト(アイデンティティとそのガバナンス)の 背後に束ねます。すなわち、ディレクトリ名簿(roster)の整合器、帰属を確固たるものに するエージェント↔アイデンティティのブリッジ、deny-only な ABAC エンジン、 human-in-the-loop の承認ゲート、ポリシー/アイデンティティのオーサリング バックエンドです。これは製品におけるあらゆる統治されたアクションの根源です。
これが何であるか
Section titled “これが何であるか”このモジュールは Management レイヤーに位置し、コントロールプレーンの決定権限です。 すなわち、誰と何が何をしてよいか、そしてどのアクションが先に人間を必要とするかです。その 契約は、deny-only・deny-by-default(既定で拒否)の姿勢を強制可能にしたものです。
- 名簿の整合(Roster reconciliation) は、接続済みディレクトリ(アイデンティティ
ソース)を、エンジンの正規
Identityエンティティ群とモジュール所有の コレクション/メンバーシップグラフへ収束させます。外部 ID のみをキーとした find-or-create により、アクセスマップが監査参照から作成する同じ行をアップグレード します。この単一行への収束こそが、確固たる帰属を可能にします。 - エージェント↔アイデンティティのブリッジ は、エージェントを、そのクレデンシャルが 提示する正規の非人間アイデンティティの内部 ID に束縛し、モジュール III(アクセスマップ)が 誤った permitted-vs-observed のドリフトを打ち消すための、ハードな依存関係を解決します。
- ABAC エンジン はネイティブな評価器で、RBAC の後に動き、さらに制限することしか できません。グラントを広げることは決してありません。
契約とエンティティ
Section titled “契約とエンティティ”モジュール VI は、共有データモデル内の4つのエンティティを所有します。すなわち、
コレクションとコレクションメンバーのエッジ(ソース由来のグループ/ロールグラフで、
境界内で推移的に解決される)、承認(approval)(可変の HITL リクエスト)、そして
追記専用の承認決定(approval-decision)証跡です。アイデンティティはモジュールの
テーブルへ複製されません。エンジンの正規 Identity エンティティへ整合されます。
ABAC 評価器 は、検証済みの特性とともにエンジンのポリシー評価器シームを実装します。 すなわち、すべてのルールは deny ルールであること、RBAC の後に AND の内側で動くため ポリシーがアクセスを拡張することは決してできないこと、不正な形式の有効な(enabled) ポリシーは fail closed(拒否側に倒れる) こと、認可のホットパスはテナントごとの キャッシュから供給され書き込みコミット後に無効化され、テナントごとに厳格に隔離される ことです。ポリシー仕様は書き込み時に型付けされ再マーシャルされます(オペレーターの JSON がそのまま往復することは決してありません)ので、クレデンシャルが仕様へ入り込むことは できません。OPA/Rego は外部評価器のシームであり、エンジンへ引き込まれる依存関係では 決してありません。
承認ゲート は、監査台帳が固定する「アクション→人間」のトレーサビリティです。すなわち、
職務分掌(separation-of-duty)と重複決定者ガードは安定したユーザーアイデンティティを
キーとし(システムトークンは決定できません)、複数承認のしきい値はストア上で
レースセーフ(並行する超過は厳密に1名の勝者へ解決される)であり、有効期限は読み取り時に
遅延導出され、その後、明示的でテナントにスコープされたスイープによってマテリアライズ
されます。オーサリングバックエンド(managed-settings/hooks、Cedar/OPA の policy-as-code、
WIF オブジェクトグラフ)は、publish→immutable-revision→drift の書き込みパスを加えます。
Cedar の場合、公開されたポリシーは稼働中のテナントごとの deny-only オーバーレイ上で
有効化され、起動時に再ロードされるため、active の主張は再起動を生き延びます。
何を消費し、何を生成するか
Section titled “何を消費し、何を生成するか”このモジュールは、エンジンの認可・監査の土台と、設定済みディレクトリソースからの型付き
アイデンティティ名簿を消費します。アクセスマップが依存する Agent.IdentityID
フィールドを埋めます。イベントバス上に FindingReport イベントを
生成します。すなわち、複数のエージェントに束縛された共有アイデンティティ、加えて
承認のエスカレーションと有効期限切れで、それぞれ1回だけ発行され、永続化された
マーカーでゲートされるため、スイープの繰り返しが二重発行することはできません。あらゆる
特権的変更、および整合に関連するアイデンティティとバインディングの読み取りは、コミット済み
トランザクションの内側で実際のプリンシパルへ自己監査します。監査アクターは常に型付きの
プリンシパル参照であり、メールアドレスでは決してありません。
- モジュールカタログ — モジュール VI の位置づけと正直なアクチュエーション状況。
- アクセス&リソースマップ (III) — このモジュールが帰属の依存関係を解決する消費者。
- イベントバスリファレンス — このモジュールが発行する
finding.reportedイベント。 - 統治と承認 — ポリシーと承認の面を使う。
- アーキテクチャ概要 — このモジュールが上に構成されるエンジンとレイヤー。
- Honesty & limits — deny-closed・detective-by-default の姿勢。