镜像安全:扫描、签名与软件供应链
TL;DR镜像扫描解决已知漏洞是安全基线镜像签名确保内容可信防篡改保障SBOM提供供应链透明度便于审计追溯Kyverno在准入阶段强制校验签名与漏洞策略建议从 CI 扫描起步逐步完善签名与供应链治理。摘要容器镜像安全是云原生交付的底线。本文系统讲解镜像扫描如何发现已知漏洞、镜像签名如何确保内容可信、SBOM如何提供供应链透明度并结合 Kyverno 在 Kubernetes 准入阶段强制落地安全策略帮助你在构建、存储、分发、运行全链路建立可信防线实现端到端的供应链安全治理。1. 引言2024 年某知名开源镜像仓库被曝出投毒事件攻击者将恶意代码植入多个热门镜像的构建脚本中在镜像被拉取后静默执行挖矿程序并窃取环境变量中的密钥。由于这些镜像被大量企业直接引用事件波及范围迅速扩大多家公司被迫紧急排查并重建镜像。这并非孤例——从基础镜像的已知漏洞到构建期植入的恶意代码再到运行时被篡改的内容每一次拉取与部署都可能成为攻击入口。镜像安全刻不容缓。本文聚焦三道关键防线镜像扫描发现已知漏洞、镜像签名确保内容可信、SBOM 与供应链安全从源头建立信任并给出从 CI 扫描到 Kubernetes 准入校验的完整落地路径。## 2. 为什么镜像安全如此重要镜像一旦被发布到仓库并被拉取运行其内容就等同于线上运行的代码。如果镜像中存在高危漏洞或恶意组件攻击者无需直接攻破你的服务器只需利用镜像内的缺陷即可完成入侵。更严重的是镜像具有复用性与传播性——一个被污染的公共基础镜像可能被成千上万个下游项目引用形成供应链级别的连锁污染。因此镜像安全不仅是「上线前的一次检查」而应贯穿镜像的构建、存储、分发、运行全生命周期。3. 镜像扫描发现已知漏洞3.1 扫描的原理镜像扫描的核心思路是将镜像内的软件包清单如操作系统包、语言依赖、二进制文件与漏洞数据库如 CVE、NVD、OSV进行比对找出已知漏洞并评估其风险等级。扫描通常分为两类静态扫描在镜像构建后、运行前对镜像层文件系统进行分析识别其中的软件版本并匹配漏洞库。运行时扫描对正在运行的容器进行实时检测发现动态引入的风险如运行时下载的恶意依赖。3.2 常用扫描工具工具特点适用场景Trivy轻量、速度快、覆盖 OS 包与语言依赖CI 阶段快速扫描Clair由 CoreOS 开源支持 API 集成仓库侧集中扫描Anchore策略引擎强大支持自定义规则企业级合规管控GrypeAnchore 出品与 Syft 配合与 SBOM 联动3.3 扫描的落地实践# 使用 Trivy 扫描本地镜像trivy image--severityHIGH,CRITICAL --ignore-unfixed myapp:latest# 在 CI 中阻断高危漏洞trivy image --exit-code1--severityCRITICAL myapp:latest建议将扫描嵌入 CI 流水线高危漏洞直接阻断发布中低危漏洞记录并跟踪修复。同时扫描结果应生成报告归档便于审计与追溯。4. 镜像签名确保内容可信4.1 为什么需要签名扫描只能发现「已知漏洞」却无法防止「内容被篡改」。攻击者可能通过劫持镜像仓库、中间人攻击或内部人员操作替换或篡改镜像内容。镜像签名通过密码学手段为镜像内容生成不可伪造的数字签名确保拉取到的镜像确实来自可信发布者且未被篡改。4.2 签名的工作原理签名流程通常包含以下步骤发布者使用私钥对镜像的 manifest清单进行签名签名结果与公钥信息一同发布到仓库或独立的签名存储拉取方使用公钥验证签名确认镜像来源与完整性。是否开发者构建镜像使用私钥签名推送镜像与签名到仓库用户拉取镜像使用公钥验证签名验证通过?允许运行拒绝运行并告警4.3 主流签名方案CosignSigstore 项目的一部分支持无密钥签名Keyless与 OCI 仓库天然集成是目前最流行的方案。NotationCNCF 孵化项目基于 OCI 1.1 规范适合与云厂商生态结合。Docker Content TrustDCTDocker 原生方案基于 Notary适合 Docker 生态内的简单场景。4.4 Cosign 实践示例# 生成密钥对cosign generate-key-pair# 对镜像签名cosign sign--keycosign.key myregistry/myapp:latest# 验证镜像签名cosign verify--keycosign.pub myregistry/myapp:latest在 Kubernetes 中可结合Kyverno或Ratify等策略引擎在准入控制阶段强制校验镜像签名未通过验证的镜像直接拒绝创建 Pod。5. 软件供应链安全从源头建立信任5.1 供应链风险的来源镜像的供应链风险不仅来自镜像本身还来自其依赖的上游组件基础镜像如alpine、ubuntu本身存在漏洞第三方依赖库被投毒如恶意 npm 包、PyPI 包构建工具链被篡改构建过程使用了不可信的缓存或代理。5.2 SBOM软件物料清单SBOMSoftware Bill of Materials是镜像内所有组件的清单相当于「镜像的配料表」。通过 SBOM你可以快速定位漏洞影响的组件范围满足合规审计要求如美国 EO 14028、欧盟 Cyber Resilience Act在漏洞爆发时第一时间评估自身受影响程度。# 使用 Syft 生成 SBOMsyft myapp:latest-ospdx-jsonsbom.json# 使用 Grype 基于 SBOM 扫描漏洞grype sbom:./sbom.json5.3 供应链安全的整体实践5.4 供应链安全实战从 SBOM 到策略落地下面用一个完整的端到端示例把 SBOM 生成、漏洞扫描、镜像签名与 Kubernetes 准入校验串联起来展示一条可落地的供应链安全闭环。第一步生成 SBOM 并扫描漏洞# 生成 SBOMSPDX 格式syft myapp:latest-ospdx-jsonsbom.json# 基于 SBOM 扫描漏洞输出 JSON 报告grype sbom:./sbom.json-ojsonvuln-report.json# 查看高危漏洞摘要grype sbom:./sbom.json --only-severity critical,high第二步对镜像签名并推送# 生成密钥对生产环境建议使用 KMS 或 Sigstore Keylesscosign generate-key-pair# 对镜像签名cosign sign--keycosign.key myregistry/myapp:latest# 推送镜像与签名到仓库dockerpush myregistry/myapp:latest cosign push--keycosign.key myregistry/myapp:latest第三步用 Kyverno 在准入控制阶段校验签名与漏洞策略创建 Kyverno 策略强制要求镜像必须通过签名验证并拒绝携带高危漏洞的镜像apiVersion:kyverno.io/v1kind:ClusterPolicymetadata:name:require-image-signaturespec:validationFailureAction:Enforcerules:-name:verify-cosign-signaturematch:any:-resources:kinds:-PodverifyImages:-imageReferences:-myregistry/myapp:*attestors:-count:1entries:-keys:publicKeys:|------BEGIN PUBLIC KEY-----cosign.pub 内容-----END PUBLIC KEY-----再创建一条策略基于镜像漏洞扫描结果阻断高危镜像部署需配合Ratify或Kyverno 的 imageVerify扩展apiVersion:kyverno.io/v1kind:ClusterPolicymetadata:name:block-high-vulnerability-imagesspec:validationFailureAction:Enforcerules:-name:reject-critical-vulnsmatch:any:-resources:kinds:-Podvalidate:message:镜像存在高危漏洞禁止部署deny:conditions:any:-key:{{ image.ratify.vulnerabilities.critical }}operator:GreaterThanvalue:0第四步验证策略生效# 部署一个未签名或带高危漏洞的镜像应被拒绝kubectl apply-fpod-unsafe.yaml# Error from server: Pod pod-unsafe is forbidden: require-image-signature# 部署通过签名与漏洞校验的镜像正常创建kubectl apply-fpod-safe.yaml# pod/pod-safe created通过以上四步SBOM 提供了「镜像里有什么」的透明度Grype 负责「有没有已知漏洞」的检查Cosign 保证「内容未被篡改」Kyverno 则在部署入口强制落地这些策略形成从构建到运行的完整供应链安全闭环。使用可信基础镜像优先选择官方或经过安全审核的基础镜像并定期更新。锁定依赖版本使用锁文件如package-lock.json、go.sum固定依赖版本避免意外引入恶意版本。构建过程可复现使用多阶段构建、固定构建工具版本减少构建环境的不确定性。最小化镜像内容只保留运行所需的最小文件集减少攻击面。建立镜像策略通过 OPA、Kyverno 等策略引擎强制要求镜像必须通过扫描与签名校验才能部署。6. 端到端落地一条可信的镜像流水线将上述能力串联起来可以构建一条端到端的可信镜像流水线是否代码提交CI 构建镜像SBOM 生成镜像扫描存在高危漏洞?阻断并修复镜像签名推送镜像仓库部署前策略校验签名验证 漏洞复核准入运行7. 总结镜像安全不是单一工具能解决的问题而是扫描、签名、供应链治理三者协同的系统工程扫描解决「已知漏洞」问题是安全基线签名解决「内容可信」问题是防篡改保障供应链治理解决「源头可信」问题是长期防线。建议从「在 CI 中接入 Trivy 扫描」起步逐步引入 Cosign 签名与 Kyverno 准入校验再以 SBOM 完善供应链透明度。安全建设是持续演进的过程越早建立可信基线后续的运维与合规成本就越低。

