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

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

记录数据事件

默认情况下,跟踪和事件数据存储不记录数据事件。记录数据事件将收取额外费用。有关更多信息,请参阅Amazon CloudTrail 定价

注意

您的跟踪记录的事件可在 Amazon 中找到 EventBridge。例如,如果您选择记录 S3 对象的数据事件而非管理事件,则您的跟踪将仅处理和记录指定 S3 对象的数据事件。这些 S3 对象的数据事件可在 Amazon 中找到 EventBridge。有关更多信息,请参阅 Amazon EventBridge 用户指南中的来自Amazon服务的事件

数据事件

通过数据事件,可以了解对资源执行的或在资源内执行的资源操作。这些也称为数据层面操作。数据事件通常是高容量活动。

示例数据事件包括:

下表显示可用于跟踪的数据事件类型。数据事件类型(控制台)列显示控制台中的相应选择。resources.typ resources.type e 值列显示了您使用或 API 指定的值,以便在跟踪中包含该Amazon CLI类型的数据事件。 CloudTrail

对于跟踪,您可以使用基本或高级事件选择器来记录 Amazon S3 存储桶和存储桶对象、Lambda 函数和 DynamoDB 表(显示在表的前三行中)的数据事件。您只能使用高级事件选择器来记录其余行中显示的数据事件类型。

Amazon 服务 描述 数据事件类型(控制台) resources.type 值
Amazon DynamoDB

表上的 Amazon DynamoDB 对象级 API 活动(例如PutItemDeleteItem、和 API 操作)。UpdateItem

注意

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

DynamoDB

AWS::DynamoDB::Table

Amazon Lambda

Amazon Lambda 函数执行活动 (Invoke API)。

Lambda AWS::Lambda::Function
Amazon S3

针对存储桶和存储桶中对象的 Amazon S3 对象级别 API 活动(例如 GetObjectDeleteObjectPutObject API 操作)。

S3 AWS::S3::Object
Amazon AppConfig

Amazon AppConfig用于配置操作的 API 活动,例如对StartConfigurationSession和的调用GetLatestConfiguration

Amazon AppConfig AWS::AppConfig::Configuration
Amazon B2B Data Interchange

用于转换器操作的 B2B 数据交换 API 活动,例如对 GetTransformerJobStartTransformerJob 的调用。

B2B 数据交换 AWS::B2BI::Transformer
Amazon Bedrock 代理别名上的 Amazon Bedrock API 活动 Bedrock 代理别名 AWS::Bedrock::AgentAlias
知识库上的 Amazon Bedrock API 活动 Bedrock 知识库 AWS::Bedrock::KnowledgeBase
Amazon CloudFront

CloudFront 在 a KeyValueStore上的 API 活动

CloudFront KeyValueStore AWS::CloudFront::KeyValueStore
Amazon Cloud Map 命名空间上的 Amazon Cloud Map API 活动 Amazon Cloud Map 命名空间 AWS::ServiceDiscovery::Namespace
服务上的 Amazon Cloud Map API 活动 Amazon Cloud Map 服务 AWS::ServiceDiscovery::Service
Amazon CloudTrail

CloudTrail PutAuditEvents用于记录外部事件的 L CloudTrail ake 频道上的活动Amazon。

CloudTrail AWS::CloudTrail::Channel
Amazon CodeWhisperer 亚马逊 CodeWhisperer API 在自定义方面的活动。 CodeWhisperer 定制 AWS::CodeWhisperer::Customization
个人资料上 CodeWhisperer 的 Amazon API 活动。 CodeWhisperer AWS::CodeWhisperer::Profile
Amazon Cognito

针对 Amazon Cognito 身份池的 Amazon Cognito API 活动。

Cognito 身份池 AWS::Cognito::IdentityPool
Amazon DynamoDB

针对流的 Amazon DynamoDB API 活动

DynamoDB Streams AWS::DynamoDB::Stream
Amazon Elastic Block Store

Amazon Elastic Block Store (EBS) 直接 API,例如 Amazon EBS 快照上的 PutSnapshotBlockGetSnapshotBlockListChangedBlocks

Amazon EBS 直接 API AWS::EC2::Snapshot
Amazon EMR 针对预写日志工作空间的 Amazon EMR API 活动。 EMR 预写日志工作空间 AWS::EMRWAL::Workspace
Amazon FinSpace

针对环境的 Amazon FinSpace API 活动

FinSpace AWS::FinSpace::Environment
Amazon Glue

针对 Lake Formation 创建的表的 Amazon Glue API 活动

注意

目前,表的 Amazon Glue 数据事件仅在以下区域受支持:

  • 美国东部(弗吉尼亚州北部)

  • 美国东部(俄亥俄州)

  • 美国西部(俄勒冈州)

  • 欧洲地区(爱尔兰)

  • 亚太地区(东京)区域

Lake Formation AWS::Glue::Table
Amazon GuardDuty

探测器 GuardDuty 的 Amazon API 活动。

GuardDuty 探测器 AWS::GuardDuty::Detector
Amazon HealthImaging

Amazon HealthImaging 数据存储上的 API 活动。

医学成像数据存储 AWS::MedicalImaging::Datastore
Amazon IoT

Amazon IoT证书上@@ 的 API 活动

物联网证书 AWS::IoT::Certificate

Amazon IoTAPI 在事物上的活动。

物联网的东西 AWS::IoT::Thing
Amazon IoT Greengrass Version 2

组件版本上来自 Greengrass 核心设备的 Greengrass API 活动

注意

Greengrass 不会记录被拒绝访问的事件。

物联网 Greengrass 组件版本 AWS::GreengrassV2::ComponentVersion

