本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 記錄 AWS Lake Formation API 呼叫 AWS CloudTrail
AWS Lake Formation 已與 服務整合 AWS CloudTrail,此服務會提供使用者、角色或 Lake Formation 中 AWS 服務所採取之動作的記錄。CloudTrail 會將所有 Lake Formation API 呼叫擷取為事件。擷取的呼叫包括來自 Lake Formation 主控台的呼叫 AWS Command Line Interface、 和對 Lake Formation API 動作的程式碼呼叫。如果您建立線索,則可以將 CloudTrail 事件持續交付至 Amazon S3 儲存貯體,包括 Lake Formation 的事件。即使您未設定追蹤,依然可以透過 CloudTrail 主控台中的事件歷史記錄檢視最新事件。您可以使用 CloudTrail 所收集的資訊,判斷對 Lake Formation 提出的請求、提出請求的 IP 地址、提出請求的人員、提出請求的時間,以及其他詳細資訊。
若要進一步了解 CloudTrail,請參閱「AWS CloudTrail 使用者指南」。
CloudTrail 中的 Lake Formation 資訊
建立新 AWS 帳戶時,預設會啟用 CloudTrail。當活動在 Lake Formation 中發生時,該活動會記錄為 CloudTrail 事件,以及事件歷史記錄中的其他 AWS 服務事件。事件即為來自任何來源的單一請求,其中包含請求動作、動作日期和時間,以及請求參數的相關資訊。此外,每個事件或日誌項目都包含產生請求者的相關資訊。身分資訊可協助您判斷下列事項:
-
是否使用根或 AWS Identity and Access Management (IAM) 使用者登入資料提出請求。
-
提出該請求時,是否使用了特定角色或聯合身分使用者的暫時安全憑證。
-
請求是否由其他 AWS 服務提出。
如需詳細資訊,請參閱 CloudTrail userIdentity 元素。
您可以檢視、搜尋和下載 AWS 您帳戶的最新事件。如需詳細資訊,請參閱「使用 CloudTrail 事件歷史記錄檢視事件」。
若要持續記錄您 AWS 帳戶中的事件,包括 Lake Formation 的事件,請建立追蹤。線索能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。根據預設,在主控台建立線索時,該線索會套用到所有 AWS 區域。線索會記錄 AWS 分割區中所有區域的事件,並將日誌檔案傳送到您指定的 Amazon S3 儲存貯體。此外,您可以設定其他服務 AWS Amazon Athena,例如,進一步分析和處理 CloudTrail 日誌中收集的事件資料。CloudTrail 也可以將日誌檔案交付至 Amazon CloudWatch Logs 和 CloudWatch Events。
如需詳細資訊,請參閱下列內容:
了解 Lake Formation 事件
CloudTrail 會記錄所有 Lake Formation API 動作,並記錄在 AWS Lake Formation 開發人員指南中。例如,對 PutDataLakeSettings
、GrantPermissions
以及 RevokePermissions
動作發出的呼叫會在 CloudTrail 日誌檔案中產生項目。
下列範例顯示 GrantPermissions
動作的 CloudTrail 事件。項目包含授予許可的使用者 (datalake_admin
)、授予許可的委託人 (datalake_user1
),以及授予的許可 ()CREATE_TABLE
。項目也會顯示授予失敗,因為未在resource
引數中指定目標資料庫。
{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AIDAZKE67KM3P775X74U2", "arn": "arn:aws:iam::111122223333:user/datalake_admin", "accountId": "111122223333", "accessKeyId": "...", "userName": "datalake_admin" }, "eventTime": "2021-02-06T00:43:21Z", "eventSource": "lakeformation.amazonaws.com", "eventName": "GrantPermissions", "awsRegion": "us-east-1", "sourceIPAddress": "72.21.198.65", "userAgent": "aws-cli/1.19.0 Python/3.6.12 Linux/4.9.230-0.1.ac.223.84.332.metal1.x86_64 botocore/1.20.0", "errorCode": "InvalidInputException", "errorMessage": "Resource must have one of the have either the catalog, table or database field populated.", "requestParameters": { "principal": { "dataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1" }, "resource": {}, "permissions": [ "CREATE_TABLE" ] }, "responseElements": null, "requestID": "b85e863f-e75d-4fc0-9ff0-97f943f706e7", "eventID": "8d2ccef0-55f3-42d3-9ede-3a6faedaa5c1", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333" }
下一個範例顯示 GetDataAccess
動作的 CloudTrail 日誌項目。主體不會直接呼叫此 API。相反地,每當委託人或整合 AWS 服務請求暫時登入資料,以存取向 Lake Formation 註冊的資料湖位置中的資料時,GetDataAccess
就會記錄 。
{ "eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AROAQGFTBBBGOBWV2EMZA:GlueJobRunnerSession", "accountId": "111122223333" }, "eventSource": "lakeformation.amazonaws.com", "eventName": "GetDataAccess", ... ... "additionalEventData": { "requesterService": "GLUE_JOB", "lakeFormationPrincipal": "arn:aws:iam::111122223333:role/ETL-Glue-Role", "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-G13T0Rmng2" }, ... }
Amazon Redshift 聯合目錄存取監控
中的 Amazon Redshift 聯合目錄 AWS Glue Data Catalog 不會在 Lake Formation CloudTrail 日誌中產生GetDataAccess
事件。若要追蹤 Data Catalog 中 Amazon Redshift 資料表的資料存取、監控GetTable
和BatchGetTable
事件,以擷取 Redshift 聯合資料表的中繼資料存取模式,包括資料表名稱、資料庫名稱和目錄 ID 資訊