Zum Inhalt springen

Governance und Freigabe (Human-in-the-Loop)

Diese Seite ist für den Operator, der mindestens eine Quelle verbunden hat und nun das Estate steuern (governance) muss: entscheiden, wer und was handeln darf, prüfen, was die Plattform zur Oberfläche bringt, und darauf reagieren. Governance lebt in Modul VI (Identität, Berechtigungen, Governance), sitzt auf demselben Autorisierungskern wie der Rest der API und ist vollständig auditiert.

Das Autorisierungsmodell, innerhalb dessen Sie steuern

Abschnitt betitelt „Das Autorisierungsmodell, innerhalb dessen Sie steuern“

Jede Governance-Entscheidung wird von demselben Autorisierungskern getroffen, der den Rest der Control Plane schützt. Verstehen Sie seine drei Eigenschaften, bevor Sie etwas ändern.

Die Autorisierung läuft RBAC zuerst. Ein Principal ohne Mitgliedschaft in einem Tenant wird verweigert — es gibt keinen impliziten Grant. Berechtigungen sind auf einen Tenant gescopt, und der Handler agiert nur auf dem einzelnen Tenant, auf den die Anfrage aufgelöst wurde, niemals auf einem, den er neu ableitet, was Confused-Deputy- und IDOR-Klassen konstruktiv ausschließt.

Die eingebauten Rollen bilden eine Leiter zunehmender Fähigkeit:

RolleWas sie kann
vieweroperative Daten und den Audit-Trail lesen
editordas Obige, plus operative Daten schreiben
admindas Obige, plus Tenant-IAM — Benutzer, Mitgliedschaften, Tokens, Einstellungen
owneralle Berechtigungen innerhalb des Tenants

Ein Modul deklariert seine eigenen namespaced Berechtigungen (<namespace>:<resource>:<verb>), und Rollen werden diese Berechtigungen nach Verb-Stufe gewährt (viewer mappt auf Read, editor auf Write, admin und owner auf Admin). Ein neues Modul führt daher eine Governance- Oberfläche ein, ohne ein Engine-Release.

Über RBAC hinaus kann der Operator einen externen Policy Decision Point (PDP) für attributbasierte Regeln verdrahten. Sie wählen die Engine mit einer einzigen Umgebungsvariablen:

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

Beide Engines sitzen hinter einer Naht, und die Naht hat eine Invariante, die bestimmt, wie Sie über sie nachdenken müssen:

Die zwei Adapter wahren diese Invariante auf unterschiedliche Weise, und Sie autorieren Policy entsprechend:

  • Cedar (embedded, primär, pure-Go). Sie schreiben forbid-Regeln. Eine Regel, die matcht, ist eine Einschränkung; ein leerer Regelsatz bedeutet, dass die RBAC-Entscheidung bestehen bleibt. Ein permit in Cedar kann die Entscheidung niemals erweitern.
  • OPA (über HTTP). Ihr Rego muss permit-by-default sein (default allow := true, mit allow := false-Klauseln für Ihre Verweigerungen). Ein true-Ergebnis bedeutet keine Einschränkung; false, ein fehlendes Ergebnis oder ein beliebiger Transport- oder Non-2xx-Fehler fällt geschlossen — die Anfrage wird verweigert.

Eine ungültige PDP-Konfiguration deaktiviert nur den externen PDP und loggt die Tatsache — native ABAC und RBAC steuern weiter. Eine fehlkonfigurierte Policy-Engine lässt niemals Anfragen ungesteuert und legt die Control Plane niemals lahm. Jede Einschränkung, die der PDP anwendet, wird auditiert.

Human-in-the-Loop-Governance wird von dem getrieben, was die Plattform beobachtet und präsentiert. Zwei Streams sagen einem Operator, was eine Entscheidung rechtfertigt:

StreamModulWas es zur Oberfläche bringt
Least-Privilege-DriftIII (Access Map)das Permitted-vs-Observed-Diff — eine gewährte Fähigkeit, die auf eine Weise genutzt wird, die niemand beabsichtigt hat, oder ein Pfad, der erreichbar ist, aber nie ausgeübt wird
FindingsIX (Security, Guardrails, Forensik)Guardrail- und Red-Team-Findings, plus der Notification-Stream, den die Plattform routet

Modul III, die Access Map, ist read-first — sie beobachtet über Logs, OpenTelemetry und (als nicht-kooperativer Kernel-Backstop) eBPF und ist niemals im Datenpfad des Agenten, sodass ein Collector-Ausfall die Produktion nicht brechen kann. Sie ist außerdem minimal-data: Sie speichert die Relation agent → resource (read/write), niemals Payloads, Secrets oder PII. Das Signal, das sie trägt, ist ehrlich über ihre eigene Konfidenz (attributed vs approximate) und ihre eigene Reichweite.

