使用高级事件选择器筛选数据事件 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用高级事件选择器筛选数据事件

本节介绍如何使用高级事件选择器来创建细粒度的选择器,这些选择器通过仅记录感兴趣的特定数据事件来帮助您控制成本。

例如:

  • 您可以通过在eventName字段上添加过滤器来包含或排除特定的 API 调用。

  • 您可以通过在resources.ARN字段上添加过滤器来包含或排除特定资源的日志记录。例如,如果您正在记录 S3 数据事件,则可以排除对跟踪的 S3 存储桶的日志记录。

  • 通过在字段上添加筛选器,您可以选择仅记录只写事件或只读事件。readOnly

下表提供了有关高级事件选择器的可配置字段的其他信息。

字段 必需 有效的运算符 Description

eventCategory

Equals

此字段设置为Data以记录数据事件。

resources.type

Equals

此字段用于选择要为其记录数据事件的资源类型。数据事件表显示了可能的值。

readOnly

Equals

这是一个可选字段,用于根据readOnly值包含或排除数据事件。true日志的值仅读取事件。false日志的值仅写入事件。如果不添加此字段,则会同时 CloudTrail 记录读取和写入事件。

eventName

任何

这是一个可选字段,用于筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。PutBucket GetSnapshotBlock

如果您使用的是 Amazon CLI,则可以通过用逗号分隔每个值来指定多个值。

如果您使用的是控制台,则可以通过为要筛选的每个eventName值创建一个条件来指定多个值。

resources.ARN

任何

这是一个可选字段,用于通过提供来排除或包含特定资源的数据事件resources.ARN。您可以将任何运算符与一起使用resources.ARN,但是如果您使用EqualsNotEquals,则该值必须与resoureces.type您指定的有效资源的 ARN 完全匹配。

如果您使用的是 Amazon CLI,则可以通过用逗号分隔每个值来指定多个值。

如果您使用的是控制台,则可以通过为要筛选的每个resources.ARN值创建一个条件来指定多个值。

要使用 CloudTrail 控制台记录数据事件,请选择数据事件选项,然后在创建或更新跟踪时选择感兴趣的数据事件类型数据事件表显示了您可以在 CloudTrail 控制台上选择的可能的数据事件类型。

要使用记录数据事件 Amazon CLI,请将--advanced-event-selector参数配置为将eventCategory等于,将resources.type值设置为等于Data且值等于您要记录数据事件的资源类型值。数据事件表列出了可用的资源类型。

例如,如果您想记录所有 Cognito 身份池的数据事件,则可以将--advanced-event-selectors参数配置为如下所示:

--advanced-event-selectors '[ { "Name": "Log Cognito data events on Identity pools", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Cognito::IdentityPool"] } ] } ]'

前面的示例记录了身份池上的所有 Cognito 数据事件。您可以进一步细化高级事件选择器,以筛选eventNamereadOnly、和resources.ARN字段,以记录感兴趣的特定事件或排除不感兴趣的事件。

您可以配置高级事件选择器,以根据多个条件筛选数据事件。例如,您可以将高级事件选择器配置为记录所有 Amazon S3 PutObjectDeleteObject API 调用,但不包括特定 S3 存储桶的事件记录,如以下示例所示。将 DOC-EXAMPLE-BUCKET 替换为您的存储桶的名称。

--advanced-event-selectors '[ { "Name": "Log PutObject and DeleteObject events for all but one bucket", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] }, { "Field": "resources.ARN", "NotStartsWith": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/"] } ] } ]'

您可以使用高级事件选择器来记录管理事件和数据事件。要记录多种资源类型的数据事件,请为要记录其数据事件的每种资源类型添加字段选择器语句。

注意

Trails 可以使用基本事件选择器或高级事件选择器,但不能同时使用两者。如果将高级事件选择器应用于跟踪,则所有现有的基本事件选择器都将被覆盖。

筛选数据事件的依据 eventName

