本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SEC06-BP04 验证软件完整性
使用加密验证来验证工作负载使用的软件构件(包括映像)的完整性。 对软件进行加密签名,以防在计算环境中出现未经授权的更改。
期望结果:所有构件均从可信来源获得。供应商网站证书已通过验证。 下载的构件通过其签名进行加密验证。您自己的软件经过加密签名,并由您的计算环境进行验证。
常见反模式:
-
信任信誉良好的供应商网站,从中获取软件构件,但忽视证书过期通知。 在未确认证书有效的情况下就继续下载。
-
验证供应商网站证书,但是从这些网站下载的构件没有进行加密验证。
-
仅依靠摘要或哈希值来验证软件的完整性。 哈希值可用于确定构件未在原始版本的基础上进行修改,但不能证实其来源正确。
-
不签署您自己的软件、代码或库,即使它们仅用于自己的部署。
建立此最佳实践的好处:验证工作负载所依赖的构件是否完整,这有助于防止恶意软件进入计算环境。 对软件进行签名有助于防止未经授权的软件在计算环境中运行。 通过签署和验证代码,保护软件供应链。
在未建立这种最佳实践的情况下暴露的风险等级:中
实施指导
操作系统映像、容器映像和代码构件通常在分发时提供完整性检查,例如通过摘要或哈希值进行检查。 这样,客户端就可以通过计算自己的有效负载哈希值,并验证哈希值与发布的哈希值是否相同,来验证完整性。 虽然这些检查有助于验证有效负载是否未被篡改,但并不能证实有效负载来自原始来源(数据出处)。 验证数据出处时,需要有可信机构签发的证书对构件进行了数字签名。
如果在工作负载中使用下载的软件或构件,请检查提供商是否提供了用于验证数字签名的公钥。 以下这些示例说明 AWS 如何为我们发布的软件提供公钥和验证说明:
将数字签名验证整合到用于获取和强化图像的流程中,如 SEC06-BP02 Provision 根据强化图像进行计算中所述。
您可以使用 AWS Signer 来协助管理签名验证过程,以及您自己的软件和构件的代码签名生命周期。 AWS Lambda
资源
相关文档:
相关示例:
相关工具: