使用 記錄RDS資料API呼叫 AWS CloudTrail - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 記錄RDS資料API呼叫 AWS CloudTrail

RDS 資料 API(資料API) 已與 整合 AWS CloudTrail,此服務提供資料 AWS 中使用者、角色或服務所採取動作的記錄API。 CloudTrail 會將資料的所有API呼叫擷取API為事件,包括來自 Amazon RDS主控台的呼叫,以及來自對資料API操作的程式碼呼叫。如果您建立追蹤,則可以啟用 CloudTrail 事件持續交付至 Amazon S3 儲存貯體,包括資料 的事件API。使用 收集的資料 CloudTrail,您可以判斷許多資訊。此資訊包括對資料 提出的請求API、提出請求的 IP 地址、提出請求的人員、提出請求的時間,以及其他詳細資訊。

若要進一步了解 CloudTrail,請參閱 AWS CloudTrail 使用者指南

在 中使用資料API資訊 CloudTrail

CloudTrail 當您建立 AWS 帳戶時, 會在您的帳戶上啟用 。當資料 中發生支援的活動 (管理事件) 時API,該活動會與 CloudTrail 事件歷史記錄中的其他服務 AWS 事件一起記錄在事件中。您可以在 AWS 帳戶中檢視、搜尋和下載最近的管理事件。如需詳細資訊,請參閱《 使用者指南》中的使用 CloudTrail 事件歷史記錄AWS CloudTrail

若要持續記錄您 AWS 帳戶中的事件,包括資料 的事件API,請建立追蹤。線索可讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。根據預設,當您在主控台中建立追蹤時,追蹤會套用至所有 AWS 區域。線索會記錄 AWS 分割區中所有 AWS 區域的事件,並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。此外,您可以設定其他 AWS 服務,以進一步分析 CloudTrail 日誌中收集的事件資料並對其採取行動。如需詳細資訊,請參閱 AWS CloudTrail 使用者指南中的以下主題:

所有資料API操作都會由 記錄, CloudTrail 並記錄在 Amazon RDS資料服務API參考中。例如,對 BatchExecuteStatementBeginTransactionCommitTransactionExecuteStatement操作的呼叫會在 CloudTrail 日誌檔案中產生項目。

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項:

  • 該請求是否使用根或使用者憑證提出。

  • 提出該請求時,是否使用了特定角色或聯合身分使用者的暫時安全憑證。

  • 請求是否由其他 AWS 服務提出。

如需詳細資訊,請參閱 CloudTrail userIdentity元素

從 AWS CloudTrail 追蹤中包含和排除資料API事件

大多數資料API使用者依賴 AWS CloudTrail 追蹤中的事件來提供資料API操作的記錄。事件資料不會在對資料 的請求中顯示資料庫名稱、結構描述名稱或SQL陳述式API。不過,知道哪個使用者在特定時間對特定資料庫叢集進行某種類型的呼叫,有助於偵測異常存取模式。

在 AWS CloudTrail 線索中包含資料API事件

對於 Aurora PostgreSQL Serverless v2 和佈建的資料庫,下列資料API操作會記錄 AWS CloudTrail 為資料事件資料事件是根據預設 CloudTrail 不會記錄的大量資料平面API操作。資料事件需支付額外的費用。如需 CloudTrail 定價的資訊,請參閱AWS CloudTrail 定價

您可以使用 CloudTrail 主控台AWS CLI或 CloudTrail API 操作來記錄這些資料API操作。在 CloudTrail 主控台中,為RDS資料事件類型選擇 Data API - 資料庫叢集。如需詳細資訊,請參閱AWS CloudTrail 《 使用者指南》中的使用 記錄資料事件 AWS Management Console

