集成积木权限
当你操作功能提示无权限的时候,请按照该文档的
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 | 报表设计管理员 | 可以设计报表和设置数据库连接 |
| dbadeveloper | DB管理员 | 可以设置数据库连接,不能设计报表 |
大家可以理解为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鉴权和权限控制
