本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用進階事件選取器篩選資料事件
本節說明如何使用進階事件選擇器來建立精細選擇器,這可協助您透過僅記錄感興趣的特定資料事件來控制成本。
例如:
-
您可以在
eventName
欄位上新增篩選條件,以包含或排除特定API呼叫。 -
您可以在
resources.ARN
欄位上新增篩選條件,以包含或排除特定資源的記錄。例如,如果您正在記錄 S3 資料事件,您可以排除追蹤的 S3 儲存貯體記錄。 -
您可以選擇在
readOnly
欄位上新增篩選條件,以僅記錄唯讀事件或唯讀事件。
下表提供有關進階事件選取器可設定欄位的其他資訊。
欄位 | 必要 | 有效的運算子 | 描述 |
---|---|---|---|
|
是 |
|
此欄位設定為 追蹤支援:是 事件資料存放區支援:是 |
|
是 |
|
此欄位用於選取您要記錄資料事件的資源類型。資料事件資料表會顯示可能的值。 追蹤支援:是 事件資料存放區支援:是 |
|
否 |
|
這是選用欄位,用於根據 追蹤支援:是 事件資料存放區支援:是 |
|
否 |
|
這是選用的 封存檔,用於篩選或篩選任何記錄到的資料事件 CloudTrail,例如 如果您使用的是 AWS CLI,則可以使用逗號分隔每個值來指定多個值。 如果您使用的是 主控台,您可以為 追蹤支援:是 事件資料存放區支援:是 |
|
否 |
|
這是選用欄位,用於透過提供 來排除或包含特定資源的資料事件 如果您使用的是 AWS CLI,則可以使用逗號分隔每個值來指定多個值。 如果您使用的是 主控台,您可以為 追蹤支援:是 事件資料存放區支援:是 |
|
否 |
|
您可以使用它來包含或排除特定事件來源。 追蹤支援:否 事件資料存放區支援:是 |
|
否 |
|
eventType 要包含或排除的 。例如,您可以將此欄位設定為 追蹤支援:否 事件資料存放區支援:是 |
|
否 |
|
包含或排除源自 AWS Management Console 工作階段的事件。此欄位可以設定為 追蹤支援:否 事件資料存放區支援:是 |
|
否 |
|
包含或排除特定IAM身分所採取動作的事件。如需詳細資訊,請參閱 CloudTrail userIdentity 元素。 追蹤支援:否 事件資料存放區支援:是 |
若要使用 CloudTrail 主控台記錄資料事件,請選擇資料事件選項,然後在建立或更新追蹤或事件資料存放區時選取感興趣的資源類型。資料事件資料表顯示您可以在 CloudTrail 主控台上選擇的可能資源類型。
若要使用 記錄資料事件 AWS CLI,請設定 --advanced-event-selector
參數以設定eventCategory
等於 Data
,並將resources.type
值設定為等於您要記錄資料事件的資源類型值。資料事件資料表列出可用的資源類型。
例如,如果您想要記錄所有 Cognito Identity 集區的資料事件,請將 --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 資料事件記錄在 Identity 集區上。您可以進一步精簡進階事件選擇器,以篩選 eventName
、 和 resources.ARN
欄位readOnly
,以記錄特定感興趣的事件,或排除不感興趣的事件。
您可以設定進階事件選擇器,根據多個欄位篩選資料事件。例如,您可以設定進階事件選取器來記錄所有 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
、NotStartsWith
、 EndsWith
或 來NotEndsWith
明確比對事件欄位的開頭或結尾。
如何 CloudTrail 評估欄位的多個條件
對於進階事件選取器, 會 CloudTrail 評估欄位的多個條件,如下所示:
-
DESELECT 運算子是 AND'd 在一起。如果符合任何DESELECT運算子條件,則不會交付事件。這些是進階事件選取器的有效DESELECT運算子:
-
NotEndsWith
-
NotEquals
-
NotStartsWith
-
-
SELECT 運算子是 OR'd together。這些是進階事件選取器的有效SELECT運算子:
-
EndsWith
-
Equals
-
StartsWith
-
-
SELECT 和 DESELECT運算子的組合遵循上述規則,兩個群組都 AND'd 在一起。
顯示 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
有助於控制成本,因為您避免在 記錄資料事件時產生成本, AWS 服務 而 新增對新資料的支援APIs。
您可以搭配 eventName
欄位使用任何運算子。您可以使用它來篩選或篩選記錄到的任何資料事件 CloudTrail,例如 PutBucket
或 GetSnapshotBlock
。
eventName
使用 篩選資料事件 AWS Management Console
使用 CloudTrail 主控台執行下列步驟來篩選 eventName
欄位。
-
當您依照步驟建立追蹤或事件資料存放區時,請進行下列選擇:
-
選擇資料事件。
-
選擇您要記錄資料事件的資源類型。
-
針對日誌選取器範本,選擇自訂。
-
(選用) 在選取器名稱中,輸入用於識別選取器的名稱。選取器名稱是進階事件選擇器的描述性名稱,例如「僅為兩個 S3 儲存貯體記錄資料事件」。選擇器名稱在進階事件選擇器
Name
中列為 ,如果您展開JSON檢視,則可檢視。 -
在進階事件選取器中,執行下列動作來篩選
eventName
:-
針對 欄位,選擇 eventName。
-
對於運算子,選擇條件運算子。在此範例中,我們將選擇等於,因為我們想要記錄特定API呼叫。
-
針對值,輸入您要篩選的事件名稱。
-
若要在其他 上篩選
eventName
,請選擇 + 條件。如需如何 CloudTrail 評估多個條件的詳細資訊,請參閱如何 CloudTrail 評估欄位的多個條件。
-
-
選擇 +Field 以新增其他欄位的篩選條件。
-
eventName
使用 篩選資料事件 AWS CLI
您可以使用 AWS 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"] } ] } ]'
下一個範例會建立新的事件資料存放區,記錄 EBS Direct 的資料事件,APIs但不包括ListChangedBlocks
API呼叫。您可以使用 update-event-data-store 命令來更新現有的事件資料存放區。
aws cloudtrail create-event-data-store \ --name "
eventDataStoreName
" --advanced-event-selectors '[ { "Name": "Log all EBS Direct API data events except ListChangedBlocks", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] }, { "Field": "eventName", "NotEquals": ["ListChangedBlocks"] } ] } ]'
依 篩選資料事件 resources.ARN
使用進階事件選擇器,您可以篩選 resources.ARN
欄位的值。
您可以搭配 resources.ARN
使用任何運算子,但如果您使用 Equals
或 NotEquals
,該值必須完全符合您指定resources.type
值ARN的有效資源的 。若要記錄特定 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
。如果您指定 AWS::DynamoDB::Table
作為 resources.type
,則會根據預設同時記錄 DynamoDB 資料表和 DynamoDB 串流事件。若要排除串流事件,請在 eventName
欄位上新增篩選條件。
2 若要記錄特定 S3 儲存貯體中所有物件的所有資料事件,請使用 StartsWith
運算子,並僅包含儲存貯體ARN做為比對值。末尾斜線是有意保留,請勿排除。
3 若要記錄 S3 存取點中所有物件的事件,建議您僅使用存取點 ARN,不要包含物件路徑,並使用 StartsWith
或 NotStartsWith
運算子。
resources.ARN
使用 篩選資料事件 AWS Management Console
執行下列步驟,使用 CloudTrail 主控台篩選 resources.ARN
欄位。
-
當您依照步驟建立追蹤或事件資料存放區時,請進行下列選擇:
-
選擇資料事件。
-
選擇您要記錄資料事件的資源類型。
-
針對日誌選取器範本,選擇自訂。
-
(選用) 在選取器名稱中,輸入用於識別選取器的名稱。選取器名稱是進階事件選擇器的描述性名稱,例如「僅為兩個 S3 儲存貯體記錄資料事件」。選擇器名稱在進階事件選擇器
Name
中列為 ,如果您展開JSON檢視,則可檢視。 -
在進階事件選取器中,執行下列動作以篩選
resources.ARN
:-
針對欄位,選擇資源。ARN
-
對於運算子,選擇條件運算子。在此範例中,我們將選擇 開頭,因為我們想要記錄特定 S3 儲存貯體的資料事件。
-
針對值,輸入ARN資源類型的 (例如
arn:aws:s3:::amzn-s3-demo-bucket
)。 -
若要篩選另一個
resources.ARN
,請選擇 + 條件。如需如何 CloudTrail 評估多個條件的詳細資訊,請參閱 如何 CloudTrail 評估欄位的多個條件。
-
-
選擇 +Field 以新增其他欄位的篩選條件。
-
resources.ARN
使用 篩選資料事件 AWS CLI
您可以使用 AWS CLI篩選 resources.ARN
欄位,以記錄特定 的事件,ARN或排除特定 的記錄ARN。
如果您要更新現有的線索或事件資料存放區以記錄其他事件選取器,請執行線索的 get-event-selectors
命令,或事件資料存放區的 get-event-data-store
命令,以取得目前的事件選取器。然後,更新您的事件選擇器,為您要記錄的每個資料資源類型新增欄位選擇器。
以下範例說明如何設定您的追蹤在特定 S3 儲存貯體中包含所有 Amazon S3 物件的所有管理和資料事件。resources.type
欄位的 S3 事件的值是 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
值篩選資料事件 AWS Management Console
執行下列步驟,使用 CloudTrail 主控台篩選 readOnly
欄位。
-
當您依照步驟建立追蹤或事件資料存放區時,請進行下列選擇:
-
選擇資料事件。
-
選擇您要記錄資料事件的資源類型。
-
針對日誌選取器範本,選擇適合您使用案例的範本。
注意
僅日誌 AWS Management Console 事件和排除 AWS 服務啟動的事件範本僅適用於事件資料存放區。
如果您計劃這樣做 選擇此日誌選取器範本 僅記錄讀取事件,不套用其他篩選條件 (例如,在
resources.ARN
值上)。僅記錄讀取事件
僅記錄寫入事件,且不套用其他篩選條件 (例如,在
resources.ARN
值上)。僅記錄寫入事件
篩選
readOnly
值並套用其他篩選條件 (例如,在resources.ARN
值上)。Custom (自訂)
在進階事件選取器中,執行下列動作以篩選
readOnly
值:記錄寫入事件
-
針對 欄位,選擇 readOnly。
-
對於運算子,選擇 equals。
-
針對數值,輸入
false
。 -
選擇 +Field 以新增其他欄位的篩選條件。
記錄讀取事件
-
針對 欄位,選擇 readOnly。
-
對於運算子,選擇 equals。
-
針對數值,輸入
true
。 -
選擇 +Field 以新增其他欄位的篩選條件。
-
-
使用 依readOnly
值篩選資料事件 AWS CLI
您可以使用 AWS 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"] } ] } ]'
下一個範例會建立新的事件資料存放區,僅記錄 EBS Direct 的唯讀資料事件APIs。您可以使用 update-event-data-store 命令來更新現有的事件資料存放區。
aws cloudtrail create-event-data-store \ --name "
eventDataStoreName
" \ --advanced-event-selectors \ '[ { "Name": "Log write-only EBS Direct API data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] }, { "Field": "readOnly", "Equals": ["false"] } ] } ]'