钉钉应用配置SLS审计日志

功能描述

钉钉应用管理提供了自动开通SLS应用审计日志功能,可以将应用日志接入至SLS平台,便于通过应用系统异常操作的审计分析和告警,发现一些违规获取数据或主动泄露数据的异常行为。

配置步骤

一、开启并查看SLS审计日志

1.开启SLS审计日志

钉钉应用的应用分组「概览」页面中,点击立即开启,初始化该应用的SLS审计日志(包含Project-项目、Logstore-日志集、Config-日志配置),名称为钉钉应用ID ,本文中举例的钉钉应用ID为 031001

image.png

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审计日志项目、日志集和日志配置,下一步中我们会对日志配置进行详细说明。image.png

二、查看默认SLS审计日志配置

可以看到日志集下「Logtail配置」,已经为应用初始化了一个日志集配置,Logtail配置是Logtail采集日志的策略集合,详见Logtail配置image.png

采集配置策略,初始化主要配置详情如下表:

字段名称

配置初值

字段说明

配置名称

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

返回参数

三、创建机器组

可以在左侧「资源」-「机器组」中,创建机器组image.png

设置机器组的名称和IP 地址,本文中测试机器组名称为app-test,请注意备注中事项,只支持Project区域的云服务器,IP地址需填写内网IP,win&linux云服务器不允许同时存在。image.png

四、将机器组与Logtail配置进行关联

在「Logtail配置」页面点击修改配置,将刚创建的机器组 app-test 从源机器组转到应用机器组即可完成关联。image.png

五、配置SLS审计日志索引

可根据日志的实际情况来开启索引,开启索引后,可使用「自动生成索引」来实现简化创建索引流程,详见创建索引image.png

image.png

六、采集日志示例

在上文配置机器组的云服务器上创建对应的日志文件,并写入测试数据。

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 关键字,点击查询/分析,我们会看到所有命中的日志信息。

image.png

也可以通过逻辑关系来查询多个关键字 requestBody or content。

image.png

或者单独指定字段值来进行检索,userId: 1309208528360047。

image.png

在此只是简单的列举了最简单的查询方式,SLS 查询/分析功能还提供了很多的方法,包括一些便利函数供使用,更详细的内容查询语法与功能