本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Cloud Custodian 和 自動將 Systems Manager 的AWS受管政策連接至EC2執行個體描述檔 AWS CDK
由 Ali Asfour (AWS) 和 Aaron Lennon (AWS) 建立
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執行個體,或沒有EC2執行個體描述檔但沒有AmazonSSMManagedInstanceCore
政策的執行個體時,可能會面臨挑戰。跨多個 Amazon Web Services (AWS) 帳戶和AWS區域新增此政策可能也很困難。
此模式透過在您的AWS帳戶中部署三個雲端託管政策
第一個 Cloud Custodian 政策會檢查是否有具有EC2執行個體設定檔但沒有
AmazonSSMManagedInstanceCore
政策的現有執行個體。然後連接AmazonSSMManagedInstanceCore
政策。第二個 Cloud Custodian 政策會檢查沒有執行個體描述檔的現有EC2執行個體,並新增已連接
AmazonSSMManagedInstanceCore
政策的預設執行個體描述檔。第三個 Cloud Custodian 政策會在您的帳戶中建立 AWS Lambda 函數
,以監控EC2執行個體和執行個體設定檔的建立。這可確保在建立EC2執行個體時自動連接 AmazonSSMManagedInstanceCore
政策。
此模式使用 AWS DevOps
先決條件和限制
先決條件
兩個或多個作用中AWS帳戶。一個帳戶是安全帳戶,另一個是成員帳戶。
在安全帳戶中佈建AWS資源的許可。此模式使用管理員許可,但您應該根據組織的需求和政策授予許可。
從安全帳戶擔任IAM角色到成員帳戶並建立所需IAM角色的能力。如需詳細資訊,請參閱 IAM 文件中的使用 IAM角色委派跨AWS帳戶存取。
重要
AWS 命令列界面 (AWSCLI),已安裝並設定。為了測試目的,您可以使用
aws configure
命令或設定環境變數AWSCLI來設定 。:這不建議用於生產環境,我們建議您僅將此帳戶授予最低權限存取。如需詳細資訊,請參閱 IAM 文件中的授予最低權限。devops-cdk-cloudcustodian.zip
檔案 (已連接),下載至本機電腦。熟悉 Python。
安裝和設定必要的工具 (Node.js、AWS雲端開發套件 (AWSCDK) 和 Git)。您可以使用
devops-cdk-cloudcustodian.zip
檔案中的install-prerequisites.sh
檔案來安裝這些工具。請確定您使用根權限執行此檔案。
限制
雖然此模式可用於生產環境,但請確保所有IAM角色和政策都符合您組織的要求和政策。
套件版本
雲端託管人 0.9 版或更新版本
TypeScript 3.9.7 版或更新版本
Node.js 14.15.4 版或更新版本
npm
7.6.1 版或更新版本AWS CDK 1.96.0 版或更新版本
架構
![AWS CodePipeline workflow with CodeCommit, CodeBuild, and deployment to member accounts.](images/pattern-img/169a7bde-789e-4ebd-b4ca-80eb28ac9927/images/8ec0b6b4-d4b0-42e5-833d-24d1e6098fd9.png)
該圖顯示以下工作流程:
雲端託管政策會推送到安全帳戶中的AWS CodeCommit 儲存庫。Amazon CloudWatch Events 規則會自動啟動AWS CodePipeline 管道。
管道會從 擷取最新的程式碼, CodeCommit 並將其傳送至由 處理的持續整合和持續交付 (CI/CD) 管道的持續整合部分AWS CodeBuild。
CodeBuild 會執行完整 DevSecOps 動作,包括對雲端託管政策的政策語法驗證,並在
--dryrun
模式下執行這些政策,以檢查識別哪些資源。如果沒有錯誤,下一個任務會提醒管理員檢閱變更,並核准成員帳戶中的部署。
技術堆疊
AWS CDK
CodeBuild
CodeCommit
CodePipeline
IAM
Cloud Custodian
自動化和擴展
AWS CDK 管道模組佈建 CI/CD 管道,除了使用AWS CloudFormation 堆疊部署AWS資源之外 CodeBuild,還使用 CodePipeline 協調建置和測試原始碼。您可以針對組織中的所有成員帳戶和區域使用此模式。您也可以擴展Roles creation
堆疊,在成員帳戶中部署其他IAM角色。
工具
AWS 雲端開發套件 (AWSCDK) 是一種軟體開發架構,用於在程式碼中定義雲端基礎設施,並透過 佈建雲端基礎設施AWS CloudFormation。
AWS 命令列界面 (AWSCLI) 是一種開放原始碼工具,可讓您使用命令列 shell 中的命令來與 AWS服務互動。
AWS CodeBuild是雲端中全受管的建置服務。
AWS CodeCommit 是一種版本控制服務,可用來私下存放和管理資產。
AWS CodePipeline 是一種持續交付的服務,讓您能夠將發行軟體所需的步驟模型化、視覺化和自動化。
AWS Identity and Access Management 是一種 Web 服務,可協助您安全地控制對 AWS 資源的存取。
Cloud Custodian
是一種工具,可將大多數組織用來管理公有雲端帳戶的數十種工具和指令碼統一為單一開放原始碼工具。 Node.js
是在 Google Chrome 的 V8 JavaScript engine 上建置的 JavaScript 執行期。
Code
如需此模式中使用的模組、帳戶函數、檔案和部署命令的詳細清單,請參閱 devops-cdk-cloudcustodian.zip
檔案中的 README
檔案 (已連接)。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
設定 CodeCommit 儲存庫。 |
如需詳細資訊,請參閱 AWS CodeCommit 文件中的建立 CodeCommit 儲存庫。 | 開發人員 |
安裝必要的工具。 | 使用 如需詳細資訊,請參閱 AWS CDK 文件AWS中 入門CDK的先決條件一節。 | 開發人員 |
安裝所需的AWSCDK套件。 |
下列套件是 的必要AWSCDK套件,並包含在
| 開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
更新所需的變數。 | 在 CodeCommit 儲存庫的根資料夾中開啟
| 開發人員 |
使用成員帳戶資訊更新 account.yml 檔案。 | 若要針對多個帳戶執行 c7n-org Cloud Custodian
| 開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
提升安全帳戶。 | 執行下列命令,
| 開發人員 |
選項 1 - 自動引導成員帳戶。 | 如果 如有需要,您可以使用您可以從安全帳戶擔任 新增至 | 開發人員 |
選項 2 - 手動引導成員帳戶。 | 雖然我們不建議使用此方法,但您可以將 的值設定為
重要請確定您使用可從安全帳戶擔任的角色名稱來更新 您也可以使用其他方法來引導成員帳戶,例如使用 AWS CloudFormation。如需詳細資訊,請參閱 AWS CDK 文件中的引導。 | 開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
在成員帳戶中建立IAM角色。 | 執行下列命令來部署
| 開發人員 |
部署雲端託管管道堆疊。 | 執行下列命令來建立部署到安全帳戶的雲端託管
| 開發人員 |
相關資源
附件
若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip