3. 运行时生命周期概述:运行时生命周期的阶段划分(启动、运行、暂停、销毁)
Sandbox 实例从创建到释放,会经历一组离散且可观测的阶段。每个阶段都对应着内核资源状态、网络策略生效范围、存储挂载状态以及审计日志记录粒度的切换。理解这四阶段的划分,是后续配置漂移检测与运行时治理的基础。
3.1 四阶段模型与状态转换
Sandbox 运行时生命周期严格遵循“启动 → 运行 → 暂停 → 销毁”的线性主流程,其中“暂停”为可选阶段,允许在不销毁实例的前提下冻结所有用户态进程。下表列出了各阶段的核心特征与治理关注点:
| 阶段 | 状态标识 | 内核资源状态 | 网络策略生效 | 审计日志记录 | 配置漂移风险 |
|---|---|---|---|---|---|
| 启动 | Creating / Starting | 分配中,cgroup 与 namespace 初始化 | 默认拒绝,逐步放行 | 记录镜像摘要与启动参数 | 镜像篡改、启动参数注入 |
| 运行 | Running | 完整分配,进程可执行系统调用 | 按策略执行 | 实时记录系统调用与文件变更 | 运行时配置篡改、挂载点变更 |
| 暂停 | Paused | 冻结 cgroup freezer,内存保留 | 规则保留但不转发流量 | 暂停审计,仅记录状态转换 | 暂停期间外部配置同步延迟 |
| 销毁 | Destroying / Exited | 回收中,cgroup 与 namespace 拆除 | 规则清理 | 记录退出码与残留资源清单 | 残留文件或网络规则未清理 |
治理提示: 配置漂移审计的基线快照应在“启动”阶段完成后立即采集,并在“运行”阶段持续比对。“暂停”阶段虽然进程冻结,但宿主机上的挂载点和网络规则仍可能被外部修改,因此暂停期间的配置变更同样需要纳入审计范围。
3.2 阶段转换流程与关键事件
下图展示了 Sandbox 实例在四阶段之间的转换路径,以及每个转换点触发的关键审计事件。箭头上的标签表示触发条件或 API 调用。
3.3 各阶段配置漂移审计要点
配置漂移审计并非在所有阶段都采用相同的检测策略。下表按阶段列出了需要重点监控的配置项与典型漂移场景:
| 阶段 | 监控配置项 | 典型漂移场景 | 检测手段 |
|---|---|---|---|
| 启动 | 镜像 Digest、启动参数、环境变量、Seccomp 策略、Capabilities | 镜像被替换为恶意版本;启动参数注入 --privileged | 镜像签名验证;启动参数白名单比对 |
| 运行 | 挂载点列表、网络规则、进程列表、文件权限、系统调用频率 | 运行时挂载宿主机敏感目录;iptables 规则被篡改 | 内核审计模块实时捕获;eBPF 挂钩 |
| 暂停 | 挂载点状态、网络规则残留、内存映射 | 暂停期间外部进程修改挂载点属性;网络策略被删除 | 状态恢复后对比暂停前快照 |
| 销毁 | 残留文件、残留网络规则、cgroup 清理状态 | Sandbox 退出后宿主机残留 /tmp/sandbox_* 文件 | 销毁后扫描指定路径与 iptables 规则 |
3.4 阶段转换的原子性与审计日志关联
每个阶段转换必须满足原子性要求:转换失败时,Sandbox 应回滚到上一个稳定状态,并记录失败原因。审计日志需要包含以下关联字段,以便在漂移事件发生时重建上下文:
- sandbox_id:全局唯一实例标识。
- phase:当前阶段名称(Starting / Running / Paused / Destroying)。
- transition:触发转换的事件或 API 调用(如 Create、Pause、Resume、Destroy)。
- timestamp_ns:纳秒级时间戳,用于排序与关联。
- config_hash:当前阶段关键配置项的哈希值,用于快速比对。
实践建议: 在“启动”阶段完成后,立即计算并存储一份配置基线哈希(config_hash)。在“运行”阶段,每隔 30 秒重新计算当前配置哈希并与基线比对。一旦发现哈希不一致,立即触发配置漂移告警,并记录差异详情。对于“暂停”阶段,建议在 Resume 后强制重新计算基线,避免暂停期间的静默修改被忽略。
3.5 生命周期阶段与治理策略映射
不同的治理策略(如强制访问控制、资源配额、网络隔离)在生命周期的不同阶段具有不同的生效优先级。下表总结了各阶段推荐的治理策略配置:
| 治理策略 | 启动 | 运行 | 暂停 | 销毁 |
|---|---|---|---|---|
| Seccomp 系统调用过滤 | 加载策略 | 强制执行 | 策略保留 | 卸载策略 |
| Capabilities 降权 | 应用降权规则 | 持续监控 | 规则保留 | 清理规则 |
| 网络策略(NetworkPolicy) | 默认拒绝 | 按需放行 | 规则保留但不转发 | 清理规则 |
| 资源配额(cgroup) | 分配限额 | 动态调整 | 冻结限额 | 回收限额 |
| 文件系统只读挂载 | 设置挂载选项 | 监控挂载变更 | 保留挂载状态 | 卸载并清理 |
常见误区: 部分治理系统在“暂停”阶段会错误地卸载网络策略或 Seccomp 规则,导致 Resume 后 Sandbox 处于无防护状态。正确的做法是保留规则但暂停流量转发与系统调用拦截,Resume 时直接恢复执行,无需重新加载策略。