SEC06-BP04 验证软件完整性 - AWS Well-Architected 框架

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

SEC06-BP04 验证软件完整性

使用加密验证来验证工作负载使用的软件构件(包括映像)的完整性。 对软件进行加密签名,以防在计算环境中出现未经授权的更改。

期望结果:所有构件均从可信来源获得。供应商网站证书已通过验证。 下载的构件通过其签名进行加密验证。您自己的软件经过加密签名,并由您的计算环境进行验证。

常见反模式:

  • 信任信誉良好的供应商网站,从中获取软件构件,但忽视证书过期通知。 在未确认证书有效的情况下就继续下载。

  • 验证供应商网站证书,但是从这些网站下载的构件没有进行加密验证。

  • 仅依靠摘要或哈希值来验证软件的完整性。 哈希值可用于确定构件未在原始版本的基础上进行修改,但不能证实其来源正确。

  • 不签署您自己的软件、代码或库,即使它们仅用于自己的部署。 

建立此最佳实践的好处:验证工作负载所依赖的构件是否完整,这有助于防止恶意软件进入计算环境。 对软件进行签名有助于防止未经授权的软件在计算环境中运行。  通过签署和验证代码,保护软件供应链。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

操作系统映像、容器映像和代码构件通常在分发时提供完整性检查,例如通过摘要或哈希值进行检查。 这样,客户端就可以通过计算自己的有效负载哈希值,并验证哈希值与发布的哈希值是否相同,来验证完整性。 虽然这些检查有助于验证有效负载是否未被篡改,但并不能证实有效负载来自原始来源(数据出处)。 验证数据出处时,需要有可信机构签发的证书对构件进行了数字签名。

如果在工作负载中使用下载的软件或构件,请检查提供商是否提供了用于验证数字签名的公钥。 以下这些示例说明 AWS 如何为我们发布的软件提供公钥和验证说明:

将数字签名验证整合到用于获取和强化图像的流程中,如 SEC06-BP02 Provision 根据强化图像进行计算中所述。

您可以使用 AWS Signer 来协助管理签名验证过程,以及您自己的软件和构件的代码签名生命周期。 AWS LambdaAmazon Elastic Container Registry 均实现了与 Signer 的集成,能够验证代码和映像的签名。 您可以参考“资源”部分中的示例,将 Signer 纳入持续集成和持续交付(CI/CD,Continuous Integration and Delivery)管道,以便自动验证签名并签署自己的代码和映像。

资源

相关文档:

相关示例:

相关工具: