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 记录存储与追溯
复测记录采用 分层存储 架构,兼顾写入性能与追溯效率。
存储层级:
- 热存储层(Redis Stream / Kafka Topic):保留最近 7 天的复测记录,用于实时告警与快速查询。
- 温存储层(对象存储 + 索引数据库):保留 7 天至 1 年的记录,按
image_digest和timestamp建立二级索引。 - 冷存储层(归档对象存储):保留超过 1 年的记录,压缩后存储,支持按批次追溯。
4.4 追溯机制
追溯能力是复测记录规范的核心价值。系统必须支持以下追溯路径:
- 正向追溯:给定镜像摘要 → 查询该镜像在所有检查点的复测记录 → 按时间线展示晋级历史。
- 逆向追溯:给定检查点编号 → 查询该检查点下所有镜像的复测记录 → 识别批量异常。
- 差异追溯:对比同一镜像在两次复测中的记录差异 → 定位变更点。
追溯合规要求:所有复测记录必须保留至少 2 年(依据《关键信息基础设施安全保护条例》及行业合规基线)。删除记录必须经过审批并保留删除日志,禁止物理覆盖。
4.5 记录完整性保障
为防止复测记录被篡改或丢失,必须实施以下完整性控制措施:
- 写入校验:每条记录写入后立即计算 SHA256 摘要,与记录一同存储。
- 定期对账:每日对热存储层与温存储层的记录数量进行对账,发现差异自动告警。
- 不可变日志:温存储层和冷存储层采用 Write-Once-Read-Many (WORM) 策略,禁止覆盖或删除。
- 签名链:可选启用 Ed25519 签名,将每条记录的签名与前一条记录的签名哈希链接,形成防篡改链。
实践建议:在 CI/CD 流水线中,复测记录生成后立即推送到热存储层,同时异步复制到温存储层。避免在流水线中直接写入冷存储层,防止延迟阻塞构建过程。