DataEase 权限体系拆解:多角色权限叠加与行级数据隔离的落地
【免费下载链接】dataease🔥 人人可用的开源 BI 工具,数据可视化神器。An open-source BI tool alternative to Tableau.项目地址: https://gitcode.com/GitHub_Trending/da/dataease
当一张销售数据报表要同时分发给销售、财务、审计三类角色时,同一张看板必须让每个角色看到不同的数据范围——权限管理就成了 BI 系统能不能落地的前提。DataEase 是开源 BI 工具,其权限体系以"资源 × 操作"为基本授权单元,叠加组织、角色与行级权限,开箱即用的访问控制能力对多部门数据团队很实用。
DataEase 是怎么算权限的
"资源 × 操作":二维权限模型
看 DataEase 的访问控制模型,最直接的方式是看接口层的注解。API 定义在 AuthApi.java 等文件中,每个方法都标注@DePermit,校验规则用 SpEL 表达式描述,例如"菜单读权限 + 请求参数拼接出的资源操作标识"。也就是说,任何一次请求要放行,必须同时满足两个维度:对某个资源(菜单或业务对象)持有所需操作(read、manage 等)。菜单权限决定功能入口是否可见,资源权限决定具体数据集、仪表板能否被操作。这个模型还做了双向查询:查"对象已授权的资源"和查"资源已授权的对象"各有一套接口,授权矩阵因此可以从角色视角或数据视角任一方向审计。
组织:权限的作用域边界
角色不是全局生效的,而是挂在组织下。角色的查询、创建、绑用户都限定在具体组织内,用户调用switchOrg切换组织后会拿到对应作用域的令牌,同一账号在不同组织下看到的资源树和角色列表完全不同。这对"部门间数据隔离"的集团型业务是天然适配,组织树与用户挂载接口定义在 OrgApi.java。
多角色权限叠加怎么生效
用户同时属于两个角色,权限取并集还是交集?DataEase 是并集:用户与角色是多对多关系,绑定与解绑通过 RoleApi.java 完成:
void mountUser(@RequestBody MountUserRequest request); void unMountUser(@RequestBody UnmountUserRequest request);角色被授予"某数据集读权限",用户个人又被单独授予"导出"权限时,最终可用集合是两者相加;解绑其中一个来源不会波及另一个来源。角色还支持跨组织绑定外部用户(mountExternalUser),方便临时授权场景。
场景化能力拆解
同一数据集,不同角色看到不同数据范围
这是 BI 场景最典型的诉求:区域经理只能看本区域,审计要看全量。DataEase 在数据集维度提供行级数据过滤,每条行权限规则指定授权对象类型——authTargetType可以是组织、角色或用户——再配一条关系表达式expressionTree,查询执行时翻译成过滤条件追加到当前用户的数据结果上:
private String authTargetType; // dept/role/user private String expressionTree; // 关系表达式行权限接口在 RowPermissionsApi.java,规则对象同时支持用户、角色、组织三级白名单以整体绕过过滤,效果是同一张仪表板打开时,各角色聚合出的数据范围并不一样:
手机号、身份证号这类敏感字段怎么藏
行级过滤决定"能看到哪些行",列级权限决定"能看到哪些列"。敏感字段可以对指定用户或角色隐藏,图表与导出结果同步生效。接口定义在 ColumnPermissionsApi.java,再结合行权限规则上的exportData开关,还能进一步控制授权范围内的数据是否允许导出,把"能看"和"能带走"分开管理。
用户全生命周期管理怎么支撑权限运营
访问控制要管的不只是规则,还有账号。UserApi.java 提供了从 Excel 批量导入、重置密码、禁用/解锁到 MFA 二次验证绑定的完整用户接口。几百个账号规模下,日常运营不需要写脚本:离职账号一键禁用,密码遗忘走重置,高危账号绑上 MFA 即可。
落地与验证
在一台 2 核 4G 的 Linux 服务器上,clone 仓库并运行一键安装脚本:
git clone https://gitcode.com/GitHub_Trending/da/dataease cd dataease && chmod +x installer/install.sh && installer/install.sh安装完成后用默认账号admin、密码DataEase@123456登录,登录后建议先改掉默认密码。第一个验证动作:在【系统管理】→【权限管理】创建一个"数据分析师"角色并绑定某个仪表板的读权限,再建一个测试用户挂到该角色下,用两个账号对比可见资源范围即可确认权限体系生效。
回到开篇那个场景:销售、财务、审计共用一张报表时,先把行级过滤表达式和角色边界定清楚,再逐步细化菜单授权。随着组织扩张,定期复核"资源 × 角色"授权矩阵、清理长期未使用的绑定,并把权限变更、密码重置这类敏感操作保留可追溯记录,权限体系才能持续贴合真实业务。
【免费下载链接】dataease🔥 人人可用的开源 BI 工具,数据可视化神器。An open-source BI tool alternative to Tableau.项目地址: https://gitcode.com/GitHub_Trending/da/dataease
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考