从零到一张读/写访问图
完成本教程后,你将在本地运行起 Olivares AI, 并到达它的核心工件:一张带有真实 Permitted-vs-Observed 偏差结果的 读/写访问图。你将 通过看它运作来理解产品 —— 这是一条学习路径,而非生产安装(关于后者,参见 自托管)。
我们使用捆绑的 演示资产域(--seed-demo):一小组合成的 agents、
身份和资源,它们会像一个实际运行的 pgAudit 或 OpenTelemetry collector 那样,
真实 地流经事件总线。一切都在 localhost 上运行。
- Go 1.26+(用于构建二进制),或 Docker(关于容器路径,参见 自托管操作指南)。
curl和python3,用于从 shell 与 API 通信。- 一份 Olivares AI 仓库的 checkout。
-
构建单一二进制。 从仓库根目录:
Terminal window task setup # install git hooks, commit tooling and web depstask build # compile the static binary with the web embedded (go:embed)./bin/olivares versiontask build会构建 web bundle、第一方 connector 插件以及 二进制,生成一个位于./bin/olivares的自包含工件。 -
用演示资产域在 loopback 上启动它。 选一个全新的数据目录,以便 从干净状态开始:
Terminal window 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"--insecure标志在 loopback 上以明文 HTTP 提供服务(对本地 教程而言没问题;否则 TLS 默认开启)。启动时你会看到一条 DEMO MODE 横幅,其中包含演示凭据:demo@olivares.local / olivares-demo-estate
让服务器保持运行,打开第二个终端。
-
登录,使用演示凭据来获取一个 bearer token:
Terminal window 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"])')" -
解析演示租户(access-map 端点是租户范围的):
Terminal window 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"]')" -
获取读/写图。 这是模块 III —— access map:
Terminal window curl -sf "$BASE/v1/m/accessmap/graph?limit=200" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool演示资产域大约返回 20 个节点和 13 条边 —— agents、身份、 MCP servers、模型、provider 和资源,每条边都被分类为 read 或 read-write。
-
获取 Permitted-vs-Observed 偏差:
Terminal window curl -sf "$BASE/v1/m/accessmap/drift" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool这会浮现出预置的 意外访问,例如:
- 一个 agent 读取它 从未被授予 的
appdb.public.secrets(已归属);以及 - 一个共享池身份写入
appdb.public.logs(近似归属)。
- 一个 agent 读取它 从未被授予 的
-
(可选)查看整个预置清单:
Terminal window curl -sf "$BASE/v1/m/inventory/summary" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool
在 web UI 中查看
Section titled “在 web UI 中查看”web UI 内嵌于同一个二进制中,并从同一 origin 提供。在 演示服务器仍在运行时,打开:
http://127.0.0.1:8901用演示凭据登录并打开 access-map 视图:图会渲染出 相同的节点和边,偏差叠加层会高亮意外访问, 仪表盘会汇总该资产域。