Von null zu einem Read/Write-Zugriffsgraphen
Am Ende dieses Tutorials läuft Olivares AI lokal und Sie haben sein zentrales Artefakt erreicht: einen Read/Write-Zugriffsgraphen mit einem echten Permitted-vs-Observed-Drift-Ergebnis. Sie lernen das Produkt kennen, indem Sie es arbeiten sehen — dies ist ein Lernpfad, keine Produktionsinstallation (dafür siehe Self-Hosting).
Wir verwenden das mitgelieferte Demo-Estate (--seed-demo): eine kleine
synthetische Menge an Agents, Identitäten und Ressourcen, die genau so durch den
echten Event-Bus fließt, wie es ein Live-pgAudit- oder
OpenTelemetry-Collector täte. Alles läuft auf localhost.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Go 1.26+ (zum Erstellen des Binarys), oder Docker (siehe die Self-Hosting-Anleitung für den Container-Pfad).
curlundpython3, um aus der Shell mit der API zu sprechen.- Ein Checkout des Olivares-AI-Repositorys.
Bauen und booten
Abschnitt betitelt „Bauen und booten“-
Das einzelne Binary bauen. Vom Repository-Root aus:
Terminal-Fenster task setup # install git hooks, commit tooling and web depstask build # compile the static binary with the web embedded (go:embed)./bin/olivares versiontask buildbaut das Web-Bundle, die First-Party-Connector-Plugins und das Binary und erzeugt ein eigenständiges Artefakt unter./bin/olivares. -
Booten Sie es mit dem Demo-Estate auf Loopback. Wählen Sie ein frisches Datenverzeichnis, damit Sie sauber starten:
Terminal-Fenster DATA="$(mktemp -d)"./bin/olivares serve --insecure --seed-demo \--listen 127.0.0.1:8901 --grpc-listen 127.0.0.1:8902 \--data-dir "$DATA"Das
--insecure-Flag liefert Klartext-HTTP auf Loopback aus (für ein lokales Tutorial in Ordnung; TLS ist ansonsten standardmäßig aktiv). Beim Boot sehen Sie ein DEMO MODE-Banner mit den Demo-Anmeldedaten:demo@olivares.local / olivares-demo-estate
Den Zugriffsgraphen erreichen
Abschnitt betitelt „Den Zugriffsgraphen erreichen“Lassen Sie den Server laufen und öffnen Sie ein zweites Terminal.
-
Melden Sie sich an mit den Demo-Anmeldedaten, um ein Bearer-Token zu erhalten:
Terminal-Fenster BASE=http://127.0.0.1:8901TOKEN="$(curl -sf -X POST "$BASE/v1/auth/login" \-H 'Content-Type: application/json' \-d '{"email":"demo@olivares.local","password":"olivares-demo-estate"}' \| python3 -c 'import sys,json;print(json.load(sys.stdin)["token"])')" -
Lösen Sie den Demo-Mandanten auf (die Access-Map-Endpunkte sind mandantenbezogen):
Terminal-Fenster TENANT="$(curl -sf "$BASE/v1/system/orgs" -H "Authorization: Bearer $TOKEN" \| python3 -c 'import sys,json;[print(o["tenant_id"]) for o in json.load(sys.stdin)["items"] if o["slug"]=="demo"]')" -
Rufen Sie den Read/Write-Graphen ab. Dies ist Modul III — die Access Map:
Terminal-Fenster curl -sf "$BASE/v1/m/accessmap/graph?limit=200" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.toolDas Demo-Estate liefert ungefähr 20 Knoten und 13 Kanten — Agents, Identitäten, MCP-Server, Modelle, Provider und Ressourcen, wobei jede Kante als Read oder Read-Write klassifiziert ist.
-
Rufen Sie den Permitted-vs-Observed-Drift ab:
Terminal-Fenster curl -sf "$BASE/v1/m/accessmap/drift" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.toolDies bringt die eingesäten unerwarteten Zugriffe zum Vorschein, zum Beispiel:
- ein Agent, der
appdb.public.secretsliest, ohne dass es ihm jemals gewährt wurde (zugeordnet); und - eine geteilte Pool-Identität, die
appdb.public.logsschreibt (näherungsweise Zuordnung).
- ein Agent, der
-
(Optional) Das gesamte eingesäte Inventar ansehen:
Terminal-Fenster curl -sf "$BASE/v1/m/inventory/summary" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool
In der Web-UI ansehen
Abschnitt betitelt „In der Web-UI ansehen“Die Web-UI ist in dasselbe Binary eingebettet und wird vom selben Origin ausgeliefert. Öffnen Sie bei weiterhin laufendem Demo-Server:
http://127.0.0.1:8901Melden Sie sich mit den Demo-Anmeldedaten an und öffnen Sie die Access-Map-Ansicht: Der Graph rendert dieselben Knoten und Kanten, wobei das Drift-Overlay die unerwarteten Zugriffe hervorhebt und die Dashboards das Estate zusammenfassen.
Was hier nicht passiert (und was als Nächstes zu tun ist)
Abschnitt betitelt „Was hier nicht passiert (und was als Nächstes zu tun ist)“- Die Demo-Daten sind synthetisch und das Demo-Passwort ist öffentlich — dies ist kein sicheres Deployment. Für ein echtes folgen Sie Self-Hosting: Es hat keine Standard-Anmeldedaten und verwendet ein einmaliges Setup-Token.
- Die oben verwendeten Modul-Endpunkte (
/v1/m/accessmap/*,/v1/m/inventory/*) sind erreichbar, aber nicht Teil des ausgelieferten OpenAPI-Dokuments — so konzipiert; die API-Referenz dokumentiert die zentrale REST-Oberfläche. - Um zu verstehen, warum der Graph auf diese Weise aufgebaut ist (kooperative Telemetrie gekreuzt mit nativem Store-Audit, eBPF als Backstop, MCP-Annotationen als nicht vertrauenswürdig behandelt), lesen Sie die Architekturübersicht.