相关新闻

临沂太阳能一体化光源电路设计与工程选型标准解析

临沂太阳能一体化光源电路设计与工程选型标准解析

临沂太阳能一体化光源电路设计与工程选型标准解析在太阳能路灯工程应用中,一体化光源因其集成度高、安装便捷、免布线等优势,正逐步成为道路照明、园区亮化、新农村建设等场景的主流选择。本文从电路设计底层逻辑出发,结合工程选型中的常见误…

2026/10/1 19:41:09 阅读更多 →
互功率谱计算实战:jiufang V1.4工具与Welch平均参数详解

互功率谱计算实战:jiufang V1.4工具与Welch平均参数详解

简介:面向信号处理研究人员与MATLAB学习者的时延估计实用方案,以互功率谱(互功率密度函数)为理论基础,引入压缩传感技术,突破传统奈奎斯特采样速率限制,在稀疏信号条件下仍能保持较高估计精度&a…

2026/9/29 16:33:40 阅读更多 →
安徽公有云软件有限公司专业吗

安徽公有云软件有限公司专业吗

从千禧年初企业信息化刚刚起步,到如今数字经济浪潮席卷千行百业,安徽企业数字化服务赛道已经走过了近二十载的变迁。不少服务商来了又走,也有扎根本土的团队始终坚守在客户身边,陪伴一代安徽企业从中小微成长为行业中坚。安徽公有…