Eine Signalklasse benötigt explizites Governance-Urteil. MCP-Tool-Annotationen (readOnlyHint / destructiveHint) sind ein nützlicher Read/Write-Hinweis, aber durch die MCP-Spezifikation untrusted — Clients müssen sie als untrusted behandeln. Die Plattform korroboriert sie gegen vertrauenswürdige Signale und vertraut ihnen nie allein, und so sollten auch Sie es tun, wenn Sie auf ein Drift-Item reagieren, das nur auf einer Annotation ruht.

Die beabsichtigte Governance-Schleife lautet: Oberflächen präsentieren (Drift von Modul III, Findings von Modul IX) → ein autorisierter Operator entscheidetdie Entscheidung wird im Audit-Ledger festgehalten.

Alle drei Teile dieser Schleife laufen heute. Die Oberflächen sind real — Modul III produziert das Permitted-vs-Observed-Diff und Modul IX produziert Findings. Die Approval-Engine ist real — eine governance-pflichtige Freigabeanfrage öffnet gegen das Governance-Modul (deny-closed, plan-hash-gebunden, zeitlich begrenzt); ein autorisierter Operator genehmigt oder lehnt über den Decision- Endpunkt ab, und Separation-of-Duty, Duplicate-Decider und Ablauf werden serverseitig durchgesetzt, sodass der Anforderer niemals seine eigene Anfrage entscheiden kann und eine abgelaufene niemals binden kann. Und die Aufzeichnung ist real und stark — siehe die Garantie unten. Was noch im Design-Stadium ist, ist die ausgebaute Operator-Review-Konsole — eine reichhaltige Approval-Queue-UI; die Endpunkte und die Engine sind ausgeliefert, die polierte Review-Oberfläche ist der Weg nach vorn für Modul VI.

Die Abhängigkeit, die diese Schleife glaubwürdig macht, ist Per-Agent-Identität. Das Audit der Plattform schreibt Aktivität einer Credential oder Rolle zu, nicht inhärent einem Agenten; ein gemeinsamer Service-Account mit einem Connection-Pool lässt die Zuordnung kollabieren. Gut zu steuern bedeutet daher, Identität pro Agent auszustellen und durchzusetzen — die Brücke von der Beobachtung (Modul III) zur Governance (Modul VI). Die Identitätsseite davon ist um opake, widerrufbare First-Party-Credentials und ein Roster nicht-menschlicher Identitäten herum gebaut; das einzige Credential-Minting-Primitiv im Produkt ist opt-in, attestiert, auditiert und persistiert das geminte Token niemals. Siehe den Modulkatalog dafür, wie Identität, Berechtigungen und Governance über das Estate hinweg komponieren.

Für eine externe, unveränderliche Kopie — das, wonach ein Enterprise-Auditor fragt und das native Telemetrie nicht bereitstellt — wird das Ledger als authentifizierter Pull-Export bereitgestellt:

Terminal-Fenster
# 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

Unterstützte format-Werte sind cef, leef, syslog, otlp, otlp_envelope, otlp_log_record und ocsfotlp liefert den vollständigen, POST-fähigen Export-Request, otlp_envelope ist ein exaktes Alias davon, und otlp_log_record ist die reine Projektion mit einem LogRecord pro Zeile. Jeder Datensatz trägt die Felder zur Ketten-Integrität, sodass Ihr SIEM oder WORM-Store die Kette offline neu verifizieren kann. Die abgetrennte Signatur verteidigt gegen eine reine DB-Kompromittierung (Injection, ein gestohlenes Backup oder Replica, eine RLS-umgehende Rolle) und gegen Checkpoint-Löschung; eine Off-Box-Kopie ist die Kontrolle gegen einen vollständig kompromittierten Host. Siehe Audit an Splunk weiterleiten für eine vollständige File-Tail-Pipeline.

Der Least-Privilege-Drift, auf den diese Entscheidungen reagieren, ist das Permitted-vs-Observed- Ergebnis der Access Map. Das Zero-to-Graph-Tutorial führt konkret durch das Erreichen davon auf dem Demo-Estate; die Access-Map-Modul-Oberfläche unterliegt demselben Deny-by-Default-RBAC, Tenant-Scoping und Per-Read-Auditing wie alles andere, weshalb das Lesen davon eine Editor-und-aufwärts-Aktion ist.

  • Sicherheitsmodell — Privileg, Tenant-Scoping, Self-Audit und die Minimal-Data-Posture in voller Tiefe.
  • Threat Model — die Assets, Vertrauensgrenzen und was jede Abdeckungsstufe attestieren kann.
  • Modulkatalog — wie Identität, Berechtigungen und Governance (Modul VI) mit der Access Map (Modul III) und Findings (Modul IX) komponieren.
  • Eine Quelle verbinden — die Signale verdrahten, aus denen Drift und Findings gebaut werden.