加固一次部署
这是操作者的加固指南:安全运行控制平面的具体步骤。它建立在解释性页面之上—— 安全模型 与 威胁模型 解释了资产、信任边界,以及姿态为何如此。 本页讲的是如何做。
1. 保留安全默认值
Section titled “1. 保留安全默认值”全新安装默认即安全。这里的工作大多是不去削弱它。
| 默认值 | 保留它的原因 | 操作者动作 |
|---|---|---|
| 无默认凭据 | 自托管的头号自伤陷阱。首次启动会铸造一个一次性、单次使用的安装令牌;你用它创建第一个管理员。 | 从启动输出(或容器日志)读取该令牌,创建管理员,随后它即被消耗。绝不要把凭据烧进镜像。 |
| 默认开启 TLS | collector→core 与 user→panel 通道携带敏感元数据。 | 保持 TLS 开启。--insecure(明文)仅限本地开发——绝不可用于暴露的绑定上。 |
| 回环绑定 | 引擎默认绑定回环,因此绝不会被意外暴露。 | 要刻意地将其暴露,置于你自己的 ingress/TLS 之后。在容器中,进程在容器内部绑定,而 Compose 栈把主机端口映射到回环——见 自托管。 |
| 无遥测回传 | 一款会”打电话回家”的安全工具是一种负债。 | 无需动作——引擎在启动时不发起任何强制性出站调用。在 air-gapped 模式下出站流量为零。 |
每一项对默认值的危险偏离都是一次有名有姓、显式的可选启用(例如开发用的明文标志, 或允许一个特权数据库角色)。如果你没有设置它,它就是关闭的。完整的安全默认姿态以及审计账本的密码学保证 见 安全模型。
远程 collector 的双向 TLS
Section titled “远程 collector 的双向 TLS”在分布式拓扑中,边缘 collector 通过经过验证客户端证书的双向 TLS 将观测推送到 core。 给 core 提供一个客户端 CA,使其要求并验证客户端证书,即可开启它:
./bin/olivares serve \ --listen 127.0.0.1:8443 --grpc-listen 127.0.0.1:8444 \ --grpc-client-ca /path/to/collector-ca.pem \ --data-dir /var/lib/olivarescollector 运行在你的基础设施上,没有任何入站监听器(纯推送模型),因此它们不会给你的生产主机 增加任何开放端口。保护并备份数据目录(限制性权限)——它保存着审计签名密钥和 TLS 材料—— 并在主机之外保留一份审计公钥的副本。
2. 以 human-in-the-loop 审批治理破坏性操作
Section titled “2. 以 human-in-the-loop 审批治理破坏性操作”控制平面由一个**默认拒绝(deny-by-default)**的授权核心治理(RBAC,附带一个可选的、仅限收紧的 Cedar/OPA policy decision point,它只能收回访问权限,绝不会放宽)。关于该模型——角色、策略接缝, 以及决策被记录的保证——见 治理与审批。操作步骤如下:
- 接好审批关卡。 任何会变更你基础设施的模块操作(一次部署 apply、一次编排触发、一次 voice open) 都要经过一个 human-in-the-loop 审批关卡,该关卡会开启一个绑定到确切计划、默认关闭且有时间限制的 受治理审批。它通过提供桥接的配置来启用;没有它,这些操作保持默认关闭。
- 使用专用的审批方服务账户——绝不用人类的账户。 开启审批的组件必须以它自己的、绝不出现在审批方 池中的服务账户运行。职责分离在引擎侧强制执行:开启请求的身份不能裁定它,而系统令牌根本无法审批。 如果开启方的账户同时也是审批方,你就制造了一个活性死锁——所以要让它们保持分离。
- 审批方裁定,账本铭记。 一个被授权的人类批准或拒绝;该决策连同真实操作者在同一事务中被追加到篡改可检测的账本。 一个已过期的请求绝不可能收到具有约束力的裁定。你无法做出一个被账本悄悄遗忘的受治理变更。
审批路由位于治理模块的命名空间之下,并与其他一切一样受同样的默认拒绝 RBAC 与逐次读取审计约束。
3. 在运行前验证一次发布
Section titled “3. 在运行前验证一次发布”控制平面是一款安全产品——在运行之前,先证明一次发布确实是项目所发布的那一个。完整链条 (对校验和的签名、SLSA 出处证明、SBOM 与 OpenVEX 证明,在线无密钥或完全离线)见 验证你下载的内容。唯一没有例外的规则:
4. 把你的证据——以及你的数据——保留在你的边界之内
Section titled “4. 把你的证据——以及你的数据——保留在你的边界之内”- 把账本导出到主机之外。 这份仅追加、哈希链式(hash-chained)、经 Ed25519 签名的审计账本被暴露为一个 经过认证的**拉取(pull)**导出,支持多种 SIEM 格式,从而让你的 SIEM 或 WORM 存储保留一份可在离线状态下 重新验证链条的不可变副本。主机之外的副本才是对抗一台被完全攻陷主机的真正控制手段——见 将审计转发到 Splunk。
- 没有强制遥测,控制平面默认不产生出站流量。 数据平面(即 collector)始终运行在你的基础设施上, 而 access map 存储的是 关系,绝不存储载荷、密钥或 PII——最小数据是传输协议的一项属性,而非一个设置。 只有你明确配置为跨越边界的内容才会跨越你的边界——对你的模型 API 的调用、你接入的 SIEM/webhook 输出 (包括上文所述的主机外导出),以及你配置时使用的外部嵌入提供商。这是数据驻留、GDPR 与 air-gapped 运行的结构性论据;它描述的是架构和你的配置,并非保证。