本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用記錄 AWS Lake Formation API 調用 AWS CloudTrail
AWS Lake Formation 與該服務集成在一起 AWS CloudTrail,該服務可提供用戶,角色或 AWS 服務在 Lake Formation 中採取的行動記錄。 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
CloudTrail 當您建立新 AWS 帳號時,預設為啟用。當活動在 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 日誌和 CloudWatch 事件。
如需詳細資訊,請參閱下列內容:
了解 Lake Formation 事件
所有 Lake Formation API 操作都由記錄 CloudTrail 並記錄在 AWS Lake Formation 開發人員指南中。例如,呼叫PutDataLakeSettings
GrantPermissions
、和RevokePermissions
動作會在 CloudTrail 記錄檔中產生項目。
下列範例顯示 CloudTrail 動GrantPermissions
作的事件。項目包括授與權限的使用者 (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。相反地,GetDataAccess
每當主體或整合 AWS 服務要求臨時登入資料以存取在 Lake Formation 註冊的資料湖位置中的資料時,就會記錄這些資料。
{ "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" }, ... }