開發與維運

使用日誌審計查看MaxCompute執行過哪些操作

背景

在很多的數據開發場景下,我們需要記錄每個子賬戶都做了什麼,在哪個項目執行了具體的操作,出問題了需要審計是誰幹的,什麼時間,怎麼操作的。例如,有人惡意刪除數據、有人將數據下載下來、誰上傳的資源、有人給沒有權限的人添加了權限、 等等。這些動作需要管理、跟蹤。本文通過如何在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控制檯的歷史事件查詢頁面選擇要查看的地域。

image.png

如上圖 事件類型:所有類型,時間:選擇對應的時間 產品類型:MaxCompute
事件名稱:對應的文檔名稱https://help.aliyun.com/document_detail/164657.html?spm=a2c4g.11186623.6.972.232411db3BAG7v
image.png
查看子賬號做過什麼
用戶名:子賬號的名字
查看錶做過什麼操作
資源名稱:表名字
查看錶被誰讀取過
事件名稱:ReadTableData 資源名稱:表名字
查看錶被誰刪除:
事件名稱:DropTable 資源名稱:表名字
查看錶被誰下載過
事件名稱:DownloadTable(直接使用tunnel download 表名下載) InstanceTunnel(通過instanceuid 下載)資源名稱:表名字
查看錶什麼時間上傳的數據
事件名稱:UploadTable(包括數據集成)資源名稱:表名字
查看函數創建
事件名稱:CreateFunction 資源名稱:函數名字
查看資源創建事件
事件名稱:CreateResource 資源名稱:資源名字
查看創建角色
事件名稱:CreateRole 資源名稱:角色名稱
查看授權事件
事件名稱:GrantRole 資源名稱:角色名稱
對應查詢結果的字段說明參考:
https://help.aliyun.com/document_detail/164657.html?spm=a2c4g.11186623.6.972.232411db3BAG7v
其中source_ip字段:通過客戶端或者sdk執行的是本機IP。通過DataWorks執行的不是本機IP
correlation_id字段:對應的instanceid,我們可以到對應的項目執行 wait instanceid查看任務的執行具體情況

大家如果對MaxCompute有更多諮詢或者建議,歡迎掃碼加入 MaxCompute開發者社區釘釘群,或點擊鏈接 申請加入。
image.png

Leave a Reply

Your email address will not be published. Required fields are marked *