本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Cloud Cust AWS odian 自动将 Systems Manager 的托管策略附加到EC2实例配置文件和 AWS CDK
由 Ali Asfour (AWS) 和 Aaron Lennon () 创作 AWS
环境:PoC 或试点 | 技术: DevOps; DevelopmentAndTesting; 管理和治理; 安全、身份、合规; 基础架构 | 工作负载:开源 |
AWS服务:亚马逊SNS;亚马逊;;SQSAWS CodeBuildAWS CodePipeline;S AWS ystems Manager;AWS CodeCommit |
Summary
您可以将亚马逊弹性计算云 (AmazonEC2) 实例与 Syst AWS ems Manager 集成,以自动执行操作任务并提供更多的可见性和控制力。要与 Systems Manager 集成,EC2实例必须安装一个 S AWSystems Manager SSM 代理(代理IAM),并在其实例配置文件上附加AmazonSSMManagedInstanceCore
AWS身份和访问管理 () 策略。
但是,如果您想确保所有EC2实例配置文件都附加了AmazonSSMManagedInstanceCore
策略,则在更新没有EC2实例配置文件的新实例或EC2具有实例配置文件但没有AmazonSSMManagedInstanceCore
策略的实例时可能会遇到困难。在多个 Amazon Web Services (AWS) 账户和AWS地区中添加此政策也可能很困难。
这种模式通过在您的AWS账户中部署三个 Cloud Custodian
第一个 Cloud Custodian 策略会检查是否有实例配置文件但没有该
AmazonSSMManagedInstanceCore
策略的现有EC2实例。然后附上AmazonSSMManagedInstanceCore
策略。第二个 Cloud Custodian 策略会检查没有EC2实例配置文件的现有实例,并添加附加了该
AmazonSSMManagedInstanceCore
策略的默认实例配置文件。第三个 Cloud Cust AWSodian 策略在您的账户中创建 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 Cloud Development Kit (AWSCDK) 和 Git)。您可以使用
install-prerequisites.sh
文件中的devops-cdk-cloudcustodian.zip
文件来安装这些工具。确保以根权限运行此文件。
限制
尽管这种模式可以在生产环境中使用,但请确保所有IAM角色和策略都符合组织的要求和政策。
软件包版本
云托管人版本 0.9 或更高版本
TypeScript 版本 3.9.7 或更高版本
Node.js 版本 14.15.4 或更高版本
npm
版本 7.6.1 或更高版本AWSCDK版本 1.96.0 或更高版本
架构
图表显示了以下工作流:
云托管人策略被推送到安全账户中的AWS CodeCommit 存储库。Amazon E CloudWatch vents 规则会自动启动AWS CodePipeline 管道。
管道从中获取最新的代码,并将其发送到由处理的持续集成 CodeCommit 和持续交付 (CI/CD) 管道的持续集成部分。AWS CodeBuild
CodeBuild 执行完整的 DevSecOps 操作,包括对 Cloud Custodian 策略进行策略语法验证,并在
--dryrun
模式下运行这些策略以检查识别了哪些资源。如果没有错误,则下一个任务会提醒管理员查看更改并批准向成员账户部署。
技术堆栈
AWS CDK
CodeBuild
CodeCommit
CodePipeline
IAM
Cloud Custodian
自动化和扩缩
pipelin AWS CDK es 模块提供了一个 CI/CD 管道,除了使用 CodePipeline 堆栈部署AWS资源外 CodeBuild,该管道还用于协调源代码的构建和测试。AWS CloudFormation 您可以对贵组织中的所有成员账户和区域使用此模式。您还可以扩展Roles creation
堆栈以在您的成员账户中部署其他IAM角色。
工具
AWSCloud Development Kit (AWSCDK) 是一个软件开发框架,用于在代码中定义云基础架构并通过它进行配置AWS CloudFormation。
AWSCommand Line Interface (AWSCLI) 是一个开源工具,可让您使用命令行外壳中的命令与AWS服务进行交互。
AWS CodeBuild是云端完全托管的生成服务。
AWS CodeCommit是一项版本控制服务,可用于私下存储和管理资产。
AWS CodePipeline是一项持续交付服务,可用于对发布软件所需的步骤进行建模、可视化和自动化。
AWSIdent@@ ity and Access Managem ent 是一项网络服务,可帮助您安全地控制对AWS资源的访问。
云托管人
是一种工具,可将大多数组织用于管理其公共云账户的数十种工具和脚本统一到一个开源工具中。 Node.js
是一个基于谷歌浏览器 V8 JavaScript 引擎构建的 JavaScript 运行时。
代码
有关此模式中使用的模块、账户函数、文件和部署命令的详细列表,请参阅 devops-cdk-cloudcustodian.zip
文件(附件)中的 README
文件。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
设置 CodeCommit 存储库。 |
有关这方面的更多信息,请参阅AWS CodeCommit 文档中的创建 CodeCommit 存储库。 | 开发人员 |
安装所需工具。 | 使用该 | 开发人员 |
安装所需的AWSCDK软件包。 |
以下软件包是必需的,AWSCDK并且包含在
| 开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
更新所需变量。 | 打开 CodeCommit 存储库根文件夹中的
| 开发人员 |
使用成员账户信息更新 account.yml 文件。 | 要对多个账户运行 c7n-org Cloud Custodian
| 开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
引导安全账户。 | 运行以下命令,使用
| 开发人员 |
选项 1 – 自动引导成员账户。 | 如果在 如果需要,您可以使用可以从安全账户中担任且具有引导所需权限的IAM角色进行更新 管线会自动引导添加到 | 开发人员 |
选项 2 – 手动引导成员账户。 | 尽管我们不建议使用这种方法,但您可以将
重要:请务必使用可以从安全账户担任 您也可以使用其他方法来引导成员帐户,例如,使用AWS CloudFormation。有关这方面的更多信息,请参阅文档中的AWSCDK引导。 | 开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
在成员账户中创建IAM角色。 | 运行以下命令部署
| 开发人员 |
部署云托管人管线堆栈。 | 运行以下命令以创建部署到安全账户的云托管人
| 开发人员 |
相关资源
附件
要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip