MaxCompute會完整地記錄用戶的各項操作行為,并通過阿里云ActionTrail服務將用戶行為日志實時推送給ActionTrail。您可以利用ActionTrail的單賬號跟蹤功能,將日志投遞到日志服務SLS或指定的OSS Bucket中,以滿足實時審計、問題回溯分析等需求。本文為您介紹審計日志的使用場景及范圍。
流程圖
ActionTrail服務捕獲MaxCompute用戶行為日志,并將日志投遞到日志服務或對象存儲OSS的流程如下:
使用場景
MaxCompute自動將您使用MaxCompute所產生的操作日志,實時投遞到ActionTrail中。您可以執行如下分析:
查詢歷史事件及明細
在ActionTrail控制臺的事件查詢頁面,可以查看包括MaxCompute在內的各服務歷史事件。詳情請參見通過操作審計控制臺查詢事件。
分析實時行為事件
使用ActionTrail的跟蹤功能,將事件投遞到OSS進行歸檔分析。或者投遞到阿里云日志服務項目內,基于事件觸發的實時日志進行分析。例如,敏感數據訪問的告警處理。詳情請參見創建單賬號跟蹤。
日志范圍
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" }