本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Cloud Custodian 和 自動將 Systems Manager 的AWS受管政策連接至EC2執行個體設定檔 AWS CDK
由 Ali Asfour (AWS) 和 Aaron Lennon (AWS) 建立
環境:PoC 或試行 | 技術: DevOps DevelopmentAndTesting;管理與治理;安全、身分、合規;基礎設施 | 工作負載:開放原始碼 |
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 Agent (SSM Agent) 和連接到其執行個體設定檔的 AmazonSSMManagedInstanceCore
AWS Identity and Access Management (IAM) 政策。
但是,如果您想要確保所有EC2執行個體設定檔都已連接AmazonSSMManagedInstanceCore
政策,則更新沒有執行個體設定檔的新執行個體,或沒有EC2執行個體設定檔但沒有AmazonSSMManagedInstanceCore
政策EC2的執行個體時,可能會面臨挑戰。在多個 Amazon Web Services (AWS) 帳戶和AWS區域之間新增此政策可能也很困難。
此模式透過在AWS帳戶中部署三個 Cloud Custodian
第一個 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 命令列介面 (AWS CLI),已安裝並設定。為了測試目的,您可以使用
aws configure
命令或設定環境變數AWSCLI來設定 。重要 :這不建議用於生產環境,建議您僅將此帳戶授予最低權限存取。如需詳細資訊,請參閱 IAM 文件中的授予最低權限。devops-cdk-cloudcustodian.zip
檔案 (已連接),已下載至本機電腦。熟悉 Python。
安裝和設定必要的工具 (Node.js、AWS雲端開發套件 (AWS) CDK和 Git)。您可以使用
devops-cdk-cloudcustodian.zip
檔案中install-prerequisites.sh
的檔案來安裝這些工具。請確定您使用根權限執行此檔案。
限制
雖然此模式可用於生產環境,但請確保所有IAM角色和政策都符合您組織的要求和政策。
套件版本
Cloud Custodian 0.9 版或更新版本
TypeScript 3.9.7 版或更新版本
Node.js 14.15.4 版或更新版本
npm
7.6.1 版或更新版本AWS CDK 1.96.0 版或更新版本
架構
該圖顯示以下工作流程:
雲端託管政策會推送到安全帳戶中的AWS CodeCommit 儲存庫。Amazon CloudWatch Events 規則會自動啟動AWS CodePipeline 管道。
管道會從 擷取最新的程式碼, CodeCommit 並將其傳送至由 處理的持續整合和持續交付 (CI/CD) 管道的持續整合部分AWS CodeBuild。
CodeBuild 會執行完整 DevSecOps 動作,包括對 Cloud Custodian 政策的政策語法驗證,並在
--dryrun
模式下執行這些政策,以檢查識別哪些資源。如果沒有錯誤,下一個任務會提醒管理員檢閱變更,並核准成員帳戶中的部署。
技術堆疊
AWS CDK
CodeBuild
CodeCommit
CodePipeline
IAM
Cloud Custodian
自動化和擴展
AWS CDK 管道模組提供 CI/CD 管道,除了使用AWS CloudFormation 堆疊部署AWS資源之外 CodeBuild,還使用 與 CodePipeline 協調建置和測試原始碼。您可以針對組織中的所有成員帳戶和區域使用此模式。您也可以擴展Roles creation
堆疊,在成員帳戶中部署其他IAM角色。
工具
AWS 雲端開發套件 (AWS CDK) 是一種軟體開發架構,用於在程式碼中定義雲端基礎設施,並透過 佈建雲端基礎設施AWS CloudFormation。
AWS 命令列介面 (AWS CLI) 是一種開放原始碼工具,可讓您使用命令列 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角色。 | 執行下列命令以部署
| 開發人員 |
部署 Cloud Custodian 管道堆疊。 | 執行下列命令,以建立部署到安全帳戶的 Cloud Custodian
| 開發人員 |
相關資源
附件
若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip