背景
在很多的資料開發場景下,我們需要記錄每個子賬戶都做了什麼,在哪個項目執行了具體的操作,出問題了需要審計是誰幹的,什麼時間,怎麼操作的。例如,有人惡意删除資料、有人将資料下載下傳下來、誰上傳的資源、有人給沒有權限的人添加了權限、 等等。這些動作需要管理、跟蹤。本文通過如何在ActionTrail控制台進行搜尋來跟蹤我們在MaxCompute中執行的動作。
日志審計和Informattion_Schema(中繼資料)對比
1.日志審計記錄的是使用者的各項操作行為
2.日志審計記錄的是目前賬号下的所有項目,Informattion_Schema記錄的是目前project
3.如果我們要檢視使用者的行為資訊可以去日志審計檢視,如果查詢一些靜态資訊可以去中繼資料檢視比如:表的擁有者,資源的擁有者
4.Informattion_Schema中的TASKS_HISTORY表可以記錄已完成的作業曆史,但是沒有對應的事件名稱不友善查找。比如查找删除表,我們可以直接去ActionTrail直接搜尋DropTable 就可以查到
5.MaxCompute記錄使用者的各項操作行為是實時投遞到ActionTrail中的,操作記錄會在10分鐘内被操作審計追蹤并記錄。操作記錄儲存的是180天的記錄,目前ActionTrail支援搜尋,如果需要對日志進行更精确的分析和儲存更長的時間,可以投遞到oss上或這個sls上同步到MaxCompute進行分析
6.如果我們要統計一天當中耗費最高的作業可以去Informattion_Schema中的task_histoy表中檢視
--統計一天耗費cu最大的前十個任務資訊
select * from information_Schema.TASKS_HISTORY where ds = 20200812 order by cost_cpu limit 10;
--統計一天每個使用者使用的cu
select owner_name,SUM(cost_cpu) from information_Schema.TASKS_HISTORY where ds = 20200814 group by owner_id,owner_name;
如何使用ActionTrail進行搜尋
我們列舉幾個簡單的場景進行搜尋
首先登入到
ActionTrail控制台的曆史事件查詢頁面選擇要檢視的地域。

如上圖 事件類型:所有類型,時間:選擇對應的時間 産品類型:MaxCompute
事件名稱:對應的文檔名稱
https://help.aliyun.com/document_detail/164657.html?spm=a2c4g.11186623.6.972.232411db3BAG7v檢視子賬号做過什麼
使用者名:子賬号的名字
檢視目前任務是被誰殺掉的
事件名稱:jobChange 資源名稱:instanceId(具體的任務id)
檢視表做過什麼操作
資源名稱:表名字
檢視表被誰讀取過
事件名稱:ReadTableData 資源名稱:表名字
檢視表被誰删除:
事件名稱:DropTable 資源名稱:表名字
檢視表被誰下載下傳過
事件名稱:DownloadTable(直接使用tunnel download 表名下載下傳) InstanceTunnel(通過instanceuid 下載下傳)資源名稱:表名字
檢視表什麼時間上傳的資料
事件名稱:UploadTable(包括資料內建)資源名稱:表名字
檢視函數建立
事件名稱:CreateFunction 資源名稱:函數名字
檢視資源建立事件
事件名稱:CreateResource 資源名稱:資源名字
檢視建立角色
事件名稱:CreateRole 資源名稱:角色名稱
檢視授權事件
事件名稱:GrantRole 資源名稱:角色名稱
對應查詢結果的字段說明參考:
其中source_ip字段:通過用戶端或者sdk執行的是本機IP。通過DataWorks執行的不是本機IP
correlation_id字段:對應的instanceid,我們可以到對應的項目執行 wait instanceid檢視任務的執行具體情況
大家如果對MaxCompute有更多咨詢或者建議,歡迎掃碼加入 MaxCompute開發者社群釘釘群,或點選
連結申請加入。