AWS Config
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

为 AWS Config 制定自定义规则

完成以下程序创建自定义规则。要创建自定义规则,您首先要创建一个 AWS Lambda 函数,其中包含该规则的评估逻辑。然后,将该函数与您在 AWS Config 创建的自定义规则关联。

为自定义 Config 规则创建 AWS Lambda 函数

Lambda 函数是您上传到 AWS Lambda 的自定义代码,由事件源发布给它的事件调用。如果 Lambda 函数与 Config 规则关联,那么 AWS Config 会在发生触发规则的情况时调用该函数。之后,Lambda 函数会评估由 AWS Config 发送的配置信息,并返回评估结果。有关 Lambda 函数的更多信息,请参阅 AWS Lambda Developer Guide 中的函数和事件源

您可以使用 AWS Lambda 支持的编程语言为自定义规则创建一个 Lambda 函数。为简化这一任务,您可以自定义一个 AWS Lambda 蓝图,或者重复使用 AWS Config Rules GitHub 存储库中的示例函数。

AWS Lambda 蓝图

AWS Lambda 控制台可以提供示例函数或蓝图,您可以通过添加自己的评估逻辑来对其进行自定义。当您创建函数时,您可以选择以下蓝图之一:

  • config-rule-change-triggered – 在您的 AWS 资源配置发生更改时触发。

  • config-rule-periodic – 按照您选择的频率触发 (例如,每 24 小时)。

AWS Config Rules 的 GitHub 存储库

我们在 GitHub 上提供了一个自定义规则示例函数的公开存储库,GitHub 是一项基于网络的代码托管和共享服务。示例函数由 AWS 社区开发和提供。如果想使用示例函数,您可以将其代码复制到新的 AWS Lambda 函数中。要查看存储库,请访问 https://github.com/awslabs/aws-config-rules/

为您的自定义规则创建函数

  1. 通过以下网址登录 AWS 管理控制台并打开 AWS Lambda 控制台:https://console.amazonaws.cn/lambda/

  2. 在 AWS 管理控制台菜单上,验证区域选择器是否设置为支持 AWS Config 规则的区域。有关支持区域的列表,请参阅 Amazon Web Services 一般参考 中的 AWS Config 区域和终端节点

  3. 选择 Create a Lambda function

  4. Select blueprint 页面,您可以为 AWS Config 规则选择一个蓝图函数并继续操作,也可以选择 Skip,不使用蓝图。

  5. Configure triggers 页面上,选择 Next

  6. Configure function 页面,键入一个名称和描述。

  7. 对于 Runtime,请选择您编写函数时使用的编程语言。

  8. 对于 Code entry type,请选择您偏好的条目类型。如果您正在使用蓝图,请保留 Edit code inline

  9. 用您选择的代码条目类型要求的方法提供您的代码。如果您正在使用蓝图,那么函数代码由代码编辑器提供,且您可以自定义代码,以使其包含您自己的评估逻辑。当 AWS Config 调用您的函数时,您的代码可以评估它提供的事件数据:

    • 对于基于 config-rule-change-triggered 蓝图的函数或由配置更改触发的函数,事件数据是更改的 AWS 资源的配置项或过大配置项对象。

    • 对于基于 config-rule-periodic 蓝图的函数,或按照您选择的频率触发的函数,事件数据是一个 JSON 对象,包括有关评估触发时间的信息。

    • 对于这两种类型的函数,AWS Config 会传递 JSON 格式的规则参数。您在 AWS Config 中创建自定义规则时,可以定义传递哪个规则参数。

    • 有关 AWS Config 在调用您的函数时发布的事件的示例,请参阅 AWS Config 规则的示例事件

  10. 对于 Handler,请为您的函数指定处理程序。如果您正在使用蓝图,请保留默认值。

  11. 对于 Role,请选择 Create new role from template(s)

  12. 对于 Role name,请输入名称。

  13. 对于 Policy templates,请选择 AWS Config Rules permission

  14. Configure function 页面,选择 Next

  15. Review 页面,验证您的函数的详细信息,然后选择 Create function

在 AWS Config 中创建自定义规则

使用 AWS Config 创建自定义规则并将其与 Lambda 函数关联。

