使用控制台为配置项创建事件数据存储 - AWS CloudTrail

使用控制台为配置项创建事件数据存储

您可以创建事件数据存储以包含 AWS Config 配置项目,并使用事件数据存储来调查对生产环境的不合规更改。通过事件数据存储,您可以将不合规的规则与跟更改相关的用户和资源关联起来。配置项目代表您的账户中存在的受支持的 AWS 资源的属性的时间点视图。每当 AWS Config 检测到其正在记录的资源类型发生更改时,它都会创建一个配置项目。AWS Config 还会在捕获配置快照时创建配置项目。

您可以同时使用 AWS Config 和 CloudTrail Lake 针对您的配置项目运行查询。您可以使用 AWS Config 基于单个 AWS 账户 和 AWS 区域 的配置属性或跨多个账户和区域的配置属性来查询 AWS 资源的当前配置状态。相比之下,您可以使用 CloudTrail Lake 跨不同数据源进行查询,如 CloudTrail 事件、配置项目和规则评估。CloudTrail Lake 查询涵盖所有 AWS Config 配置项目,包括资源配置和合规性历史记录。

为配置项目创建事件数据存储不会影响现有的 AWS Config 高级查询,或任何已配置的 AWS Config 聚合器。您可以使用 AWS Config 继续使用运行高级查询,以及使用 AWS Config 继续将历史记录文件传送到您的 S3 桶。

CloudTrail Lake 事件数据存储会产生费用。创建事件数据存储时,您可以选择要用于事件数据存储的定价选项。定价选项决定了摄取和存储事件的成本,以及事件数据存储的默认和最长保留期。有关 CloudTrail 定价的信息,请参阅 AWS CloudTrail 定价管理 CloudTrail Lake 成本

限制

以下限制适用于配置项目的事件数据存储。

  • 不支持自定义配置项目

  • 不支持使用高级事件选择器筛选事件

先决条件

在创建事件数据存储之前,请为所有账户和区域设置 AWS Config 记录。您可以使用 AWS Systems Manager 的 Quick Setup(快速设置)功能,快速创建由 AWS Config 支持的配置记录器。

注意

当 AWS Config 开始记录配置时,我们就会向您收取服务使用费。有关定价的更多信息,请参阅 AWS Config 定价。有关管理配置记录器的信息,请参阅《AWS Config 开发人员指南》中的管理配置记录器

此外,建议执行以下操作,但这些操作不是创建事件数据存储所必需的。

  • 设置 Amazon S3 桶以接收配置快照(按需)和配置历史记录。有关快照的更多信息,请参阅《AWS Config 开发人员指南》中的 Managing the Delivery Channel(管理传送通道)和 Delivering Configuration Snapshot to an Amazon S3 Bucket(将配置快照传送到 Amazon S3 桶)。

  • 指定您希望 AWS Config 评估所记录资源类型的合规性信息使用的规则。有几个适用于 AWS Config 的 CloudTrail Lake 示例查询需要 AWS Config 规则 评估您的 AWS 资源的合规性状态。有关 AWS Config 规则 的更多信息,请参阅《AWS Config 开发人员指南》中的使用 AWS Config 规则 评估资源