部署时来自 Greengrass 核心设备的 Greengrass API 活动

注意

Greengrass 不会记录被拒绝访问的事件。

物联网 Greengrass 部署 AWS::GreengrassV2::Deployment
Amazon IoT SiteWise

资产上的@@ 物联网 SiteWise API 活动

物联网 SiteWise 资产 AWS::IoTSiteWise::Asset

时间序列上的@@ 物联网 SiteWise API 活动

物联网 SiteWise 时间序列 AWS::IoTSiteWise::TimeSeries
Amazon IoT TwinMaker

实体上的物联网 TwinMaker API 活动。

物联网 TwinMaker 实体 AWS::IoTTwinMaker::Entity

工作空间上 TwinMaker 的 IoT API 活动。

物联网 TwinMaker 工作空间 AWS::IoTTwinMaker::Workspace
Amazon Kendra Intelligent Ranking

针对重新评分执行计划的 Amazon Kendra Intelligent Ranking API 活动。

Kendra 排名 AWS::KendraRanking::ExecutionPlan
Amazon Keyspaces(Apache Cassandra 兼容) 表上的 Amazon Keyspaces API 活动 卡桑德拉桌 AWS::Cassandra::Table
Amazon Kinesis 针对视频流的 Amazon Kinesis API 活动,例如调用 GetMediaPutMedia Kinesis 视频流 AWS::KinesisVideo::Stream
Amazon Managed Blockchain

针对网络的 Amazon Managed Blockchain API 活动。

托管区块链网络 AWS::ManagedBlockchain::Network

针对 Ethereum 节点的 Amazon Managed Blockchain JSON-RPC 调用,如 eth_getBalanceeth_getBlockByNumber

托管区块链 AWS::ManagedBlockchain::Node
Amazon Neptune 图形

Neptune Graph 上的数据 API 活动,例如查询、算法或向量搜索。

Neptune 图形 AWS::NeptuneGraph::Graph
Amazon Private CA

Amazon Private CA Connector for Active Directory API 活动。

适用于 Active Directory 的 Amazon Private CA 连接器 AWS::PCAConnectorAD::Connector
Amazon Q Business

应用程序上的 Amazon Q Business API 活动

Amazon Q Business 应用程序 AWS::QBusiness::Application

数据来源上的 Amazon Q Business API 活动

Amazon Q Business 数据来源 AWS::QBusiness::DataSource

索引上的 Amazon Q Business API 活动

Amazon Q Business 索引 AWS::QBusiness::Index

Web 体验上的 Amazon Q Business API 活动

Amazon Q Business Web 体验 AWS::QBusiness::WebExperience
Amazon RDS

数据库集群上的 Amazon RDS API 活动

RDS 数据 API-数据库集群 AWS::RDS::DBCluster
Amazon S3

针对接入点的 Amazon S3 API 活动。

S3 接入点 AWS::S3::AccessPoint

Amazon S3 对象 Lambda 接入点 API 活动,例如调用 CompleteMultipartUploadGetObject

S3 对象 Lambda AWS::S3ObjectLambda::AccessPoint
Amazon S3 on Outposts

Amazon S3 on Outposts 对象级别 API 活动。

S3 Outposts AWS::S3Outposts::Object
Amazon SageMaker 亚马逊在终端节点上的 SageMaker InvokeEndpointWithResponseStream活动。 SageMaker 端点 AWS::SageMaker::Endpoint

特色商店中的亚马逊 SageMaker API 活动。

SageMaker feature store AWS::SageMaker::FeatureGroup

Amazon SageMaker API 在实验试用组件上的活动。

SageMaker 指标实验试用组件 AWS::SageMaker::ExperimentTrialComponent
Amazon SNS

针对平台端点的 Amazon SNS Publish API 操作。

SNS 平台端点 AWS::SNS::PlatformEndpoint

针对主题的 Amazon SNS PublishPublishBatch API 操作。

SNS 主题 AWS::SNS::Topic
Amazon SQS

消息上的 Amazon SQS API 活动

SQS AWS::SQS::Queue
Amazon Supply Chain

Amazon Supply Chain实例上的 API 活动。

供应链 AWS::SCN::Instance
Amazon Systems Manager 针对控制通道的 Amazon Systems Manager API 活动。 Systems Manager (系统管理员) AWS::SSMMessages::ControlChannel
Amazon Timestream 针对数据库的 Amazon Timestream Query API 活动。 Timestream 数据库 AWS::Timestream::Database
针对表的 Amazon Timestream Query API 活动。 Timestream 表 AWS::Timestream::Table
Amazon Verified Permissions

针对策略存储的 Amazon Verified Permissions API 活动。

Amazon Verified Permissions AWS::VerifiedPermissions::PolicyStore
Amazon WorkSpaces 瘦客户机 WorkSpaces 设备上的瘦客户端 API 活动。 瘦客户端设备 AWS::ThinClient::Device
WorkSpaces 环境中的瘦客户端 API 活动。 瘦客户端环境 AWS::ThinClient::Environment

默认情况下,在您创建跟踪或事件数据存储时,未记录数据事件。要记录 CloudTrail 数据事件,必须明确添加要为其收集活动的支持的资源或资源类型。有关更多信息,请参阅 创建跟踪为事件创建事件数据存 CloudTrail储

在单区域跟踪或事件数据存储上,您只能为可在该区域中访问的资源记录数据事件。尽管 S3 存储桶是全球性的,但 Amazon Lambda 函数和 DynamoDB 表是区域性的。

记录数据事件将收取额外费用。有关 CloudTrail 定价,请参阅Amazon CloudTrail定价

