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

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

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

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

例如:

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

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

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

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

字段 Required 有效运算符 Description

eventCategory

Equals

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

在步道上支持:

在事件数据存储上支持:

resources.type

Equals

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

在步道上支持:

在事件数据存储上支持:

readOnly

Equals

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

在步道上支持:

在事件数据存储上支持:

eventName

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

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

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

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

在步道上支持:

在事件数据存储上支持:

resources.ARN

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

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

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

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

在步道上支持:

在事件数据存储上支持:

eventSource

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

您可以使用它来包含或排除特定的事件源。通常eventSource是服务名称的简短形式,不带空格加号.amazonaws.com。例如,您可以将设置eventSourceEqualsec2.amazonaws.com为仅记录 Amazon EC2 数据事件。

在步道上支持:

在事件数据存储上支持:

eventType

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

eventType要包含或排除的。例如,您可以将此字段设置为NotEqualsAwsServiceEvent以排除Amazon Web Services 服务 事件

在步道上支持:

在事件数据存储上支持:

sessionCredentialFromConsole

Equals

NotEquals

包括或排除源自 Amazon Web Services Management Console 会话的事件。此字段可以设置为EqualsNotEquals其值为true

在步道上支持:

在事件数据存储上支持:

userIdentity.arn

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

包括或排除针对特定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 数据事件。您可以进一步优化高级事件选择器来筛选 eventNamereadOnlyresources.ARN 字段,以记录感兴趣的特定事件或排除不感兴趣的事件。

您可以配置高级事件选择器来根据多个字段筛选数据事件。例如,您可以将高级事件选择器配置为记录所有 Amazon S3 PutObjectDeleteObjectAPI调用,但不包括特定 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 评估一个字段的多个条件

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

注意

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

选择器不支持使用通配符,例如。*要将多个值与单个条件进行匹配,可以使用StartsWithEndsWithNotStartsWith、、或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 数据事件:

  1. 以下任何一个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

  2. 至少满足以下运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

基于评估逻辑:

  1. 之所以传输 amzn-s3-demo-bucket/object1 的数据事件,是因为它与 Equals 运算符的值匹配,而与 NotStartsWithNotEndsWithNotEquals 运算符的任何值都不匹配。

  2. 之所以传输 amzn-s3-demo-bucket/object2 的数据事件,是因为它与 StartsWith 运算符的值匹配,而与 NotStartsWithNotEndsWithNotEquals 运算符的任何值都不匹配。

  3. 之所以传输 amzn-s3-demo-bucket1/object3 的数据事件,是因为它与 EndsWith 运算符匹配,而与 NotStartsWithNotEndsWithNotEquals 运算符的任何值都不匹配。

  4. 之所以传输 arn:aws:s3:::amzn-s3-demo-bucket/deselectObject4 的数据事件,是因为它与 NotStartsWith 的条件匹配,也与 StartsWith 运算符的条件匹配。

  5. 之所以传输 arn:aws:s3:::amzn-s3-demo-bucket/object5 的数据事件,是因为它与 NotEndsWith 的条件匹配,也与 StartsWith 运算符的条件匹配。

  6. 之所以不传输 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字段进行筛选。

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

  2. 遵循步骤创建跟踪时,请做出以下选择:

    1. 选择数据事件

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

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

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

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

      1. 对于 “字段”,选择eventName

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

      3. 对于,输入要筛选的事件的名称。

      4. 要根据其他 eventName 进行筛选,请选择 + 条件。有关如何 CloudTrail 评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件

    6. 选择 + 字段以对其他字段添加筛选条件。

eventName使用筛选数据事件 Amazon CLI

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

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

以下示例记录跟踪的 S3 数据事件。配置--advanced-event-selectors为仅记录GetObjectPutObject、和DeleteObjectAPI呼叫的数据事件。

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,则该ARN值必须与您指定的resources.type值的有效资源完全匹配。要记录特定 S3 存储桶中所有对象的所有数据事件,请使用StartsWith运算符,并且仅包含该存储桶ARN作为匹配值。

下表显示了每种ARN格式的有效格式resources.type

注意

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

resources.type 资源。 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:::amzn-s3-demo-bucket/ arn:partition:s3:::amzn-s3-demo-bucket/object_or_file_name/
AWS::AIOps::InvestigationGroup
arn:partition:aiops:region:account_ID:investigation-group/investigation_group_ID
AWS::AppConfig::Configuration
arn:partition:appconfig:region:account_ID:application/application_ID/environment/environment_ID/configuration/configuration_profile_ID
AWS::AppSync::GraphQL
arn:partition:appsync:region:account_ID:apis/GraphQL_API_ID
AWS::B2BI::Transformer
arn:partition:b2bi:region:account_ID:transformer/transformer_ID
AWS::Backup::SearchJob
arn:partition:backup-search:region:account_ID:search-job/search_job_ID
AWS::Bedrock::AgentAlias
arn:partition:bedrock:region:account_ID:agent-alias/agent_ID/alias_ID
AWS::Bedrock::AsyncInvoke
arn:partition:bedrock:region:account_ID:async-invoke/async_invoke_ID
AWS::Bedrock::FlowAlias
arn:partition:bedrock:region:account_ID:flow/flow_ID/alias/alias_ID
AWS::Bedrock::Guardrail
arn:partition:bedrock:region:account_ID:guardrail/guardrail_ID
AWS::Bedrock::InlineAgent
arn:partition:bedrock:region:account_ID:INLINE_AGENT_UUID
AWS::Bedrock::KnowledgeBase
arn:partition:bedrock:region:account_ID:knowledge-base/knowledge_base_ID
AWS::Bedrock::Model

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

  • arn:partition:bedrock:region::foundation-model/resource_ID

  • arn:partition:bedrock:region:account_ID:provisioned-model/resource_ID

  • arn:partition:bedrock:region:account_ID:custom-model/resource_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::CodeGuruProfiler::ProfilingGroup