为配置项目创建事件数据存储

  1. 登录到 AWS Management Console,然后通过以下网址打开 CloudTrail 控制台:https://console.aws.amazon.com/cloudtrail

  2. 在导航窗格中,在 Lake 下,选择事件数据存储

  3. 选择 Create event data store(创建事件数据存储)。

  4. Configure event data store(配置事件数据存储)页面上的 General details(一般细节)中,输入事件数据存储的名称。名称为必填项。

  5. 选择您要用于事件数据存储的定价选项。定价选项决定了摄取和存储事件的成本,以及您的事件数据存储的默认和最长保留期。有关更多信息,请参阅 AWS CloudTrail 定价管理 CloudTrail Lake 成本

    可用选项如下:

    • 一年可延期保留定价 - 如果您希望每月摄取的事件数据少于 25TB,并且想要灵活的保留期(最长 10 年),一般建议采用此选项。在前 366 天(默认保留期)内,存储包含在摄取定价中,没有额外收费。366 天后,可按即用即付定价模式提供延长保留。这是默认选项。

      • 默认保留期:366 天

      • 最长保留期:3653 天

    • 七年期保留定价 - 如果您希望每月摄取的事件数据大于 25TB,并且需要最长 7 年的保留期,则建议采用此选项。保留包含在摄取定价中,没有额外费用。

      • 默认保留期:2557 天

      • 最长保留期:2557 天

  6. 指定事件数据存储的保留期。一年可延期保留定价选项的保留期可以介于 7 天到 3653 天(大约 10 年)之间,七年期保留定价选项的保留期可以介于 7 天到 2557 天(约七年)之间。

    CloudTrail Lake 通过检查事件的 eventTime 是否在指定的保留期内来确定是否保留该事件。例如,如果您将保留期指定为 90 天,CloudTrail 将移除 eventTime 超过 90 天的事件。

  7. (可选)要启用使用 AWS Key Management Service 的加密,请选择使用我自己的 AWS KMS key。选择 New(新建)将为您创建 AWS KMS key,选择 Existing(现有)将使用现有 KMS 密钥。在 Enter KMS alias(输入 KMS 别名)中,使用 alias/MyAliasName 格式指定别名。使用您自己的 KMS 密钥需要编辑您的 KMS 密钥政策,以允许加密和解密 CloudTrail 日志。有关更多信息,请参阅 为 CloudTrail 配置 AWS KMS 密钥策略。CloudTrail 还支持 AWS KMS 多区域密钥。有关多区域密钥的更多信息,请参阅 AWS Key Management Service 开发人员指南中的使用多区域密钥

    使用您自己的 KMS 密钥将产生用于加密和解密的 AWS KMS 费用。在将事件数据存储与 KMS 密钥关联后,将无法移除或更改 KMS 密钥。

    注意

    要为组织事件数据存储启用 AWS Key Management Service 加密,必须使用管理账户的现有 KMS 密钥。

  8. (可选)如果您想使用 Amazon Athena 对事件数据进行查询,请在 Lake 查询联合身份验证中选择启用。通过联合身份验证,您可以在 AWS Glue 数据目录中查看与事件数据存储相关的元数据,并在 Athena 中对事件数据运行 SQL 查询。通过存储在 AWS Glue 数据目录中的表元数据,Athena 查询引擎可以了解如何查找、读取和处理您要查询的数据。有关更多信息,请参阅 联合事件数据存储

    要启用 Lake 查询联合身份验证,请选择启用,然后执行以下操作:

    1. 选择是要创建新角色还是使用现有 IAM 角色。AWS Lake Formation 使用此角色管理联合事件数据存储的权限。当您使用 CloudTrail 控制台创建新角色时,CloudTrail 将自动创建一个具有所需权限的角色。如果您选择现有角色,请确保该角色的策略提供所需的最低权限

    2. 如果您在创建新角色,请输入名称来标识该角色。

    3. 如果您使用现有角色,请选择要使用的角色。角色必须存在于您的账户中。

  9. (可选)在 Tags(标签)部分中,您最多可以添加 50 个标签键对,以帮助您对事件数据存储的访问进行识别、排序和控制。要详细了解如何使用 IAM 策略以根据标签授权对事件数据存储的访问,请参阅示例:拒绝基于标签创建或删除事件数据存储的访问权限。有关如何在 AWS 中使用标签的更多信息,请参阅《标记 AWS 资源用户指南》中的 Tagging your AWS resources

  10. 选择下一步

  11. 选择事件页面上,选择 AWS 事件,然后选择配置项目

  12. CloudTrail 将事件数据存储资源存储在您创建该资源的区域中,但默认情况下,在数据存储中收集的配置项目来自有已启用记录的您账户所在的所有区域。(可选)您可以选择 Include only the current region in my event data store(在我的事件数据存储中仅包含当前区域),以便仅包含在当前区域中捕获的配置项目。如果不选择此选项,则您的事件数据存储将包含所有已启用记录的所在区域中的配置项目。

  13. 要让您的事件数据存储收集 AWS Organizations 组织中所有账户中的配置项目,请选择 Enable for all accounts in my organization(为我的组织中的所有账户启用)。您必须登录到组织的管理账户或委托管理员账户,才能创建为组织收集配置项目的事件数据存储。

  14. 选择 Next(下一步)以查看您的选择。

  15. Review and create(审核和重建)页面上,审核您的选择。选择 Edit(编辑)以对这节进行更改。当您准备好创建事件数据存储时,选择 Create event data store(创建事件数据存储)。

  16. 事件数据存储页面上的事件数据存储表中可以看到新的事件数据存储。

    从此时开始,事件数据存储将捕获配置项目。在创建事件数据存储之前出现的配置项目不会在该事件数据存储中。