使用 Amazon Web Services Management Console 记录数据事件

以下程序介绍如何通过使用 Amazon Web Services Management Console 更新现有的事件数据存储或跟踪以记录数据事件。有关如何创建事件数据存储以记录数据事件的信息,请参阅 为事件创建事件数据存 CloudTrail储。有关如何创建跟踪以记录数据事件的信息,请参阅 在控制台中创建跟踪

对于跟踪,根据您使用的是高级事件选择器还是基本事件选择器,记录数据事件的步骤会有所不同。您可以使用高级事件选择器记录所有数据事件类型的数据事件,但只能使用基本事件选择器记录 Amazon S3 存储桶和存储桶对象、Amazon Lambda函数和 Amazon DynamoDB 表的数据事件。

按照以下程序更新现有的事件数据存储以记录数据事件。

  1. 登录Amazon Web Services Management Console并打开 CloudTrail 控制台,网址为 https://console.aws.amazon.com/cloudtrail/

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

  3. 事件数据存储页面上,选择要更新的事件数据存储。

    注意

    您只能在包含事件的事件数据存储上启用数据 CloudTrail 事件。您无法在Amazon Config配置项目、 CloudTrail Insights CloudTrail 事件或非事件的事件数据存储上启用数据Amazon事件。

  4. 在详细信息页面上的数据事件中,选择编辑

  5. 如果您尚未记录数据事件,请选择 Data events(数据事件)复选框。

  6. 对于 Data event type(数据事件类型),选择要在其上记录数据事件的资源类型。

  7. 选择日志选择器模板。 CloudTrail 包括用于记录该资源类型的所有数据事件的预定义模板。要构建自定义日志选择器模板,请选择 Custom(自定义)。

    注意

    选择 S3 存储桶的预定义模板,可为 Amazon 账户中当前包含的所有存储桶和完成事件数据存储创建后创建的任何存储桶,启用数据事件日志记录。它也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的存储桶执行的。

    如果事件数据存储仅应用于一个区域,则选择记录所有 S3 存储桶的预定义模板,可为事件数据存储所在的区域中的所有存储桶和后来在该区域中创建的任何存储桶,启用数据事件日志记录。不会为您的 Amazon 账户的其他区域中的 Simple Storage Service(Amazon S3)存储桶记录数据事件。

    如果您正在为所有区域创建事件数据存储,则选择 Lambda 函数的预定义模板,可为 Amazon 账户中当前包含的所有函数以及完成事件数据存储创建后可能在任何区域中创建的任何 Lambda 函数,启用数据事件日志记录。如果您正在为单区域创建事件数据存储,则此选择可为 Amazon 账户的该区域中当前包含的所有函数以及完成跟踪或事件数据存储创建后可能在该区域中创建的任何 Lambda 函数,启用数据事件日志记录。它不会为在其他区域中创建的 Lambda 函数启用数据事件日志记录。

    所有函数的日志记录数据事件也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的函数执行的。

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

  9. Advanced event selectors(高级事件选择器)中,为您要记录其数据事件的特定资源构建表达式。如果您使用的是预定义日志模板,则可跳过此步骤。

    1. 从下面的字段中选择。

      • readOnly-readOnly 可以设置为等于truefalse的值。只读数据事件是不会更改资源状态的事件,例如 Get*Describe* 事件。写入事件可添加、更改或删除资源、属性或构件,例如 Put*Delete*Write* 事件。要记录 readwrite 两种事件,请不要添加 readOnly 选择器。

      • eventName - eventName 可以使用任何运算符。您可以使用它来包含或排除记录到的任何数据事件 CloudTrail,例如PutBucketGetItem、或GetSnapshotBlock

      • resources.ARN-您可以将任何运算符与一起使用resources.ARN,但是如果您使用于或不等于,则该值必须与您在模板中指定为的值的有效资源的 ARN 完全匹配。resources.type

        下表显示每个 resources.type 的有效 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:::bucket_name/ arn:partition:s3:::bucket_name/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::KinesisVideo::Stream
        arn:partition:kinesisvideo:region:account_ID:stream/stream_name/creation_time
        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::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::SSMMessages::ControlChannel
        arn:partition:ssmmessages:region:account_ID:control-channel/control_channel_ID
        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 运算符。

      有关数据事件资源的 ARN 格式的更多信息,请参阅 Amazon Identity and Access Management用户指南中的操作、资源和条件键

    2. 对于每个字段,请选择 + 条件以根据需要添加任意数量的条件,所有条件总共可有最多 500 个指定值。例如,要从事件数据存储中记录的数据事件中排除两个 S3 存储桶的数据事件,您可以将该字段设置为 Resou rces.arn,将运算符设置为 “不开头”,然后粘贴到 S3 存储桶 ARN 中,或者浏览您不想为其记录事件的 S3 存储桶。

      要添加第二个 S3 存储桶,请选择 + 条件,然后重复上述说明,在 ARN 中粘贴或浏览到不同的存储桶。

      注意

      对于事件数据存储上的所有选择器,最多可以有 500 个值。这包括选择器的多个值的数组,例如 eventName。如果所有选择器均为单个值,则最多可以向选择器添加 500 个条件。

      如果您的账户中有超过 15,000 个 Lambda 函数,则在创建事件数据存储时,您无法在 CloudTrail控制台中查看或选择所有函数。您仍可使用预定义选择器模板记录所有函数,即使这些函数未显示出来也是如此。如果您要记录特定函数的数据事件,则可手动添加一个函数 (如果您知道其 ARN)。您也可以在控制台中完成事件数据存储的创建,然后使用 Amazon CLI 为特定 Lambda 函数配置数据事件日志记录。有关更多信息,请参阅 使用 Amazon Command Line Interface 记录数据事件

    3. 根据需要,选择 + Field(+ 字段)以添加其他字段。为了避免错误,请不要为字段设置冲突或重复的值。例如,不要在一个选择器中将 ARN 指定为等于某个值,然后在另一个选择器中指定 ARN 不等于相同的值。

    4. 选择 Next(下一步)以保存对自定义选择器模板的更改。不要选择其他日志选择器模板,或离开此页面,否则您的自定义选择器将会丢失。

  10. 要添加需要记录数据事件的其他数据类型,请选择 Add data event type(添加数据事件类型)。重复步骤 6 至此步骤,为数据事件类型配置高级事件选择器。

  11. 查看并验证选择后,选择保存更改