使用 AWS CLI執行 aws cloudtrail put-event-selectors命令,為您的追蹤記錄這些資料API操作。若要記錄資料庫叢集上的所有資料API事件,請AWS::RDS::DBCluster為資源類型指定 。下列範例會記錄資料庫叢集上的所有資料API事件。如需詳細資訊,請參閱AWS CloudTrail 《 使用者指南》中的使用 記錄資料事件 AWS Command Line Interface

aws cloudtrail put-event-selectors --trail-name trail_name --advanced-event-selectors \ '{ "Name": "RDS Data API Selector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::RDS::DBCluster" ] } ] }'

您可以設定進階事件選取器,以額外篩選 readOnlyeventName,resources.ARN 欄位。如需關於這些欄位的詳細資訊,請參閱AdvancedFieldSelector

從 AWS CloudTrail 線索排除資料API事件 (Aurora Serverless v1 僅限 )

用於 Aurora Serverless v1,資料API事件是管理事件。根據預設,所有資料API事件都會包含在 AWS CloudTrail 追蹤中。不過,由於資料API可以產生大量事件,因此您可能想要將這些事件排除在 CloudTrail 線索中。排除 Amazon RDS 資料API事件設定會從追蹤中排除所有資料API事件。您無法排除特定資料API事件。

若要從追蹤中排除資料API事件,請執行下列動作:

  • 在 CloudTrail 主控台中,選擇建立追蹤更新追蹤排除 Amazon RDS 資料API事件設定。

  • 在 中 CloudTrail API,使用 PutEventSelectors操作。如果您使用的是進階事件選取器,您可以透過將 eventSource 欄位設定為不等於 來排除資料API事件rdsdata.amazonaws.com。如果您使用的是基本事件選取器,您可以將 ExcludeManagementEventSources 屬性的值設定為 以排除資料API事件rdsdata.amazonaws.com。如需詳細資訊,請參閱AWS CloudTrail 《 使用者指南》中的使用 記錄事件 AWS Command Line Interface

警告

從 CloudTrail 日誌中排除資料API事件可能會隱藏資料API動作。授予委託人執行此操作所需的 cloudtrail:PutEventSelectors 許可時時,請務必小心。

您可以變更主控台設定或權杖的事件選擇器,以隨時關閉此排除。然後,追蹤將開始記錄資料API事件。不過,它無法復原排除生效時發生的資料API事件。

當您使用 主控台或 排除資料API事件時API,產生的 CloudTrailPutEventSelectorsAPI操作也會記錄在您的 CloudTrail 日誌中。如果資料API事件未出現在您的 CloudTrail 日誌中,請尋找ExcludeManagementEventSources屬性設為 PutEventSelectors的事件rdsdata.amazonaws.com

如需更多詳細資訊,請參閱 AWS CloudTrail 使用者指南中的記錄權杖的管理事件

了解資料API日誌檔案項目

追蹤是一種組態,可讓您將事件做為日誌檔案交付到您指定的 Amazon S3 儲存貯體。 CloudTrail 日誌檔案包含一或多個日誌項目。事件代表來自任何來源的單一請求,並包含所請求動作、動作的日期和時間、請求參數等相關資訊。 CloudTrail log 檔案不是公開API呼叫的排序堆疊追蹤,因此不會以任何特定順序顯示。

Aurora PostgreSQL Serverless v2 和 已佈建

下列範例顯示 CloudTrail 日誌項目,示範 Aurora PostgreSQL Serverless v2 和佈建資料庫ExecuteStatement的操作。對於這些資料庫,所有資料API事件都是事件來源為 rdsdataapi.amazonaws.com 且事件類型為 Rds Data Service 的資料事件。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdataapi.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "Rds Data Service", "recipientAccountId": "123456789012" }

Aurora Serverless v1

下列範例顯示上述範例 CloudTrail 日誌項目如何顯示 Aurora Serverless v1。 對於 Aurora Serverless v1,所有事件都是管理事件,其中事件來源為 rdsdata.amazonaws.com,事件類型為 AwsApiCall

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdata.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }