AWS Signer

为代码和容器镜像附加数字签名,在部署时进行签名验证以保障软件供应链完整性的服务

概述

AWS Signer 是一项代码签名服务,可为 Lambda 函数部署包、容器镜像、IoT 设备固件等附加数字签名,并在运行时进行签名验证。通过签名配置文件定义签名算法和有效期,集成到 CI/CD 管道中,确保只有未被篡改的正规代码才能被部署。与 Lambda 的代码签名设置联动,可自动阻止未签名或签名无效的代码部署。

签名配置文件与签名作业的执行

Signer 的签名配置文件定义了签名使用的平台(Lambda、IoT、容器)、签名算法和签名有效期。Lambda 的签名配置文件使用 SHA-256 哈希和 ECDSA P-256 签名。签名作业以 S3 上的源制品(ZIP 文件、容器镜像)为输入,将签名后的制品输出到指定的 S3 存储桶。签名过程中计算制品的哈希值,由 Signer 管理的签名密钥生成签名并附加到制品上。签名密钥保管在 AWS 管理的 HSM 中,用户无法直接访问。通过签名配置文件的撤销(Revoke)功能,可一次性使所有使用疑似泄露的签名配置文件签名的制品失效。

Lambda 代码签名与部署控制

将 Signer 的签名配置文件关联到 Lambda 的代码签名设置(Code Signing Configuration)后,Lambda 函数部署时会自动执行签名验证。签名无效时的策略可选择 Enforce(阻止部署)或 Warn(仅警告但允许部署)。通常在生产环境设置 Enforce,开发环境设置 Warn。CI/CD 管道中自动化 CodeBuild 构建代码 → Signer 签名 → Lambda 部署的流程。签名验证失败时,错误详情记录在 CloudWatch Logs 中,可通过 EventBridge 发送通知。结合 Organizations 的 SCP(Service Control Policy),可在组织内所有 Lambda 函数上强制执行代码签名的全公司策略。

容器镜像签名与供应链安全

容器镜像签名为存储在 ECR 中的镜像附加 Notation(CNCF 容器签名标准)格式的签名。在 EKSECS 部署时进行签名验证,确保只有通过可信 CI/CD 管道构建的镜像才能运行。作为软件供应链攻击(依赖项篡改、构建环境入侵)的对策,建议在构建各阶段附加签名,部署时验证全阶段签名链的多层签名模式。结合 SBOM(Software Bill of Materials)追踪签名制品中所有依赖项的配置,在合规要求(美国总统令 14028)背景下日益重要。IoT 设备固件更新中,为 OTA(Over-The-Air)更新包附加签名,设备端验证签名后再应用,防止执行非法固件。

共有するXB!