上线安全配置(重要)
权限安全设置非常重要,老版本存在被攻击的情况,从
v1.6.2+
增加了此机制。
正式环境配置
- 设置
lowCodeMode:prod
,可以彻底关闭在线报表设计,屏蔽所有风险; - 设置参数
saasMode:created/tenant
可以限制只看自己数据或只看租户下数据,从而保证系统安全。 - 内置预留角色:
admin
、dbadeveloper
、lowdeveloper
拥有admin
、dbadeveloper
‘、lowdeveloper
角色用户可以访问敏感接口。 拥有admin
、lowdeveloper
角色用户在关闭在线报表设计情况下,也可以设计报表。
详细配置参数如下:重要提示:敏感接口比如测试数据库链接是否生效会提示 “权限不足,此功能需要分配角色!” ,这个时候分配上面的预留内置角色。
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
权限变更说明
v1.9.2+ 规则变化
dataSourceSafe
设置为true
时,不允许创建SQLite
数据源。
v1.7.7+ 规则变化
-
lowCodeMode
设置为prod
或prodsf
时,系统将禁止向内网ip地址发送网络请求。 -
只有在
apiDsIpWhite
中设置的ip的才可以访问。2.1. apiDsIpWhite接收一个列表数据。
2.2. 白名单设置方式:第一种: 直接设置具体ip(eg. 192.168.1.1)第二种: 通过子网设置网段(eg. 10.22.1.0/24)。
影响范围
- api数据集-数据解析。
- api数据集报表预览。
- 动态接口数据单元格。
- api字典
建议:为确保生产环境安全,建议不要在积木报表中通过内网ip调用内网服务。
v1.6.2+ 规则变化
- 多租户的配置方式变更为:
saasMode
- 新增低代码开发模式
lowCodeMode:prod
,完全禁止在线报表设计能力,彻底避免被攻击 - 默认报表预览地址必须带token,只能通过报表分享连接给他们访问报表
积木报表,通过几个维度保障安全
-
增加低代码开发模式 配置
jeecg.jmreport.firewall.lowCodeMode: prod
发布模式下会关闭所有报表设计相关接口,普通用户只能访问报表不能做任何报表修改,彻底解决被攻击风险 为了便于线上报表临时维护,用户是“admin”,或者拥有角色 "admin"、"lowdeveloper" 的用户,还可以设计报表 -
敏感接口,增加角色权限控制 容易被攻击的敏感接口默认加了角色权限控制,只有拥有角色 "admin","lowdeveloper","dbadeveloper" 的用户,可以访问。 接口清单如下: a. 数据预览接口
/jmreport/loadTableData
b. 测试数据源连接是否正确接口/jmreport/testConnection
c. 解析SQL接口/jmreport/queryFieldBySql
-
增加数据隔离配置 参数
jmreport.saasMode: created
线上发布请按照创建人或者租户实现数据隔离,保证他人数据安全created
: 按照创建人隔离、tenant
: 按照租户隔离 -
增加数据源安全配置 参数
jeecg.jmreport.firewall.dataSourceSafe: true
开启数据源安全后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库 -
重写了sql参数拼接的写法,全部换成占位符方式,防止被攻入的可能
-
进一步加强了sql注入检查算法,通过深度解析SQL,检查是否存在攻击函数等
特殊场景
如果某个人可以在测试环境下设计报表,但是不能在发布环境下设计报表,只分配角色dbadeveloper
即可,当然测试环境下需要把lowCodeMode
改成dev。