

# SEC06-BP02 從強化的影像佈建運算
<a name="sec_protect_compute_hardened_images"></a>

 透過從強化的映像部署，就可減少意外存取執行時期環境的機會。僅從受信任的登錄檔取得執行時期相依項 (例如容器映像和應用程式庫)，並驗證其簽章。建立自己的私有登錄檔來儲存受信任的映像和程式庫，以供您的建置和部署程序使用。

 **預期成果：**您的運算資源是從強化的基準映像佈建。您只會從受信任的登錄檔擷取外部相依項 (例如容器映像和應用程式庫)，並驗證其簽章。這些都會儲存在私有登錄檔中，以供您的建置和部署程序參考。您會定期掃描和更新映像與相依項，以協助防禦任何新發現的漏洞。

 **常見的反模式：**
+  從受信任的登錄檔取得映像和程式庫，但未先驗證其簽章或執行漏洞掃描，即逕行使用。
+  強化映像，但未定期測試映像以確認是否有新的漏洞或更新到最新版本。
+  安裝或未移除在預期的映像生命週期內不需要的軟體套件。
+  僅仰賴修補來讓實際執行運算資源保持最新狀態。單單是修補就仍有可能導致運算資源在經過一段時間後，偏離強化的標準。修補也可能無法移除威脅行為者在安全事件期間安裝的惡意軟體。

 **建立此最佳實務的優勢：**強化映像有助於減少您的執行時期環境中可能成為未經授權使用者或服務意外存取路徑的數目。此外還能在發生任何意外存取的情況時，縮小影響的範圍。

 **未建立此最佳實務時的風險暴露等級：**高 

## 實作指引
<a name="implementation-guidance"></a>

 若要強化您的系統，請從作業系統、容器映像和應用程式庫的最新版本開始。套用已知問題的修補程式。移除任何不需要的應用程式、服務、裝置驅動程式、預設使用者和其他憑證，藉此盡可能縮減系統規模。採取任何其他必要的行動，例如，停用連接埠以建立只有工作負載所需資源和功能的環境。以此為基準，您就可以安裝用於監控工作負載或管理漏洞等操作所需的軟體、代理程式或其他程序。

 您可以使用受信任來源提供的指南來減輕強化系統的負擔，例如[網際網路安全中心 ](https://www.cisecurity.org/)（CIS） 和國防資訊系統局 （DISA） [安全技術實作指南 （STIGs）](https://public.cyber.mil/stigs/)。我們建議您從 AWS 或 APN合作夥伴發佈的 [Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) （AMI） 開始，並使用AWS [EC2 Image Builder](https://aws.amazon.com/image-builder/) 根據適當的 CIS和 STIG控制項組合來自動化組態。

 雖然有可用的強化映像和EC2映像建置器配方會套用 CIS或 DISASTIG建議，但您可能會發現其組態阻止軟體順利執行。在這種情況下，您可以從非強化基本映像開始，安裝軟體，然後逐步套用CIS控制項來測試其影響。對於防止軟體執行的任何CIS控制項，請測試您是否可以在 DISA 中實作更精細的強化建議。追蹤您能夠成功套用的不同CIS控制項和DISASTIG組態。使用這些選項，相應地在 Image Builder 中定義您的EC2映像強化配方。

 對於容器化工作負載，來自 Docker 的強化影像可在 [Amazon Elastic Container Registry （ECR）](https://aws.amazon.com/ecr/) [公有儲存庫 ](https://gallery.ecr.aws/docker)上取得。您可以使用 EC2 Image Builder 搭配 來強化容器映像AMIs。

 與作業系統和容器映像類似，您可以透過 pip、npm、Maven 和 等工具，從公有儲存庫取得程式碼套件 （或*程式庫* ） NuGet。我們建議您藉由整合私有儲存庫 (例如在 [AWS CodeArtifact](https://aws.amazon.com/codeartifact/) 內) 與受信任的公有儲存庫來管理程式碼套件。此整合可以 up-to-date為您處理擷取、儲存和保留套件。然後，您的應用程式建置程序可以使用 Software Composition Analysis （SCA）、Static Application Security Testing （SAST） 和 Dynamic Application Security Testing （） 等技術，取得並測試這些套件的最新版本DAST。

 對於使用 的無伺服器工作負載 AWS Lambda， 可簡化使用 [Lambda 層管理套件相依性。](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html)使用 Lambda 層設定一組跨不同函數共用的標準相依項，並放入獨立的封存中。您可以透過自己的建置程序來建立和維護層，為您的函數提供保留 的中央方式 up-to-date。

## 實作步驟
<a name="implementation-steps"></a>
+  強化作業系統。使用信任來源的基本映像作為建置強化 的基礎AMIs。使用 [EC2 Image Builder](https://aws.amazon.com/image-builder/) 協助自訂安裝在映像上的軟體。
+  強化容器化資源。設定容器化資源以符合安全最佳實務。使用容器時，請在建置管道中實作[ECR映像掃描](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html)，並定期針對映像儲存庫實作映像掃描，以便在CVEs容器中尋找。  
+  搭配 使用無伺服器實作時 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) 

 **相關影片：**
+  [深入探索 AWS Lambda 安全性](https://www.youtube.com/watch?v=FTwsMYXWGB0) 

 **相關範例：**
+  [AMI使用 EC2 Image Builder 快速建置 STIG合規](https://aws.amazon.com/blogs/security/quickly-build-stig-compliant-amazon-machine-images-using-amazon-ec2-image-builder/) 
+  [建置更好的容器映像](https://aws.amazon.com/blogs/containers/building-better-container-images/) 
+  [使用 Lambda 層簡化開發流程](https://aws.amazon.com/blogs/compute/using-lambda-layers-to-simplify-your-development-process/) 
+  [使用無伺服器架構開發和部署 AWS Lambda 層](https://github.com/aws-samples/aws-serverless-lambda-layers) 
+  [使用開放原始碼 SCA、 SAST和 DAST 工具建置 end-to-end AWS DevSecOps CI/CD 管道](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) 