内容提要
文章聚焦容器镜像与AI模型供应链安全,指出扫描仅能发现已知漏洞,无法验证来源与完整性,而签名可提供主动溯源。亚马逊ECR推出托管签名功能,通过注册表自动签名、验证和强制策略,简化流程,防止恶意篡改,确保仅可信镜像运行。
延伸解读
扫描与签名的本质区别
文章强调,扫描是反应性的,只能发现已知漏洞,无法回答“谁构建了镜像”以及“是否被篡改”的问题。签名则提供主动的溯源能力,两者互补但不可替代。在AI时代,模型权重等工件没有CVE可匹配,扫描的局限性更加明显,签名成为验证来源和完整性的关键手段。
AI模型供应链的新风险
文章指出,AI模型工件(如PyTorch权重)可能携带恶意负载,且传统扫描难以检测。例如,恶意模型利用pickle漏洞执行任意代码,甚至能绕过静态扫描。这凸显了签名在AI供应链中的重要性,因为签名能验证模型的来源和完整性,而扫描无法做到。
签名链的脆弱性与管理
签名并非一劳永逸,它是一条链,每个环节都必须可靠。文章提到,如果攻击者完全攻陷签名身份,仍可生成有效签名。但签名能缩小攻击面,使篡改行为可追溯、可撤销。此外,签名需要一致地应用于所有团队和管道,否则会留下信任缺口。
托管签名降低实施门槛
传统签名需要团队自行管理密钥、证书和轮换,成本高且难以推广。亚马逊ECR托管签名将签名集成到注册表,自动为匹配的推送签名,并管理密钥,简化了流程。这使签名成为推送镜像的默认属性,而非每个团队的项目,从而降低采用门槛。
Q&A
为什么说容器镜像签名在AI时代尤为重要?
因为AI模型工件(如模型权重、训练数据集)通常以OCI工件形式分发,它们没有CVE可扫描,扫描无法验证其来源和完整性。签名可以提供主动溯源,确保模型未被篡改,防止恶意模型在加载时执行任意代码。
容器镜像扫描和签名有什么区别?
扫描是反应性的,只能发现已知漏洞,回答“镜像里有什么”;签名是主动的,提供加密证明,回答“谁构建的,是否被修改过”。两者互补,但不可替代。
亚马逊ECR托管签名是如何工作的?
ECR托管签名允许创建注册表级签名配置,包含最多10条规则,每条规则将签名配置文件与仓库过滤器配对。推送镜像时,ECR异步调用AWS Signer对镜像清单的摘要进行签名,签名作为OCI工件存储在仓库中。
使用ECR托管签名时,私钥如何保管?
私钥由AWS Signer保管,不会出现在仓库、构建日志或运行器中。用户配置签名配置文件时,指定签名算法、有效期和身份,但无法获取私钥。
如何强制只运行已签名的镜像?
通过Kubernetes准入控制器(如Kyverno或Gatekeeper配合Ratify)实施强制策略。策略定义信任的签名身份,只有签名验证通过的镜像才能被部署。
ECR托管签名相比传统签名工具有哪些优势?
传统工具需要安装客户端(如Notation CLI或Cosign),管理密钥、证书、轮换和撤销,并构建自定义自动化,耗时数周。ECR托管签名将签名集成到推送流程中,无需客户端配置,密钥由AWS管理,简化了操作。
签名能完全防止恶意镜像吗?
不能。如果攻击者完全攻陷签名身份(窃取凭证和签名权限),可以生成有效签名的恶意镜像。但签名缩小了攻击面,使篡改需要攻陷特定签名者,且可审计、可撤销。
如何撤销一个签名配置文件的信任?
在AWS Signer中撤销签名配置文件,之后所有信任该配置文件的验证都会失败,新的准入立即停止,运行中的Pod在下次重新调度时也会失败。