集成积木权限
当你操作功能提示无权限的时候,请按照该文档的
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.操作角色
拥有角色admin
、dbadeveloper
‘、lowdeveloper
用户可以访问敏感接口。
拥有角色admin
、lowdeveloper
用户在关闭在线报表设计情况下,也可以设计报表。
编码 | 角色 | 列3 |
---|---|---|
admin | 超级管理员 | 拥有最高权限 |
dbadeveloper | DB管理员 | 可以设置数据库连接 |
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鉴权和权限控制