4. 复测记录规范:记录字段定义、记录格式标准、记录存储与追溯

复测记录是镜像供应链安全晋级通道中“证据链”的核心载体。记录不规范,复核便失去依据,风险控制也无从谈起。本节从字段定义、格式标准、存储与追溯三个维度,建立可审计、可机器解析、可人工复核的记录规范。

4.1 记录字段定义

每条复测记录必须包含以下三类字段:标识字段(唯一确定记录身份)、内容字段(记录复测过程与结果)、审计字段(记录操作者与时间)。

字段类别 字段名称 字段说明 示例值
标识字段 RecordID 全局唯一记录编号,UUID v4 a1b2c3d4-e5f6-7890-abcd-ef1234567890
ImageDigest 被复测镜像的 SHA256 摘要 sha256:abcdef...123456
CheckpointID 所属晋级通道检查点编号 CP-04-Build-Scan
内容字段 CheckItem 复测检查项名称 基础镜像签名验证
ExpectedResult 预期合规标准 签名来源为受信任 CA 列表
ActualResult 实际检测结果 签名有效,签发者: Docker Official
Verdict 判定结论:PASS / FAIL / SKIP PASS
审计字段 Operator 执行复测的操作者标识(工号或服务账号) SVC-CICD-PROD
Timestamp 记录生成时间,RFC 3339 格式 2025-03-21T14:30:00Z
Signature 记录的数字签名(可选,用于防篡改) Base64(Ed25519_Sign)
字段设计要点:RecordID 必须全局唯一,不可复用;ImageDigest 与 CheckpointID 联合构成业务主键,用于快速检索某镜像在某检查点的所有复测历史。

4.2 记录格式标准

复测记录采用 JSON Lines 格式,每行一条独立记录,便于流式写入与逐行解析。禁止使用多行 JSON 对象或 XML,避免解析歧义。

{
  "record_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "image_digest": "sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
  "checkpoint_id": "CP-04-Build-Scan",
  "check_item": "基础镜像签名验证",
  "expected_result": "签名来源为受信任CA列表",
  "actual_result": "签名有效,签发者: Docker Official",
  "verdict": "PASS",
  "operator": "SVC-CICD-PROD",
  "timestamp": "2025-03-21T14:30:00Z",
  "signature": "MEUCIQCG..."
}

格式约束:

  • 字段名统一使用 snake_case,禁止混用 camelCase。
  • 时间戳必须为 RFC 3339 格式,带时区标识(Z 或 ±HH:MM)。
  • Verdict 字段仅允许 PASS、FAIL、SKIP 三种大写枚举值。
  • 每条记录末尾必须包含换行符 \n,文件最后一行也需换行。

4.3 记录存储与追溯

复测记录采用 分层存储 架构,兼顾写入性能与追溯效率。

存储层级:
  1. 热存储层(Redis Stream / Kafka Topic):保留最近 7 天的复测记录,用于实时告警与快速查询。
  2. 温存储层(对象存储 + 索引数据库):保留 7 天至 1 年的记录,按 image_digest 和 timestamp 建立二级索引。
  3. 冷存储层(归档对象存储):保留超过 1 年的记录,压缩后存储,支持按批次追溯。
复测记录存储与追溯架构 复测记录生成 热存储层 Redis Stream / Kafka Topic (7天) 温存储层 对象存储 + 索引数据库 (7天~1年) 冷存储层 归档对象存储 (超过1年,压缩存储) 追溯查询 按 ImageDigest 按 CheckpointID 按 Timestamp 范围 自动降级查询: 热 → 温 → 冷 支持批量导出 支持审计日志

4.4 追溯机制

追溯能力是复测记录规范的核心价值。系统必须支持以下追溯路径:

  • 正向追溯:给定镜像摘要 → 查询该镜像在所有检查点的复测记录 → 按时间线展示晋级历史。
  • 逆向追溯:给定检查点编号 → 查询该检查点下所有镜像的复测记录 → 识别批量异常。
  • 差异追溯:对比同一镜像在两次复测中的记录差异 → 定位变更点。
追溯合规要求:所有复测记录必须保留至少 2 年(依据《关键信息基础设施安全保护条例》及行业合规基线)。删除记录必须经过审批并保留删除日志,禁止物理覆盖。
复测记录追溯路径 正向追溯 输入: ImageDigest 输出: 时间线晋级历史 逆向追溯 输入: CheckpointID 输出: 批量异常识别 差异追溯 输入: 两次 RecordID 输出: 变更点定位 所有追溯路径均支持热→温→冷自动降级查询,确保数据可及性

4.5 记录完整性保障

为防止复测记录被篡改或丢失,必须实施以下完整性控制措施:

  • 写入校验:每条记录写入后立即计算 SHA256 摘要,与记录一同存储。
  • 定期对账:每日对热存储层与温存储层的记录数量进行对账,发现差异自动告警。
  • 不可变日志:温存储层和冷存储层采用 Write-Once-Read-Many (WORM) 策略,禁止覆盖或删除。
  • 签名链:可选启用 Ed25519 签名,将每条记录的签名与前一条记录的签名哈希链接,形成防篡改链。
实践建议:在 CI/CD 流水线中,复测记录生成后立即推送到热存储层,同时异步复制到温存储层。避免在流水线中直接写入冷存储层,防止延迟阻塞构建过程。