跳到主要内容

集成积木权限

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

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

一、上线配置​

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

  • 设置 lowCodeMode:prod ,可以关闭在线报表设计,屏蔽所有风险;
  • 设置参数saasMode:created/tenant 可以限制只看自己数据或只看租户下数据,从而保证系统安全。
  • 设置apiDsIpCheck: true后,只可以向apiDsIpWhite中设置的内网ip/域名发送请求(v2.5.4+,与lowCodeMode无关,独立开关)
  • 设置sqlInjectionLevel: strict, 使用严格的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数据集出站请求内网/保留地址校验(SSRF防护),默认false不校验 (v2.5.4+ 新增)。对外暴露的SaaS/多租户部署建议开启
apiDsIpCheck: true
# api数据集内网ip白名单,开启apiDsIpCheck后只能向白名单中的地址发送请求(支持IP、CIDR网段、域名三种格式,v2.5.4+ 新增域名支持)
apiDsIpWhite:
- 192.168.1.69
- 192.168.1.2
- 10.22.1.0/24
- your-internal-api.example.com
# sql注入检查级别(strict:严格, basic:简单校验, none:不校验)
sqlInjectionLevel: strict

二、预置角色和权限​

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

1.操作角色​

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

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

大家可以理解为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表单展示数据
onl:drag:page:delete仪表盘数据删除
drag:dataset:save数据集保存 v2.2.1+
drag:dataset:delete数据集删除 v2.2.1+
drag:datasource:saveOrUpate仪表盘数据源保存 v2.2.1+
drag:datasource:delete仪表盘数据源删除 v2.2.1+
jmreport:datasource:testConnection报表数据源连接测试 v2.5.3+
jmreport:datasource:saveOrUpate报表数据源新增/编辑 v2.5.3+
jmreport:datasource:delete报表数据源删除 v2.5.3+
jmreport:design:parseField报表数据集-解析字段(SQL/API/JavaBean) v2.5.4+
jmreport:design:loadTable报表库表/字段元数据查询 v2.5.4+
jmreport:design:saveDb报表数据集保存 v2.5.4+
jmreport:design:filesDataset报表文件数据集 v2.5.4+
jmreport:design:editEnhance报表增强代码(JS/CSS/Python) v2.5.4+
jmreport:datasource:query报表数据源查询 v2.5.4+

报表设计器完整的按钮权限编码清单,见 积木报表/大屏 按钮权限。

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

@RequiresPermissions("drag:design:getTotalData")

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

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