MaxCompute會完整地記錄使用者的各項操作行為,並通過阿里雲ActionTrail服務將使用者行為日誌即時推送給ActionTrail。您可以利用ActionTrail的單帳號跟蹤功能,將日誌投遞到Log ServiceSLS或指定的OSS Bucket中,以滿足即時審計、問題回溯分析等需求。本文為您介紹審計日誌的使用情境及範圍。
流程圖
ActionTrail服務捕獲MaxCompute使用者行為日誌,並將日誌投遞到Log Service或Object Storage Service的流程如下:
使用情境
MaxCompute自動將您使用MaxCompute所產生的動作記錄,即時投遞到ActionTrail中。您可以執行如下分析:
查詢歷史事件及明細
在ActionTrail控制台的事件查詢頁面,可以查看包括MaxCompute在內的各服務歷史事件。詳情請參見通過Action Trail控制台查詢事件。
分析即時行為事件
使用ActionTrail的跟蹤功能,將事件投遞到OSS進行歸檔分析。或者投遞到阿里雲Log Service專案內,基於事件觸發的即時日誌進行分析。例如,敏感性資料訪問的警示處理。詳情請參見建立單帳號跟蹤。
日誌範圍
ActionTrail針對作業(Instance)、表(Table)、使用者(User)、角色(Role)和授權(Privilege)事件的多種操作行為進行審計,詳細事件列表請參見MaxCompute的審計事件,核心要點如下所示。
事件類型(EventType) | 事件名稱(EventName) | 事件描述 |
成功提交一個MaxCompute作業事件。 | ||
引起MaxCompute作業狀態變化的事件。例如,作業執行成功或作業被中止事件。 | ||
Tunnel下載事件。 | ||
Tunnel上傳事件。 | ||
下載Instance的執行結果。例如,SELECT查詢操作會觸發InstanceTunnel事件。 | ||
建立角色事件。 | ||
刪除角色事件。 | ||
添加使用者事件。 | ||
移除使用者事件。 | ||
建立表。 | ||
修改表結構資訊。例如,執行ALTER TABLE命令。 | ||
刪除表。 | ||
查看錶結構(Desc table)。 | ||
讀表資料事件。 | ||
表資料變化事件。例如,INSERT INTO、INSERT OVERWRITE、Truncate和Tunnel匯入表資料等操作會觸發該事件。 | ||
角色授權事件。 | ||
角色授權撤回事件。 | ||
ACL授權事件。 | ||
ACL授權撤回事件。 | ||
Label授權事件。 | ||
Label授權撤回事件。 | ||
上傳MaxCompute角色Policy事件。 | ||
專案層級設定權限原則(Policy)事件。 | ||
設定Table的列級許可權(Label)事件。 | ||
設定使用者的Label許可權事件。 | ||
建立MaxCompute專案事件。 | ||
更新MaxCompute專案事件。 | ||
刪除MaxCompute專案事件。 |
日誌欄位
不同事件類型的欄位記錄了該類型事件的具體操作行為,您可以通過查看和分析事件的欄位滿足審計需求。每種事件包含的公用日誌欄位如下。
欄位名 | 說明 | 範例 |
eventId | ActionTrail為每個事件所產生的一個GUID。 | 918510a4-7b63-47d2-b053-8f9db82c431a |
acsRegion | 阿里雲地區。 | cn-hangzhou |
eventName | 事件名稱。 | InsertJob |
eventTime | 事件的發生時間,UTC格式。 | 2020-01-09T12:12:14Z |
eventType | 事件類型。 | JobEvent |
errorCode | 發生錯誤時,上報的錯誤碼。 | ODPS-10000 |
errorMessage | 錯誤描述。 | ODPS-0130161:[1,18] Parse exception - invalid token 'bigstring' |
requestId | API請求ID。 | 6df41e8c-cfd0-4beb-8dd0-13b8490fdf5b |
serviceName | 事件相關的雲端服務名稱。 | MaxCompute |
sourceIpAddress | 提交API請求的源IP地址。 | 47.100.XX.XX |
userAgent | 發送API請求的用戶端代理標識。 |
|
userIdentity | 標識要求者的身份資訊。包含accountId、principalId、type和userName資訊。 |
|
referencedResources | 事件涉及的資源,比如JobEvent中有InstanceId,TableEvent中有表名。每種事件的該欄位資訊不相同。 |
|
additionalEventData | 事件特有的附加資訊,例如作業狀態、查詢語句。每種事件的該欄位資訊不相同。 |
|
JobEvent
InsertJob
欄位名
說明
範例
referencedResources
InsertJob事件涉及的作業ID資訊。
"referencedResources": { // 事件影響的資源清單 "Instance": ["2020102713575683gc2j****" ] }
additionalEventData
InsertJob事件的附加資訊。包含內容如下:
ProjectName:作業所屬專案空間名稱。
TaskName:作業所屬任務名稱。
InstanceId:作業ID。
TaskType:作業類型,例如SQL、LOT、CUPID。
OperationText:執行語句。
"additionalEventData": { "ProjectName": "meta", "TaskName": "console_query_task_1603807075919", "InstanceId": "2020102713575683gc2j****", "TaskType": "SQL", "OperationText": "create table a(a string);" }
JobChange
欄位名
說明
範例
referencedResources
JobChange事件涉及的作業ID資訊。
"referencedResources": { // 事件影響的資源清單 "Instance": ["2020102713575683gc2j****" ] }
additionalEventData
JobChange事件的附加資訊。包含內容如下:
Status:作業狀態。
ProjectName:作業所屬專案空間名稱。
TaskName:作業所屬任務名稱。
InstanceId:作業ID。
TaskType:作業類型,例如SQL、LOT、CUPID。
OperationText:執行語句。
"additionalEventData": { "Status": "Failed", "ProjectName": "meta", "TaskName": "console_query_task_1603807075919", "InstanceId": "2020102713575683gc2j****", "TaskType": "SQL", "OperationText": "create table a(a string);" }
TunnelEvent
DownloadTable
欄位名
說明
範例
referencedResources
DownloadTable事件涉及的表名稱。
"referencedResources": { // 事件影響的資源清單 "Table": [ "source_xml_instid_flt_2" ] }
additionalEventData
DownloadTable事件的附加資訊。包含內容如下:
TableName:表名稱。
Partition:分區資訊。
CurrentProject:發起下載操作的專案空間名稱。
ProjectName:下載的表所屬專案空間名稱。
SesssionId:Tunnel Session ID。
"additionalEventData": { "TableName": "source_xml_instid_flt_2", "Partition": "projectname=inst_200233,ds=20201027", "CurrentProject": "project1", "ProjectName": "project2", "SesssionId": "20201027200931a3baca0b037518a7" }
UploadTable
欄位名
說明
範例
referencedResources
UploadTable事件涉及的表名稱。
"referencedResources": { // 事件影響的資源清單 "Table": [ "source_xml_instid_flt_2" ] }
additionalEventData
UploadTable事件的附加資訊。包含內容如下:
TableName:表名稱。
Partition:分區資訊。
ProjectName:上傳的表所屬專案空間名稱。
SesssionId:Tunnel Session ID。
"additionalEventData": { "TableName": "m_rt_privilege_event", "Partition": "ds=20201027,hh=22,mm=00", "ProjectName": "meta2", "SesssionId": "202010272209332231f60b08182dfb" }
InstanceTunnel
欄位名
說明
範例
referencedResources
InstanceTunnel事件涉及的作業ID資訊。
"referencedResources": { // 事件影響的資源清單 "Instance": [ "20201027080131990gf23****"] }
additionalEventData
InstanceTunnel事件的附加資訊。包含內容如下:
CurrentProject:發起下載Instance操作的專案空間名稱。
ProjectName:下載的Instance所屬專案空間名稱。
InstanceId:作業ID
SesssionId:Tunnel Session ID。
"additionalEventData": { "CurrentProject": "meta", "ProjectName": "meta", "InstanceId": "20201027080131990gf23****", "SesssionId": "2020102716014017c4ca0b036850f6" }
RoleEvent
CreateRole
欄位名
說明
範例
referencedResources
CreateRole事件涉及的角色名稱。
"referencedResources": { // 事件影響的資源清單 "Role": [ "test1" ] }
additionalEventData
CreateRole事件的附加資訊。包含內容如下:
RoleName:建立的角色名稱。
CurrentProject:發起建立角色操作的專案空間名稱。
ProjectName:角色所屬專案空間名稱。
OperationText:執行語句。
"additionalEventData": { "RoleName": "test1", "CurrentProject": "meta_dev", "ProjectName": "dev1", "OperationText": "create role test1;" }
DropRole
欄位名
說明
範例
referencedResources
DropRole事件涉及的角色名稱。
"referencedResources": { // 事件影響的資源清單 "Role": [ "test1" ] }
additionalEventData
DropRole事件的附加資訊。包含內容如下:
RoleName:刪除的角色名稱。
CurrentProject:發起刪除角色操作的專案空間名稱。
ProjectName:角色所屬專案空間名稱。
OperationText:執行語句。
"additionalEventData": { "RoleName": "test1", "CurrentProject": "meta_dev", "ProjectName": "dev1", "OperationText": "drop role test1;" }
UserEvent
AddUser
欄位名
說明
範例
referencedResources
AddUser事件涉及的使用者名稱稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "ram$xxxx@aliyun.com:sub" ] }
additionalEventData
AddUser事件的附加資訊。包含內容如下:
UserName:添加的使用者名稱稱。
ProjectName:添加使用者的專案空間名稱。
OperationText:執行語句。
"additionalEventData": { "UserName": "ram$xxxx@aliyun.com:sub", "ProjectName": "project1", "OperationText": "add user RAM$xxxx@aliyun.com:sub;" }
RemoveUser
欄位名
說明
範例
referencedResources
RemoveUser事件涉及的使用者名稱稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "ram$xxxx@aliyun.com:sub" ] }
additionalEventData
RemoveUser事件的附加資訊。包含內容如下:
UserName:刪除的使用者名稱稱。
ProjectName:刪除使用者所屬專案空間名稱。
OperationText:執行語句。
"additionalEventData": { "UserName": "ram$xxxx@aliyun.com:sub", "ProjectName": "project1", "OperationText": "remove user RAM$xxxx@aliyun.com:sub;" }
TableEvent
CreateTable
欄位名
說明
範例
referencedResources
CreateTable事件涉及的表名稱。
"referencedResources": { // 事件影響的資源清單 "Table": [ "ttt" ] }
additionalEventData
CreateTable事件的附加資訊。包含內容如下:
TableName:建立的表名稱。
ProjectName:表所屬專案空間名稱。
CorrelationId:與Source配合使用,如果Source是INSTANCE,則表示作業ID,如果Source是Tunnel,則表示Tunnel請求ID。
Source:INSTANCE或TUNNEL。
OperationText:CREATE_TABLE。
"additionalEventData": { "TableName": "ttt", "ProjectName": "meta_dev", "CorrelationId": "20201027083345196gsjgpv21", "Source": "INSTANCE", "OperationText": "CREATE_TABLE" }
DropTable
欄位名
說明
範例
referencedResources
DropTable事件涉及的表名稱。
"referencedResources": { // 事件影響的資源清單 "Table": [ "ttt" ] }
additionalEventData
DropTable事件的附加資訊。包含內容如下:
TableName:刪除的表名稱。
ProjectName:表所屬專案空間名稱。
CorrelationId:與Source配合使用,如果Source是INSTANCE,則表示作業ID,如果Source是Tunnel,則表示Tunnel請求ID。
Source:INSTANCE或TUNNEL。
OperationText:DROP_TABLE表示使用者主動請求刪除,RECYCLE_TABLE表示設定了生命週期被系統回收。
"additionalEventData": { "TableName": "hot_user_hs_top30", "ProjectName": "prj1", "CorrelationId": "20201023024002372giqvmv21", "Source": "INSTANCE", "OperationText": "DROP_TABLE" }
ChangeTable
欄位名
說明
範例
referencedResources
ChangeTable事件涉及的表名稱。
"referencedResources": { // 事件影響的資源清單 "Table": [ "ttt" ] }
additionalEventData
ChangeTable事件的附加資訊。包含內容如下:
TableName:修改的表名稱。
ProjectName:表所屬專案空間名稱。
CorrelationId:與Source配合使用,如果Source是INSTANCE,則表示作業ID,如果Source是Tunnel,則表示Tunnel請求ID。
Source:INSTANCE或TUNNEL。
OperationText:ALTER_TABLE_RENAME、ADD_PARTITION、ALTER_TABLE_ADD_COLUMNS、ALTER_TABLE_CHANGE_LIFECYCLE、ALTER_TABLE_DROP_PARTITION或ALTER_PARTITION。
"additionalEventData": { "TableName": "ttt", "ProjectName": "proj1", "CorrelationId": "20201028161651750g05e0tsa", "Source": "INSTANCE", "OperationText": "ADD_PARTITION" }
DescribeTable
欄位名
說明
範例
referencedResources
DescribeTable事件涉及的表名稱。
"referencedResources": { // 事件影響的資源清單 "Table": [ "ttt" ] }
additionalEventData
DescribeTable事件的附加資訊。包含內容如下:
TableName:查看的表名。
ProjectName:表所屬專案空間名稱。
"additionalEventData": { "TableName": "ttt", "ProjectName": "prj1", }
ChangeTableData
欄位名
說明
範例
referencedResources
ChangeTableData事件涉及的表名稱。
"referencedResources": { // 事件影響的資源清單 "Table": [ "ttt" ] }
additionalEventData
ChangeTableData事件的附加資訊。包含內容如下:
TableName:修改的表名稱。
ProjectName:表所屬專案空間名稱。
CorrelationId:與Source配合使用,如果Source是INSTANCE,則表示作業ID,如果Source是Tunnel,則表示Tunnel請求ID。
Source:INSTANCE或TUNNEL。
OperationText:TRUNCATE_TABLE、INSERT_OVERWRITE_TABLE、INSERT_OVERWRITE_PARTITION、INSERT_PARTITION或INSERT_TABLE。
"additionalEventData": { "TableName": "ttt", "ProjectName": "meta_dev", "CorrelationId": "20201027083345196gsjgpv21", "Source": "INSTANCE", "OperationText": "DATA_INGESTION" }
ReadTableData
欄位名
說明
範例
referencedResources
無
無
additionalEventData
ReadTableData事件的附加資訊。包含內容如下:
TableName:讀取資料的表名稱。
ProjectName:表所屬專案空間名稱。
CorrelationId:與Source配合使用,如果Source是INSTANCE,則表示作業ID,如果Source是Tunnel,則表示Tunnel請求ID。
Source:INSTANCE或TUNNEL。
OperationText:READ_TABLE。
"additionalEventData": { "TableName": "ttt", "ProjectName": "meta_dev", "CorrelationId": "20201027083345196gsjgpv21", "Source": "INSTANCE", "OperationText": "READ_TABLE" }
PrivilegeEvent
GrantRole
欄位
說明
範例
referencedResources
GrantRole事件涉及的雲賬戶名稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
GrantRole事件的附加資訊。包含內容如下:
UserName:被授權的雲賬戶名稱。
ProjectName:授權的專案空間名稱。
OperationText:執行語句。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "grant test_role to ALIYUN$xxx@aliyun.com" }
RevokeRole
欄位名
說明
範例
referencedResources
RevokeRole事件涉及的雲賬戶名稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
RevokeRole事件的附加資訊。包含內容如下:
UserName:被撤銷授權的雲賬戶名稱。
ProjectName:撤銷授權的專案空間名稱。
OperationText:執行語句。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "revoke test_role from ALIYUN$xxx@aliyun.com" }
GrantACL
欄位名
說明
範例
referencedResources
GrantACL事件涉及的雲賬戶名稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
GrantACL事件的附加資訊。包含內容如下:
ObjectType:授權物件類型,PROJECT、RESOURCE、TABLE或FUNCTION。
CurrentProject:發起授權操作的專案空間名稱。
UserName:被授權的雲賬戶名稱。
ProjectName:授權的專案空間名稱。
OperationText:執行語句。
ObjectName:授權對象名稱。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "grant createtable on project meta to ALIYUN$xxx@aliyun.com;", "ObjectName": "meta" }
RevokeACL
欄位名
說明
範例
referencedResources
RevokeACL事件涉及的雲賬戶名稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
RevokeACL事件的附加資訊。包含內容如下:
ObjectType:撤銷授權物件類型,PROJECT、RESOURCE、TABLE或FUNCTION。
CurrentProject:發起撤銷授權操作的專案空間名稱。
UserName:撤銷授權的雲賬戶名稱。
ProjectName:撤銷授權的專案空間名稱。
OperationText:執行語句。
ObjectName:撤銷授權對象名稱。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "project1", "OperationText": "revoke createtable on project project1 from ALIYUN$xxx@aliyun.com;", "ObjectName": "project1" }
GrantLabel
欄位名
說明
範例
referencedResources
GrantLabel事件涉及的雲賬戶名稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
GrantLabel事件的附加資訊。包含內容如下:
ObjectType:授權物件類型,TABLE。
UserName:被授權的雲賬戶名稱。
ProjectName:發起授權操作的專案空間名稱。
OperationText:執行語句。
ObjectName:授權對象名稱。
"additionalEventData": { "ObjectType": "TABLE", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "GRANT LABEL 4 ON TABLE t1 TO USER ALIYUN$xxx@aliyun.com;", "ObjectName": "meta" }
RevokeLabel
欄位名
說明
範例
referencedResources
RevokeLabel事件涉及的雲賬戶名稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
RevokeLabel事件的附加資訊。包含內容如下:
ObjectType:撤銷授權物件類型,PROJECT、RESOURCE、TABLE、FUNCTION。
UserName:被撤銷授權的雲賬戶名稱。
ProjectName:撤銷授權的專案空間名稱。
OperationText:執行語句。
ObjectName:撤銷授權對象名稱。
"additionalEventData": { "ObjectType": "TABLE", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "Revoke LABEL 4 ON TABLE t1 from USER ALIYUN$xxx@aliyun.com;", "ObjectName": "t1" }
PutRolePolicy
欄位名
說明
範例
referencedResources
PutRolePolicy事件涉及的角色名稱。
"referencedResources": { // 事件影響的資源清單 "Role": [ "test1_role" ] }
additionalEventData
PutRolePolicy事件的附加資訊。包含內容如下:
RoleName:角色名稱。
CurrentProject:發起角色Policy操作的專案空間名稱。
ProjectName:角色所屬專案空間名稱。
OperationText:Policy內容。
"additionalEventData": { "RoleName": "test1_role", "CurrentProject": "meta_dev", "ProjectName": "meta_dev", "OperationText": "{\n \"Statement\": [{\n \"Action\": [\"odps:Read\",\n \"odps:List\"],\n \"Effect\": \"Allow\",\n \"Resource\": [\"acs:odps:*:projects/p1\"]},\n {\n \"Action\": [\"odps:Describe\",\n \"odps:Select\"],\n \"Effect\": \"Allow\",\n \"Resource\": [\"acs:odps:*:projects/p1/tables/m_*\"]}],\n \"Version\": \"1\"}" }
SetProjectPolicy
欄位名
說明
範例
referencedResources
無
無
additionalEventData
SetProjectPolicy事件的附加資訊。CurrentProject表示發起專案級Policy操作的專案空間名稱。
"additionalEventData": { "CurrentProject": "test_prj"}" }
SetTableLabel
欄位名
說明
範例
referencedResources
無
無
additionalEventData
SetTableLabel事件的附加資訊。包含內容如下:
ObjectType:物件類型,TABLE。
OperationText:執行語句。
ObjectName:對象名稱。
"additionalEventData": { "ObjectType": "TABLE", "OperationText": "SET LABEL 3 TO TABLE t1test(col1);", "ObjectName": "t1test" }
SetUserLabel
欄位名
說明
範例
referencedResources
SetUserLabel事件涉及的雲賬戶名稱。
"referencedResources": { // 事件影響的資源清單 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
SetUserLabel事件的附加資訊。UserName表示設定使用者列級許可權的雲賬戶名稱。
"additionalEventData": { "UserName": "aliyun$xxxx@aliyun.com" }
AdminEvent
CreateProject
欄位名
說明
範例
referencedResources
無
無
additionalEventData
CreateProject事件的附加資訊。ProjectName表示新增的MaxCompute專案名稱。
"additionalEventData": { "ProjectName": "xxxx" }
UpdateProject
欄位名
說明
範例
referencedResources
無
無
additionalEventData
UpdateProject事件的附加資訊。包含內容如下:
ProjectName:更新的MaxCompute專案名稱。
Properties:更新的屬性項(Flag)。
State:可選。專案的狀態,取值為FROZEN(欠費停服)或AVAILABLE(續約重開)。
"additionalEventData": { "ProjectName": "xxx", "Properties": "{\"odps.sql.decimal.odps2\":\"true\",\"odps.sql.hive.compatible\":\"false\",\"odps.sql.type.system.odps2\":\"true\"}" }
DeleteProject
欄位名
說明
範例
referencedResources
無
無
additionalEventData
DeleteProject事件的附加資訊。ProjectName表示刪除的MaxCompute專案名稱。
"additionalEventData": { "ProjectName": "xxxx" }