在 Amazon Web Services Management Console 中,如果跟踪使用高级事件选择器,则可以从记录所选资源上的所有数据事件的预定义模板中进行选择。选择了日志选择器模板后,您可以自定义模板,以仅包含最希望查看的数据事件。有关使用高级事件选择器的更多信息和提示,请参阅本主题中的 使用高级事件选择器记录事件

  1. 在控制台的 “ CloudTrail 控制面板” 或 “跟踪” 页面上,选择要更新的跟踪。

  2. 在详细信息页面上的数据事件中,选择编辑

  3. 如果您尚未记录数据事件,请选择 Data events(数据事件)复选框。

  4. 对于 Data event type(数据事件类型),选择要在其上记录数据事件的资源类型。

  5. 选择日志选择器模板。 CloudTrail 包括用于记录该资源类型的所有数据事件的预定义模板。要构建自定义日志选择器模板,请选择 Custom(自定义)。

    注意

    选择 S3 存储桶的预定义模板可为您的 Amazon 账户中现有的所有存储桶和您完成跟踪创建后创建的任何存储桶启用数据事件日志记录。它也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的存储桶执行的。

    如果跟踪仅应用于一个区域,则选择记录所有 S3 存储桶的预定义模板可为跟踪所在的区域中的所有存储桶和您后来在该区域中创建的任何存储桶启用数据事件日志记录。不会为您的 Amazon 账户的其他区域中的 Simple Storage Service(Amazon S3)存储桶记录数据事件。

    如果您正在为所有区域创建跟踪,则选择 Lambda 函数的预定义模板将为您的 Amazon 账户中当前包含的所有函数以及您在创建跟踪后可能在任何区域中创建的任何 Lambda 函数启用数据事件日志记录。如果您正在为单区域创建跟踪(对于跟踪,只能使用 Amazon CLI 完成此操作),则此选择可为 Amazon 账户的该区域中当前包含的所有函数以及完成跟踪创建后可能在该区域中创建的任何 Lambda 函数,启用数据事件日志记录。它不会为在其他区域中创建的 Lambda 函数启用数据事件日志记录。

    所有函数的日志记录数据事件也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的函数执行的。

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

  7. Advanced event selectors(高级事件选择器)中,为您要记录其数据事件的特定资源构建表达式。如果您使用的是预定义日志模板,则可跳过此步骤。

    1. 从下面的字段中选择。

      • readOnly-readOnly 可以设置为等于truefalse的值。只读数据事件是不会更改资源状态的事件,例如 Get*Describe* 事件。写入事件可添加、更改或删除资源、属性或构件,例如 Put*Delete*Write* 事件。要记录 readwrite 两种事件,请不要添加 readOnly 选择器。

      • eventName - eventName 可以使用任何运算符。您可以使用它来包含或排除记录到的任何数据事件 CloudTrail,例如PutBucketGetItem、或GetSnapshotBlock

      • resources.ARN-您可以将任何运算符与一起使用resources.ARN,但是如果您使用于或不等于,则该值必须与您在模板中指定为的值的有效资源的 ARN 完全匹配。resources.type

        下表显示每个 resources.type 的有效 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:::bucket_name/ arn:partition:s3:::bucket_name/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::KinesisVideo::Stream
        arn:partition:kinesisvideo:region:account_ID:stream/stream_name/creation_time
        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::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::SSMMessages::ControlChannel
        arn:partition:ssmmessages:region:account_ID:control-channel/control_channel_ID
        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 运算符。

      有关数据事件资源的 ARN 格式的更多信息,请参阅 Amazon Identity and Access Management用户指南中的操作、资源和条件键

    2. 对于每个字段,请选择 + 条件以根据需要添加任意数量的条件,所有条件总共可有最多 500 个指定值。例如,要从跟踪中记录的数据事件中排除两个 S3 存储桶的数据事件,您可以将该字段设置为 Resou rces.arn,将运算符设置为 “不以开头”,然后粘贴到 S3 存储桶 ARN 中,或者浏览您不想为其记录事件的 S3 存储桶。

      要添加第二个 S3 存储桶,请选择 + 条件,然后重复上述说明,在 ARN 中粘贴或浏览到不同的存储桶。

      注意

      对于跟踪上的所有选择器,最多可以有 500 个值。这包括选择器的多个值的数组,例如 eventName。如果所有选择器均为单个值,则最多可以向选择器添加 500 个条件。

      如果您的账户中有超过 15,000 个 Lambda 函数,则在创建跟踪时无法在 CloudTrail控制台中查看或选择所有函数。您仍可使用预定义选择器模板记录所有函数,即使这些函数未显示出来也是如此。如果您要记录特定函数的数据事件,则可手动添加一个函数 (如果您知道其 ARN)。您也可以在控制台中完成跟踪的创建,然后使用 Amazon CLI 为特定 Lambda 函数配置数据事件日志记录。有关更多信息,请参阅 使用 Amazon Command Line Interface 记录数据事件

    3. 根据需要,选择 + Field(+ 字段)以添加其他字段。为了避免错误,请不要为字段设置冲突或重复的值。例如,不要在一个选择器中将 ARN 指定为等于某个值,然后在另一个选择器中指定 ARN 不等于相同的值。

    4. 选择 Next(下一步)以保存对自定义选择器模板的更改。不要选择其他日志选择器模板,或离开此页面,否则您的自定义选择器将会丢失。

  8. 要添加需要记录数据事件的其他数据类型,请选择 Add data event type(添加数据事件类型)。重复步骤 4 至此步骤,为数据事件类型配置高级事件选择器。

  9. 查看并验证选择后,选择保存更改

