

# SEC06-BP02 从强化映像预置计算
<a name="sec_protect_compute_hardened_images"></a>

 通过从强化映像部署运行时环境，减少意外访问运行时环境的机会。只从可信注册表获取运行时依赖项（例如容器映像和应用程序库），并验证其签名。创建自己的专用注册表来存储可信映像和库，供构建和部署流程使用。

 **期望结果：**您的计算资源是从强化的基准映像预置的。您只从可信注册表检索外部依赖项（例如容器映像和应用程序库），并验证其签名。这些依赖项存储在专用注册表中，供构建和部署流程参考。您会定期扫描和更新映像和依赖项，以便于应对任何新发现的漏洞。

 **常见反模式：**
+  从可信注册表获取映像和库，但在投入使用前不验证其签名或进行漏洞扫描。
+  强化映像，但没有定期测试映像是否存在新漏洞或更新到最新版本。
+  安装或不删除在映像预期生命周期内不需要的软件包。
+  仅依靠打补丁来保持生产计算资源的最新状态。随着时间的推移，仅靠打补丁仍会导致计算资源偏离强化标准。打补丁也可能无法清除威胁行为者在安全事件中安装的恶意软件。

 **建立此最佳实践的好处：**强化映像有助于减少在运行时环境中，可能允许未经授权的用户或服务进行意外访问的路径数量。如果发生任何意外访问，强化映像还可以缩小影响范围。

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

## 实施指导
<a name="implementation-guidance"></a>

 要强化系统，请从最新版本的操作系统、容器映像和应用程序库开始。应用补丁以解决已知问题。删除所有不需要的应用程序、服务、设备驱动程序、默认用户和其它凭证，尽量减小系统。采取其它任何必要操作，例如禁用端口，以便创建一个只拥有工作负载所需资源和功能的环境。在此基础上，您可以安装必要的软件、代理或其它进程，以满足监控工作负载或管理漏洞等目的的需要。

 您可以遵循可信来源提供的指导，如[互联网安全中心](https://www.cisecurity.org/)（CIS，Center for Internet Security）以及美国国防信息系统局（DISA，Defense Information Systems Agency）的[安全技术实施指南（STIG）](https://public.cyber.mil/stigs/)，从而减轻强化系统的负担。我们建议您从 AWS 或 APN 合作伙伴发布的[亚马逊机器映像](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)（AMI）开始，并使用 AWS [EC2 Image Builder](https://aws.amazon.com/image-builder/)，以期综合使用 CIS 和 STIG 控制措施来自动配置。

 虽然有可用的强化映像和 EC2 Image Builder 配方可应用 CIS 或 DISA STIG 建议，但您可能会发现，它们的配置会阻止您的软件成功运行。在这种情况下，您可以从未经强化的基础映像开始，安装软件，然后逐步应用 CIS 控制措施来测试其影响。对于任何阻止软件运行的 CIS 控制措施，请测试是否可以改为在 DISA 中实施更精细的强化建议。跟踪您能够成功应用的不同 CIS 控制措施和 DISA STIG 配置。在 EC2 Image Builder 中使用这些控制措施和配置，相应地定义映像强化配方。

 对于容器化工作负载，[Amazon Elastic Container Registry（ECR）](https://aws.amazon.com/ecr/)[公共存储库](https://gallery.ecr.aws/docker)提供 Docker 的强化映像。您可以结合使用 EC2 Image Builder 与 AMI 来强化容器映像。

 与操作系统和容器映像类似，您可以通过 pip、npm、Maven 和 NuGet 等工具，从公共存储库中获取代码包（或*库*）。我们建议您将私有存储库（例如在 [AWS CodeArtifact](https://aws.amazon.com/codeartifact/) 中）与可信的公共存储库进行集成，来管理代码包。这种集成可为您处理代码包的检索、存储和保持最新状态。然后，您的应用程序构建流程就可以使用一些技术 [例如软件组成分析（SCA，Software Composition Analysis）、静态应用程序安全测试（SAST，Static Application Security Testing）和动态应用程序安全测试（DAST，Dynamic Application Security Testing）等]，与您的应用程序一起获取和测试这些代码包的最新版本。

 对于使用 AWS Lambda 的无服务器工作负载，可使用 [Lambda 层](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html)简化对代码包依赖项的管理。使用 Lambda 层将不同函数之间共享的一组标准依赖项配置到独立的存档中。您可以通过自己的构建流程来创建和维护层，从而能够以集中方式使您的函数保持最新状态。

## 实施步骤
<a name="implementation-steps"></a>
+  强化操作系统。使用来自可信来源的基础映像为基础，来构建强化的 AMI。使用 [EC2 Image Builder](https://aws.amazon.com/image-builder/) 来帮助自定义安装在映像上的软件。
+  强化容器化资源。配置容器化资源以符合安全最佳实践。当使用容器时，在您的构建管道中对您的映像存储库定期实施 [ECR 映像扫描](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html)，以便在您的容器中查找 CVE。  
+  在使用 AWS Lambda 实现无服务器时，请使用 [Lambda 层](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html)来隔离应用程序函数代码和共享的依赖项库。为 Lambda 配置[代码签名](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html)，以便确保只有可信代码才能在您的 Lambda 函数中运行。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [OPS05-BP05 执行补丁管理](https://docs.aws.amazon.com/wellarchitected/latest/framework/ops_dev_integ_patch_mgmt.html) 

 **相关视频：**
+  [Deep dive into AWS Lambda security](https://www.youtube.com/watch?v=FTwsMYXWGB0) 

 **相关示例：**
+  [Quickly build STIG-compliant AMI using EC2 Image Builder](https://aws.amazon.com/blogs/security/quickly-build-stig-compliant-amazon-machine-images-using-amazon-ec2-image-builder/) 
+  [Building better container images](https://aws.amazon.com/blogs/containers/building-better-container-images/) 
+  [Using Lambda layers to simplify your development process](https://aws.amazon.com/blogs/compute/using-lambda-layers-to-simplify-your-development-process/) 
+  [Develop & Deploy AWS Lambda Layers using Serverless Framework](https://github.com/aws-samples/aws-serverless-lambda-layers) 
+  [Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST and DAST tools](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) 