

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 主題 2：透過安全管道管理不可變的基礎設施
<a name="theme-2"></a>

**涵蓋的基本八項策略**  
應用程式控制、修補程式應用程式、修補程式作業系統

對於不可變的基礎設施，您必須保護部署管道以進行系統變更。 AWS 傑出工程師 Colm MacC árthaigh 在 [2022re：Invent 會議的零權限操作：執行無法存取資料 ](https://www.youtube.com/watch?v=kNbNWxVQP4w)(YouTube 影片） 簡報的服務中解釋了此原則。 AWS 

透過限制設定 AWS 資源的直接存取，您可以要求透過已核准、安全且自動化的管道部署或變更所有資源。通常，您會建立 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 政策，讓使用者只能存取託管部署管道的帳戶。您也可以設定 IAM 政策，以允許有限數量的使用者進行[破解玻璃存取](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/break-glass-access.html)。若要防止手動變更，您可以使用安全群組來封鎖 SSH 和Windows遠端桌面通訊協定 (RDP) 對伺服器的存取。[Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) 是 的一項功能 AWS Systems Manager，可以提供執行個體的存取權，而不需要開啟傳入連接埠或維護堡壘主機。

Amazon Machine Image AMIs) 和容器映像必須以安全且重複的方式建置。對於 Amazon EC2 執行個體，您可以使用 [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) 建置具有內建安全功能的 AMIs，例如執行個體探索、應用程式控制和記錄。如需應用程式控制的詳細資訊，請參閱 ACSC 網站上的[實作應用程式控制](https://www.cyber.gov.au/resources-business-and-government/maintaining-devices-and-systems/system-hardening-and-administration/system-hardening/implementing-application-control)。您也可以使用 Image Builder 建置容器映像，也可以使用 [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) 跨帳戶共用這些映像。中央安全團隊可以核准自動化程序來建置這些 AMIs 和容器映像，以便任何產生的 AMI 或容器映像都由應用程式團隊核准使用。

應用程式必須使用 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)或 等服務，在基礎設施中定義為程式碼 (IaC)[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)。程式碼分析工具 AWS CloudFormation Guard，例如 cfn-nag 或 cdk-nag，可以根據已核准管道中的安全最佳實務自動測試程式碼。

如同 [主題 1：使用 受管服務](theme-1.md)，Amazon Inspector 可以報告整個 的漏洞 AWS 帳戶。集中式雲端和安全團隊可以使用此資訊來驗證應用程式團隊是否符合安全和合規要求。

若要監控和報告合規性，請持續檢閱 IAM 資源和日誌。使用 AWS Config 規則來確保僅使用核准的 AMIs，並確保 Amazon Inspector 已設定為掃描 Amazon ECR 資源是否有漏洞。

## AWS Well-Architected Framework 中的相關最佳實務
<a name="theme-2-best-practices"></a>
+ [OPS05-BP04 使用建置和部署管理系統](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_build_mgmt_sys.html)
+ [REL08-BP04 使用不可變基礎設施進行部署](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_tracking_change_management_immutable_infrastructure.html)
+ [SEC06-BP03 減少手動管理和互動式存取](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_protect_compute_reduce_manual_management.html)

## 實作此主題
<a name="theme-2-implementation"></a>