按照以下程序,使用基本事件选择器更新现有跟踪以记录数据事件。

  1. 登录Amazon Web Services Management Console并打开 CloudTrail 控制台,网址为 https://console.aws.amazon.com/cloudtrail/

  2. 打开 CloudTrail 控制台的 T ra ils 页面并选择跟踪名称。

    注意

    虽然您可以编辑现有跟踪以记录数据事件,但作为最佳实践,请考虑专门创建单独的跟踪以记录数据事件。

  3. 对于 Data event(数据事件),选择 Edit(编辑)。

  4. 对于 Simple Storage Service(Amazon S3)存储桶:

    1. 对于 Data event source(数据事件源),选择 S3

    2. 您可以选择记录 All current and future S3 buckets(所有当前和未来 S3 存储桶),也可以指定单个存储桶或函数。默认情况下,记录所有当前和未来 S3 存储桶的数据事件。

      注意

      保留默认 All current and future S3 buckets(所有当前和未来 S3 存储桶)选项会为您的 Amazon 账户中现有的所有存储桶和您完成跟踪创建后创建的任何存储桶启用数据事件日志记录。它也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的存储桶执行的。

      如果您正在为单个区域创建跟踪(通过使用 Amazon CLI 完成),则选择 Select all S3 buckets in your account(选择您账户中的所有 S3 存储桶)选项会为跟踪所在的区域中的所有存储桶和您后来在该区域中创建的任何存储桶启用数据事件日志记录。不会为您的 Amazon 账户的其他区域中的 Simple Storage Service(Amazon S3)存储桶记录数据事件。

    3. 如果保留默认值 All current and future S3 buckets(所有当前和未来 S3 存储桶),则选择记录 Read(读取)事件、Write(写入)事件,还是记录两者。

    4. 要选择单个存储桶,请清空 All current and future S3 buckets(所有当前和未来 S3 存储桶)的 Read(读取)和Write(写入)复选框。在 Individual bucket selection(单个存储桶选择)中,浏览要在其上记录数据事件的存储桶。要查找特定存储桶,键入所需存储桶的存储桶前缀。您可以在此窗口中选择多个存储桶。选择添加存储桶,记录更多存储桶的数据事件。选择记录 Read(读取)事件(如 GetObject)、Write(写入)事件(如 PutObject)或同时记录两种事件。

      此设置优先于为各个存储桶配置的个别设置。例如,如果指定记录所有 S3 存储桶的 Read 事件,然后选择为数据事件日志记录添加一个特定存储桶,则所添加存储桶的 Read 已经是选中状态。您无法清除此选择。只能配置 Write 选项。

      要从日志记录中删除存储桶,请选择 X

  5. 要添加需要记录数据事件的其他数据类型,请选择 Add data event type(添加数据事件类型)。

  6. 对于 Lambda 函数:

    1. 对于 Data event source(数据事件源),选择 Lambda

    2. Lambda function(Lambda 函数)中,选择 All regions(所有区域)记录所有 Lambda 函数,或选择 Input function as ARN(输入函数作为 ARN)以记录特定函数上的数据事件。

      要记录 Amazon 账户中的所有 Lambda 函数的数据事件,请选择 Log all current and future functions(记录所有当前和未来函数)。此设置优先于为各个函数配置的个别设置。将记录所有函数,即便这些函数未显示。

      注意

      如果为所有区域创建了一个跟踪,则此选择将为您的 Amazon 账户中当前包含的所有函数以及您在创建跟踪后可能在任何区域中创建的任何 Lambda 函数启用数据事件日志记录。如果您正在为单个区域创建跟踪(通过使用 Amazon CLI 完成),则此选择将为您的 Amazon 账户中的该区域中当前包含的所有函数以及您在创建跟踪后可能在该区域中创建的任何 Lambda 函数启用数据事件日志记录。它不会为在其他区域中创建的 Lambda 函数启用数据事件日志记录。

      所有函数的日志记录数据事件也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的函数执行的。

    3. 如果选择 Input function as ARN(输入函数作为 ARN),则输入 Lambda 函数的 ARN。

      注意

      如果您的账户中有超过 15,000 个 Lambda 函数,则在创建跟踪时无法在 CloudTrail控制台中查看或选择所有函数。您仍可以选择该选项来记录所有函数,即使未显示这些函数也是如此。如果您要记录特定函数的数据事件,则可手动添加一个函数 (如果您知道其 ARN)。您也可以在控制台中完成跟踪的创建操作,然后使用 Amazon CLI 和 put-event-selectors 命令为特定 Lambda 函数配置数据事件日志记录。有关更多信息,请参阅 使用 Amazon CLI 管理跟踪记录

  7. 要添加需要记录数据事件的其他数据类型,请选择 Add data event type(添加数据事件类型)。

  8. 对于 DynamoDB 表:

    1. 对于 Data event source(数据事件源),选择 DynamoDB

    2. DynamoDB table selection(DynamoDB 表选择)中,选择 Browse(浏览)以选择一个表,或粘贴到您有权访问的 DynamoDB 表的 ARN 中。DynamoDB 表 ARN 使用以下格式:

      arn:partition:dynamodb:region:account_ID:table/table_name

      要添加另一个表,请选择 Add row(添加行),然后浏览到某个表或粘贴到您有权访问的表的 ARN 中。

  9. 选择保存更改

