51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【模板应用】JumpServer 安全运维审计大屏的设计与实现

1 前言 {#1-%E5%89%8D%E8%A8%80}

2022年6月21日,DataEase 开源数据库可视化分析平台正式发布模板市场。其中作为众多模版之一的 JumpServer 安全运维审计大屏之一,备受大家青睐。应广大用户要求,在此详细讲解如何应用安全运维审计大屏模版。
image-1656308458151

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 项指标,各指标项具体如下:
image-1656308509582

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/
image-1656308555079

如需快速检索,可进行关键字搜索或分类切换。
image-1656308564601

如需预览或下载模板,可点击对应仪表板进入详情界面。点击"下载"按钮后可将对应模板下载至本地。
image-1656308571707

3.2 模版导入 {#3.2-%E6%A8%A1%E7%89%88%E5%AF%BC%E5%85%A5}

进入自己的DataEase系统的"仪表板"模块中,通过下图所示以"导入模板"方式新建仪表板。
image-1656380672543

导入成功后如下图所示,该模板的各组件、样式、背景及仪表板数据等均被带入到新建仪表板中。
image-1656308605051

除上述方式外,也可以提前将模板上传至"模板管理"功能模块中,在新建仪表板时选择"复用模板"选项即可。
image-1656308614538

3.3 接入数据源 {#3.3-%E6%8E%A5%E5%85%A5%E6%95%B0%E6%8D%AE%E6%BA%90}

DataEase 最新版本支持多种数据库作为数据源,JumpServer 使用的是 MySQL 数据库,这里输入相应信息,创建数据源。
image-1656308633768

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/

下图为涉及的所有数据集截图。
image-1656308654200

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}

  1. 指标说明
    查询当前正在进行中的会话数量。

  2. 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}

  1. 指标说明
    查询用户总数。

  2. 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}

  1. 指标说明
    查询所有组织资源数量。

  2. 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}

  1. 指标说明
    查询近期用户活跃情况、资产活跃情况、历史在线会话情况。

  2. 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}

  1. 指标说明
    查询高危命令情况。

  2. 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}

  1. 指标说明
    查询近 30 天的资产活跃度。

  2. 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}

  1. 指标说明
    查询所有组织服务器数量。

  2. 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}

  1. 指标说明
    查询最近一天所有用户登录次数。

  2. 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}

  1. 指标说明
    查询最近一周所有用户登录次数

  2. 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}

  1. 指标说明
    查询最近一天资产的被访问次数。

  2. 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}

  1. 指标说明
    查询最近一周所有资产的登录次数。

  2. 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}

接下来将视图所关联的数据集替换为自己的实际数据即可。
image-1656309012906

注意事项

  1. 类别轴/维度字段缺失
    由于在模版设计阶段涉及到了人员名称等敏感信息,因此在数据集内新建了脱敏字段,因此在替换数据集时在数据维度区域会出现下图红框所示情况。再此,大家可以将红框指标删除,把"用户名"字段直接拖入所示位置即可。
    image-1656309032689

  2. 替换字段后维度字段过长图表显示不全。
    image-1656309038949

出现如上图所示情况时,有两个解决方案如下:

方案一:

对现有字段做数据截取。具体操作步骤可参考大家可参考 DataEase 官方文档新建计算字段部分**https://dataease.io/docs/user_manual/dataset_design/#24**

方案二:

将展示字段替换为 IP 字段
image-1656309051326

6 最终效果 {#6-%E6%9C%80%E7%BB%88%E6%95%88%E6%9E%9C}

经过上述步骤大家就可以得到自己的运维安全审计大屏了。

image-1656309058844

赞(0)
未经允许不得转载:工具盒子 » 【模板应用】JumpServer 安全运维审计大屏的设计与实现