使用 Troposphere 生成包含 AWS Config 托管规则的 AWS CloudFormation 模板 - AWS Prescriptive Guidance

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

使用 Troposphere 生成包含 AWS Config 托管规则的 AWS CloudFormation 模板

创建者:Lucas Nation (AWS) 和 Freddie Wilson (AWS)

环境:生产

技术: DevOps;管理和治理;安全、身份、合规

工作负载:Microsoft;开源

AWS 服务:AWS Config;AWS CloudFormation

Summary

许多组织使用 AWS Config 托管规则来评估其 Amazon Web Services (AWS) 资源是否符合常见的最佳实践。但是,维护这些规则可能很耗时,这种模式可以帮助您利用 Python 库 Troposphere 生成和管理 AWS Config 托管规则。

该模式使用 Python 脚本将包含 AWS 托管规则的 Microsoft Excel 电子表格转换为 AWS CloudFormation 模板,从而帮助您管理 AWS Config 托管规则。Troposphere 充当基础设施即代码(IaC),这意味着您可以使用托管规则更新 Excel 电子表格,而不是使用 JSON 或 YAML 格式的文件。然后,您可以使用该模板启动一个 AWS CloudFormation 堆栈,该堆栈在您的 AWS 账户中创建和更新托管规则。

AWS CloudFormation 模板使用 Excel 电子表格定义每个 AWS Config 托管规则,并帮助您避免在 AWS 管理控制台中手动创建单个规则。该脚本将每个托管规则的参数默认为一个空字典,作用域的ComplianceResourceTypes默认值为THE_RULE_IDENTIFIER.template file 有关规则标识符的更多信息,请参阅 AWS Config 文档中的使用 AWS CloudFormation 模板创建 AWS Config 托管规则

先决条件和限制

先决条件

操作说明

任务描述所需技能
更新 Excel 电子表格示例。

下载示例 excel_config_rules.xlsx Excel 电子表格(附件),并将其标记为要使用的 AWS Config 托管规则 Implemented。 

标记为的规则Implemented将添加到 AWS CloudFormation 模板中。

开发人员
(可选)使用 AWS Config 规则参数更新 config_rules_params.json 文件。

某些 AWS Config 托管规则需要参数,应使用 --param-file 选项将其作为 JSON 文件传递到 Python 脚本。例如,access-keys-rotated 托管规则使用以下 maxAccessKeyAge 参数:

{ "access-keys-rotated": { "InputParameters": { "maxAccessKeyAge": 90 } } }

在此示例参数中,maxAccessKeyAge 设置为 90 天。该脚本读取参数文件并添加它找到的任何 InputParameters

开发人员
(可选)使用 AWS Config 更新 config_rules_params.json 文件。 ComplianceResourceTypes

默认情况下,Python 脚本会从 AWS 定义的模板中检索 ComplianceResourceTypes。如果您想覆盖特定 AWS Config 托管规则范围,则需要使用 --param-file 选项将其作为 JSON 文件传递给 Python 脚本。

例如,以下示例代码显示了如何将 ec2-volume-inuse-checkComplianceResourceTypes 设置为 ["AWS::EC2::Volume"] 列表:

{ "ec2-volume-inuse-check": { "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Volume" ] } } }
开发人员
任务描述所需技能
从 requirements.txt 文件处安装 pip 程序包。

下载 requirements.txt 文件(附件),然后在 IDE 中运行以下命令来安装 Python 程序包:

pip3 install -r requirements.txt

开发人员
运行 Python 脚本。
  1. aws_config_rules.py 文件(附件)下载到本地计算机上。

  2. 运行 - python3 aws_config_rules.py --ou <OU_NAME>命令。注意--ou 定义要在 Excel 电子表格中选择的 OU 列。

您还可以添加以下可选参数:

  • --config-rule-option – 定义要从 Excel 电子表格中选择的规则。默认值为 Implemented 参数。

  • --excel-file – Excel 电子表格的路径。默认值为 aws_config_rules.xlsx

  • --param-file – 参数 JSON 文件的路径。默认值为 config_rules_params.json

  • --max-execution-frequency – 定义评估 AWS Config 托管规则的频率。选项是 One_HourThree_HoursSix_HoursTwelve_HoursTwentyFour_Hours。默认值为 TwentyFour_Hours

开发人员
任务描述所需技能
启动 AWS CloudFormation 堆栈。
  1. 登录 AWS 管理控制台,打开 AWS CloudFormation 控制台,然后选择创建堆栈。

  2. 指定模板页面上,选择上传模板文件,然后上传您的 AWS CloudFormation 模板。 

  3. 指定堆栈名称,然后选择下一步

  4. 指定标签,然后选择下一步

  5. 选择创建堆栈

开发人员

附件

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