本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用高级事件选择器筛选数据事件
本节介绍如何使用高级事件选择器来创建细粒度选择器,通过仅记录感兴趣的特定数据事件来帮助您控制成本。
例如:
-
您可以通过在
eventName
字段上添加过滤器来包含或排除特定API呼叫。 -
您可以通过在
resources.ARN
字段上添加筛选条件来包含或排除特定资源的日志记录。例如,如果您正在记录 S3 数据事件,则可以对跟踪排除 S3 存储桶的日志记录。 -
通过在
readOnly
字段上添加筛选条件,您可以选择仅记录只写事件或只读事件。
下表提供了有关高级事件选择器的可配置字段的更多信息。
字段 | Required | 有效运算符 | Description |
---|---|---|---|
|
是 |
|
此字段设置为 在步道上支持:是 在事件数据存储上支持:是 |
|
是 |
|
此字段用于选择要为其记录数据事件的资源类型。数据事件表显示了可能值。 在步道上支持:是 在事件数据存储上支持:是 |
|
否 |
|
这是一个可选字段,用于根据 在步道上支持:是 在事件数据存储上支持:是 |
|
否 |
|
这是一个可选字段,用于筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。 如果您使用的是 Amazon CLI,则可以通过用逗号分隔每个值来指定多个值。 如果您使用的是控制台,则可以通过为要筛选的每个 在步道上支持:是 在事件数据存储上支持:是 |
|
否 |
|
这是一个可选字段,用于通过提供 如果您使用的是 Amazon CLI,则可以通过用逗号分隔每个值来指定多个值。 如果您使用的是控制台,则可以通过为要筛选的每个 在步道上支持:是 在事件数据存储上支持:是 |
|
否 |
|
您可以使用它来包含或排除特定的事件源。通常 在步道上支持:否 在事件数据存储上支持:是 |
|
否 |
|
eventType要包含或排除的。例如,您可以将此字段设置为 在步道上支持:否 在事件数据存储上支持:是 |
|
否 |
|
包括或排除源自 Amazon Web Services Management Console 会话的事件。此字段可以设置为 在步道上支持:否 在事件数据存储上支持:是 |
|
否 |
|
包括或排除针对特定IAM身份采取的操作的事件。有关更多信息,请参阅CloudTrail userIdentity 元素。 在步道上支持:否 在事件数据存储上支持:是 |
要使用 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 数据事件。您可以进一步优化高级事件选择器来筛选 eventName
、readOnly
和 resources.ARN
字段,以记录感兴趣的特定事件或排除不感兴趣的事件。
您可以配置高级事件选择器来根据多个字段筛选数据事件。例如,您可以将高级事件选择器配置为记录所有 Amazon S3 PutObject
和DeleteObject
API调用,但不包括特定 S3 存储桶的事件记录,如以下示例所示。将 amzn-s3-demo-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:::
amzn-s3-demo-bucket
/"] } ] } ]'
您还可以为一个字段包含多个条件。有关如何评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件。
您可以使用高级事件选择器来同时记录管理事件和数据事件。要记录多种资源类型的数据事件,请为要记录数据事件的每种资源类型添加一个字段选择器语句。
注意
跟踪可以使用基本事件选择器或高级事件选择器,但不能同时使用两者。如果将高级事件选择器应用于跟踪,则所有现有的基本事件选择器都将被覆盖。
选择器不支持使用通配符,例如。*
要将多个值与单个条件进行匹配,可以使用StartsWith
EndsWith
NotStartsWith
、、或NotEndsWith
明确匹配事件字段的开头或结尾。
如何 CloudTrail 评估一个字段的多个条件
对于高级事件选择器,按 CloudTrail 如下方式计算字段的多个条件:
-
DESELECT运营AND商在一起。如果满足任何DESELECT操作员条件,则不会传送事件。以下是高级事件选择器的有效DESELECT运算符:
-
NotEndsWith
-
NotEquals
-
NotStartsWith
-
-
SELECT运算符是 OR 组合在一起的。以下是高级事件选择器的有效SELECT运算符:
-
EndsWith
-
Equals
-
StartsWith
-
-
SELECT和DESELECT运算符的组合遵循上述规则,两个组AND合在一起。
显示 resources.ARN
字段的多个条件的示例
以下示例事件选择器语句收集 AWS::S3::Object
资源类型的数据事件,并对 resources.ARN
字段应用多个条件。
{ "Name": "S3Select", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:s3:::amzn-s3-demo-bucket/object1" ], "StartsWith": [ "arn:aws:s3:::amzn-s3-demo-bucket/" ], "EndsWith": [ "object3" ], "NotStartsWith": [ "arn:aws:s3:::amzn-s3-demo-bucket/deselect" ], "NotEndsWith": [ "object5" ], "NotEquals": [ "arn:aws:s3:::amzn-s3-demo-bucket/object6" ] } ] }
在前面的示例中,在以下情况下,将传输 AWS::S3::Object
资源的 Amazon S3 数据事件:
-
以下任何一个DESELECT操作员条件都不满足:
-
resources.ARN
字段NotStartsWith
的值为arn:aws:s3:::amzn-s3-demo-bucket/deselect
-
resources.ARN
字段NotEndsWith
的值为object5
-
resources.ARN
字段NotEquals
的值为arn:aws:s3:::amzn-s3-demo-bucket/object6
-
-
至少满足以下运SELECT算符条件之一:
-
resources.ARN
字段Equals
的值为arn:aws:s3:::amzn-s3-demo-bucket/object1
-
resources.ARN
字段StartsWith
的值为arn:aws:s3:::amzn-s3-demo-bucket/
-
resources.ARN
字段EndsWith
的值为object3
-
基于评估逻辑:
-
之所以传输
amzn-s3-demo-bucket/object1
的数据事件,是因为它与Equals
运算符的值匹配,而与NotStartsWith
、NotEndsWith
和NotEquals
运算符的任何值都不匹配。 -
之所以传输
amzn-s3-demo-bucket/object2
的数据事件,是因为它与StartsWith
运算符的值匹配,而与NotStartsWith
、NotEndsWith
和NotEquals
运算符的任何值都不匹配。 -
之所以传输
amzn-s3-demo-bucket1/object3
的数据事件,是因为它与EndsWith
运算符匹配,而与NotStartsWith
、NotEndsWith
和NotEquals
运算符的任何值都不匹配。 -
之所以传输
arn:aws:s3:::amzn-s3-demo-bucket/deselectObject4
的数据事件,是因为它与NotStartsWith
的条件匹配,也与StartsWith
运算符的条件匹配。 -
之所以传输
arn:aws:s3:::amzn-s3-demo-bucket/object5
的数据事件,是因为它与NotEndsWith
的条件匹配,也与StartsWith
运算符的条件匹配。 -
之所以不传输
arn:aws:s3:::amzn-s3-demo-bucket/object6
的数据事件,是因为它与NotEquals
运算符的条件匹配,也与StartsWith
运算符的条件匹配。
通过 eventName
筛选数据事件
使用高级事件选择器,您可以根据 eventName
字段的值包含或排除事件。筛选eventName
可以帮助控制成本,因为在记录数据事件时可以避免产生成本,从而增加对新数据的APIs支持。 Amazon Web Services 服务
您可以将任何运算符与 eventName
字段配合使用。您可以使用它来筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。PutBucket
GetSnapshotBlock
eventName
使用筛选数据事件 Amazon Web Services Management Console
按照以下步骤使用 CloudTrail 控制台对eventName
字段进行筛选。
-
按照创建跟踪过程中的步骤进行操作。
-
遵循步骤创建跟踪时,请做出以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的资源类型。
-
对于日志选择器模板,选择自定义。
-
(可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器
Name
中列出,如果展开视图,则可以JSON查看。 -
在高级事件选择器中,执行以下操作以根据
eventName
进行筛选:-
对于 “字段”,选择eventName。
-
对于运算符,选择条件运算符。在此示例中,我们将选择 e quals,因为我们要记录特定的API呼叫。
-
对于值,输入要筛选的事件的名称。
-
要根据其他
eventName
进行筛选,请选择 + 条件。有关如何 CloudTrail 评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件。
-
-
选择 + 字段以对其他字段添加筛选条件。
-
eventName
使用筛选数据事件 Amazon CLI
使用 Amazon CLI,您可以对eventName
字段进行筛选,以包含或排除特定事件。
如果您正在更新现有跟踪或事件数据存储以记录其他事件选择器,请通过对跟踪运行 get-event-selectors
命令或对事件数据存储运行 get-event-data-store
命令来获取当前事件选择器。然后,更新事件选择器,为您想要记录的每种数据资源类型添加一个字段选择器。
以下示例记录跟踪的 S3 数据事件。配置--advanced-event-selectors
为仅记录GetObject
PutObject
、和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
,但是如果您使用Equals
或NotEquals
,则该ARN值必须与您指定的resources.type
值的有效资源完全匹配。要记录特定 S3 存储桶中所有对象的所有数据事件,请使用StartsWith
运算符,并且仅包含该存储桶ARN作为匹配值。
下表显示了每种ARN格式的有效格式resources.type
。
注意
您不能使用该resources.ARN
字段筛选没有的资源类型ARNs。
resources.type | 资源。 ARN |
---|---|
AWS::DynamoDB::Table1 |
|
AWS::Lambda::Function |
|
|
|
AWS::AIOps::InvestigationGroup |
|
AWS::AppConfig::Configuration |
|
AWS::AppSync::GraphQL |
|
AWS::B2BI::Transformer |
|
AWS::Backup::SearchJob |
|
AWS::Bedrock::AgentAlias |
|
AWS::Bedrock::AsyncInvoke |
|
AWS::Bedrock::FlowAlias |
|
AWS::Bedrock::Guardrail |
|
AWS::Bedrock::InlineAgent |
|
AWS::Bedrock::KnowledgeBase |
|
AWS::Bedrock::Model |
ARN必须采用以下格式之一:
|
AWS::Cassandra::Table |
|
AWS::CloudFront::KeyValueStore |
|
AWS::CloudTrail::Channel |
|
AWS::CodeGuruProfiler::ProfilingGroup |
|
AWS::CodeWhisperer::Customization |
|
AWS::CodeWhisperer::Profile |
|
AWS::Cognito::IdentityPool |
|
AWS::DataExchange::Asset |
|
AWS::Deadline::Fleet |
|
AWS::Deadline::Job |
|
AWS::Deadline::Queue |
|
AWS::Deadline::Worker |
|
AWS::DynamoDB::Stream |
|
AWS::EC2::Snapshot |
|
AWS::EMRWAL::Workspace |
|
AWS::FinSpace::Environment |
|
AWS::Glue::Table |
|
AWS::GreengrassV2::ComponentVersion |
|
AWS::GreengrassV2::Deployment |
|
AWS::GuardDuty::Detector |
|
AWS::IoT::Certificate |
|
AWS::IoT::Thing |
|
AWS::IoTSiteWise::Asset |
|
AWS::IoTSiteWise::TimeSeries |
|
AWS::IoTTwinMaker::Entity |
|
AWS::IoTTwinMaker::Workspace |
|
AWS::KendraRanking::ExecutionPlan |
|
AWS::Kinesis::Stream |
|
AWS::Kinesis::StreamConsumer |
|
AWS::KinesisVideo::Stream |
|
AWS::GeoMaps::Provider |
|
AWS::GeoPlaces::Provider |
|
AWS::GeoRoutes::Provider |
|
AWS::MachineLearning::MlModel |
|
AWS::ManagedBlockchain::Network |
|
AWS::ManagedBlockchain::Node |
|
AWS::MedicalImaging::Datastore |
|
AWS::MWAA::Environment |
|
AWS::NeptuneGraph::Graph |
|
AWS::One::UKey |
|
AWS::One::User |
|
AWS::PaymentCryptography::Alias |
|
AWS::PaymentCryptography::Key |
|
AWS::PCAConnectorAD::Connector |
|
AWS::PCAConnectorSCEP::Connector |
|
AWS::QApps::QApp |
|
AWS::QApps::QAppSession |
|
AWS::QBusiness::Application |
|
AWS::QBusiness::DataSource |
|
AWS::QBusiness::Index |
|
AWS::QBusiness::WebExperience |
|
AWS::QDeveloper::Integration |
|
AWS::RDS::DBCluster |
|
AWS::ResourceExplorer2::ManagedView |
|
AWS::ResourceExplorer2::View |
|
AWS::RUM::AppMonitor |
|
|
|
|
|
AWS::S3ObjectLambda::AccessPoint |
|
AWS::S3Outposts::Object |
|
AWS::S3Tables::Table |
|
AWS::S3Tables::TableBucket |
|
AWS::SageMaker::Endpoint |
|
AWS::SageMaker::ExperimentTrialComponent |
|
AWS::SageMaker::FeatureGroup |
|
AWS::SCN::Instance |
|
AWS::SDB::Domain |
|
AWS::ServiceDiscovery::Namespace |
|
AWS::ServiceDiscovery::Service |
|
AWS::Signer::SigningJob |
|
AWS::Signer::SigningProfile |
|
AWS::SitewiseAssistant::Conversation |
|
AWS::SMSVoice::Message |
|
AWS::SMSVoice::OriginationIdentity |
|
AWS::SNS::PlatformEndpoint |
|
AWS::SNS::Topic |
|
AWS::SocialMessaging::PhoneNumberId |
|
AWS::SocialMessaging::WabaId |
|
AWS::SQS::Queue |
|
AWS::SSM::ManagedNode |
ARN必须采用以下格式之一:
|
AWS::SSMMessages::ControlChannel |
|
AWS::StepFunctions::StateMachine |
ARN必须采用以下格式之一:
|
AWS::SWF::Domain |
|
AWS::ThinClient::Device |
|
AWS::ThinClient::Environment |
|
AWS::Timestream::Database |
|
AWS::Timestream::Table |
|
AWS::VerifiedPermissions::PolicyStore |
|
1 对于启用了流的表,数据事件中的 resources
字段同时包含 AWS::DynamoDB::Stream
和 AWS::DynamoDB::Table
。如果您为 resources.type
指定 AWS::DynamoDB::Table
,则原定设置情况下,它将同时记录 DynamoDB 表和 DynamoDB 流事件。要排除流事件,请对 eventName
字段添加筛选条件。
2 要记录特定 S3 存储桶中所有对象的所有数据事件,请使用StartsWith
运算符,并且仅包含该存储桶ARN作为匹配值。刻意使用尾部斜杠;切勿排除它。
3 要记录 S3 接入点中所有对象的事件,我们建议您仅使用接入点ARN,不要包含对象路径,并使用StartsWith
或NotStartsWith
运算符。
resources.ARN
使用筛选数据事件 Amazon Web Services Management Console
按照以下步骤使用 CloudTrail 控制台对resources.ARN
字段进行筛选。
-
按照创建跟踪过程中的步骤进行操作。
-
遵循步骤创建跟踪时,请做出以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的资源类型。
-
对于日志选择器模板,选择自定义。
-
(可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器
Name
中列出,如果展开视图,则可以JSON查看。 -
在高级事件选择器中,执行以下操作以根据
resources.ARN
进行筛选:-
对于字段,选择资源。 ARN。
-
对于运算符,选择条件运算符。在此示例中,我们将选择开头为,因为我们要记录特定 S3 存储桶的数据事件。
-
在 “值” 中,输入与ARN您的资源类型对应的(例如,
arn:aws:s3:::amzn-s3-demo-bucket
)。 -
要筛选其他
resources.ARN
,请选择 + 条件。有关如何 CloudTrail 评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件。
-
-
选择 + 字段以对其他字段添加筛选条件。
-
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值略有不同,因此必须添加的StartsWith
运算符resources.ARN
才能捕获所有事件。
aws cloudtrail put-event-selectors \ --trail-name
TrailName
\ --regionregion
\ --advanced-event-selectors \ '[ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3:::amzn-s3-demo-bucket
/"] } ] } ]'
按 readOnly
值筛选数据事件
使用高级事件选择器,您可以根据 readOnly
字段的值进行筛选。
您只能将 Equals
运算符与 readOnly
字段配合使用。您可以将 readOnly
值设置为 true
或 false
。如果不添加此字段,则会同时 CloudTrail 记录读取和写入事件。true
的值仅记录读取事件。false
的值仅记录写入事件。
使用按readOnly
值筛选数据事件 Amazon Web Services Management Console
按照以下步骤使用 CloudTrail 控制台对readOnly
字段进行筛选。
-
按照创建跟踪过程中的步骤进行操作。
-
遵循步骤创建跟踪时,请做出以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的资源类型。
-
对于记录选择器模板,为您的使用场景选择适当的模板。
注意
“仅记录 Amazon Web Services Management Console 事件” 和 “排除 Amazon 服务启动的事件” 模板仅适用于事件数据存储。
如果您计划执行此操作 选择此日志选择器模板 仅记录读取事件,而不应用其他筛选条件(例如,
resources.ARN
值)。仅记录读取事件
仅记录写入事件,而不应用其他筛选条件(例如,
resources.ARN
值)。仅记录写入事件
按
readOnly
值进行筛选并应用其他筛选条件(例如,resources.ARN
值)。自定义
在高级事件选择器中,执行以下操作以根据
readOnly
值进行筛选:记录写入事件
-
对于 “字段”,选择readOnly。
-
对于运算符,选择 equals。
-
对于值,请输入
false
。 -
选择 + 字段以对其他字段添加筛选条件。
记录读取事件
-
对于 “字段”,选择readOnly。
-
对于运算符,选择 equals。
-
对于值,请输入
true
。 -
选择 + 字段以对其他字段添加筛选条件。
-
-
使用按readOnly
值筛选数据事件 Amazon CLI
使用 Amazon CLI,您可以对readOnly
字段进行筛选。
您只能将 Equals
运算符与 readOnly
字段配合使用。您可以将 readOnly
值设置为 true
或 false
。如果不添加此字段,则会同时 CloudTrail记录读取和写入事件。true
的值仅记录读取事件。false
的值仅记录写入事件。
如果您正在更新现有跟踪或事件数据存储以记录其他事件选择器,请通过对跟踪运行 get-event-selectors
命令或对事件数据存储运行 get-event-data-store
命令来获取当前事件选择器。然后,更新事件选择器,为您想要记录的每种数据资源类型添加一个字段选择器。
以下示例说明如何配置您的跟踪以记录所有 Amazon S3 对象的只读数据事件。
aws cloudtrail put-event-selectors \ --trail-name
TrailName
\ --regionregion
\ --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"] } ] } ]'