在多区域、多账户组织中设置AWS CloudFormation 偏差检测 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在多区域、多账户组织中设置AWS CloudFormation 偏差检测

由 Ram Kandaswamy 创作 () AWS

摘要

Amazon Web Services (AWS) 上的客户通常在寻找一种有效的方法来检测资源配置不匹配情况,包括 AWS CloudFormation 堆栈中的偏差,并尽快修复这些问题。使用时 AWS Control Tower 尤其如此。

此模式提供了一种规范的解决方案,通过使用整合的资源配置更改并根据这些更改生成结果来有效地解决问题。该解决方案专为在多个 AWS 区域、多个账户或两者组合中创建多个 AWS CloudFormation 堆栈的场景而设计。该解决方案目标包括以下各项:

  • 简化偏差检测过程

  • 设置通知和警报

  • 设置合并报告

先决条件和限制

先决条件

  • AWS Config 已在必须监控的所有地区和账户中启用

限制

  • 生成的报告仅支持逗号分隔值 (CSV) 和JSON输出格式。

架构

下图显示了使用多个账户的 AWS Organizations 设置。 AWS Config 规则在账户之间进行通信。 

该工作流程包括以下步骤:

监控两个 Organizations 账户中的堆栈的五步流程AWS。
  1. 该 AWS Config 规则可检测偏差。

  2. 在其他账户中发现的漂移检测结果将发送到管理账户。

  3. Amazon CloudWatch 规则调用一个 AWS Lambda 函数。

  4. Lambda 函数查询 AWS Config 规则以获取聚合结果。

  5. Lambda 函数通知亚马逊简单通知服务 (A SNS mazon),后者会发送有关偏差的电子邮件通知。

自动化和扩缩

此处介绍的解决方案可以针对其他区域和账户进行扩展。

工具

AWS 服务

AWS Config提供了中 AWS 资源配置的详细视图 AWS 账户。这些信息包括资源之间的关联方式以及资源以前的配置方式,让您了解资源的配置和关系如何随着的时间的推移而更改。

Amazon CloudWatch 可帮助您实时监控您的 AWS 资源和运行的应用程序 AWS 的指标。

AWS Lambda 是一项计算服务,可帮助您运行代码,无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。

亚马逊简单通知服务 (AmazonSNS) 可帮助您协调和管理发布者与客户之间的消息交换,包括网络服务器和电子邮件地址。

操作说明

任务描述所需技能

创建聚合器。

  1. 登录 AWS Management Console 并通过 https://console.aws.amazon.com/config 打开 AWS Config 控制台。

  2. 在管理账户中创建聚合器。

  3. 确保已开启数据复制,以便 AWS Config 可以从源帐户获取数据。

  4. 选择所有适用的地区和账户。您可以根据选择帐户 AWS Organizations。我们建议采用这种方法,因为组织中的新账户会自动成为聚合器的一部分。

云架构师

创建 AWS 托管规则。

添加cloudformation-stack-drift-detection-check AWS托管规则。该规则需要一个参数值:cloudformationArn

输入有权检测堆栈偏差的IAM角色 Amazon 资源名称 (ARN)。该角色必须具有能够代入该角色 AWS Config 的信任策略。

云架构师

创建聚合器高级查询部分。

若要从多个来源获取偏差堆栈,请创建以下查询:

SELECT resourceId, configuration.driftInformation.stackDriftStatus WHERE resourceType = 'AWS::CloudFormation::Stack'  AND configuration.driftInformation.stackDriftStatus IN ('DRIFTED')

云架构师、开发人员

自动运行查询和发布。

  1. 使用附加的代码创建 Lambda 函数。Lambda 会将结果发布到 Lambda 函数中作为环境变量提供的SNS主题。

  2. 要接收提醒,请创建该SNS主题的电子邮件订阅。

云架构师、开发人员

创建 CloudWatch 规则。

创建基于计划的 CloudWatch 规则来调用 Lambda 函数,该函数负责发出警报。

云架构师

相关资源

资源

其他信息

注意事项

我们建议使用此模式中提供的解决方案,而不是使用涉及按特定间隔API调用的自定义解决方案,以便在每个 CloudFormation 堆栈或堆栈集上启动漂移检测。在特定内部使用API调用的自定义解决方案可能会导致大量API呼叫并影响性能。由于API呼叫的数量,可能会出现限制。另一潜在问题是,如果仅根据计划识别资源更改,则检测会出现延迟。

由于堆栈集是由堆栈组成的,因此您可以使用此解决方案。堆栈实例详细信息也作为解决方案的一部分提供。

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip