-
Notifications
You must be signed in to change notification settings - Fork 1.7k
query
hhyo edited this page May 5, 2020
·
8 revisions
在线查询模块适用于简单的SQL查询和日常问题排查,通过工作流控制查询权限的申请和审核,并强制对SQL语句进行改写以限制最大查询数量,同时记录所有的查询日志方便审计。基于目前的定位,查询功能现不能很好的支持大数据量的检索和导出操作
具体实现都在各个数据库对应的engines中
支持语法 | 权限控制 | 脱敏 | ||
---|---|---|---|---|
MySQL | select、show、explain | 表级(依赖goInception) | √(精确列匹配,依赖Inception) | |
MsSQL | select、sp_helptext,限制部分关键字和+号 | 库级 | √(匹配所有列) | |
Redis | 限制部分查询命令,参考redis.py | 库级 | × | |
PgSQL | select | 库级 | × | |
Oracle | select、with、explain | 库级 | √(匹配所有列) | |
MongoDB | find | 库级 | × |
MySQL查询的权限控制依赖goInception的语法树打印,数据脱敏依赖Inception的语法树打印,需要完善相关配置
权限CODE | 权限名称 | 权限说明 |
---|---|---|
menu_query | 菜单 SQL查询 | 一级菜单权限,必须配置 |
menu_sqlquery | 菜单 在线查询 | 二级菜单权限,必须配置 |
menu_queryapplylist | 菜单 权限管理 | 二级菜单权限,用于查询权限申请和管理,必须配置 |
query_applypriv | 申请查询权限 | 可以申请数据查询权限 |
query_mgtpriv | 管理查询权限 | 可以查看和管理资源组内的用户查询权限,支持修改结果集限制、有效时间以及删除权限 |
query_review | 审核查询权限 | 可以查看和审核所在资源组的所有查询权限申请工单 |
query_submit | 提交SQL查询 | 可以使用SQL在线查询,不配置时执行查询会提示无权限 |
query_all_instances | 可查询所有实例 | 拥有所有实例所有数据的查询权限,无需再次申请 |
query_resource_group_instance | 可查询所在资源组内的所有实例 | 拥有所在资源组实例所有数据的查询权限,无需再次申请 |
参考:系统配置项
- 实例需要关联查询标签才能在查询功能中展示
- QUERY_CHECK配置项
- 在其他配置管理-全部后台数据中配置脱敏字段和规则
规则类型 | 规则脱敏所用的正则表达式,表达式必须分组,隐藏的组会使用****代替 | 需要隐藏的组 | 规则描述 |
---|---|---|---|
手机号 | (.{3})(.*)(.{4}) | 2 | 保留前三后四 |
证件号码 | (.*)(.{4})$ | 2 | 隐藏后四位 |
银行卡 | (.*)(.{4})$ | 2 | 隐藏后四位 |
邮箱 | (.*)@(.*) | 2 | 去除后缀 |
查询权限管理和SQL上线一样使用工作流控制审批流程,管理员可以自主配置每个组的审批流程,用户提交申请、审批结束后才可以进行SQL查询 同时管理员在权限管理页面还可以直接编辑、删除当前用户已拥有的查询权限