示例:记录 Simple Storage Service(Amazon S3)对象的数据事件

记录一个 S3 存储桶中的所有 S3 对象的数据事件

下面的示例演示在为一个名为 bucket-1 的 S3 存储桶中的所有数据事件配置日志记录时日志记录是如何工作的。在此示例中, CloudTrail 用户指定了一个空前缀,并指定了记录读取写入数据事件的选项。

  1. 用户将对象上传到 bucket-1

  2. PutObject API 操作是 Simple Storage Service(Amazon S3)对象级别的 API。它在中被记录为数据事件 CloudTrail。由于 CloudTrail 用户指定的 S3 存储桶前缀为空,因此会记录在该存储桶中任何对象上发生的事件。跟踪或事件数据存储将处理和记录事件。

  3. 另一个用户将对象上传到 bucket-2

  4. PutObject API 操作发生在不是为跟踪或事件数据存储指定的 S3 存储桶中的某个对象上。跟踪或事件数据存储不会记录事件。

记录特定 S3 对象的数据事件

下面的示例演示在为特定 S3 对象配置跟踪或事件数据存储以记录事件时日志记录的工作方式。在此示例中, CloudTrail 用户指定了一个名为 b ucket-3 的 S3 存储桶,其前缀为 my-images,并且可以选择仅记录写入数据事件。

  1. 一个用户在存储桶中检测到一个以 my-images 前缀开头的对象,例如 arn:aws:s3:::bucket-3/my-images/example.jpg

  2. DeleteObject API 操作是 Simple Storage Service(Amazon S3)对象级别的 API。它在中被记录为写入数据事件 CloudTrail。事件发生在与跟踪或事件数据存储中指定的 S3 存储桶和前缀匹配的对象上。跟踪或事件数据存储将处理和记录事件。

  3. 另一个用户删除了 S3 存储桶中一个带不同前缀的对象,例如 arn:aws:s3:::bucket-3/my-videos/example.avi

  4. 事件发生在与跟踪或事件数据存储中指定的前缀不匹配的对象上。跟踪或事件数据存储不会记录事件。

  5. 一个用户对对象 arn:aws:s3:::bucket-3/my-images/example.jpg 调用 GetObject API 操作。

  6. 虽然事件发生在跟踪或事件数据存储中指定的存储桶和前缀上,但 GetObject 是读取类型的 Amazon S3 对象级别 API。它被记录为读取数据事件 CloudTrail,并且跟踪或事件数据存储未配置为记录读取事件。跟踪或事件数据存储不会记录事件。

注意

对于跟踪,如果记录特定 Amazon S3 存储桶的数据事件,建议不要使用将记录其数据事件的 Amazon S3 存储桶来接收在数据事件部分为跟踪指定的日志文件。使用相同的 Simple Storage Service(Amazon S3)存储桶会导致您的跟踪在日志文件每次传输到 Simple Storage Service(Amazon S3)存储桶时都记录数据事件。日志文件是按时间间隔传输的聚合事件,因此,事件与日志文件的比率不是 1:1;事件将记录到下一个日志文件中。例如,当 CloudTrail 传送日志时,PutObject事件会发生在 S3 存储桶上。如果还在数据事件部分中指定了 S3 存储桶,跟踪将处理 PutObject 事件并将其记录为数据事件。该操作是另一个 PutObject 事件,并且跟踪将重新处理和记录此事件。有关更多信息,请参阅 如何 CloudTrail 运作

为避免记录您用于接收日志文件的 Simple Storage Service(Amazon S3)存储桶的数据事件(如果您将跟踪配置为记录 Amazon 账户中的所有 Simple Storage Service(Amazon S3)数据事件),请考虑将日志文件传输到属于其他 Amazon 账户的 Simple Storage Service(Amazon S3)存储桶。有关更多信息,请参阅 接收来自多个账户的 CloudTrail 日志文件

记录其他 Amazon 账户中的 S3 对象的数据事件

在将跟踪配置为记录数据事件时,您还可以指定属于其他 Amazon 账户的 S3 对象。当事件在指定对象上发生时, CloudTrail 将评估事件是否与每个账户中的任何跟踪匹配。如果事件与某个跟踪设置匹配,则跟踪将处理并记录该账户的事件。通常,API 调用者和资源所有者都可以接收事件。

如果您拥有一个 S3 对象并且在跟踪中指定此对象,则您的跟踪将记录在您的账户中的对象上发生的事件。由于您拥有该对象,因此您的跟踪还将在其他账户调用该对象时记录事件。

如果您在跟踪中指定一个 S3 对象,并且其他账户拥有此对象,则您的跟踪仅记录在您的账户中的此对象上发生的事件。您的跟踪不会记录其他账户中发生的事件。

示例:记录两个 Amazon 账户的 Simple Storage Service(Amazon S3)对象的数据事件

