

# SEC11-BP05 集中管理服务，方便获取软件包和依赖项
<a name="sec_appsec_centralize_services_for_packages_and_dependencies"></a>

 提供集中式服务，方便您的团队获取软件包和其它依赖项。通过采取这种做法，可以在将软件包纳入所编写的软件之前，对软件包进行验证；另外，还可以为分析贵组织所使用的软件提供数据来源。

 **期望结果：**除了您编写的代码之外，还可以使用外部软件包来构建工作负载。这使您更容易实现重复使用的功能，例如 JSON 解析器或加密库。您将这些软件包和依赖项的来源集中在一起，以便安全团队可以在使用软件包和依赖项之前对其来源进行验证。您将此方法与手动和自动测试流程结合使用，来增强对所开发软件的质量的信心。

 **常见反模式：**
+  您从互联网上的任意存储库中提取软件包。
+  您在将新软件包提供给构建者之前，未对其进行测试。

**建立此最佳实践的好处：**
+  更好地了解正在构建的软件中使用了哪些软件包。
+  了解谁使用了哪些软件包后，在需要更新软件包时，能够向工作负载团队发出通知。
+  降低软件中存在问题软件包的风险。

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

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

 以构建者易于使用的方式为软件包和依赖项提供集中管理服务。集中管理服务可以在逻辑上集中，而不用作为一个整体系统来实施。利用此方法，您可以通过满足构建者需求的方法来提供服务。您应该实施一种有效的方法：在发生更新或出现新需求时将软件包添加到存储库。[AWS CodeArtifact](https://aws.amazon.com/codeartifact/) 等 AWS 服务或类似的 AWS 合作伙伴解决方案提供了一种实现此功能的方法。

### 实施步骤
<a name="implementation-steps"></a>
+ 实施可在用于开发软件的所有环境中使用的逻辑集中式存储库服务。
+ 在 AWS 账户 分配过程中包括对存储库的访问权限。
+ 构建自动化以在存储库中发布软件包之前对其进行测试。
+ 维护最常用软件包、语言和更改量最大的团队的指标。
+  为构建者团队提供一种自动化机制来请求新软件包和提供反馈。
+  定期扫描存储库中的软件包，以确定新发现的问题的潜在影响。

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

 **相关最佳实践：**
+  [SEC11-BP02 在整个开发和发布生命周期中执行自动化测试](sec_appsec_automate_testing_throughout_lifecycle.md) 

 **相关文档：**
+ [ DevOps Guidance: DL.CS.2 Sign code artifacts after each build ](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/dl.cs.2-sign-code-artifacts-after-each-build.html)
+ [ Supply chain Levels for Software Artifacts (SLSA) ](https://slsa.dev/)

 **相关示例：**
+  [通过有效的治理加快 AWS 上的部署](https://aws.amazon.com/blogs/architecture/accelerate-deployments-on-aws-with-effective-governance/) 
+  [使用 CodeArtifact Package Origin Control 工具包加强软件包的安全性](https://aws.amazon.com/blogs/devops/tighten-your-package-security-with-codeartifact-package-origin-control-toolkit/) 
+  [多区域软件包发布管道](https://github.com/aws-samples/multi-region-python-package-publishing-pipeline)（GitHub） 
+  [使用 AWS CodePipeline 在 AWS CodeArtifact 上发布 Node.js 模块](https://github.com/aws-samples/aws-codepipeline-publish-nodejs-modules)（GitHub） 
+  [AWS CDK Java CodeArtifact 管道示例](https://github.com/aws-samples/aws-cdk-codeartifact-pipeline-sample)（GitHub） 
+  [使用 AWS CodeArtifact 分发专用 .NET NuGet 包](https://github.com/aws-samples/aws-codeartifact-nuget-dotnet-pipelines)（GitHub） 

 **相关视频：**
+  [主动式安全性：注意事项和方法](https://www.youtube.com/watch?v=CBrUE6Qwfag) 
+  [AWS 安全理念（re:Invent 2017）](https://www.youtube.com/watch?v=KJiCfPXOW-U) 
+  [当安全、保障和紧迫性都很重要时：处理 Log4Shell](https://www.youtube.com/watch?v=pkPkm7W6rGg) 