在作为 root 运行之前,验证自托管安装程序 笔记

在作为 root 运行之前,验证自托管安装程序

直接以 root 身份执行安装程序,会将工件选择、完整性检查和执行审批合并为单一的高风险步骤。将这些决策分离到不同的阶段,可提升可审查性、可复现性和可恢复性。具体的源码审查边界包括在下载前检查架构并执行基础系统检查。然而,当前审查通过的模板使用 curl -k 禁用证书验证,并下载未版本化的文件,且未对固定版本、摘要或签名进行显式检查。为改进此问题,应单独发布包含不可变元数据(如版本、架构、文件名、SHA-256 哈希及回滚信息)的清单。该清单应通过安全发布流程进行保护,并可使用 TLS 或数字签名进行验证。验证应在非特权阶段执行。配套脚本可依据清单检查文件名、精确大小、摘要、版本、架构及回滚元数据。此验证过程绝不应执行已下载的文件。生产流程需包括下载工件、依据清单验证其完整性,随后在明确的维护决策之后,以提权方式执行。证书错误应通过修复信任存储或部署问题来解决,而非使用 -k 绕过验证。回滚应是一个定义明确的可执行计划,涵盖先前工件及其清单、兼容性、服务命令、健康检查、可逆迁移及清理程序等细节。在生产部署前,应在金丝雀环境中演练回滚,并包含模拟故障。仅当 TLS 验证成功、指定了不可变版本、可信清单与下载文件匹配、签名验证(如适用)通过、金丝雀健康检查正常且回滚程序已验证时,才允许提权执行。这种结构化方法将盲目的网络到 root 操作转变为可审查且可自动化的流程。