本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用映像產生器和 Terraform 建置強化容 I EC2 mage Builder 檔的管道
創建者邁克·聖克羅斯 (AWS) 和安德魯·拉內斯 () AWS
代碼存儲庫:地形 EC2 Image Builder 容器強 | 環境:生產 | 資料來源:封裝工,廚師或純安智 |
目標:EC2Image Builder | R 型:重新建築 | 工作負載:開源 |
技術:安全性、身分識別、合規性; DevOps | AWS服務:Amazon EC2 容器註冊表; EC2 Image Builder |
Summary
此模式會建立 EC2Image Builder 管道,以產生強化的 Amazon Linux 2
該構建包括兩個 Amazon EventBridge 規則。當 Amazon Inspector 發現項目為「高」或「嚴重」時,有一個規則會啟動容器映像管道,以便取代非安全映像。此規則要求同時啟用 Amazon Inspector 和 Amazon 彈性容器註冊表(AmazonECR)增強掃描。另一個規則會在將映像成功推送至 Amazon SQS ECR 儲存庫後,將通知傳送至 Amazon 簡單佇列,以協助您使用最新的容器映像。
注意:Amazon Linux 2 即將結束支持。如需詳細資訊,請參閱 Amazon Linux 2 FAQs
先決條件和限制
先決條件
限制
此解決方案會建立 Amazon Virtual Private Cloud (AmazonVPC) 基礎設施,其中包括NAT閘道和網際網路閘道,可從其私有子網路連線進行網際網路連線。您無法使用VPC端點,因為AWS工作協調程式和執行程式 (AWSTOE) 的啟動程序會從網際網路
安裝AWSCLI版本 2。
產品版本
Amazon Linux 2
AWSCLI1.1 版或更新版本
架構
目標技術堆疊
此模式會建立 43 個資源,包括:
兩個 Amazon Simple Storage Service (Amazon S3) 儲存貯體:一個用於管道元件檔案,另一個用於伺服器存取和 Amazon VPC 流程日誌
包含公有子網路、私有子網路、路由表、閘道和網際網路NAT閘道的虛擬私有雲端 (VPC)
I EC2 mage Builder 管線、配方和元件
容器映像
影像加密的AWS金鑰管理服務 (AWSKMS) 金鑰
SQS 佇列
三個角色:一個用於執行 EC2 Image Builder 管線,一個用於映 EC2 Image Builder 的執行個體設定檔,另一個用於 EventBridge 規則
兩 EventBridge 條規則
地形模塊結構
有關源代碼,請參閱 GitHub 存儲庫 Terraform EC2 Image Builder 容器強化
├── components.tf ├── config.tf ├── dist-config.tf ├── files │ └──assumption-policy.json ├── hardening-pipeline.tfvars ├── image.tf ├── infr-config.tf ├── infra-network-config.tf ├── kms-key.tf ├── main.tf ├── outputs.tf ├── pipeline.tf ├── recipes.tf ├── roles.tf ├── sec-groups.tf ├── trigger-build.tf └── variables.tf
模組詳情
components.tf
包含用於上傳/files
目錄內容的 Amazon S3 上傳資源。您也可以在此處模塊化添加自定義組YAML件文件。/files
包含定義中使用之元件的.yml
檔案components.tf
。image.tf
包含基本映像作業系統的定義。您可以在此處修改不同基礎影像管線的定義。infr-config.tf
並dist-config.tf
包含啟動和分發映像所需的最小AWS基礎架構的資源。infra-network-config.tf
包含要將容器映像部署到的最小VPC基礎結構。hardening-pipeline.tfvars
包含要在套用時使用的地形變數。pipeline.tf
在 Terraform 中建立和管理 EC2 Image Builder 管線。recipes.tf
是您可以指定組件的不同混合物以創建容器配方的地方。roles.tf
包含 Amazon 彈性運算雲端 (AmazonIAM) 執行個體設定檔和管道部署角色的AWS身分和存取管理 (EC2) 政策定義。trigger-build.tf
包含規 EventBridge 則和SQS佇列資源。
目標架構
![建立強化容器映像檔管道的架構和工作流程](images/pattern-img/4b16bdfa-4f34-41e9-a69a-d023253c8585/images/23443eca-132f-46ac-98bd-32a9e9359a77.png)
圖表說明了下列工作流程:
EC2Image Builder 器使用定義的配方建立容器映像,該配方會安裝作業系統更新,並STIG將RHEL媒體套用至 Amazon Linux 2 基本映像。
強化的映像會發佈到私有 Amazon ECR 登錄,而當映像成功發佈時, EventBridge 規則會將訊息傳送至SQS佇列。
如果將 Amazon Inspector 設定為增強型掃描,它會掃描 Amazon ECR 註冊表。
如果 Amazon Inspector 為映像產生嚴重性或高嚴重性發現項目, EventBridge 則規則會觸發 EC2 Image Builder 管道再次執行,並發佈新強化的映像。
自動化和規模
此模式說明如何佈建基礎結構,並在您的電腦上建置管道。但是,它旨在大規模使用。您可以在多帳戶環境中使用它們,例如具有 Terraform 環境的 Account Factory
的 AWSControl Tower,而不是在本地部署 Terraform 模塊。在這種情況下,您應該使用後端狀態 S3 儲存貯體 來管理 Terraform 狀態檔案,而不是在本機管理組態狀態。 若要擴展使用,請從 Control Tower 或 landing zone 帳戶模型將解決方案部署到一個中央帳戶 (例如共用服務或一般服務帳戶),並授予消費者帳戶存取 Amazon ECR 儲存庫和AWSKMS金鑰的權限。有關設置的更多信息,請參閱 Re:POST 文章如何允許輔助帳戶在 Amazon ECR 映像存儲庫中推送或提取圖像?
例如,在帳戶自動售貨機 或 Terraform 的 Account Factory 中,為每個帳戶基準或帳戶自訂基準新增許可,以提供對該 Amazon ECR 儲存庫和加密金鑰的存取權。 部署容器映像管線之後,您可以使用 EC2 Image Builder 功能 (例如元件) 來修改它,這可協助您將更多元件封裝到 Docker 組建中。
用於加密容器映像檔的AWSKMS金鑰應該在映像檔預定用於其中的帳戶之間共用。
您可以複製整個 Terraform 模組並修改下列屬性,以新增對其他影像的支援:
recipes.tf
修改
parent_image = "amazonlinux:latest"
為其他影像類型。修改
repository_name
以指向現有的 Amazon ECR 儲存庫。這會建立另一個管道,將不同的父映像類型部署到您現有的 Amazon ECR 儲存庫。
工具
工具
地形表單(IaC 配置)
Git(如果在本地佈建)
AWSCLI版本 1 或版本 2 (如果在本機佈建)
代碼
此模式的程式碼位於 GitHub 儲存庫 Terraform EC2 Image Builder 容器強化
史诗
任務 | 描述 | 所需技能 |
---|---|---|
設定本機認證。 | 設定您的AWS臨時登入資料。
| AWS DevOps |
複製儲存庫。 |
| AWS DevOps |
更新變數。 | 更新
以下是每個變量的描述:
| AWS DevOps |
初始化地形。 | 更新變數值之後,您可以初始化 Terraform 組態目錄。初始化組態目錄會下載並安裝在組態中定義的AWS提供者。
您應該會看到一則訊息,指出 Terraform 已成功初始化,並識別已安裝的提供者版本。 | AWS DevOps |
部署基礎結構並建立容器映像。 | 使用下列指令來初始化、驗證 Terraform 模組,並使用檔
| AWS DevOps |
自訂容器。 | 您可以在 EC2 Image Builder 器部署管線和初始配方之後,建立新版本的容器方案。 您可以在 EC2 Image Builder 器中新增任何可用的 31+ 元件,以自訂容器組建。如需詳細資訊,請參閱映像產生器文件中建立新版本的容器方案EC2中的元件一節。 | AWS管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
驗證AWS基礎結構佈建。 | 成功完成第一個 Terraform
| AWS DevOps |
驗證個別AWS基礎結構資源。 | 若要驗證已部署的個別資源,如果您在本機佈建,您可以執行下列命令:
此命令會傳回 43 個資源的清單。 | AWS DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
移除基礎結構和容器映像。 | 當您完成使用 Terraform 組態時,您可以執行下列命令來移除資源:
| AWS DevOps |
故障診斷
問題 | 解決方案 |
---|---|
驗證提供者認證時出錯 | 當您從本機電腦執行 Terraform
此錯誤是由於本機電腦組態中使用的認證的安全性 Token 到期所造成。 若要解決錯誤,請參閱AWSCLI文件中的設定和檢視組態設定。 |
相關資源
地形 EC2 Image Builder 容器強化管道
(存儲庫)GitHub AWS地形的 Control Tower Account Factory
(AWS博客文章) 後端狀態 S3 儲存貯體
(地形文件) 安裝或更新最新版本的 AWS CLI(AWSCLI文檔)