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

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

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

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

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

使用 CloudTrail 中的資料 API 資訊

CloudTrail 在您創建 AWS 帳戶時,您的帳戶已啟用。當資料 API 中發生受支援的活動 (管理事件) 時,該活動會與事件歷史記錄中的其他 AWS 服務 CloudTrail 事件一起記錄在事件中。您可以在 AWS 帳戶中檢視、搜尋和下載最近的管理事件。若要取得更多資訊,請參閱《使用指南》中的〈AWS CloudTrail 使用 CloudTrail 事件歷程〉。

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

所有資料 API 操作均由 Amazon RDS 資料服務 API 參考記錄 CloudTrail 並記錄在其中。例如,對BatchExecuteStatementBeginTransactionExecuteStatement作業的呼叫會在 CloudTrail 記錄檔中產生項目。CommitTransaction

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

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

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

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

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

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

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

在 AWS CloudTrail 追蹤中包含資料 API 事件

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

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

使用 AWS CLI,執行命aws cloudtrail put-event-selectors令以記錄追蹤的這些資料 API 作業。若要記錄資料庫叢集上的所有 Data 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 追蹤中。但是,由於 Data API 可以產生大量事件,因此您可能想要從 CloudTrail 追蹤中排除這些事件。排除 Amazon RDS 資料 API 事件設定會從追蹤中排除所有資料 API 事件。您無法排除特定的資料 API 事件。

若要將資料 API 事件從權杖中排除,請執行下列程序:

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

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

警告

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

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

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

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

了解資料 API 日誌檔案項目

追蹤是一種組態,可讓事件以日誌檔的形式傳遞到您指定的 Amazon S3 儲存貯體。 CloudTrail 記錄檔包含一或多個記錄項目。件代表來自任何來源的單一請求,包括有關請求的操作,動作的日期和時間,請求參數等信息。 CloudTrail 日誌文件不是公共 API 調用的有序堆棧跟踪,因此它們不會以任何特定順序顯示。

Aurora 無 PostgreSQL 器 V2 和已佈建

下列範例顯示示範 Aurora PostgreSQL 無伺服器 v2 和佈建資料庫ExecuteStatement作業的 CloudTrail 記錄項目。對於這些資料庫,所有資料 API 事件都是資料事件,其中事件來源是 rdsdataapi.Amazonaws.com,事件類型為 Rds 資料服務。

{ "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.amazonaw s.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" }