自动报告一段时间内不合规的不合规资源的 亚马逊云科技 Config

亚马逊云科技 Config 会评估您的 亚马逊云科技 资源的配置设置。您可以通过创建 亚马逊云科技 Config 规则 来实现此目的 ,这些规则代表您的理想配置设置。亚马逊云科技 Config 提供名为 亚马逊云科技 托管规则的可自定义预定义规则 ,以帮助您入门。亚马逊云科技 Config 会持续跟踪您的资源中发生的配置更改,但它会检查这些更改是否违反了您的规则中的任何条件。如果资源违反规则,亚马逊云科技 Config 会将该资源和规则标记为不合规。

在这篇文章中,我们提供了一种解决方案,可用于自动报告一段时间内不合规的 亚马逊云科技 Config 资源。您可以选择生成报告的日期和时间,并获取 30 天以上的不合规资源列表。使用此解决方案,您可以避免因资源的短暂变化而收到通知。

亚马逊云科技 Config 的工作原理

亚马逊云科技 Config 是一项服务,使您能够评估、审计和评估您的 亚马逊云科技 资源的配置。亚马逊云科技 Config 可跟踪配置更改并保留长达 7 年的历史记录。Config 还提供跨账户和区域的资源配置和合规性状态的汇总视图。如果您使用的是 亚马逊云科技 Config 规则,则 亚马逊云科技 Config 会持续评估您的 亚马逊云科技 资源配置以了解所需的设置。根据规则,亚马逊云科技 Config 将评估您的资源以响应配置更改或定期进行评估。如果资源违反了规则的条件,亚马逊云科技 Config 会将该资源和规则标记为不合规。有关更多详细信息,请参阅 亚马逊云科技 Con fig 入门 。图 1 描述了 亚马逊云科技 Config 的工作流程

Figure 1. Workflow of AWS Config

图 1。亚马逊云科技 Config 的工作流程

解决方案概述:

这篇博文中的解决方案包括用于对 亚马逊云科技 Config 聚合 器运行查询的无服务器架构。A mazon Event Bridge 规则会在每周开始时触发 亚马逊云科技 Lambda 函数,从不合规规则中查找在 30 天内未修复的不合规资源列表。
下图提供了我们解决方案的端到端流程的架构:

Figure. Solution workflow diagram

图 2。解决方案工作流程图

  1. Lambda 函数将针对 亚马逊云科技 Config 运行查询,从而获取 30 天内不合规资源的列表。
  2. Lambda 函数将生成 CSV 报告,并使用 亚马逊简单电子邮件服务 (Amazon SES) 通过电子邮件 将其发送

先决条件:

在开始之前,请确保您对以下内容有基本的了解:

  • 按计划运行的亚马逊 EventBridge 规则
  • 亚马逊云科技 Config
  • 亚马逊云科技 Config 多账户多区域数据聚合
  • 亚马逊云科技 Lambda 函数
  • Python 和 Boto3
  • CDK 环境。

您还需要配置环境

  1. 亚马逊云科技 Config 和 亚马逊云科技 Config 记录器
  • 在您 的 亚马逊云科技 组织的所有账户 中启用 亚马逊云科技 Config 。你可以使用 亚马逊云科技 Systems Manager 快速设置 功能来帮助设置 亚马逊云科技 Config 记录器。配置记录器将检测您的资源配置的变化。
  1. 使用 亚马逊云科技 控制台设置聚合器
  • 配置 亚马逊云科技 Config 聚合器后,记下您的 亚马逊云科技 Config 聚合器名称。
  1. 设置亚马逊简单电子邮件服务
  • 设置亚马逊 SES 后,记下发件人的亚马逊 SES ARN 和电子邮件地址
  • 注意:如果要向 SES 中未经验证的地址发送电子邮件,则需要启用 SES 生产访问权限。
  1. 确保您安装了最新的 CDK CLI
  2. 确保下面有两个库
python -m pip install aws-cdk-lib
pip install async-timeout

解决方案演练

这篇文章中的 Python 代码是使用 亚马逊云科技 云开发套件 (亚马逊云科技 CDK) 编写的。要查看代码,请参阅关联的 GitHub 存储库 。如果您不熟悉 亚马逊云科技 CDK,请参阅 AW S CDK 入门

  1. 您将需要为堆栈提供以下参数值:
    • 聚合器 — 亚马逊云科技 Config 聚合器的名称。
    • seSarn — 亚马逊 SES arn。
    • 收件人-将获得 CSV 报告的电子邮件收件人。
    • 发件人-在 Amazon SES 上配置的电子邮件发件人。
    • 工作日-Lambda 将运行的周日 1-7 点或周日周六。
    • 小时 — Lambda 将运行的时间 (UTC)。
    • 分钟 — Lambda 将运行的分钟 (UTC)。
  1. 获取聚合器的不合规规则。
  • 在这篇博客文章中,我们首先使用 d escribe_aggregate_compliance_by_config_rules () API 来获取聚合器捕获的所有不合规规则 的列表。
  1. 获取不合规资源列表。
  • 对于捕获的每条不合规规则,我们使用 get_aggregate_compliance_details_by_config_rule API 运行查询,以获取不合规资源列表及其不合规状态的记录时间。
  1. 从不合规的资源列表中,我们使用 “记录时间” > 30 天参数对其进行进一步筛选
  2. 我们会创建一个 CSV 文件,其中包含在 30 天内的非投诉资源列表以及详细信息,并以 CSV 文件作为附件向收件人发送电子邮件。

解决方案部署:

  1. 确保您已登录 亚马逊云科技 管理控制台 ,并已配置您的 亚马逊云科技 CLI 证书
  2. 克隆解决方案存储库
git clone https://github.com/aws-samples/Config-report
  1. 导航到克隆存储库的 cdk 目录
cd Config-Report/config_report
  1. 运行 cdk 引导程序
cdk bootstrap
  1. 部署配置报告解决方案
cdk deploy ConfigReport --parameters Aggregator=<name of the aggregator> 
--parameters Recipient=<Recipient email address > --parameters Sender=<Sender
email address > --parameters Weekday=<Day of Week> --parameters Hour=<Hour of
the day> --parameters Minute=<Minute of the day> --parameters SESarn=<SES ARN> 

“cdk deploy” 命令添加了一个新的 亚马逊云科技 CloudFormation 模板,该模板创建了一个每周触发一次的 Lambda 函数。部署结束时,Lambda 函数将根据您选择的工作日自动触发。因此,您应该在收件人邮箱中获得 CSV 报告。

清理

为了避免重复收费,并在尝试本文中概述的解决方案后清理所有资源,请执行以下操作:

  1. 删除 亚马逊云科技 Config 聚合器
  2. 删除 亚马逊 SES
  3. 使用 cdk cli 和 cdk 销毁 命令删除 CloudFormation Stack。
Are you sure you want to delete: cdk-stack (y/n)? y
cdk-stack: destroying.......
DELETION OF RESOURCES....

 ✅  cdk-stack: destroyed

它不会删除引导命令创建的堆栈。如果您也想将其删除,可以从 亚马逊云科技 控制台 中删除 。

结论

在这篇博客文章中,我们演示了一个示例解决方案,该解决方案可以帮助您针对不合规超过 30 天的资源设置报告。您也可以修改代码以不同的频率运行此解决方案,或运行不同的查询。

作者简介:

Snehal Nahar

S nehal Nahar 是位于北卡罗来纳州夏洛特的 亚马逊云科技 的高级技术客户经理。她热衷于使用 亚马逊云科技 服务构建创新解决方案,以帮助客户实现其业务目标。她是安全和云运营专家。她喜欢与家人和朋友共度时光,玩棋盘游戏和看电视。

斯瓦拉·甘地·

斯瓦拉是 亚马逊云科技 身份解决方案团队的解决方案架构师。她致力于构建安全且可扩展的端到端身份解决方案。她对身份、安全和云领域充满热情。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。