使用高级事件选择器,您可以根据eventName字段的值包含或排除事件。筛选eventName可以帮助控制成本,因为在记录数据事件时可以避免产生成本,从而增加对新数据 API 的支持。 Amazon Web Service

可以在该eventName字段中使用任何运算符。您可以使用它来筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。PutBucket GetSnapshotBlock

eventName使用筛选数据事件 Amazon Web Services Management Console

按照以下步骤使用 CloudTrail 控制台对eventName字段进行筛选。

  1. 按照创建跟踪过程中的步骤进行操作。

  2. 按照步骤创建跟踪时,请进行以下选择:

    1. 选择数据事件

    2. 选择要为其记录数据事件的数据事件类型

    3. 对于日志选择器模板,请选择自定义

    4. (可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器中列为 Name,展开 JSON 视图即可查看该名称。

    5. 高级事件选择器中,执行以下操作以筛选:eventName

      1. 对于 “字段”,选择 “事件名称”。

      2. 对于运算符,选择条件运算符。在此示例中,我们将选择 e quals,因为我们要记录特定的 API 调用。

      3. 在 “” 中,输入要筛选的事件的名称。

      4. 要筛选其他条件eventName,请选择 + 条件

    6. 选择 +Field 可在其他字段上添加筛选器。

eventName使用筛选数据事件 Amazon CLI

使用 Amazon CLI,您可以对eventName字段进行筛选,以包含或排除特定事件。

如果您要更新现有的跟踪或事件数据存储以记录其他事件选择器,请通过运行跟踪命令或事件数据存储get-event-selectors命令来获取当前的事件选择器。get-event-data-store然后,更新您的事件选择器,为您要记录的每种数据资源类型添加一个字段选择器。

以下示例记录了跟踪上的 S3 数据事件。配置--advanced-event-selectors为仅记录GetObjectPutObject、和 DeleteObject API 调用的数据事件。

aws cloudtrail put-event-selectors \ --trail-name trailName \ --advanced-event-selectors '[ { "Name": "Log GetObject, PutObject and DeleteObject S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["GetObject","PutObject","DeleteObject"] } ] } ]'

筛选数据事件的依据 resources.ARN

使用高级事件选择器,您可以根据resources.ARN字段的值进行筛选。

您可以将任何运算符与一起使用resources.ARN,但是如果您使用EqualsNotEquals,则该值必须与您指定的resources.type值的有效资源的 ARN 完全匹配。要记录特定 S3 桶中所有对象的所有数据事件,请使用 StartsWith 运算符,并且仅包含存储桶 ARN 作为匹配值。

下表显示每个 resources.type 的有效 ARN 格式。

注意

您不能使用该resources.ARN字段筛选没有 ARN 的资源类型。

resources.type resources.ARN
AWS::DynamoDB::Table1
arn:partition:dynamodb:region:account_ID:table/table_name
AWS::Lambda::Function
arn:partition:lambda:region:account_ID:function:function_name

AWS::S3::Object2

arn:partition:s3:::DOC-EXAMPLE-BUCKET/ arn:partition:s3:::DOC-EXAMPLE-BUCKET/object_or_file_name/
AWS::AppConfig::Configuration
arn:partition:appconfig:region:account_ID:application/application_ID/environment/environment_ID/configuration/configuration_profile_ID
AWS::B2BI::Transformer
arn:partition:b2bi:region:account_ID:transformer/transformer_ID
AWS::Bedrock::AgentAlias
arn:partition:bedrock:region:account_ID:agent-alias/agent_ID/alias_ID
AWS::Bedrock::KnowledgeBase
arn:partition:bedrock:region:account_ID:knowledge-base/knowledge_base_ID
AWS::Cassandra::Table
arn:partition:cassandra:region:account_ID:keyspace/keyspace_name/table/table_name
AWS::CloudFront::KeyValueStore
arn:partition:cloudfront:region:account_ID:key-value-store/KVS_name
AWS::CloudTrail::Channel
arn:partition:cloudtrail:region:account_ID:channel/channel_UUID
AWS::CodeWhisperer::Customization
arn:partition:codewhisperer:region:account_ID:customization/customization_ID
AWS::CodeWhisperer::Profile
arn:partition:codewhisperer:region:account_ID:profile/profile_ID
AWS::Cognito::IdentityPool
arn:partition:cognito-identity:region:account_ID:identitypool/identity_pool_ID
AWS::DynamoDB::Stream
arn:partition:dynamodb:region:account_ID:table/table_name/stream/date_time
AWS::EC2::Snapshot
arn:partition:ec2:region::snapshot/snapshot_ID
AWS::EMRWAL::Workspace
arn:partition:emrwal:region:account_ID:workspace/workspace_name
AWS::FinSpace::Environment
arn:partition:finspace:region:account_ID:environment/environment_ID
AWS::Glue::Table
arn:partition:glue:region:account_ID:table/database_name/table_name
AWS::GreengrassV2::ComponentVersion
arn:partition:greengrass:region:account_ID:components/component_name
AWS::GreengrassV2::Deployment
arn:partition:greengrass:region:account_ID:deployments/deployment_ID
AWS::GuardDuty::Detector
arn:partition:guardduty:region:account_ID:detector/detector_ID
AWS::IoT::Certificate
arn:partition:iot:region:account_ID:cert/certificate_ID
AWS::IoT::Thing
arn:partition:iot:region:account_ID:thing/thing_ID
AWS::IoTSiteWise::Asset
arn:partition:iotsitewise:region:account_ID:asset/asset_ID
AWS::IoTSiteWise::TimeSeries
arn:partition:iotsitewise:region:account_ID:timeseries/timeseries_ID
AWS::IoTTwinMaker::Entity
arn:partition:iottwinmaker:region:account_ID:workspace/workspace_ID/entity/entity_ID
AWS::IoTTwinMaker::Workspace
arn:partition:iottwinmaker:region:account_ID:workspace/workspace_ID
AWS::KendraRanking::ExecutionPlan
arn:partition:kendra-ranking:region:account_ID:rescore-execution-plan/rescore_execution_plan_ID
AWS::Kinesis::Stream
arn:partition:kinesis:region:account_ID:stream/stream_name
AWS::Kinesis::StreamConsumer
arn:partition:kinesis:region:account_ID:stream_type/stream_name/consumer/consumer_name:consumer_creation_timestamp
AWS::KinesisVideo::Stream
arn:partition:kinesisvideo:region:account_ID:stream/stream_name/creation_time
AWS::MachineLearning::MlModel
arn:partition:machinelearning:region:account_ID:mlmodel/model_ID
AWS::ManagedBlockchain::Network
arn:partition:managedblockchain:::networks/network_name
AWS::ManagedBlockchain::Node
arn:partition:managedblockchain:region:account_ID:nodes/node_ID
AWS::MedicalImaging::Datastore
arn:partition:medical-imaging:region:account_ID:datastore/data_store_ID
AWS::NeptuneGraph::Graph
arn:partition:neptune-graph:region:account_ID:graph/graph_ID
AWS::PCAConnectorAD::Connector
arn:partition:pca-connector-ad:region:account_ID:connector/connector_ID
AWS::PCAConnectorSCEP::Connector
arn:partition:pca-connector-scep:region:account_ID:connector/connector_ID
AWS::QApps:QApp
arn:partition:qapps:region:account_ID:application/application_UUID/qapp/qapp_UUID
AWS::QBusiness::Application
arn:partition:qbusiness:region:account_ID:application/application_ID
AWS::QBusiness::DataSource
arn:partition:qbusiness:region:account_ID:application/application_ID/index/index_ID/data-source/datasource_ID
AWS::QBusiness::Index
arn:partition:qbusiness:region:account_ID:application/application_ID/index/index_ID
AWS::QBusiness::WebExperience
arn:partition:qbusiness:region:account_ID:application/application_ID/web-experience/web_experienc_ID
AWS::RDS::DBCluster
arn:partition:rds:region:account_ID:cluster/cluster_name

AWS::S3::AccessPoint3

arn:partition:s3:region:account_ID:accesspoint/access_point_name
AWS::S3ObjectLambda::AccessPoint
arn:partition:s3-object-lambda:region:account_ID:accesspoint/access_point_name
AWS::S3Outposts::Object
arn:partition:s3-outposts:region:account_ID:object_path
AWS::SageMaker::Endpoint
arn:partition:sagemaker:region:account_ID:endpoint/endpoint_name
AWS::SageMaker::ExperimentTrialComponent
arn:partition:sagemaker:region:account_ID:experiment-trial-component/experiment_trial_component_name
AWS::SageMaker::FeatureGroup
arn:partition:sagemaker:region:account_ID:feature-group/feature_group_name
AWS::SCN::Instance
arn:partition:scn:region:account_ID:instance/instance_ID
AWS::ServiceDiscovery::Namespace
arn:partition:servicediscovery:region:account_ID:namespace/namespace_ID
AWS::ServiceDiscovery::Service
arn:partition:servicediscovery:region:account_ID:service/service_ID
AWS::SNS::PlatformEndpoint
arn:partition:sns:region:account_ID:endpoint/endpoint_type/endpoint_name/endpoint_ID
AWS::SNS::Topic
arn:partition:sns:region:account_ID:topic_name
AWS::SQS::Queue
arn:partition:sqs:region:account_ID:queue_name
AWS::SSM::ManagedNode

ARN 必须采用以下格式之一:

  • arn:partition:ssm:region:account_ID:managed-instance/instance_ID

  • arn:partition:ec2:region:account_ID:instance/instance_ID

AWS::SSMMessages::ControlChannel
arn:partition:ssmmessages:region:account_ID:control-channel/control_channel_ID
AWS::StepFunctions::StateMachine

ARN 必须采用以下格式之一:

  • arn:partition:states:region:account_ID:stateMachine:stateMachine_name

  • arn:partition:states:region:account_ID:stateMachine:stateMachine_name/label_name

AWS::SWF::Domain
arn:partition:swf:region:account_ID:/domain/domain_name
AWS::ThinClient::Device
arn:partition:thinclient:region:account_ID:device/device_ID
AWS::ThinClient::Environment
arn:partition:thinclient:region:account_ID:environment/environment_ID
AWS::Timestream::Database
arn:partition:timestream:region:account_ID:database/database_name
AWS::Timestream::Table
arn:partition:timestream:region:account_ID:database/database_name/table/table_name
AWS::VerifiedPermissions::PolicyStore
arn:partition:verifiedpermissions:region:account_ID:policy-store/policy_store_ID

1 对于启用了流的表,数据事件中的 resources 字段同时包含 AWS::DynamoDB::StreamAWS::DynamoDB::Table。如果您为 resources.type 指定 AWS::DynamoDB::Table,则原定设置情况下,它将同时记录 DynamoDB 表和 DynamoDB 流事件。要排除直播事件,请eventName在该字段上添加过滤器。

2 要记录特定 S3 存储桶中所有对象的所有数据事件,请使用 StartsWith 运算符,并且仅包含存储桶 ARN 作为匹配值。刻意使用尾部斜杠;切勿排除它。

3 要记录 S3 接入点中的所有对象的事件,建议您仅使用接入点 ARN,而不要包含对象路径,并且使用 StartsWithNotStartsWith 运算符。

resources.ARN使用筛选数据事件 Amazon Web Services Management Console

按照以下步骤使用 CloudTrail 控制台对resources.ARN字段进行筛选。

  1. 按照创建跟踪过程中的步骤进行操作。

  2. 按照步骤创建跟踪时,请进行以下选择:

    1. 选择数据事件

    2. 选择要为其记录数据事件的数据事件类型

    3. 对于日志选择器模板,请选择自定义

    4. (可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器中列为 Name,展开 JSON 视图即可查看该名称。

    5. 高级事件选择器中,执行以下操作以筛选:resources.ARN

      1. 对于字段,选择 resources.ARN

      2. 对于运算符,选择条件运算符。在此示例中,我们将选择从开始,因为我们要记录特定 S3 存储桶的数据事件。

      3. 中,输入您的资源类型的 ARN(例如,arn: aws: s3::: DOC-EXAMPLE-BUCK ET)。

      4. 要筛选其他条件resources.ARN,请选择 + 条件

    6. 选择 +Field 可在其他字段上添加筛选器。

resources.ARN使用筛选数据事件 Amazon CLI

使用 Amazon CLI,您可以对该resources.ARN字段进行筛选以记录特定 ARN 的事件或排除特定 ARN 的日志记录。

如果您要更新现有的跟踪或事件数据存储以记录其他事件选择器,请通过运行跟踪命令或事件数据存储get-event-selectors命令来获取当前的事件选择器。get-event-data-store然后,更新您的事件选择器,为您要记录的每种数据资源类型添加一个字段选择器。

以下示例说明如何配置您的跟踪以包含特定 S3 存储桶中的所有 Simple Storage Service(Amazon S3)对象的所有数据事件。S3 事件在 resources.type 字段中的值为 AWS::S3::Object。由于 S3 对象和 S3 存储桶的 ARN 值略有不同,因此必须为 resources.ARN 添加 StartsWith 运算符以捕获所有事件。

aws cloudtrail put-event-selectors \ --trail-name TrailName \ --region region \ --advanced-event-selectors \ '[ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/"] } ] } ]'

readOnly值筛选数据事件

使用高级事件选择器,您可以根据readOnly字段的值进行筛选。

您只能在readOnly字段中使用Equals运算符。您可以将该readOnly值设置为truefalse。如果不添加此字段,则会同时 CloudTrail 记录读取和写入事件。true日志的值仅读取事件。false日志的值仅写入事件。

使用按readOnly值筛选数据事件 Amazon Web Services Management Console

按照以下步骤使用 CloudTrail 控制台对readOnly字段进行筛选。

  1. 按照创建跟踪过程中的步骤进行操作。

  2. 按照步骤创建跟踪时,请进行以下选择:

    1. 选择数据事件

    2. 选择要为其记录数据事件的数据事件类型

    3. 对于日志选择器模板,请为您的用例选择相应的模板。

      如果你打算这样做 选择此日志选择器模板

      仅记录读取事件,不应用其他过滤器(例如,对resources.ARN值进行筛选)。

      记录只读事件

      仅记录写入事件,不应用其他筛选器(例如,对resources.ARN值进行筛选)。

      记录只写事件

      readOnly值进行筛选并应用其他筛选器(例如,对resources.ARN值进行筛选)。

      自定义

      高级事件选择器中,执行以下操作以筛选该readOnly值:

      记录写入事件
      1. 对于字段,选择 readOnly

      2. 对于运算符,选择 equals

      3. 对于,请输入 false

      4. 选择 +Field 可在其他字段上添加筛选器。

      记录读取事件
      1. 对于字段,选择 readOnly

      2. 对于运算符,选择 equals

      3. 对于,请输入 true

      4. 选择 +Field 可在其他字段上添加筛选器。

使用按readOnly值筛选数据事件 Amazon CLI

使用 Amazon CLI,您可以对readOnly字段进行筛选。

您只能在readOnly字段中使用Equals运算符。您可以将该readOnly值设置为truefalse。如果不添加此字段,则会同时 CloudTrail记录读取和写入事件。true日志的值仅读取事件。false日志的值仅写入事件。

如果您要更新现有的跟踪或事件数据存储以记录其他事件选择器,请通过运行跟踪命令或事件数据存储get-event-selectors命令来获取当前的事件选择器。get-event-data-store然后,更新您的事件选择器,为您要记录的每种数据资源类型添加一个字段选择器。

以下示例说明如何配置您的跟踪以记录所有 Amazon S3 对象的只读数据事件。

aws cloudtrail put-event-selectors \ --trail-name TrailName \ --region region \ --advanced-event-selectors '[ { "Name": "Log read-only S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "readOnly", "Equals": ["true"] } ] } ]'