添加 Amazon Config 规则 - Amazon Config
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

添加 Amazon Config 规则

使用 Amazon Config 控制台或 Amazon SDK 添加规则。

添加规则(控制台)

规则页面在一个表中显示您的规则及其当前的合规性结果。在 根据规则完成对您的资源的评估前,每个规则的结果都显示为 Evaluating...Amazon Config。您可以使用刷新按钮更新结果。当 Amazon Config 完成评估时,您可以看到合规或不合规的规则和资源类型。有关更多信息,请参阅 使用 Amazon Config 查看 Amazon 资源的合规信息和评估结果

注意

添加新规则时,Amazon Config 会评估资源清单中的适用资源,包括以前记录的资源。例如,如果您记录了 AWS::IoT::Policy 资源,但后来将其排除在记录范围之外,Amazon Config 会在清单中保留初始配置项(CI)。当这些 CI 的关联资源类型被排除在记录范围之外时,Amazon Config 将不再更新这些 CI,但会保留它们上次记录的状态,并在您添加适用的规则时对它们进行评估。

Amazon Config 不会评估资源清单之外的资源。例如,如果您添加 规则,但未记录 AWS::Amplify::Branch 资源,之前也从未记录过这些资源,则 Amazon Config 将无法评估您账户中的 Amazon Amplify 分支是否合规。

有关更多信息,请参阅 使用 Amazon Config 记录 Amazon 资源

添加一项规则
  1. 登录到 Amazon Web Services 管理控制台,然后通过以下网址打开 Amazon Config 控制台:https://console.aws.amazon.com/config/home

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

  3. 在左侧导航窗格中,选择 Rules

  4. Rules 页面,选择 Add rule

  5. 指定规则类型页面上,通过完成以下步骤指定规则类型:

    1. 在搜索字段中键入内容,以便按规则名称、描述和标签筛选托管规则列表。例如,键入 EC2 可返回评估 EC2 资源类型的规则,或者键入 periodic 可返回定期触发的规则。

    2. 您还可以创建自己的自定义规则。选择使用 Lambda 创建自定义规则使用 Guard 创建自定义规则,然后按照创建 Amazon Config 自定义 Lambda 规则创建 Amazon Config 自定义策略规则中的步骤进行操作。

  6. 创建规则页面上,通过完成以下步骤来配置规则:

    1. 对于 Name,请输入一个唯一的规则名称。

    2. 对于描述,键入规则的描述。

    3. 对于评估模式,请选择在资源创建和管理过程中 Amazon Config 何时评估您的资源。根据规则,Amazon Config 可以在部署资源之前、部署资源之后或同时在这两个阶段评估资源配置。

      1. 选择开启主动评估,以允许您在部署资源之前对资源的配置设置进行评估。

        开启主动评估后,您可以使用 StartResourceEvaluation API 和 GetResourceEvaluationSummary API 来检查您在这些命令中指定的资源是否会被您所在区域的账户中的主动规则标记为 NON_COMPLIANT。

        有关使用此命令的更多信息,请参阅使用 Amazon Config 规则评估您的资源。有关支持主动评估的托管规则列表,请参阅按评估模式列出的 Amazon Config 托管规则列表

      2. 选择开启侦查评估以评估您的现有资源的配置设置。

        对于侦查评估,有两种类型的触发器:在配置发生更改时定期

        1. 如果您的规则的触发器类型包括配置更改,请为更改范围指定以下选项之一,以便 Amazon Config 按其调用您的 Lambda 函数:

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

          • 标签 – 在创建、更改或删除包含指定标签的资源时。

          • 所有更改 – 在创建、更改或删除 Amazon Config 记录的资源时。

          Amazon Config 在检测到与规则的范围匹配的资源发生更改时运行评估。您可以使用范围来定义哪些资源启动评估。

        2. 如果您的规则的触发器类型包括定期,请指定频率,以便 Amazon Config 按其调用您的 Lambda 函数。

    4. 对于参数,如果您的规则包含参数,可以自定义所提供的键的值。参数是资源在被视为符合规则之前必须遵守的属性。

  7. 审核和创建页面上,查看您的所有选择,然后再将规则添加到您的。Amazon Web Services 账户如果规则没有按预期运行,您可能会在合规性中看到以下内容之一:

    • No results reported(未报告任何结果)- Amazon Config 针对规则评估了您的资源。规则不适用于其范围内的 Amazon 资源,指定的资源已删除,或者评估规则已删除。要获取评估结果,请更新规则、更改其范围或者选择 Re-evaluate

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

    • No resources in scope(范围中没有资源)- Amazon Config 无法对照规则来评估您记录的 Amazon 资源,因为您的任何资源都不在规则范围内。要获得评估结果,请编辑规则并更改其范围,或者使用设置页面添加 Amazon Config 要记录的资源。

    • Evaluations failed(评估失败)- 有关可帮助您确定问题的信息,请选择规则名称以打开其详细信息页面并查看错误消息。

