安全模型
Olivares AI 是一款运行在 客户自有基础设施之内 的安全产品,它构建一张图,刻画每个 AI 智能体能够触及的范围。 这使它对攻击者而言既高度敏感又极具价值:本产品中的一个缺陷,就是客户资产范围(estate)的一次破防。因此标准是最高的, 其姿态被设计为 从一开始就能通过企业级渗透测试与审计,而非事后再加固。
本页阐述 姿态(posture)——那些被烘焙进设计中的安全决策,以及它们为何如此。它刻意 不 复述正式的威胁模型: 按组件展开的 STRIDE 分析与信任边界的数据流,存放在 威胁模型 页面。 那一页用于了解 什么可能出错、出在何处;本页用于了解 为何架构被塑造成让这些事变得困难。
Read-first:低非对称风险
Section titled “Read-first:低非对称风险”核心 观察;它不插入其间。访问图(access map)由资产范围本就发出的信号重建而成——OpenTelemetry、数据库审计、 云审计轨迹,以及(作为一种非协作式兜底的)eBPF——而采集器 永不在智能体的数据路径中。
这首先是一项安全决策,然后才是产品决策。一个坐落在每个智能体动作之前的内联强制器(inline enforcer)是单点故障: 若它停滞或崩溃,可能拖垮生产,而且它会成为高价值目标,恰恰 因为 它在路径中。一个 read-first 的观察者承载着相反的、 非对称的 风险画像。若采集器失效,它只是停止 观看——它不会拦停智能体,也不会破坏生产。观察者的最坏失败是 可见性的缺口,而非一次宕机。
同样的特性也化解了显而易见的规避手法。采集器作为一个独立、特权、处于智能体控制之外 的服务运行,因此一个 禁用了自身遥测的智能体并不能让采集器噤声——而 eBPF 兜底仍会在内核层面记录该动作。一个已知的智能体若突然安静下来, 这本身会被当作信号,而非被忽略。
Minimal data:未存储者不可泄露
Section titled “Minimal data:未存储者不可泄露”该图存储的是 关系,而非内容。一条边记录的是:某个智能体触及了某项资源、以何种模式(读 / 写 / 读写)、来自哪个信号来源、 具有何种置信度、以及发生于何时。它 不 存储所运行的 SQL、请求体、密钥,或其中的 PII。当某个值仅为去重所需时, 产品只保留一个单向哈希,绝不保留值本身。
支配性的原则直白如下:未存储者不可泄露。 系统中最敏感的单一资产——访问图——也正是被刻意用最不敏感的数据构建出来的那个。
最有可能携带密钥或 PII 的字段(一个工具输入、一条完整命令)会 在持久化之前被脱敏(redact)。脱敏并不交由处理器的 自觉来完成:引擎在写入路径上强制执行,将标记为敏感的值在被写入之前替换为哈希,作为兜底——即便某个处理器忘了这么做。 采集器读取的是 身份——一个数据库角色、一个应用名称、一个 IAM principal——而非凭据值或负载。它不是数据嗅探器。
不透明、可撤销的令牌优先于 JWT
Section titled “不透明、可撤销的令牌优先于 JWT”身份验证使用 不透明的 bearer 令牌(opaque bearer token),而非 JWT。该令牌是一个随机句柄;所有权限都驻留在服务端, 绑定到引擎所控制的一条记录上。这是一项姿态选择。一个自包含的 JWT 是一个长期存在、可离线验证的声明承载者, 在到期之前难以撤销;而一个不透明令牌通过使其服务端记录失效即可 被立即撤销,不携带任何可被泄露或被误信的内嵌声明, 并将租户绑定置于引擎的控制之下,而非置于客户端持有的一个签名里。会话令牌与 API 令牌是不同的种类,租户从令牌自身的绑定 解析得出——一个其租户头与其令牌相矛盾的请求会被 拒绝,而不会被调和。
无默认凭据,一次性设置令牌
Section titled “无默认凭据,一次性设置令牌”自托管产品最常见的失败是 默认凭据。Olivares AI 不附带任何默认凭据。首次启动时,引擎会将一个 一次性、单次使用的设置令牌 打印到标准输出;管理员用它来创建第一个用户,随后该令牌即被用尽。没有内置账号、 没有共享密码,也没有忘记修改之物。(存在一个仅供评估的演示种子;它携带一个公开密码,并 拒绝绑定到回环以外的任何地址, 因此它永远无法成为生产环境的立足点。)
Deny-by-default 授权,一个只能收紧的 ABAC 接缝
Section titled “Deny-by-default 授权,一个只能收紧的 ABAC 接缝”授权是 deny-by-default。基于角色的访问控制(RBAC)不会授予任何未被明确告知去授予之物。在 RBAC 之上坐落着一个 基于属性的策略接缝(ABAC seam)——运维方可以运行一个嵌入式的纯 Go 策略引擎、一个通过 HTTP 的外部策略服务,或两者皆不用, 全部置于同一接口之后——而关键不变量是 ABAC 层只能收窄访问,绝不能放宽。 一条策略可以剥夺权限;它绝不能授予一个 RBAC 本就不允许的权限。这种次序意味着一条配置错误或过度宽松的策略不会成为提权路径:一条糟糕的策略最坏只能把人挡在门外, 而不能放人进来。
查看该图是一项特权的、按租户限定的、被审计的动作
Section titled “查看该图是一项特权的、按租户限定的、被审计的动作”由于访问图是一件强大的侦察工具,设计将 读取它视为一项特权动作,而非默认能力。它从编辑者(editor)级别角色向上授予, 永不 对最低的查看者(viewer)角色开放。每一次读取都 限定到租户——一个客户绝不能看到另一个客户的资产范围—— 并且 每一次读取都被记录到审计账本:谁、在何时、查看了哪个智能体的访问图。此处的防御是刻意分层的: 特权、租户隔离与自我审计三者并行,使得即便是对最敏感视图的合法访问,也会留下一条可问责的轨迹。
这也是产品划定其负责任使用界线之处。Olivares AI 被 防御性地 定位——它帮助防御方查看与治理自己的资产范围。 它不是一个 command-and-control 框架,也不扫描他人的凭据。这条界线在 威胁模型 中 被保持得明确无误。
仅追加、hash-chained、签名的审计——以外部导出作为真正的控制
Section titled “仅追加、hash-chained、签名的审计——以外部导出作为真正的控制”审计账本是 仅追加(append-only) 且 hash-chained 的:每条记录都携带前一条的哈希,因此任何静默篡改都会破坏该链 并可被检测。在该链之上,引擎产出 Ed25519 签名 的检查点(checkpoint),使得若无签名密钥便无法重写其尾部。
产品对一个在机(on-box)账本的局限保持诚实:一个完全控制了数据目录与在机密钥的攻击者,原则上能够重新签名一条伪造的链。 逐事件签名所抵御的是 仅数据库(database-only) 的破防——注入、被窃的备份或副本、一次行级安全(RLS)绕过—— 以及对检查点的删除;它本身并不抵御主机的完全沦陷。
因此 真正的反篡改控制在外部。账本以标准格式(cef、leef、syslog、otlp、otlp_envelope、otlp_log_record、ocsf)导出到客户控制的
WORM/SIEM 系统,携带序列号、前序哈希、哈希与签名,且 永不携带 PII。一旦一份副本驻留在产品之外的不可变存储中,
一个攻陷了 Olivares 主机的攻击者便无法回头重写 SIEM 已经持有的内容。正是那份不可变的外部副本——而非单凭在机的链——
才是企业审计方所要求的,也是原生遥测所无法给予的。
TLS 默认开启,无明文回退,远程采集器用 mTLS
Section titled “TLS 默认开启,无明文回退,远程采集器用 mTLS”传输是 默认加密且失败即关闭(fail closed) 的。TLS 处于开启状态,并且 不存在向明文的静默回退—— 一个无法被安全建立的连接会被拒绝,而非被降级。一个明文模式严格地仅为本机开发而存在,且必须被显式请求; 它绝非默认,也绝非生产路径。
在分布式拓扑中,远程采集器向中心核心 推送(生产主机上没有入站监听器,这使采集器的开放端口面为零), 而该信道可要求带有受验证客户端证书的 双向 TLS(mTLS)。静态加密由部署提供——全盘、文件系统或数据库级加密—— 而非由产品级的 pragma,并对数据目录施加严格的文件权限。
许可证仅为证明(attestation)——开放核心绝不设闸
Section titled “许可证仅为证明(attestation)——开放核心绝不设闸”商业许可证以一个 Ed25519 签名 离线 验证,并且在开放(AGPL)核心中它是一种 证明,而非功能闸门(feature gate): 开放产品中绝不会有任何东西因一次许可证检查而被关闭。商业附加组件按已付费期限授权——该权利随期限结束而终止——但由此产生的任何后果都是商业构建中本地的、离线的决定;不存在远程 kill switch,校验许可证也不会联系我们。但下载您已付费的内容确实会联系我们:订阅就是获取商业附加组件及其更新和补丁的凭据——即 自托管 中所述的 SUSE/Novell 模式。这对气隙(air-gapped)场景尤为重要:产品必须持续履行其安全职责 ——观察、记录、审计——无论许可证状态如何,因为一个在许可证出问题时悄然退化的安全控制本身就是一个漏洞。 撤销通过订阅到期来处理,而非通过削弱正在运行的引擎。
自托管:由客户决定什么会跨越其边界
Section titled “自托管:由客户决定什么会跨越其边界”该设计最强的结构性特性是产品 没有强制遥测,控制平面默认也不产生出站流量。只有客户明确
配置为跨越边界的内容才会跨越其边界——对客户模型 API 的调用、客户接入的 SIEM/webhook 输出,
以及客户配置时使用的外部嵌入提供商。Olivares AI 运行在客户自有的主机上;
数据平面(采集器)始终 运行在客户基础设施上;并且 没有遥测回传(telemetry-home)——运行过程中不会有任何内容作为副作用发送给 Olivares AI。
只有在客户主动索取时才会联系我们——olivares upgrade,或按订阅下载商业附加组件及其更新——而厂商看不到客户的访问图。
这是对 GDPR 与数据驻留 要求的一个直接、可辩护的回答:每一次跨越边界都是由客户配置的, 因此驻留位置由客户决定并举证,而不是由供应商担保。 它也使 气隙(air-gapped) 拓扑成为一等的部署方式——全部本地、零出站(zero egress)、离线许可证—— 而非事后补丁,适用于那些必须在完全无出站网络的情况下运行的资产范围。参见 自托管 与 气隙安装 指南。
为何这些决策彼此契合
Section titled “为何这些决策彼此契合”这些选择没有一个是孤立成立的。Read-first 让产品置身于它所监视的那些系统的爆炸半径之外。Minimal-data 收缩了 对产品的破防本可能暴露的范围。不透明令牌、无默认凭据、deny-by-default 的 RBAC,以及一个只收紧的 ABAC 接缝, 共同意味着权限既小、可撤销,又不可能被意外放宽。Hash-chained、签名、外部导出的账本让产品自身的诚实变得 可验证, 而非仅是承诺。而自托管意味着产品没有强制遥测,控制平面默认也不产生出站流量。只有客户明确配置为 跨越边界的内容才会跨越其边界——客户的模型 API、客户接入的 SIEM/webhook 输出,以及客户配置时使用的 外部嵌入提供商。姿态即是那套安全论证; 威胁模型 则是其中每一项被对照一个具体威胁加以核验之处。