

# 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 指引：DL.CS.2 在每次建置後，會在程式碼成品上簽名](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/dl.cs.2-sign-code-artifacts-after-each-build.html)
+ [軟體成品的供應鏈層級 (SLSA)](https://slsa.dev/)

 **相關範例：**
+  [配合有效管控，加速在 AWS 的部署](https://aws.amazon.com/blogs/architecture/accelerate-deployments-on-aws-with-effective-governance/) 
+  [使用 CodeArtifact 套件來源控制工具組加強您的套件安全](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 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) 