2026/9/29 15:25:41 阅读更多 →

最新新闻

k8s tips:把 kubeconfig 改到 TaoToken 统一 Key 通道的实操清单

k8s tips:把 kubeconfig 改到 TaoToken 统一 Key 通道的实操清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 20:02:30 阅读更多 →
气密封装代工产线升级 真空甲酸炉采购如何避坑

气密封装代工产线升级 真空甲酸炉采购如何避坑

行业背景:气密封装需求走高,设备采购成为焦点 在5G通信、军用电子、航空航天以及高端传感器等应用领域的推动下,气密封装作为保障芯片长期可靠性的关键工艺,市场需求持续升温。气密封装代工工厂要在气密性等级、良率与交付周期之间…

2026/10/1 20:02:30 阅读更多 →
Spring AI 2.0 + MCP Apps 实战:Java 开发者用 TaoToken 打通多模型调用链路

Spring AI 2.0 + MCP Apps 实战:Java 开发者用 TaoToken 打通多模型调用链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 20:02:30 阅读更多 →
小米MiMo-VL技术报告解读:从多模态预训练到强化学习对齐的工程实践

小米MiMo-VL技术报告解读:从多模态预训练到强化学习对齐的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 20:02:30 阅读更多 →
KWDB MCP Server 实战:让 LLM 与数据库无缝协作的配置指南

KWDB MCP Server 实战:让 LLM 与数据库无缝协作的配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 20:02:30 阅读更多 →
IntelliJ IDEA从入门到精通:配置、快捷键、插件与避坑指南

IntelliJ IDEA从入门到精通:配置、快捷键、插件与避坑指南

用IntelliJ IDEA三年之后,再回头看当年那个只会用Eclipse的我自己,真是连叹气都懒得叹。这倒不是说Eclipse有多差,而是在Java和Android这个生态里,IDEA的代码理解能力、快捷键设计、插件体系,确实做到了“用过就回不去…

2026/10/1 20:01:29 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →