导出 docker 镜像元数据用于审计需整合四类信息:1. 用 docker inspect 提取镜像配置及 label 标签;2. 用 docker scout 生成 cve 报告和 spdx 格式 sbom;3. 用 docker images --digests 和 docker trust inspect 获取不可篡改的 digest 与签名信息;4. 打包镜像 tar 文件及全部元数据为离线审计包。

导出 Docker 镜像的元数据用于审计,核心是获取镜像的完整描述性信息(如构建时间、维护者、版本、安全标签、漏洞报告等),而非仅导出镜像层本身。这些信息分散在不同层级:镜像配置中(docker inspect)、构建时写入的 LABEL、以及通过安全工具生成的独立审计报告。
提取内置元数据:inspect + LABEL
每个镜像都自带结构化元数据,可通过 docker inspect 导出为 JSON,包含镜像 ID、创建时间、大小、分层信息、环境变量及所有 LABEL 字段:
- 运行
docker inspect myapp:1.2 > metadata.json,得到完整镜像快照 - 重点关注
Config.Labels字段,它承载了人工定义的审计关键项,例如:"org.opencontainers.image.version": "1.2.0""org.opencontainers.image.created": "2026-07-15T09:23:41Z""com.company.security-approved": "true" - 若需精简输出,可用
jq过滤:docker inspect myapp:1.2 | jq '.[0].Config.Labels'
导出安全审计报告:Docker Scout
官方安全工具 docker scout 可生成符合合规要求的漏洞与物料清单(SBOM)报告,这是审计中最常被引用的外部元数据:
- 执行
docker scout cves myapp:1.2 --format json > cve-report.json,获得含 CVE 编号、严重等级、影响包和修复建议的结构化结果 - 补充 SBOM 信息:
docker scout sbom myapp:1.2 --format spdx-json > sbom.spdx.json,满足 ISO/IEC 5962 或 SPDX 合规要求 - 报告可直接提交给内审或等保测评,无需二次加工
验证镜像完整性:digest 与签名
审计还依赖不可篡改的标识,而不仅是内容描述:
- 用
docker images --digests查看镜像的DIGEST值(SHA256),该值由镜像 manifest 决定,任何改动都会使其失效 - 若镜像经 Docker Content Trust (DCT) 签名,可通过
docker trust inspect myapp:1.2提取签名链和发布者公钥信息,证明来源可信 - 将 digest 和签名信息一并写入审计日志,构成“谁在何时发布了什么”的证据链
打包归档:组合元数据供离线审计
当审计环境无网络时,可将多类元数据统一归档:
- 先保存镜像本体:
docker save -o myapp.tar myapp:1.2 - 再收集全部元数据:
docker inspect、docker scout cves/sbom、docker trust inspect输出到同目录 - 最后打包:
tar -czf audit-bundle-myapp-1.2.tgz myapp.tar metadata.json cve-report.json sbom.spdx.json trust-inspect.txt - 该压缩包即为一次可验证、可追溯、离线可用的完整审计交付物











