1 前言 {#1-%E5%89%8D%E8%A8%80}
2022年6月21日,DataEase 开源数据库可视化分析平台正式发布模板市场。其中作为众多模版之一的 JumpServer 安全运维审计大屏之一,备受大家青睐。应广大用户要求,在此详细讲解如何应用安全运维审计大屏模版。
2 大屏场景 {#2-%E5%A4%A7%E5%B1%8F%E5%9C%BA%E6%99%AF}
2.1 需求概述 {#2.1-%E9%9C%80%E6%B1%82%E6%A6%82%E8%BF%B0}
本次安全运维审计大屏主要是通过对IT运维数据指标的可视化展示,使业务人员可以快速接收运维统计数据,从而加强运维安全管控及定期的运维审计,更好的进行运行维护工作,为工作增能提效。
2.2 统计指标 {#2.2-%E7%BB%9F%E8%AE%A1%E6%8C%87%E6%A0%87}
根据安全运维审计大屏的使用场景和面向人员,此次共统计 11 项指标,各指标项具体如下:
3 模版应用 {#3-%E6%A8%A1%E7%89%88%E5%BA%94%E7%94%A8}
3.1 模版下载 {#3.1-%E6%A8%A1%E7%89%88%E4%B8%8B%E8%BD%BD}
首先,进入 DataEase 模板市场主页:
https://dataease.io/templates/
如需快速检索,可进行关键字搜索或分类切换。
如需预览或下载模板,可点击对应仪表板进入详情界面。点击"下载"按钮后可将对应模板下载至本地。
3.2 模版导入 {#3.2-%E6%A8%A1%E7%89%88%E5%AF%BC%E5%85%A5}
进入自己的DataEase系统的"仪表板"模块中,通过下图所示以"导入模板"方式新建仪表板。
导入成功后如下图所示,该模板的各组件、样式、背景及仪表板数据等均被带入到新建仪表板中。
除上述方式外,也可以提前将模板上传至"模板管理"功能模块中,在新建仪表板时选择"复用模板"选项即可。
3.3 接入数据源 {#3.3-%E6%8E%A5%E5%85%A5%E6%95%B0%E6%8D%AE%E6%BA%90}
DataEase 最新版本支持多种数据库作为数据源,JumpServer 使用的是 MySQL 数据库,这里输入相应信息,创建数据源。
3.4 添加数据集 {#3.4-%E6%B7%BB%E5%8A%A0%E6%95%B0%E6%8D%AE%E9%9B%86}
在数据集设计模块,可以从数据源中选择上一步添加的数据库,选择数据库中对应的表作为一个数据集,设定同步模式。这里要了解每张表中所存的数据类型,便于添加对应的数据。
在此处添加的数据集均为 SQL 数据集,具体添加方法大家可参考 DataEase 官方文档
https://dataease.io/docs/user_manual/dataset_configuration/dataset_SQL/
下图为涉及的所有数据集截图。
4 脚本语句 {#4-%E8%84%9A%E6%9C%AC%E8%AF%AD%E5%8F%A5}
具体各个数据集使用的 SQL 语句如下:
4.1 在线会话 {#4.1-%E5%9C%A8%E7%BA%BF%E4%BC%9A%E8%AF%9D}
-
指标说明
查询当前正在进行中的会话数量。 -
SQL 语句
在线会话 select count(1) '在线会话数' from terminal_session where is_finished = false
4.2 用户总数 {#4.2-%E7%94%A8%E6%88%B7%E6%80%BB%E6%95%B0}
-
指标说明
查询用户总数。 -
SQL 语句
用户总数 select count(*) '用户总数' from users_user where role <> 'App'
4.3 资产总数 {#4.3-%E8%B5%84%E4%BA%A7%E6%80%BB%E6%95%B0}
-
指标说明
查询所有组织资源数量。 -
SQL 语句
资产总数 select count(1) '资产总数' from assets_asset
4.4 用户/资产活跃情况 {#4.4-%E7%94%A8%E6%88%B7%2F%E8%B5%84%E4%BA%A7%E6%B4%BB%E8%B7%83%E6%83%85%E5%86%B5}
-
指标说明
查询近期用户活跃情况、资产活跃情况、历史在线会话情况。 -
SQL 语句
资产总数 select u.
日期
,u.活跃用户数
,a.活跃资产数
,s.会话数
from (select count(distinct user_id) '活跃用户数', d '日期' from (select DATE_FORMAT(date_start, '%Y-%m-%d') d, user_id from terminal_session where date_start > DATE_SUB(CURDATE(), INTERVAL 7 DAY))t group by d ORDER BY d DESC LIMIT 7) u left join (select count(distinct asset_id) '活跃资产数', d '日期' from (select DATE_FORMAT(date_start, '%Y-%m-%d') d, asset_id from terminal_session where date_start > DATE_SUB(CURDATE(), INTERVAL 7 DAY))t group by d ORDER BY d DESC LIMIT 7) a on u.日期
= a.日期
left join (select d '日期', count(1) '会话数' from ( select DATE_FORMAT(date_start, '%Y-%m-%d') d from terminal_session where date_start > DATE_SUB(CURDATE(), INTERVAL 7 DAY)) t group by d ORDER BY d DESC LIMIT 7) s on u.日期
= s.日期
4.5 高危命令统计 {#4.5-%E9%AB%98%E5%8D%B1%E5%91%BD%E4%BB%A4%E7%BB%9F%E8%AE%A1}
-
指标说明
查询高危命令情况。 -
SQL 语句
高危命令统计 SELECT * FROM terminal_command WHERE risk_level !='0'
4.6 资产活跃度(近 30 天) {#4.6-%E8%B5%84%E4%BA%A7%E6%B4%BB%E8%B7%83%E5%BA%A6%EF%BC%88%E8%BF%91-30-%E5%A4%A9%EF%BC%89}
-
指标说明
查询近 30 天的资产活跃度。 -
SQL 语句
资产活跃度(近30天) select o.name '组织' , count(count_num ) '活跃度' from orgs_organization o join (SELECT asset, count(*) count_num, REPLACE(org_id,'-','') org_id FROM terminal_session t WHERE t.is_finished = 1 and t.protocol='ssh' AND datediff( NOW(), t.date_end ) <= 30 GROUP BY org_id, asset) terminal on o.id=terminal.org_id group by o.name
4.7 各组织资产占比 {#4.7-%E5%90%84%E7%BB%84%E7%BB%87%E8%B5%84%E4%BA%A7%E5%8D%A0%E6%AF%94}
-
指标说明
查询所有组织服务器数量。 -
SQL 语句
各组织资产占比 SELECT t.NAME, COUNT( * ) AS 服务器数量 FROM assets_asset a, orgs_organization t WHERE LEFT ( a.org_id, 8 ) = LEFT ( t.id, 8 ) GROUP BY t.NAME ORDER BY 服务器数量 DESC
4.8 最近一天所有用户登录情况 {#4.8-%E6%9C%80%E8%BF%91%E4%B8%80%E5%A4%A9%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%83%85%E5%86%B5}
-
指标说明
查询最近一天所有用户登录次数。 -
SQL 语句
最近一天所有用户登录情况 select name 用户名,login_time 登录次数 from ( SELECT uu.name name, count( * ) AS login_time FROM audits_userloginlog aul left join users_user uu on aul.username = uu.username WHERE TO_DAYS( now( ) ) - TO_DAYS( datetime ) <= 1 GROUP BY aul.username )t where name is not null ORDER BY login_time DESC
4.9 最近一周所有用户登录排名 {#4.9-%E6%9C%80%E8%BF%91%E4%B8%80%E5%91%A8%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%8E%92%E5%90%8D}
-
指标说明
查询最近一周所有用户登录次数 -
SQL 语句
最近一周所有用户登录排名 SELECT (select name from users_user uu where uu.username = au.username) as name, count( * ) AS 登录次数 FROM audits_userloginlog au WHERE TO_DAYS( now( ) ) - TO_DAYS( datetime ) <= 7 GROUP BY username ORDER BY 登录次数 DESC
4.10 最近一天资产登录 top 5 {#4.10-%E6%9C%80%E8%BF%91%E4%B8%80%E5%A4%A9%E8%B5%84%E4%BA%A7%E7%99%BB%E5%BD%95-top-5}
-
指标说明
查询最近一天资产的被访问次数。 -
SQL 语句
最近一天资产登录top 5 SELECT asset, assets_asset.ip, COUNT( * ) AS 登录次数 FROM terminal_session left join assets_asset on replace(terminal_session.asset_id, '-', '') = assets_asset.id WHERE TO_DAYS( now( ) ) - TO_DAYS( date_end ) <= 1 GROUP BY asset ORDER BY 登录次数 DESC
4.11 最近一周资产登录排名 {#4.11-%E6%9C%80%E8%BF%91%E4%B8%80%E5%91%A8%E8%B5%84%E4%BA%A7%E7%99%BB%E5%BD%95%E6%8E%92%E5%90%8D}
-
指标说明
查询最近一周所有资产的登录次数。 -
SQL 语句
最近一周资产登录排名 SELECT asset, assets_asset.ip as ip, COUNT( * ) AS 登录次数 FROM terminal_session left join assets_asset on replace(terminal_session.asset_id, '-', '') = assets_asset.id WHERE TO_DAYS( now( ) ) - TO_DAYS( date_end ) <= 7 GROUP BY asset ORDER BY 登录次数 DESC
5 数据替换 {#5-%E6%95%B0%E6%8D%AE%E6%9B%BF%E6%8D%A2}
接下来将视图所关联的数据集替换为自己的实际数据即可。
注意事项
-
类别轴/维度字段缺失
由于在模版设计阶段涉及到了人员名称等敏感信息,因此在数据集内新建了脱敏字段,因此在替换数据集时在数据维度区域会出现下图红框所示情况。再此,大家可以将红框指标删除,把"用户名"字段直接拖入所示位置即可。
-
替换字段后维度字段过长图表显示不全。
出现如上图所示情况时,有两个解决方案如下:
方案一:
对现有字段做数据截取。具体操作步骤可参考大家可参考 DataEase 官方文档新建计算字段部分**https://dataease.io/docs/user_manual/dataset_design/#24**
方案二:
将展示字段替换为 IP 字段
6 最终效果 {#6-%E6%9C%80%E7%BB%88%E6%95%88%E6%9E%9C}
经过上述步骤大家就可以得到自己的运维安全审计大屏了。