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

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

使用 Amazon SDK 制定 Amazon Config 规则

以下代码示例展示了如何设置 Amazon Config 规则。

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_LAMBDA,并且该SourceIdentifier属性设置为 Lambda 函数 Amazon 的 ARN。SourceDetails 对象为必填项。当 Confi Amazon g 调用 Amazon Lambda 函数来根据规则评估资源时,为该InputParameters属性指定的参数将传递给 Lambda 函数。

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

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

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

还有更多相关信息 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 的详细信息,请参阅适用PutConfigRulePython 的 Amazon SDK (Boto3) API 参考

有关 S Amazon DK 开发者指南和代码示例的完整列表,请参阅Amazon Config 与 Amazon SDK 一起使用。本主题还包括有关入门的信息以及有关先前的 SDK 版本的详细信息。