添加规则(Amazon SDK)

以下代码示例演示如何使用。PutConfigRule

CLI
Amazon CLI

添加 Amazon 托管 Config 规则

以下命令提供用于添加 Amazon 托管 Config 规则的 JSON 代码:

aws configservice put-config-rule --config-rule file://RequiredTagsForEC2Instances.json

RequiredTagsForEC2Instances.json 是一个包含规则配置的 JSON 文件:

{ "ConfigRuleName": "RequiredTagsForEC2Instances", "Description": "Checks whether the CostCenter and Owner tags are applied to EC2 instances.", "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Instance" ] }, "Source": { "Owner": "AWS", "SourceIdentifier": "REQUIRED_TAGS" }, "InputParameters": "{\"tag1Key\":\"CostCenter\",\"tag2Key\":\"Owner\"}" }

对于 ComplianceResourceTypes 属性,此 JSON 代码将范围限制为 AWS::EC2::Instance 类型的资源,因此,Amazon Config 将仅根据规则评估 EC2 实例。由于该规则是托管规则,因此 Owner 属性设置为,AWSSourceIdentifier 属性设置为规则标识符。REQUIRED_TAGS对于 InputParameters 属性,指定了规则所需的标签键 CostCenterOwner

如果命令成功,则 Amazon Config 不返回任何输出。要验证规则配置,请运行 describe-config-rules 命令并指定规则名称。

添加客户托管的 Config 规则

以下命令提供用于添加客户托管 Config 规则的 JSON 代码:

aws configservice put-config-rule --config-rule file://InstanceTypesAreT2micro.json

InstanceTypesAreT2micro.json 是一个包含规则配置的 JSON 文件:

{ "ConfigRuleName": "InstanceTypesAreT2micro", "Description": "Evaluates whether EC2 instances are the t2.micro type.", "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Instance" ] }, "Source": { "Owner": "CUSTOM_LAMBDA", "SourceIdentifier": "arn:aws:lambda:us-east-1:123456789012:function:InstanceTypeCheck", "SourceDetails": [ { "EventSource": "aws.config", "MessageType": "ConfigurationItemChangeNotification" } ] }, "InputParameters": "{\"desiredInstanceType\":\"t2.micro\"}" }

对于 ComplianceResourceTypes 属性,此 JSON 代码将范围限制为 AWS::EC2::Instance 类型的资源,因此,Amazon Config 将仅根据规则评估 EC2 实例。由于此规则是客户托管规则,因此,Owner 属性设置为,CUSTOM_LAMBDASourceIdentifier 属性设置为 Amazon Lambda 函数的 ARN。SourceDetails 对象为必填项。当 Amazon Config 调用 Amazon Lambda 函数来根据规则评估资源时,为 InputParameters 属性指定的参数将传递给该函数。

如果命令成功,则 Amazon Config 不返回任何输出。要验证规则配置,请运行 describe-config-rules 命令并指定规则名称。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutConfigRule

Python
适用于 Python 的 SDK(Boto3)
注意

查看 GitHub,了解更多信息。在 Amazon 代码示例存储库中查找完整示例,了解如何进行设置和运行。

class ConfigWrapper: """ Encapsulates AWS Config functions. """ def __init__(self, config_client): """ :param config_client: A Boto3 AWS Config client. """ self.config_client = config_client def put_config_rule(self, rule_name): """ Sets a configuration rule that prohibits making Amazon S3 buckets publicly readable. :param rule_name: The name to give the rule. """ try: self.config_client.put_config_rule( ConfigRule={ "ConfigRuleName": rule_name, "Description": "S3 Public Read Prohibited Bucket Rule", "Scope": { "ComplianceResourceTypes": [ "AWS::S3::Bucket", ], }, "Source": { "Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED", }, "InputParameters": "{}", "ConfigRuleState": "ACTIVE", } ) logger.info("Created configuration rule %s.", rule_name) except ClientError: logger.exception("Couldn't create configuration rule %s.", rule_name) raise
  • 有关 API 详细信息,请参阅《Amazon SDK for Python(Boto3)API 参考》中的 PutConfigRule