功能描述
釘釘應用管理提供了自動開通SLS應用審計日志功能,可以將應用日志接入至SLS平臺,便于通過應用系統異常操作的審計分析和告警,發現一些違規獲取數據或主動泄露數據的異常行為。
配置步驟
一、開啟并查看SLS審計日志
1.開啟SLS審計日志
在釘釘應用的應用分組「概覽」頁面中,點擊立即開啟,初始化該應用的SLS審計日志(包含Project-項目、Logstore-日志集、Config-日志配置),名稱為釘釘應用ID ,本文中舉例的釘釘應用ID為 031001。
2.查看已初始化的SLS審計日志
SLS審計日志已開啟后,可點擊立即查看,跳轉到已創建好的日志服務頁面中。
日志訪問路徑:
路徑中包含 `項目`和 `日志集`名稱
- 項目 : dingtalk-application-cn-{regionId} regionId 對應應用分組部署地域
- 日志集 : dingTalkAppId dingTalkAppId為釘釘應用的ID
樣例:
https://sls.console.aliyun.com/lognext/project/dingtalk-application-{regionId}/logsearch/{dingTalkAppId}
例子:
https://sls.console.aliyun.com/lognext/project/dingtalk-application-cn-chengdu/logsearch/031001
如下圖所示,已為應用初始化SLS審計日志項目、日志集和日志配置,下一步中我們會對日志配置進行詳細說明。
二、查看默認SLS審計日志配置
可以看到日志集下「Logtail配置」,已經為應用初始化了一個日志集配置,Logtail配置是Logtail采集日志的策略集合,詳見Logtail配置。
采集配置策略,初始化主要配置詳情如下表:
字段名稱 | 配置初值 | 字段說明 | |
配置名稱 | 031001 | 配置的名稱,釘釘應用ID | |
日志路徑 | /home/logs/??/031001.log | 日志采集路徑(指定文件夾下所有符合文件名稱的文件都會被監控),文件名稱可以是完整名,也支持通配符模式匹配 | |
模式 | 完整正則模式 | 采集日志的模式 | |
日志樣例 | 2022-03-09 18:36:13.236 INFO LogHelper.printProviderLog(85): ANTL_41A46571-0B69-1BD0-851C-35A893395774 userId=1309208528360047,sourceIpAddress=106.11.41.212,userName=root,eventName=AddUserToGroup,request=requestBody,response=responseBody | 日志的文本案例,計算巢為配置預設置了文本樣例和字段解析方 | |
行首正則表達式 | \d+-\d+-\d+\s\d+:\d+:\d+\.\d+\s.* | 通過正則表達式生成的Key/Value對,每個Key/Value對的名稱(Key)由用戶指定。如果不使用系統時間,您必須指定一個time為Key的對 | |
提取字段 | 開啟 | 是否提取字段配置 | |
正則 | (\d+-\d+-\d+\s\S+)\s+([a-zA-Z]+)\s+([^:]+):\s([a-zA-Z0-9_-]+)\suserId=(null|\d+),sourceIpAddress=(null|\d+\.\d+\.\d+\.\d+),userName=([a-zA-Z0-9_-]+),eventName=([a-zA-Z0-9_-]+),request=(.*),response=(.*) | 提取字段的正則表達式,根據該表達式,解析日志文本 | |
日志抽取內容 | 提取字段名稱 | 提取字段值 | 根據正則提取的字段 |
*eventTime | 2022-03-09 18:36:13.236 | 事件的發生時間 | |
*eventLevel | INFO | 事件等級 | |
*eventFunction | LogHelper.printProviderLog(85) | 事件的處理函數名稱 | |
*eventId | ANTL_41A46571-0B69-1BD0-851C-35A893395774 | 事件ID | |
userId | 1309208528360047 | 用戶ID | |
sourceIpAddress | 106.11.41.212 | IP 地址 | |
*userName | root | 用戶名稱 | |
*eventName | AddUserToGroup | 事件名稱 | |
requestParameters | requestBody | 請求參數 | |
responseParameters | responseBody | 返回參數 |
三、創建機器組
可以在左側「資源」-「機器組」中,創建機器組
設置機器組的名稱和IP 地址,本文中測試機器組名稱為app-test,請注意備注中事項,只支持Project區域的云服務器,IP地址需填寫內網IP,win&linux云服務器不允許同時存在。
四、將機器組與Logtail配置進行關聯
在「Logtail配置」頁面點擊修改配置,將剛創建的機器組 app-test 從源機器組轉到應用機器組即可完成關聯。
五、配置SLS審計日志索引
可根據日志的實際情況來開啟索引,開啟索引后,可使用「自動生成索引」來實現簡化創建索引流程,詳見創建索引。
六、采集日志示例
在上文配置機器組的云服務器上創建對應的日志文件,并寫入測試數據。
mkdir -p /home/logs
touch /home/logs/031001.log
echo "2022-03-09 18:36:13.236 INFO LogHelper.printProviderLog(85): ANTL_41A46571-0B69-1BD0-851C-35A893395774 userId=1309208528360047,sourceIpAddress=106.11.41.212,userName=root,eventName=AddUserToGroup,request=requestBody,response=responseBody" >> /home/logs/031001.log
等待 3 ~ 5s,新增日志已顯示在監控面板,日志采集成功!
日志查詢分析
在上文的監控面板中,輸入查詢與分析語句,選擇時間范圍,單擊查詢/分析。
本文例子中,我們檢索 requestBody 的關鍵字,輸入 requestBody 關鍵字,點擊查詢/分析,我們會看到所有命中的日志信息。
也可以通過邏輯關系來查詢多個關鍵字 requestBody or content。
或者單獨指定字段值來進行檢索,userId: 1309208528360047。
在此只是簡單的列舉了最簡單的查詢方式,SLS 查詢/分析功能還提供了很多的方法,包括一些便利函數供使用,更詳細的內容查詢語法與功能。