以下示例显示了两个Amazon账户如何配置 CloudTrail 以记录同一 S3 对象的事件。

  1. 在您的账户中,您希望您的跟踪记录名为 owner-bucket 的 S3 存储桶中所有对象的数据事件。通过指定带空对象前缀的 S3 存储桶来配置跟踪。

  2. Bob 拥有一个单独的账户,该账户已获得对 S3 存储桶的访问权限。Bob 还希望记录同一 S3 存储桶中所有对象的数据事件。对于其跟踪,他配置了跟踪并指定带空对象前缀的同一 S3 存储桶。

  3. Bob 使用 PutObject API 操作将对象上传到 S3 存储桶。

  4. 此事件在他的账户中发生,并且与他的跟踪设置匹配。Bob 的跟踪将处理和记录该事件。

  5. 由于您拥有 S3 存储桶并且事件与您的跟踪设置匹配,因此您的跟踪也将处理和记录同一事件。由于该事件现在有两个副本(一个记录在 Bob 的跟踪中,一个记录在您的跟踪中),因此需要为数据事件的两个副本 CloudTrail 收费。

  6. 您将一个对象上传到 S3 存储桶。

  7. 此事件在您的账户中发生并且与您的跟踪设置匹配。您的跟踪将处理和记录此事件。

  8. 由于该事件未发生在 Bob 的账户中,而且他不拥有 S3 存储桶,因此 Bob 的跟踪不会记录该事件。 CloudTrail 仅对此数据事件的一份副本收费。

示例:记录所有存储桶的数据事件,包括两个 Amazon 账户使用的 S3 存储桶

以下示例显示对收集 Amazon 账户中的数据事件的跟踪记录启用了 Select all S3 buckets in your account(选择您账户中的所有 S3 存储桶)时的日志记录行为。

  1. 在您的账户中,您希望您的跟踪记录所有 S3 存储桶的数据事件。在 Data events(数据事件)中的 All current and future S3 buckets(所有当前和未来 S3 存储桶)下,您可以通过选择 Read(读取)事件、Write(写入)事件或同时选择两者,来配置跟踪。

  2. Bob 拥有一个单独的账户,该账户已被授予对您账户中 S3 存储桶的访问权限。他想记录他有权访问的存储桶的数据事件。他配置他的跟踪以获取所有 S3 存储桶的数据事件。

  3. Bob 使用 PutObject API 操作将对象上传到 S3 存储桶。

  4. 此事件在他的账户中发生,并且与他的跟踪设置匹配。Bob 的跟踪将处理和记录该事件。

  5. 由于您拥有 S3 存储桶并且事件与您跟踪的设置匹配,因此您的跟踪也将处理和记录此事件。由于该事件现在有两个副本(一个记录在 Bob 的跟踪中,一个记录在你的跟踪中),所以每个账户都要向每个账户 CloudTrail 收取一份数据事件的副本。

  6. 您将一个对象上传到 S3 存储桶。

  7. 此事件在您的账户中发生并且与您的跟踪设置匹配。您的跟踪将处理和记录此事件。

  8. 由于该事件未发生在 Bob 的账户中,而且他不拥有 S3 存储桶,因此 Bob 的跟踪不会记录该事件。 CloudTrail 仅对您账户中此数据事件的一份副本收费。

  9. 第三个用户 Mary 可以访问 S3 存储桶,并在存储桶上运行 GetObject 操作。她有一个跟踪配置为记录其账户中所有 S3 存储桶上的数据事件。因为她是 API 调用者,所以在她的跟踪中 CloudTrail 记录了一个数据事件。虽然 Bob 有权访问该存储桶,但他不是资源所有者,因此这次未在他的跟踪中记录任何事件。作为资源所有者,您会在跟踪中收到一个关于 Mary 调用的 GetObject 操作的事件。 CloudTrail 针对数据事件的每个副本对您的账户和 Mary 的账户收取费用:一个在 Mary 的跟踪中,一个在您的跟踪中。

只读和只写事件

在配置跟踪或事件数据存储以记录数据事件和管理事件时,可以指定是需要只读事件、只写事件还是两者都需要。

  • 读取

    Read(读取)事件包括将读取您的资源但不进行更改的 API 操作。例如,只读事件包括 Amazon EC2 DescribeSecurityGroupsDescribeSubnets API 操作。这些操作仅返回有关 Amazon EC2 资源的信息,但不更改您的配置。

  • 写入

    Write(写入)事件包括将修改(或可能修改)您的资源的 API 操作。例如,Amazon EC2 RunInstancesTerminateInstances API 操作将修改您的实例。

示例:为单独的跟踪记录记录读取事件和写入事件

以下示例说明如何将跟踪记录配置为将账户的日志活动拆分到单独的 S3 存储桶中:一个存储桶接收只读事件,另一个存储桶接收只写事件。

  1. 您创建一个跟踪并选择一个名为 read-only-bucket 的 S3 存储桶来接收日志文件。然后,您更新跟踪以指定您需要 Read(读取)管理事件和数据事件。

  2. 您创建另一个跟踪并选择一个名为 write-only-bucket 的 S3 存储桶来接收日志文件。然后,您更新跟踪以指定您需要 Write(写入)管理事件和数据事件。

  3. Amazon EC2 DescribeInstancesTerminateInstances API 操作将在您的账户中执行。

  4. DescribeInstances API 操作是只读事件,它匹配第一个跟踪的设置。跟踪将记录事件并将事件传送到 read-only-bucket

  5. TerminateInstances API 操作是只写事件,它匹配第二个跟踪的设置。跟踪将记录事件并将事件传送到 write-only-bucket

使用 Amazon Command Line Interface 记录数据事件

您可以使用 Amazon CLI 配置跟踪以记录数据事件。

使用 Amazon CLI 记录跟踪记录的数据事件

您可以使用 Amazon CLI 配置您的跟踪记录以记录管理事件和数据事件。要查看您的跟踪是否正在记录管理事件和数据事件,请运行 get-event-selectors 命令。