arn:partition:codeguru-profiler:region:account_ID:profilingGroup/profiling_group_name
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::DataExchange::Asset
arn:partition:dataexchange:region:account_ID:data-sets/data_set_ID/revisions/revision_ID/assets/asset_ID
AWS::Deadline::Fleet
arn:partition:deadline:region:account_ID:farm/farm_ID/fleet/fleet_ID
AWS::Deadline::Job
arn:partition:deadline:region:account_ID:farm/farm_ID/queue/queue_ID/job/job_ID
AWS::Deadline::Queue
arn:partition:deadline:region:account_ID:farm/farm_ID/queue/queue_ID
AWS::Deadline::Worker
arn:partition:deadline:region:account_ID:farm/farm_ID/fleet/fleet_ID/worker/worker_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::GeoMaps::Provider
arn:partition:geo-maps:region::provider/provider_ID
AWS::GeoPlaces::Provider
arn:partition:geo-places:region::provider/provider_ID
AWS::GeoRoutes::Provider
arn:partition:geo-route:region::provider/provider_ID
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::MWAA::Environment
arn:partition:airflow:region:account_ID:environment/environment_name
AWS::NeptuneGraph::Graph
arn:partition:neptune-graph:region:account_ID:graph/graph_ID
AWS::One::UKey
arn:partition:one:region:account_ID:user/user_ID/u-key/u-key_ID
AWS::One::User
arn:partition:one:region:account_ID:user/user_ID
AWS::PaymentCryptography::Alias
arn:partition:payment-cryptography:region:account_ID:alias/alias
AWS::PaymentCryptography::Key
arn:partition:payment-cryptography:region:account_ID:key/key_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::QApps::QAppSession
arn:partition:qapps:region:account_ID:application/application_UUID/qapp/qapp_UUID/session/session_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::QDeveloper::Integration
arn:partition:qdeveloper:region:account_ID:integration/integration_ID
AWS::RDS::DBCluster
arn:partition:rds:region:account_ID:cluster/cluster_name
AWS::ResourceExplorer2::ManagedView
arn:partition:resource-explorer-2:region:account_ID:managed-view/view_name/view_UUID
AWS::ResourceExplorer2::View
arn:partition:resource-explorer-2:region:account_ID:view/view_name/view_UUID
AWS::RUM::AppMonitor
arn:partition:rum:region:account_ID:appmonitor/app_monitor_name

AWS::S3::AccessPoint3

arn:partition:s3:region:account_ID:accesspoint/access_point_name

AWS::S3Express::Object

arn:partition:s3express:region:account_ID:bucket/bucket_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::S3Tables::Table
arn:partition:s3tables:region:account_ID:bucket/bucket_name/table/table_ID
AWS::S3Tables::TableBucket
arn:partition:s3tables:region:account_ID:bucket/bucket_name
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::SDB::Domain
arn:partition:sdb:region:account_ID:domain/domain_name
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::Signer::SigningJob
arn:partition:signer:region:account_ID:job_owner/signing-jobs/job_UUID
AWS::Signer::SigningProfile
arn:partition:signer:region:account_ID:profile_owner/signing-profiles/profile_name
AWS::SitewiseAssistant::Conversation
arn:partition:sitewise-assistant:region:account_ID:conversation/conversation_ID
AWS::SMSVoice::Message

arn:partition:sms-voice:region:account_ID:message/message_ID

AWS::SMSVoice::OriginationIdentity

arn:partition:sms-voice:region:account_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::SocialMessaging::PhoneNumberId

arn:partition:social-messaging:region:account_ID:phone-number-id/phone_number_ID

AWS::SocialMessaging::WabaId

arn:partition:social-messaging:region:account_ID:waba/waba_ID

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. 对于字段,选择资源。 ARN

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

      3. 在 “” 中,输入与ARN您的资源类型对应的(例如,arn:aws:s3:::amzn-s3-demo-bucket)。

      4. 要筛选其他 resources.ARN,请选择 + 条件。有关如何 CloudTrail 评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件

    6. 选择 + 字段以对其他字段添加筛选条件。

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 \ --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:::amzn-s3-demo-bucket/"] } ] } ]'

readOnly 值筛选数据事件

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

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

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

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

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

  2. 遵循步骤创建跟踪时,请做出以下选择:

    1. 选择数据事件

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

    3. 对于记录选择器模板,为您的使用场景选择适当的模板。

      注意

      仅记录 Amazon Web Services Management Console 事件” 和 “排除 Amazon 服务启动的事件” 模板仅适用于事件数据存储。

      如果您计划执行此操作 选择此日志选择器模板

      仅记录读取事件,而不应用其他筛选条件(例如,resources.ARN 值)。

      仅记录读取事件

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

      仅记录写入事件

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

      自定义

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

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

      2. 对于运算符,选择 equals

      3. 对于,请输入 false

      4. 选择 + 字段以对其他字段添加筛选条件。

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

      2. 对于运算符,选择 equals

      3. 对于,请输入 true

      4. 选择 + 字段以对其他字段添加筛选条件。

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

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

您只能将 Equals 运算符与 readOnly 字段配合使用。您可以将 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"] } ] } ]'