功能描述
钉钉应用管理提供了自动开通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 查询/分析功能还提供了很多的方法,包括一些便利函数供使用,更详细的内容查询语法与功能。