注意
  • 请注意,如果您的账户正在记录管理事件的多个副本,将会产生费用。记录数据事件始终需要收取费用。有关更多信息,请参阅Amazon CloudTrail 定价

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

  • 如果您的跟踪使用基本的事件选择器,则您只能记录以下资源类型:

    • AWS::DynamoDB::Table

    • AWS::Lambda::Function

    • AWS::S3::Object

    要记录其他资源类型,您需要使用高级事件选择器。要将跟踪转换为高级事件选择器,请运行 get-event-selectors 命令以确认当前事件选择器,然后将高级事件选择器配置为与以前的事件选择器的覆盖范围相匹配,然后为要记录数据事件的任何资源类型添加选择器。

  • 您可以使用高级事件选择器根据 eventNameresources.ARNreadOnly 字段的值来进行筛选,从而使您能够仅记录感兴趣的数据事件。有关配置这些字段的更多信息,请参阅 AdvancedFieldSelector

aws cloudtrail get-event-selectors --trail-name TrailName

该命令将返回跟踪的默认设置。

使用基本事件选择器记录事件

下面是显示基本事件选择器的 get-event-selectors 命令结果示例。默认情况下,当您使用 Amazon CLI 创建跟踪时,跟踪会记录所有管理事件。默认情况下,跟踪记录不记录数据事件。

{ "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName", "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ] }

要将跟踪配置为记录管理事件和数据事件,请运行 put-event-selectors 命令。

以下示例说明如何使用基本事件选择器配置跟踪,以包含两个 S3 存储桶前缀中 S3 对象的所有管理事件和数据事件。您可以为一个跟踪指定 1 至 5 个事件选择器。您可以为一个跟踪指定 1 至 250 个数据资源。

注意

如果您选择使用基本事件选择器限制数据事件,则最多只能有 250 个 S3 数据资源。

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{ "ReadWriteType": "All", "IncludeManagementEvents":true, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2"] }] }]'

该命令将返回为跟踪配置的事件选择器。

{ "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName", "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2", ], "Type": "AWS::S3::Object" } ], "ReadWriteType": "All" } ] }

使用高级事件选择器记录事件

注意

如果将高级事件选择器应用于跟踪,则所有现有的基本事件选择器都将被覆盖。在配置高级事件选择器之前,请运行 get-event-selectors 命令以确认当前事件选择器,然后将高级事件选择器配置为与以前的事件选择器的覆盖范围相匹配,然后为要记录的任何其他数据事件添加选择器。

如果您选择使用高级事件选择器,则 get-event-selectors 命令返回的结果类似于下方内容。

{ "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName", "AdvancedEventSelectors": [] }

以下示例说明如何使用高级事件选择器记录所有管理事件(readOnlywriteOnly),并包括相同的两个 S3 存储桶前缀中的 S3 对象的 PutObjectDeleteObject 事件。如此处所示,使用高级事件选择器,您不仅能按 ARN 选择 S3 前缀名称,还能按您要记录的特定事件的名称进行选择。对于每个跟踪,最多可将 500 个条件添加到高级事件选择器,包括所有选择器值。您可以为一个跟踪指定 1 至 250 个数据资源。

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors '[ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] } ] }, { "Name": "Log PutObject and DeleteObject events for two S3 prefixes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2"] } ] } ]'

结果显示为跟踪配置的高级事件选择器。

{ "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName", "AdvancedEventSelectors": [ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] }, { "Name": "Log PutObject and DeleteObject events for two S3 prefixes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2" ] } ] } ] }

使用高级事件选择器记录存储桶的所有 Simple Storage Service(Amazon S3)事件

注意

如果将高级事件选择器应用于跟踪,则所有现有的基本事件选择器都将被覆盖。

以下示例说明如何配置您的跟踪以包含特定 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:partition:s3:::bucket_name/"] } ] } ]'

该命令将返回以下示例输出。

{ "TrailARN": "arn:aws:cloudtrail:region:account_ID:trail/TrailName", "AdvancedEventSelectors": [ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:partition:s3:::bucket_name/" ] } ] } ] }

使用高级事件选择器记录 Simple Storage Service(Amazon S3)on Amazon Outposts 事件

注意

如果将高级事件选择器应用于跟踪,则所有现有的基本事件选择器都将被覆盖。

以下示例说明如何配置您的跟踪以包含您的 Outpost 中的 Outposts 对象上的所有 Simple Storage Service(Amazon S3)的所有数据事件。

aws cloudtrail put-event-selectors --trail-name TrailName --region region \ --advanced-event-selectors \ '[ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3Outposts::Object"] } ] } ]'

该命令将返回以下示例输出。

{ "TrailARN": "arn:aws:cloudtrail:region:account_ID:trail/TrailName", "AdvancedEventSelectors": [ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3Outposts::Object" ] } ] } ] }

使用 Amazon SDK 记录数据事件

运行该GetEventSelectors操作以查看您的跟踪是否正在记录数据事件。您可以通过运行PutEventSelectors操作将跟踪配置为记录数据事件。有关更多信息,请参阅 Amazon CloudTrail API 参考

向 Amazon CloudWatch 日志发送事件

CloudTrail 支持向 CloudWatch 日志发送数据事件。当您将跟踪配置为向 CloudWatch 日志日志组发送事件时,仅 CloudTrail 发送您在跟踪中指定的事件。例如,如果您将跟踪配置为仅记录数据事件,则您的跟踪仅将数据事件传送到您的 CloudWatch 日志日志组。有关更多信息,请参阅 使用 Amazon CloudWatch Logs 监控 CloudTrail 日志文件