跳到主要内容

集成积木权限

当你操作功能提示无权限的时候,请按照该文档的 1.3 来扩展实现。

  • 权限设置非常重要,老版本敏感接口未加权限控制,导致存在被攻击情况
  • v1.6.2+ 我们针对敏感接口增加权限控制,主要是通过角色权限两个方面控制。
  • 关于积木的权限变化过程,请看文档 积木权限变化

一、上线配置

通过配置参数,可以关闭报表在线设计权限、支持配置多租户规则,具体如下

  • 设置 lowCodeMode:prod ,可以关闭在线报表设计,屏蔽所有风险;
  • 设置参数saasMode:created/tenant 可以限制只看自己数据或只看租户下数据,从而保证系统安全。
  • 只可以向apiDsIpWhite中设置的内网ip地址发送请求
  • 设置sqlInjectionLevel: all, 使用严格的sql注入检查级别

详细配置参数如下:

jeecg :
jmreport:
#多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离) (v1.6.2+ 新增)
saasMode: tenant
# 平台上线安全配置(v1.6.2+ 新增)
firewall:
# 数据源安全 (开启后,不允许使用平台数据源、SQL解析不允许select * 查询、禁止测试数据源连接是否正确)
# 数据源安全下,预留角色有权限使用 select * 和测试数据源链接
dataSourceSafe: true
# 低代码开发模式(dev:开发模式,prod:发布模式关闭报表设计,预留角色admin、lowdeveloper可设计, prodsf:发布安全模式 彻底关闭报表设计)
lowCodeMode: prod
# api数据集内网ip白名单,在发布模式下只只能向设置了白名单的内网服务器发送请求。
apiDsIpWhite:
- 192.168.1.69
- 192.168.1.2
- 10.22.1.0/24
# sql注入检查级别(all:所有, simple:简单校验, none:不校验)
sqlInjectionLevel: all

二、预置角色和权限

重要提示:敏感接口比如测试数据库链接是否生效会提示 “权限不足,此功能需要分配角色!” ,这个时候分配预留内置角色。

1.操作角色

拥有角色admindbadeveloper‘、lowdeveloper 用户可以访问敏感接口。 拥有角色adminlowdeveloper 用户在关闭在线报表设计情况下,也可以设计报表。

编码角色列3
admin超级管理员拥有最高权限
dbadeveloperDB管理员可以设置数据库连接
lowdeveloper报表设计管理员可以设计报表

大家可以理解为shiro方式加角色注解,比如

@RequiresRoles(value={"admin", "lowdeveloper", "dbadeveloper"}, logical = Logical.OR)

2.操作权限

指令功能
drag:datasource:testConnection仪表盘数据库连接测试
onl:drag:clear:recovery仪表盘清空回收站
drag:analysis:sql仪表盘SQL解析
drag:design:getTotalData仪表盘对Online表单展示数据

大家可以理解为shiro方式加权限注解,比如

@RequiresPermissions("drag:design:getTotalData")

3.集成积木预置角色、权限

大家可以参考如下代码,需要实现JmReportTokenServiceI接口,详情见文件自定义Token鉴权和权限控制