示例查询

现在,您可以对新的事件数据存储运行查询。CloudTrail 控制台上的 Sample queries(示例查询)选项卡提供了示例查询,以帮助您入门。以下是一些可以针对配置项目事件数据存储运行的示例查询。

描述 查询
通过将配置项目事件数据存储与 CloudTrail 事件数据存储联接起来,查找哪个用户执行了导致不合规状态的操作。
SELECT element_at(config1.eventData.configuration, 'targetResourceId') as targetResourceId, element_at(config1.eventData.configuration, 'complianceType') as complianceType, config2.eventData.resourceType, cloudtrail.userIdentity FROM config_event_data_store_ID as config1 JOIN config_event_data_store_ID as config2 on element_at(config1.eventData.configuration, 'targetResourceId') = config2.eventData.resourceId JOIN cloudtrail_event_data_store_ID as cloudtrail on config2.eventData.arn = element_at(cloudtrail.resources, 1).arn WHERE element_at(config1.eventData.configuration, 'configRuleList') is not null AND element_at(config1.eventData.configuration, 'complianceType') = 'NON_COMPLIANT' AND cloudtrail.eventTime > '2022-11-14 00:00:00' AND config2.eventData.resourceType = 'AWS::DynamoDB::Table'
查找所有 AWS Config 规则,并返回过去一天内生成的配置项目中的合规性状态。
SELECT eventData.configuration, eventData.accountId, eventData.awsRegion, eventData.resourceName, eventData.resourceCreationTime, element_at(eventData.configuration,'complianceType') AS complianceType, element_at(eventData.configuration, 'configRuleList') AS configRuleList, element_at(eventData.configuration, 'resourceId') AS resourceId, element_at(eventData.configuration, 'resourceType') AS resourceType FROM config_event_data_store_ID WHERE eventData.resourceType = 'AWS::Config::ResourceCompliance' AND eventTime > '2022-11-22 00:00:00' ORDER BY eventData.resourceCreationTime DESC limit 10
查找按资源类型、账户 ID 和区域分组的 AWS Config 资源总数。
SELECT eventData.resourceType, eventData.awsRegion, eventData.accountId, COUNT (*) AS resourceCount FROM config_event_data_store_ID WHERE eventTime > '2022-11-22 00:00:00' GROUP BY eventData.resourceType, eventData.awsRegion, eventData.accountId
查找在特定日期生成的所有 AWS Config 配置项目的资源创建时间。
SELECT eventData.configuration, eventData.accountId, eventData.awsRegion, eventData.resourceId, eventData.resourceName, eventData.resourceType, eventData.availabilityZone, eventData.resourceCreationTime FROM config_event_data_store_ID WHERE eventTime > '2022-11-16 00:00:00' AND eventTime < '2022-11-17 00:00:00' ORDER BY eventData.resourceCreationTime DESC limit 10;

有关创建和编辑查询的更多信息,请参阅使用 CloudTrail 控制台创建或编辑查询