### 實作 AMI 和容器建置管道
<a name="t2-ami-pipelines"></a>
+ [使用 EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)，並在您的 AMIs中建置下列項目：
  + [AWS Systems Manager Agent (SSM Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)，用於執行個體探索和管理
  + 應用程式控制的安全工具，例如 [Security Enhanced Linux (SELinux)](https://github.com/SELinuxProject) (GitHub)、[File Access Policy Daemon (fapolicyd)](https://github.com/linux-application-whitelisting/fapolicyd/blob/main/README.md) (GitHub) 或 [OpenSCAP](https://www.open-scap.org/)
  + [Amazon CloudWatch Agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html)，用於記錄
+ 對於所有 EC2 執行個體，請在[執行個體描述檔或 Systems Manager 用來存取執行個體的 IAM 角色](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-permissions.html)中包含 `CloudWatchAgentServerPolicy`和 `AmazonSSMManagedInstanceCore`政策
+ [與整個組織共用 AMIs ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html)
+ [共用 EC2 Image Builder 資源](https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-shared-resources.html)
+ [確定應用程式團隊正在參考最新的 AMIs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-custom-resources-lambda-lookup-amiids.html)
+ [使用您的 AMI 管道進行修補程式管理](https://docs.aws.amazon.com/imagebuilder/latest/userguide/security-patch-management.html)
+ 實作容器建置管道：
  + [使用 EC2 Image Builder 主控台精靈建立容器映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html)
  + [使用 Amazon ECR 做為來源，為您的容器映像建置持續交付管道](https://aws.amazon.com/blogs/devops/build-a-continuous-delivery-pipeline-for-your-container-images-with-amazon-ecr-as-source/) (AWS 部落格文章）
+ [透過多帳戶和多區域架構在整個組織中共用 ECR 容器映像](https://aws.amazon.com/blogs/containers/amazon-ecr-in-multi-account-and-multi-region-architectures/)

### 實作安全的應用程式建置管道
<a name="t2-secure-pipelines"></a>
+ 實作 IaC 的建置管道，例如使用 [EC2 Image Builder 和 AWS CodePipeline](https://aws.amazon.com/blogs/mt/create-immutable-servers-using-ec2-image-builder-aws-codepipeline/) (AWS 部落格文章）
+ 在 CI/CD 管道中使用程式碼分析工具，例如 [AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/what-is-guard.html)、[cfn-nag](https://github.com/stelligent/cfn_nag) (GitHub) 或 [cdk-nag](https://github.com/cdklabs/cdk-nag) (GitHub)，以協助偵測違反最佳實務的行為，例如：
  + IAM 政策過於寬鬆，例如使用萬用字元的政策
  + 過於寬鬆的安全群組規則，例如使用萬用字元或允許 SSH 存取的安全群組規則
  + 未啟用的存取日誌
  + 未啟用的加密
  + 密碼常值
+ 在[管道中實作掃描工具 ](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/)(AWS 部落格文章）
+ [在管道 AWS Identity and Access Management Access Analyzer 中使用](https://aws.amazon.com/blogs/security/validate-iam-policies-in-cloudformation-templates-using-iam-access-analyzer/) (AWS 部落格文章） 來驗證 CloudFormation 範本中定義的 IAM 政策
+ 設定最低權限存取的 [IAM 政策和](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#:~:text=IAM%20policies%20define%20permissions%20for,CLI%2C%20or%20the%20AWS%20API.)[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)，以使用管道或對其進行任何修改

### 實作漏洞掃描
<a name="t2-vulnerability-scanning"></a>
+ [在您組織的所有帳戶中啟用 Amazon Inspector ](https://docs.aws.amazon.com/inspector/latest/user/designating-admin.html)
+ 使用 Amazon Inspector 掃描 AMIs 建置管道中的 AMI：
  + [在 EC2 Image Builder (GitHub) 中管理 AMIs 的生命週期](https://github.com/aws-samples/ec2-imagebuilder-ami-lifecycle) GitHub
+ [使用 Amazon Inspector 設定 Amazon ECR 儲存庫的增強型掃描](https://docs.aws.amazon.com/inspector/latest/user/scanning-ecr.html#configure-ecr)
+ [建置漏洞管理計劃來分類和修復安全問題清單](https://docs.aws.amazon.com/prescriptive-guidance/latest/vulnerability-management/)

## 監控此佈景主題
<a name="theme-2-monitoring"></a>

### 持續監控 IAM 和日誌
<a name="t2-monitor"></a>
+ 定期檢閱您的 IAM 政策，以確保：
  + 只有部署管道可以直接存取 資源
  + 只有核准的服務可以直接存取資料
  + 使用者無法直接存取資源或資料
+ 監控 AWS CloudTrail 日誌，以確認使用者正在透過管道修改資源，且未直接修改資源或存取資料
+ 定期檢閱 IAM Access Analyzer 調查結果
+ 設定提醒，以便在 AWS 帳戶 使用 的根使用者登入資料時通知您

### 實作下列 AWS Config 規則
<a name="t2-config"></a>
+ `APPROVED_AMIS_BY_ID`
+ `APPROVED_AMIS_BY_TAG`
+ `ECR_PRIVATE_IMAGE_SCANNING_ENABLED`