控制平面是一个 Go 二进制文件 olivares,通过其 serve 子命令上的一小组标志和少量环境变量配置——而非一个庞大的配置文件。默认值选择为失败关闭:回环绑定、TLS 开启、不附带凭证。以下所有内容取自二进制文件自己的命令定义和组合根;无法在源中确认的设置不在这里列出。
连接真实数据源和保管真实密钥的密钥保存在操作员持有的文件或通过环境变量引用的挂载密钥中——绝不在存储中。关于可运行的端到端路径,参见自托管指南;关于完整的标志列表,参见 CLI 参考。
serve 子命令
olivares serve 在一个进程中运行 REST/Web HTTP 服务器和 gRPC 服务器,Web 控制台从与 API 相同的源提供。这些是常见的配置输入。
| 标志 | 默认值 | 用途 |
|---|---|---|
--listen | 127.0.0.1:8443 | HTTP 监听地址(REST API + 嵌入 Web 控制台)。 |
--grpc-listen | 127.0.0.1:8444 | gRPC 监听地址(控制平面 / 收集器摄取)。 |
--data-dir | $OLIVARES_DATA_DIR 或 ./olivares-data | 审计签名密钥、TLS 材料,以及——对于 SQLite——存储文件。 |
--engine | sqlite | 存储引擎:sqlite 或 postgres。 |
--dsn | 空(数据目录中的 SQLite 文件) | 存储连接字符串。 |
--checkpoint-interval | 1h | 多久对每个租户链写入签名审计检查点。0 禁用。 |
--insecure | 关闭 | 提供明文 HTTP/gRPC。仅限本地开发。 |
--seed-demo | 关闭 | 加载合成示例资产。拒绝在非回环绑定上启动。 |
TLS 默认开启。没有提供 --tls-cert/--tls-key 时,引擎在数据目录中一次性、预先确保一个自签名证书,在任何监听器接受连接之前——因此 HTTP 和 gRPC 服务器使用相同的证书,且都不回退到明文。生成该证书时记录 SHA-256 指纹,以便客户端信任或固定它。
--insecure 是提供明文的唯一方式,gRPC 路径失败关闭:在 --insecure 之外服务器拒绝构造明文监听器而非静默降级。仅在 127.0.0.1 上本地开发时使用。
--seed-demo 配置一个拥有公开、源码树密码的演示管理员和捏造的资产数据——仅用于演示和 E2E。如果任一监听器是非回环的,引擎拒绝启动它。使用一次性数据目录。
第二层标志治理分布式和双向 TLS 拓扑——--admin-dsn 和 --allow-privileged-db-role(Postgres)、--grpc-client-ca(收集器双向 TLS)、以及 --region/--known-regions(数据驻留)。这些在下面介绍并在 CLI 参考中完整列出。
环境变量
引擎在启动时读取少量环境变量。以下是在组合根和连接中确认的。
数据目录和数据源
| 变量 | 效果 |
|---|---|
OLIVARES_DATA_DIR | 未给出 --data-dir 时的默认数据目录(回退到 ./olivares-data)。持有审计签名密钥、TLS 材料和 SQLite 存储文件。跨重启持久化它。 |
OLIVARES_SOURCES_CONFIG | 指向一个 JSON 文件的路径,该文件在引擎启动前连接真实的观测数据源、身份名册提供者和知识文档数据源。 |
OLIVARES_SOURCES_CONFIG 是非演示信号数据源和名册提供者解析的唯一输入。它是操作员的秘密承载配置,故意保存在存储之外。引擎在启动时读取它,并在运行时启动之前注册每个数据源。
处理是诚实的而非快速失败。缺失的变量、不可读或无效 JSON 的文件,或配置但为空的数据源列表都发出警告并产生空配置——引擎绝不中止启动。未配置的数据源表面为警告而非崩溃平面或假装工作:没有连接时,访问映射只是保持为空。要填充它,至少配置一个数据源——参见连接数据源,以及协作 Claude Code 路径的连接 Claude Code。
授权决策点
原生的基于属性和基于角色的访问控制始终治理。外部策略决策点(PDP)被选择时,是一个额外的仅限制层,只能缩小内置 RBAC 已做出的决策——永远不能扩大。
| 变量 | 效果 |
|---|---|
OLIVARES_PDP_ENGINE | 选择外部 PDP:cedar、opa 或 none(空/none = 仅原生 ABAC)。 |
OLIVARES_PDP_CEDAR_FILE | Cedar 引擎:操作员策略文件的路径。 |
OLIVARES_PDP_OPA_URL / _OPA_PATH / _OPA_TOKEN | OPA 引擎:Open Policy Agent 端点的基础 URL、决策路径和持有者令牌。 |
两个适配器位于一个接口之后——嵌入式 Cedar 评估器(纯 Go 路径)和 OPA-over-HTTP 适配器。如果 OLIVARES_PDP_ENGINE 选择了引擎但其配置无效(不可读的 Cedar 文件、格式错误的 OPA 目标),引擎仅禁用外部 PDP,保持原生 ABAC 引擎和 RBAC 执行,并大声记录。损坏的策略文件永远不会让请求处于无治理状态,也永远不会崩溃平面。关于默认拒绝模型,参见治理。
审计签名密钥
审计账本是仅追加的、哈希链化的,并由 Ed25519 签名的检查点锚定。每事件签名密钥在启动时解析,对每个保管的来源失败关闭。
| 变量 | 效果 |
|---|---|
OLIVARES_AUDIT_SIGNING_KEY | 客户自备签名密钥,base64,内联。 |
OLIVARES_AUDIT_SIGNING_KEY_FILE | 指向持有密钥的挂载密钥的路径(首选——值永远不进入进程环境)。 |
OLIVARES_KEY_CUSTODY | 声明的保管姿态(byok 或 cmek)。实际密钥保管与声明的不匹配的启动被拒绝。 |
如果都未设置,密钥在首次启动时在数据目录中铸造——诚实的单节点/开发回退。跨副本共享一个密钥(通过环境值或挂载密钥)对于高可用是必需的:否则每个节点铸造自己的密钥,账本在故障转移时分叉。每事件签名始终在本机进行。KMS 包装(客户管理密钥)保管是通过 OLIVARES_KEY_WRAP 配置的额外姿态;参见 CLI 参考。
存储选择
引擎从 --engine 选择其存储。
| 引擎 | 何时使用 | 备注 |
|---|---|---|
sqlite(默认) | 单个二进制文件、单节点、气隙安装。 | 纯 Go 嵌入式存储,零外部依赖。没有 --dsn 时,存储文件在数据目录中。 |
postgres | 多租户和横向扩展部署。 | 添加行级安全租户隔离。需要最小权限应用角色。 |
SQLite 是默认的且不需要外部服务——它是单节点拓扑的气隙就绪、零依赖存储,也是一键 Docker Compose 部署运行的存储。在需要多租户隔离或水平扩展时迁移到 Postgres,而不是之前。
选择 postgres 启用行级安全后备来隔离租户。引擎拒绝对 Postgres 超级用户或 BYPASSRLS 角色启动——这将禁用该后备——除非 --allow-privileged-db-role 显式覆盖该保护(仅限单租户/一次性环境)。对于完整的跨租户系统读取(组织列表、多租户检查点覆盖),通过 --admin-dsn 提供专用的 NOSUPERUSER BYPASSRLS 管理角色;没有它,那些读取受 RLS 限制,可能返回空。OLIVARES_DB_MAX_CONNS 限制每节点应用池。
租户和驻留
单个实例在 Postgres 上按结构是多租户的,行级安全隔离每个租户的数据。数据驻留通过 --region 在其上叠加。
- 单区域(默认,无
--region):无驻留执行。 - 区域限定(
--region eu、--region us等):实例仅服务固定到其主区域的租户,并失败关闭地拒绝跨区域访问。--known-regions列出整个部署中有效的区域代码;租户的固定必须是其中之一,格式错误的区域配置在存储打开之前使启动失败。
审计检查点
--checkpoint-interval 控制多久对每个租户链写入签名检查点(默认 1h;0 禁用)。在干净关闭时在存储关闭之前写入最终检查点,因此链在关闭时和间隔时都被锚定。参见验证发布版本了解签名链如何在下游被验证。
安全默认值
这些姿态在没有超出 serve 的配置下生效。它们是产品的默认立场,而非可选加固。
| 领域 | 默认值 | 含义 |
|---|---|---|
| 凭证 | 不附带 | 无默认用户名或密码。首次启动时没有用户,引擎铸造单次使用设置令牌并仅打印到标准输出——绝不打印到日志。 |
| 传输 | TLS 开启 | HTTP 和 gRPC 通过 TLS 提供;如果未提供则在数据目录中生成自签名证书,其指纹被记录。 |
| 绑定地址 | 回环 | --listen 和 --grpc-listen 默认为 127.0.0.1。离线主机可达性是有意的操作员决策。 |
| 明文模式 | 关闭 | --insecure 是提供明文的唯一方式,gRPC 路径失败关闭。仅限本地开发。 |
| 演示种子 | 关闭 | --seed-demo 关闭且拒绝任何非回环绑定,因为它铸造一个公开密码的演示管理员。 |
| 遥测回家 | 关闭 | 引擎不拨号回家。出站连接仅存在于你配置的数据源——这使得零出口的气隙控制平面成为可能。 |
回环绑定意味着引擎在你更改之前从离线主机不可达。当你发布它时——比如在 Docker Compose 中映射主机端口——TLS 已经开启来保护它;不要将发布的绑定与 --insecure 搭配。在全新安装时引擎打印一个 FIRST-BOOT SETUP 块到标准输出,包含一次性设置令牌(在 Compose 下从容器日志读取);管理员使用它创建第一个用户,然后认证。
关于产品观测什么、在哪里治理以及覆盖范围在哪里分层,阅读诚实与局限。