配置项目架构

下表描述了与配置项目记录中的架构元素相匹配的必需和可选架构元素。eventData 的内容由您的配置项目提供;其他字段在摄取后由 CloudTrail 提供。

CloudTrail 记录内容 中更详细地描述了 CloudTrail 事件记录内容。

摄取后由 CloudTrail 提供的字段
字段名称 输入类型 要求 描述
eventVersion 字符串 必需

AWS 事件格式的版本。

eventCategory 字符串 必需

事件类别。对于配置项目,有效值为 ConfigurationItem

eventType 字符串 必需

事件类型。对于配置项目,有效值为 AwsConfigurationItem

eventID 字符串 必需

事件的唯一 ID。

eventTime

字符串

必需

采用通用协调时间(UTC)的事件时间戳,格式为 yyyy-MM-DDTHH:mm:ss

awsRegion 字符串 必需

要为其分配事件的 AWS 区域。

recipientAccountId 字符串 必需

表示已收到此事件的 AWS 账户 ID。

附录

附录

可选

显示有关事件延迟原因的信息。如果现有事件中缺少信息,则附录块将包含缺失的信息,以及缺失信息的原因。

eventData 中的字段由您的配置项目提供
字段名称 输入类型 要求 描述
eventData

-

必需 eventData 中的字段由您的配置项目提供。
  • configurationItemVersion

字符串 可选

来自其来源的配置项目的版本。

  • configurationItemCaptureTime

字符串 可选

开始配置记录的时间。

  • configurationItemStatus

字符串 可选

配置项目状态。有效值为 OKResourceDiscoveredResourceNotRecorded ResourceDeletedResourceDeletedNotRecorded

  • accountId

字符串 可选

与资源关联的 12 位数字 AWS 账户 ID。

  • resourceType

字符串 可选

AWS 资源的类型。有关有效资源类型的更多信息,请参阅《AWS Config API 参考》中的 ConfigurationItem

  • resourceId

字符串 可选

资源的 ID(例如,sg-xxxxxx)。

  • resourceName

字符串 可选

资源的自定义名称(如果可用)。

  • arn

字符串 可选

与资源关联的 Amazon 资源名称(ARN)。

  • awsRegion

字符串

可选

资源所在的 AWS 区域。

  • availabilityZone

字符串

可选

与资源关联的可用区。

  • resourceCreationTime

字符串

可选

创建资源时的时间戳。

  • 配置

JSON

可选

资源配置的描述。

  • supplementaryConfiguration

JSON

可选

AWS Config 针对某些资源类型返回的配置属性,用于补充针对配置参数返回的信息。

  • relatedEvents

字符串

可选

CloudTrail 事件 ID 的列表。

  • relationships

- 可选

相关 AWS 资源的列表。

    • name

字符串

可选

与相关资源的关系的类型。

    • resourceType

字符串

可选

相关资源的资源类型。

    • resourceId

字符串

可选

相关资源的 ID(例如,sg-xxxxxx)。

    • resourceName

字符串

可选

相关资源的自定义名称(如果可用)。

  • 标签

JSON

可选

与资源关联的键值标签的映射。

以下示例显示了与配置项目记录中的架构元素匹配的架构元素的层次结构。

{ "eventVersion": String, "eventCategory: String, "eventType": String, "eventID": String, "eventTime": String, "awsRegion": String, "recipientAccountId": String, "addendum": Addendum, "eventData": { "configurationItemVersion": String, "configurationItemCaptureTime": String, "configurationItemStatus": String, "configurationStateId": String, "accountId": String, "resourceType": String, "resourceId": String, "resourceName": String, "arn": String, "awsRegion": String, "availabilityZone": String, "resourceCreationTime": String, "configuration": { JSON, }, "supplementaryConfiguration": { JSON, }, "relatedEvents": [ String ], "relationships": [ struct{ "name" : String, "resourceType": String, "resourceId": String, "resourceName": String } ], "tags": { JSON } } } }