本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用雲端託管人和 AWS CDK 自動將適用於 Systems Manager 的 AWS 受管政策附加至 EC2 執行個體設定檔
由阿里·阿斯福爾(AWS)和亞倫列儂(AWS)創建
環境:PoC 或試點 | 技術: DevOps;軟體開發與測試;管理與治理;安全性、身分識別、合規性;基礎架構 | 工作負載:開源 |
AWS 服務:Amazon SNS; Amazon SQS; AWS CodeBuild; AWS CodePipeline; AWS Systems Manager; AWS CodeCommit |
Summary
您可以將 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體與 AWS Systems Manager 整合,以自動化操作任務並提供更多可見度和控制權。若要與 Systems Manager 整合,EC2 執行個體必須已安裝 AWS Systems Manager 代理程式 (SSM 代理程式) 和 AmazonSSMManagedInstanceCore
AWS Identity and Access Management (IAM) 政策附加至其執行個體設定檔。
但是,如果您想確保所有 EC2 執行個體設定檔都附加了AmazonSSMManagedInstanceCore
政策,則更新沒有執行個體設定檔的新 EC2 執行個體或具有執行個體設定檔但沒有該AmazonSSMManagedInstanceCore
政策的 EC2 執行個體可能會面臨挑戰。在多個 Amazon Web Services (AWS) 帳戶和 AWS 區域之間新增此政策也可能很困難。
透過在 AWS 帳戶中部署三個雲端託管
第一個雲端託管人政策會檢查具有執行個體設定檔但沒有
AmazonSSMManagedInstanceCore
政策的現有 EC2 執行個體。然後會附加AmazonSSMManagedInstanceCore
原則。第二個 Cloud 託管人政策會檢查沒有執行個體設定檔的現有 EC2 執行個體,並新增已附加
AmazonSSMManagedInstanceCore
政策的預設執行個體設定檔。第三個雲端託管人政策會在您的帳戶中建立 AWS Lambda 函數
,以監控 EC2 執行個體和執行個體設定檔的建立。這可確 AmazonSSMManagedInstanceCore
保在建立 EC2 執行個體時自動附加政策。
此模式使用 AWS DevOps
先決條件和限制
先決條件
兩個或多個作用中的 AWS 帳戶。一個帳戶是安全帳戶,其他帳戶是成員帳戶。
在安全帳戶中佈建 AWS 資源的許可。此模式使用管理員權限,但您應該根據組織的需求和策略授與權限。
能夠從安全帳戶擔任 IAM 角色到成員帳戶,並建立必要的 IAM 角色。如需詳細資訊,請參閱 IAM 文件中的使用 IAM 角色在 AWS 帳戶之間委派存取權。
已安裝和設定的 AWS Command Line Interface (AWS CLI) (AWS CLI)。基於測試目的,您可以使用
aws configure
命令或設定環境變數來設定 AWS CLI。重要事項:不建議在生產環境中使用此功能,因此我們建議僅授予此帳戶的最低權限存取權。有關此方面的詳細資訊,請參閱 IAM 文件中的授予最低權限。該
devops-cdk-cloudcustodian.zip
文件(附件),下載到您的本地計算機。熟悉 Python。
安裝和設定所需的工具 (Node.js、AWS Cloud Development Kit (AWS CDK) 和 Git)。您可以使用
install-prerequisites.sh
檔案中的devops-cdk-cloudcustodian.zip
檔案來安裝這些工具。 確保您以 root 權限運行此文件。
限制
雖然此模式可用於生產環境,但請確保所有 IAM 角色和政策都符合組織的需求和政策。
Package 版本
雲端託管人 0.9 版或更新版本
TypeScript 版本 3.9.7 或更新版本
Node.js 版本 14.15.4 或更新版本
npm
版本 7.6.1 或更新版本AWS CDK 版本 1.96.0 或更新版本
架構
該圖顯示以下工作流程:
雲端託管政策會推送至安全帳戶中的 AWS CodeCommit 儲存庫。Amazon CloudWatch 事件規則會自動啟動 AWS CodePipeline 管道。
管道會從中擷取最新的程式碼, CodeCommit 並將其傳送至 AWS 處理之持續整合和持續交付 (CI/CD) 管道的持續整合部分。 CodeBuild
CodeBuild 執行完整 DevSecOps 動作 (包括 Cloud Managed 政策上的政策語法驗證),並以
--dryrun
模式執行這些政策以檢查識別的資源。如果沒有錯誤,下一個工作會警示管理員檢閱變更並核准部署至成員帳戶。
技術堆疊
AWS CDK
CodeBuild
CodeCommit
CodePipeline
IAM
Cloud Custodian
自動化和規模
AWS CDK 管道模組佈建一個 CI/CD 管道,除了使 CodePipeline 用 AWS 堆疊部署 AWS 資源之外 CodeBuild,還可用來協調原始程式碼的建置和測試。 CloudFormation 您可以將此模式用於組織中的所有成員帳戶和區域。您也可以擴充Roles creation
堆疊,以在成員帳戶中部署其他 IAM 角色。
工具
AWS Cloud Development Kit (AWS CDK) 是一種軟體開發架構,可在程式碼中定義雲端基礎設施,並透過 AWS CloudFormation 佈建雲端基礎設施。
AWS Command Line Interface (AWS CLI) (AWS CLI) 是一種開放原始碼工具,可讓您使用命令列殼層中的命令與 AWS 服務互動。
AWS CodeBuild 是雲端中的全受管建置服務。
AWS CodeCommit 是一種版本控制服務,可用於私有存放和管理資產。
AWS CodePipeline 是一種持續交付服務,可用來建立軟體發行所需步驟的模型、視覺化和自動化。
AWS Identity and Access Management 是一種 Web 服務,可協助您安全地控制 AWS 資源的存取。
Cloud Bookdian
是一種工具,可將大多數組織用於管理其公共雲帳戶的數十種工具和腳本統一為一個開源工具。 Node.js
是建立在谷歌瀏覽器的 V8 JavaScript 引擎 JavaScript 運行時。
Code
有關此模式中使用的模塊,帳戶函數,文件和部署命令的詳細列表,請參閱README
文件中的devops-cdk-cloudcustodian.zip
文件(附件)。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
設定 CodeCommit 儲存庫。 |
如需詳細資訊,請參閱 AWS CodeCommit 文件中的建立 CodeCommit 儲存庫。 | 開發人員 |
安裝所需的工具。 | 使用該 如需相關詳細資訊,請參閱 AWS CDK 文件中 AWS CDK 入門的先決條件一節。 | 開發人員 |
安裝所需的 AWS CDK 套件。 |
AWS CDK 需要下列套件,並包含在
| 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
更新必要的變數。 | 開啟 CodeCommit 儲存庫根資料夾中的
| 開發人員 |
使用成員帳戶資訊更新帳戶 .yml 檔案。 | 若要針對多個帳戶執行 c7n-org 雲端託管
| 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
自舉安全帳戶。 | 透過執行
| 開發人員 |
選項 1-自動引導成員帳戶。 | 如果在 如果需要,您可以使 新增至 | 開發人員 |
選項 2-手動引導成員帳戶。 | 雖然我們不建議使用此方法,但是您可以將值設定
重要事項:請務必使用可從安全帳戶承擔的 IAM 角色名稱更新和 您也可以使用其他方法來引導成員帳戶,例如使用 AWS CloudFormation。如需有關此功能的詳細資訊,請參閱 AWS CDK 文件中的啟動安裝。 | 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
在成員帳戶中建立 IAM 角色。 | 執行下列命令以部署
| 開發人員 |
部署雲端託管管線堆疊。 | 執行下列命令,以建立部署到安全性帳戶的雲端託
| 開發人員 |
相關資源
附件
若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip