操作審計(ActionTrail)幫助您監控阿里云賬號的活動并記錄最近90天的操作事件。當您需要分析更長時間的操作事件時,可以通過操作審計創建跟蹤,將操作事件投遞到日志服務SLS,對操作事件進行查詢和分析。本文為您介紹在SLS中查詢和分析操作事件的典型場景。
前提條件
場景一:分析AK泄露情況
某企業發現IP地址存在異常調用,懷疑是由于人事調動導致AK(AccessKey)泄露。此時可以通過操作審計創建跟蹤,將操作事件投遞到日志服務SLS,在SLS中分析AK調用軌跡。
您可以獲取AK調用來源IP地址所在的城市,一旦發現當前城市非企業所在地,即可明確AK存在泄露。
登錄日志服務控制臺。
在全部的Project頁簽,單擊操作事件對應的Project名稱。
單擊日志庫名稱,然后單擊最近15分鐘,設置查詢的時間范圍。
在搜索框中輸入如下代碼。
__topic__: actiontrail_audit_event and event.userIdentity.accessKeyId:<YourAccessKeyId> | SELECT count(1) as pv, city FROM (SELECT "event.sourceIpAddress" AS ip, ip_to_city("event.sourceIpAddress") as city FROM log) WHERE ip_to_domain(ip)!='intranet' GROUP BY city ORDER BY pv DESC
說明<YourAccessKeyId>
請替換為您自己的AccessKey ID。以上查詢能夠獲取指定AK所產生調用的來源IP地址,并且給出具體的調用量。如果當前城市非企業所在地,則AK存在泄露。
單擊查詢/分析,查看分析結果。
可選:當AK泄露時,您可以調整RAM用戶權限,解決AK泄露問題。
具體操作,請參見為RAM用戶移除權限。
場景二:分析ECS實例刪除情況
某企業期望可以追溯云資源的高危操作,例如:刪除ECS實例。此時可以通過操作審計創建跟蹤,將操作事件投遞到日志服務SLS,獲取執行ECS實例刪除動作的操作者。
登錄日志服務控制臺。
在全部的Project頁簽,單擊操作事件對應的Project名稱。
單擊日志庫名稱,然后單擊最近15分鐘,設置查詢的時間范圍。
在搜索框中輸入如下代碼。
__topic__: actiontrail_audit_event | SELECT serviceName, eventName, userName, count(1) as pv FROM (SELECT "event.eventName" as eventName, "event.serviceName" as serviceName, "event.userIdentity.userName" as userName FROM log) WHERE (serviceName = <TargetServiceName> and eventName = <TargetEventName>) GROUP BY serviceName, eventName, userName
說明您可以將
<TargetServiceName>
和<TargetEventName>
分別指定為ECS和DeleteInstances,獲取執行ECS實例刪除動作的操作者。單擊查詢/分析,查看分析結果。
分析結果會統計執行ECS實例刪除動作的操作者以及執行次數。定位到ECS實例的非法操作后,您可以根據如下代碼獲取非法的操作記錄,以便進行問題修復。
__topic__: actiontrail_audit_event and event.serviceName:<TargetServiceName> and <TargetResourceId> and event.userIdentity.accessKeyId:<YourAccessKeyId>
場景三:生成數據報表
隨著企業自身云上業務的快速發展,對于部分核心資源的調用頻率周期需要生成完整的數據報表,以便進行資源容量的預估及風險預判。
例如:企業內部需要生成ECS實例創建近半年來的數據報表,通過分析同比以及環比增長情況來預測未來半年內資源擴充情況,以便合理的控制和規劃成本開銷。
登錄日志服務控制臺。
在全部的Project頁簽,單擊操作事件對應的Project名稱。
單擊日志庫名稱,然后單擊最近15分鐘,設置查詢的時間范圍。
在搜索框中輸入如下代碼。
__topic__: actiontrail_audit_event and event.serviceName:<TargetServiceName> and event.eventName:<TargetEventName> | select t, diff[1] as current, diff[2] as last_month, diff[3] as percentage from(select t, compare( pv , 2592000) as diff from (select count(1) as pv, date_format(from_unixtime(__time__), '%m') as t from log group by t) group by t order by t)
說明您可以將
<TargetServiceName>
和<TargetEventName>
兩個變量分別指定為ECS和CreateInstance,即可獲取ECS實例每個月的創建次數,并且展示同比上個月的增長幅度。單擊查詢/分析,查看分析結果。
單擊頁面下方的統計圖表頁簽。
在頁簽右側的通用配置區域,選擇 ,查看折線圖。
您也可以通過類似方法對部分風險等級較高的操作生成數據報表,并且從中分析調用規律以及流程高低峰所在時間點,以便更加合理地規劃資源,提升資源利用率。
場景四:異常監控告警
某企業期望某個云服務某日的訪問量超過最近60天平均訪問量的一定比例時上報告警,此時您可以通過日志服務儀表盤中的查詢圖表配置監控告警,實現實時服務狀態的監控。您也可以將自定義的統計圖表添加到儀表盤中,以便實現定制化業務的實時監控。具體操作,請參見添加統計圖表到儀表盤。
登錄日志服務控制臺。
在全部的Project頁簽,單擊操作事件對應的Project名稱。
查詢各個云服務在最近60天內的平均流量以及當天的實時流量。
單擊日志庫名稱,然后單擊最近15分鐘。
在時間選擇區域,單擊自定義,設置查詢的時間范圍為60天。
在搜索框中輸入如下代碼。
__topic__: actiontrail_audit_event |select a.serviceName, a.avg_pv, b.today_pv from (select serviceName, avg(pv) as avg_pv from (select "event.serviceName" as serviceName, count(1) as pv, date_format(from_unixtime(__time__), '%m-%d') as day from log group by serviceName, day) group by serviceName) a join (select "event.serviceName" as serviceName, count(1) as today_pv from log where date_format(from_unixtime(__time__), '%Y-%m-%d')=current_date group by serviceName) b on a.serviceName = b.serviceName
單擊查詢/分析,查看分析結果。
單擊頁面下方的統計圖表頁簽。
在頁簽右側的通用配置區域,選擇 ,查看折線圖。
說明您可以添加過濾條件排除不關注的云服務或者事件。
設置業務告警。
單擊頁面右上角的圖標。
在告警監控規則面板配置相關參數。
具體操作,請參見設置告警。
配置觸發條件。
$0.today_pv > $0.avg_pv && ($0.today_pv - $0.avg_pv)/$0.avg_pv > 0.5
其中
$0
表示第一條查詢語句關聯的原始圖表數據,即每個云服務的當日訪問量以及最近60天的平均訪問量。$0.avg_pv
表示云服務最近60天的平均訪問量。單擊確定。