创建自定义规则

  1. 使用 https://console.amazonaws.cn/config/ 打开 AWS Config 控制台。

  2. 在 AWS 管理控制台菜单中,验证区域选择器中的区域是否与您为自定义规则创建 AWS Lambda 函数时使用的区域相同。

  3. Rules 页面,选择 Add rule

  4. Add rule 页面,选择 Add custom rule

  5. Configure rule 页面,键入一个名称和描述。

  6. 对于 AWS Lambda function ARN,请指定 AWS Lambda 分配给您的函数的 ARN。

    注意

    您在此步骤中指定的 ARN 不能包含 $LATEST 限定词。您指定的 ARN 可以不带有版本限定词,也可以带有除 $LATEST 之外的任何限定词。AWS Lambda 支持函数版本控制功能,并为每个版本都分配一个带有限定词的 ARN。AWS Lambda 对最新版本使用 $LATEST 限定词。

  7. 对于 Trigger type,请选择下列一个或两个选项:

    • Configuration changes – AWS Config 在检测到配置更改时调用您的 Lambda 函数。

    • Periodic – AWS Config 按照您选择的频率调用您的 Lambda 函数 (例如,每 24 小时)。

  8. 如果您的规则的触发类型包括 Configuration changes,请针对 Scope of changes 指定以下选项之一以便 AWS Config 按其调用您的 Lambda 函数:

    • Resources – 当与指定资源类型 (或类型和标识符) 匹配的资源被创建、更改或删除时。

    • Tags – 当具有指定标签的资源被创建、更改或删除时。

    • All changes – 当 AWS Config 记录的资源被创建、更改或删除时。

  9. 如果您的规则的触发类型包括 Periodic,请指定 Frequency,以便 AWS Config 按其调用您的 Lambda 函数。

  10. Rule parameters 部分,指定您的 AWS Lambda 函数评估的任何规则参数及需要的值。

  11. 选择 Save。您的新规则将显示在 Rules 页面中。

    在 AWS Config 从您的 AWS Lambda 函数接收评估结果之前,Compliance 将会显示 Evaluating...。如果规则和函数按预期运行,结果汇总将在几分钟后显示。您可以使用刷新按钮更新结果。

    如果规则或函数没有按预期运行,您可能会在 Compliance 中看到以下一项内容:

    • No results reported - AWS Config 根据规则评估了您的资源。规则不适用于其范围内的 AWS 资源,指定的资源已删除,或者评估规则已删除。要获取评估结果,请更新规则、更改其范围或者选择 Re-evaluate

      如果规则不报告评估结果,该消息可能也会出现。

    • No resources in scope - AWS Config 无法对照规则来评估您记录的 AWS 资源,因为您的任何资源都不在规则范围内。您可以在 Settings 页面选择 AWS Config 要记录哪些资源。

    • Evaluations failed - 如需获得可帮助您确定问题的信息,请选择规则名称以打开其详细页面并查看错误消息。

注意

当您使用 AWS Config 控制台创建自定义规则时,系统会自动为您创建适当权限。如果您使用 AWS CLI 创建自定义规则,您需要使用 aws lambda add-permission 命令授予 AWS Config 权限用以调用您的 Lambda 函数。有关更多信息,请参阅 AWS Lambda Developer Guide 中的对 AWS Lambda 使用基于资源的策略 (Lambda 函数策略)

评估其他资源类型

您可以创建自定义规则来针对 AWS Config 不记录的资源类型运行评估。如果您想评估 AWS Config 目前未记录的其他资源类型的合规性,如 Amazon Glacier 文件库或 Amazon SNS 主题,这很有用。有关您可以使用自定义规则评估的其他资源类型的列表,请参阅 AWS 资源类型参考

示例

  1. 您想在您的账户中评估 Amazon Glacier 文件库。AWS Config 目前未记录 Amazon Glacier 文件库资源。

  2. 您可以创建一个 AWS Lambda 函数,评估您的 Amazon Glacier 文件库是否符合您的账户要求。

  3. 创建一个名为 evaluate-glacier-vaults 的自定义规则,然后将您的 AWS Lambda 函数分配给该规则。

  4. AWS Config 调用您的 Lambda 函数,然后按照您的规则评估 Amazon Glacier 文件库。

  5. AWS Config 返回评估结果,您可以查看您的规则的合规性结果。

注意

您可以查看 AWS Config 时间线中的配置详细信息,并在 AWS Config 支持的资源的 AWS Config 控制台中查找资源。如果您配置 AWS Config 以记录所有资源类型,则新添加的支持资源将被自动记录。有关更多信息,请参阅 支持的资源、配置项和关系