创建检测规则¶
进入安全监测 > 安全事件管理 > 新建规则,即可开始创建。
基础设置¶
检测频率¶
规则会按照此处设置的时间间隔(如每 5 分钟、每 1 小时)运行一次。包含最近 1 分钟、最近 5 分钟、最近 15 分钟、最近 30 分钟、最近 1 小时、最近 6 小时、最近 12 小时、最近 24 小时。
除选定系统提供的以上特定选项,您还可以输入自定义 crontab 任务,基于分钟、小时、天、月、周等周期配置定时任务执行情况。
检测区间¶
表示每次执行任务时,数据查询的时间范围。受检测频率影响,可选检测区间会不同。
检测频率 | 检测区间(下拉可选项) |
---|---|
1m | 1m/5m/15m/30m/1h/3h |
5m | 5m/15m/30m/1h/3h |
15m | 15m/30m/1h/3h/6h |
30m | 30m/1h/3h/6h |
1h | 1h/3h/6h/12h/24h |
6h | 6h/12h/24h |
12h | 12h/24h |
24h | 24h |
定义检测规则¶
定义安全检测逻辑时,您可以在脚本中使用 DQL 查询数据,并通过定义条件表达式(例如字段匹配、阈值判断等)来设定信号触发逻辑。
在自主编写规则时,您可以:
- 设置文本自动换行或内容溢出;
- 使用快捷键对内容进行格式处理;
- 一键复制;
- 直接在内容框中书写脚本内容;
- 选用 fx 函数。
示例:
# data1,ok = dql("T::re(`.*`):(avg(duration), service, span_id, status) by host limit 1")
# #data2 = dql("T::re(`.*`):(max(duration), service, span_id, status) by host limit 2")
# #result:检测结果,必填,类型 基本类型(字符串、整数、浮点)
# #result = data1.avg(duration)
# #dimension_tags:检测对象,可选,类型 map
# #dimension_tags = {"host":data1['series'][0][0]['tags']['host']}
# #status:等级,可选,类型 枚举,此处若定义优先级大于用户页面定义等级
# #可选值:critical、high、medium、low、info
# status = "high"
# #extra_data:附加属性,可选,类型 map
# #related_data = {"service":"wwwww"}
# #related_data = {"service":data1['series'][0][0]['columns']['service'],
# # "span_id":data1['series'][0][0]['columns']['span_id'],
# # "status":data1['series'][0][0]['columns']['status']}
# #fn trigger(result: int|float|bool|str, level: str = "", dim_tags: map = {}, related_data: map = {})
# #trigger(data1,status,dimension_tags,related_data)
# host = dql_series_get(data1,"host")
# service = dql_series_get(data1,"service")
# status = dql_series_get(data1,"status")
# trigger(data1,status,dimension_tags={"host":host},related_data={"service":service,"status":status})
data1 = dql("T::re(`.*`):(avg(duration), service, span_id, status) by host limit 1")
status = "high"
host = dql_series_get(data1,"host")
#printf("%v", {"host": host_o})
#host_info = dql_series_get(host_o,"host")
#printf("%v", {"host": host_info})
service = dql_series_get(data1,"service")
span_id = dql_series_get(data1,"span_id")
trigger(data1,status,dimension_tags={"host":host[0][0]},related_data={"service":service,"span_id":span_id})
在上述脚本示例中,主要分为三个部分:
- 数据查询:通过 DQL 查询所有指标(
re(.*)
),计算每个host
分组下duration
字段的平均值,同时返回service
、span_id
、status
字段,limit 1
表示只返回 1 条结果; -
数据处理:
3. 告警触发:
trigger(data1,status,dimension_tags={"host":host[0][0]},related_data={"service":service,"span_id":span_id})
high
的告警,dimension_tags
标识检测对象(这里用 host
作为维度标签)
,related_data
附加关联数据(service
和 span_id
)。
注意
在脚本编辑过程中,只有添加 dimension_tags
和 related_data
两个字段后才会在最终产生的事件中出现相关信息。
安全等级¶
选择当前监测规则的安全等级:
等级 | df_status 取值 |
---|---|
严重 | critical |
高 | high |
中 | medium |
低 | low |
信息 | info |
注意
如果检测规则中通过条件判断自定义了安全等级(如 status=high
),系统将优先采用规则中定义的安全等级,此时全局安全等级配置将不再生效。
配置规则描述¶
在添加检测规则时,输入检测结论和补救建议。这些内容将作为告警通知的标题和描述向外发送。
告警配置¶
选择当前工作空间内已有的告警策略进行关联。规则启用后,将根据所选告警策略触发告警通知。
权限¶
为安全监测数据设置查看权限,从而提高数据安全性。
工作空间内,拥有“安全监测”管理权限的成员角色都可以操作此规则。
仅指定的成员可以操作此规则,可选择工作空间内的成员、角色和团队。