ToolJet 权限体系与 RBAC 实践指南:基于用户、群组与资源级别的访问控制(2.50.0-LTS)

ToolJet 权限体系与 RBAC 实践指南:基于用户、群组与资源级别的访问控制(2.50.0-LTS) ToolJet 权限体系与 RBAC 实践指南基于用户、群组与资源级别的访问控制2.50.0-LTS【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJetToolJet 通过一套基于角色的访问控制Role-Based Access ControlRBAC体系让工作区管理员可以精细地决定每位用户对 App、文件夹、工作区变量等资源的访问级别。本文以 permissions.md 为核心结合用户与群组管理教程及服务端源码完整讲解 Users、Groups、Permissions 三大核心概念、默认群组的特性、自定义群组的创建与配置以及这些权限在数据层的落地方式。读完本文你将能够独立规划并配置一套符合团队协作需求的工作区权限方案。一、ToolJet 的 RBAC 权限模型总览ToolJet 的权限模型遵循用户Users→ 群组Groups→ 资源Resources的经典三层结构管理员可以邀请用户Users进入自己的工作区并将他们分配到拥有权限访问 App、文件夹或工作区变量的群组Groups权限基于群组而非单个用户直接授予这意味着对权限的调整只需要修改群组配置即可批量生效权限的粒度覆盖Create创建、Update更新和 Delete删除三类操作。在 version-2.50.0-LTS 版权限文档 中官方给出了如下 RBAC 术语表这是理解整个权限体系的基础。1.1 Users用户每个用户与一个唯一的邮箱地址关联一个用户可以被添加到一个或多个群组中用户通过邮箱邀请进入工作区其状态会经历Invited → Active的流转详见后文管理用户。1.2 Groups群组每个工作区默认内置两个群组All Users所有用户和Admin管理员除此之外管理员可以创建自定义群组例如 Support支持、Engineering工程等从而按部门或职能划分权限边界All Users包含工作区中的所有用户。当新用户被邀请加入时默认会被添加到该群组Admins包含工作区中的所有管理员。凡是加入该群组的成员都将获得访问 ToolJet 全部资源的权限。1.3 资源与权限资源Resources包括Apps应用、Folders文件夹、Workspace Variables工作区变量管理员可针对这些资源设置权限权限Permissions包括Create、Update 和 Delete三类操作可针对不同资源单独授予或撤销。关于用户和群组的具体管理操作官方文档给出了完整的操作指南可参阅 Managing Users and Groups2.50.0-LTS。下文将在此基础上展开详解。二、在数据层面理解权限模型服务端实体与表结构从源码层面看ToolJet 服务端NestJS TypeORM将上述权限模型落到了若干实体与数据表上理解这些表有助于我们准确预判权限行为。2.1 权限群组主表permission_groups新版权限体系的核心实体是 group_permissions.entity.ts对应数据库表permission_groupsid群组唯一标识UUID 主键organization_id群组所属的工作区权限按工作区隔离name群组名称如 Support、Engineeringtype群组类型枚举GROUP_PERMISSIONS_TYPE用于区分默认群组与自定义群组一系列布尔权限列默认值均为false包括app_create/app_delete创建/删除应用workflow_create/workflow_delete创建/删除工作流folder_create/folder_delete创建/删除文件夹module_create/module_delete创建/删除模块workflow_folder_create/workflow_folder_delete、module_folder_create/module_folder_delete工作流/模块文件夹org_constant_crud工作区常量的 CRUD 权限tjdb_crudToolJet Database 的 CRUD 权限data_source_create/data_source_delete创建/删除数据源app_promote/app_release应用发布相关权限这些布尔列与文档中Permissions 包括 Create、Update 和 Delete的描述一一对应且全部默认关闭false体现了默认最小权限、按需开启的设计原则。2.2 群组与用户、资源的关联同一实体文件还定义了群组与其他实体的关系通过GroupUsers对应表group_users建立群组 ↔ 用户的多对多关联一个用户可以属于多个群组通过GranularPermissions对应表granular_permissions承载更细粒度的权限条目其onDelete: CASCADE表明删除群组会级联清理相关权限记录通过PageUser、QueryUser、ComponentUser等实体支持页面、查询与组件级别的细粒度授权。2.3 旧版表结构的演进在 group_permission.entity.ts 中保留了旧版group_permissions表的定义其文件头明确标注了DEPRECATED已废弃将在未来版本移除并提示改用group_permissions.entity.ts中的新实现。旧表同样包含app_create、folder_create、org_environment_variable_create等布尔权限列。从迁移脚本 1720513124281-DropGroupPermissionsOlderRelatedTables.ts 的名称可以推断旧版权限相关表已在新版迁移中被逐步清理和替换。因此在使用时请以permission_groups新版为准。2.4 群组类型与角色常量group-permissions 常量定义 中定义了核心枚举GROUP_PERMISSIONS_TYPE群组类型如默认群组 DEFAULT 等USER_ROLE用户角色其中ADMIN adminResourceType资源类型枚举用于标识权限作用于哪类资源。常量中还预置了默认群组All Users、Admin 等的初始权限配置这正是新用户默认加入 All Users 群组的代码依据。三、管理用户邀请、编辑与归档本小节操作步骤取自 manage-users-groups.md适用于 2.50.0-LTS 版本。工作区管理员可以邀请用户加入工作区或对现有用户进行归档/取消归档操作。入口为仪表盘左侧边栏进入Workspace Settings工作区设置选择Users用户。3.1 邀请用户Inviting Users管理员可以通过邮箱邀请任何人加入工作区步骤如下在Users页面右上角点击Add users按钮在右侧打开的抽屉中选择Invite with email标签页填写新用户的Full Name全名、Email address邮箱并从下拉菜单中选择要分配的群组点击Invite Users按钮完成邀请。注意事项All Users 群组是工作区所有用户的默认群组也可以创建新群组并分配给用户邀请后系统会向被邀请者发送一封包含Invite Link邀请链接的邮件用户通过邀请链接成功加入后其状态会从Invited变为Active技巧可以点击被邀请用户Invited状态旁的Copy link复制邀请链接便于线下分享。3.2 批量邀请用户Bulk Invite UsersToolJet 支持通过 CSV 文件批量邀请用户点击Add users按钮选择Bulk Invite标签页编辑并上传包含所有用户信息的示例 CSV 文件。批量邀请适合团队初始化、大规模导入等场景可大幅减少逐个邀请的操作成本。3.3 编辑用户详情Edit User Details管理员可以编辑工作区中任意用户的详情主要包括将用户加入群组或从群组中移除从Workspace Settings进入Users页面点击目标用户右侧的 kebab 菜单选择Edit user details在右侧打开的抽屉中调整用户所属群组点击Update保存。3.4 归档与取消归档用户归档Archive归档后用户将失去访问工作区的权限。操作方式为在 Users 页面点击目标用户的 kebab 菜单 → 选择Archive→ 状态从Active变为Archived。说明从工作区归档的用户仍可被邀请到其他工作区除非在实例级别的Settings页面被归档。取消归档Unarchive恢复用户对工作区的访问权限。操作方式为点击已归档用户的 kebab 菜单 → 选择Unarchive→ 状态从Archived变为Invited。说明该用户需要再次通过邮件中的邀请链接加入工作区注意若用户在实例级别被归档在工作区中取消归档会自动同步解除其实例级别的归档状态。四、管理群组四大配置维度在Workspace Settings → Groups页面管理员Admins和超级管理员Super Admins可以创建群组并为群组成员授予特定应用的访问权限。每个群组都有四个配置区块理解这四块的差异是配置权限的关键。4.1 Apps应用管理员可以为群组添加或移除任意数量的应用从下拉框选择应用后点击Add按钮即可添加可为群组设置应用的View查看或Edit编辑权限同一群组内的不同应用可以设置不同的权限实现一组成员、逐应用差异化授权。4.2 Users用户管理员可以在群组中添加或移除任意数量的用户从下拉框选择用户并点击Add添加点击用户旁的Delete按钮将其移出群组。4.3 Permissions细粒度权限管理员和超级管理员可以为群组内的用户设置细粒度的操作权限2.50.0-LTS 版本支持的权限项包括权限项说明Create / Delete Apps创建、删除应用Create / Update / Delete Folders创建、更新、删除文件夹Create / Update / Delete Workspace Constants创建、更新、删除工作区常量Create / Delete Data Sources创建、删除数据源这些权限项在服务端对应permission_groups表中的app_create、app_delete、folder_create、folder_update、folder_delete、org_constant_crud、data_source_create、data_source_delete等布尔列参见 group_permissions.entity.ts默认均为false。4.4 Data Sources数据源仅Admins管理员和Super Admins超级管理员可以定义群组用户能够查看viewed或编辑edited哪些数据源数据源权限用于控制底层连接与数据的安全边界防止非授权成员直接操作敏感数据源。4.5 审计日志工作区内任何管理员、超级管理员或用户执行的活动都会被记录在Audit logs审计日志中——包括与用户和群组管理相关的所有活动。这意味着权限变更全程可追溯便于合规审计与问题排查。五、预定义群组All Users 与 Admin每个工作区默认内置两个用户群组它们的权限默认配置如下。5.1 All Users所有用户该群组包含工作区中的所有用户和管理员。AppsUsersPermissions可以添加或移除应用禁止修改成员群组自动包含工作区内的所有用户和管理员可以全局编辑所有用户的权限即成员关系由系统自动维护不可手动增删但应用授权与全局权限可由管理员配置。5.2 Admin管理员该群组默认包含管理员。管理员可以向该群组添加更多管理员或将用户移出该群组。AppsUsersPermissions禁止修改。默认对该工作区的所有应用拥有Edit编辑权限管理员可以添加或移除该群组的成员禁止修改。默认所有管理员可以创建、删除应用或创建文件夹即Admin 群组的应用授权与权限项默认锁定仅成员名单可调整从制度上保证管理员角色的高权限不被误降级。六、创建与删除自定义群组6.1 创建新群组仅付费计划在 2.50.0-LTS 版本中创建新群组的能力属于付费计划paid plans专有功能社区版CE默认不可用。在Groups页面点击Create new group按钮输入群组名称点击Create Group按钮群组创建成功后即可为该群组添加Apps应用、Users用户并设置Permissions权限。自定义群组的典型用途为 Support、Engineering、Finance 等部门建立隔离的权限域只授予与岗位职责匹配的最小资源访问范围。6.2 删除群组在Groups页面点击群组旁的Delete按钮系统会弹出确认提示点击Yes即可删除该群组。需要留意的是从 group_permissions.entity.ts 的实体定义可以看到群组与GroupUsers、GranularPermissions均建立了onDelete: CASCADE的级联删除关系因此删除群组会同步清理其成员关联与细粒度权限记录不会在数据库中残留孤儿数据。七、权限设计的最佳实践结合文档与源码在 2.50.0-LTS 版本中规划权限时建议遵循以下原则以群组为授权单元避免逐用户授权权限挂在群组上成员调整只改群组名单职责变化时只需移动用户即可全局生效默认最小权限permission_groups表的权限列默认全部为false自定义群组应只开启业务必需的 Create/Update/Delete 项合理利用默认群组All Users 适合设置全员的基线权限如仅查看Admin 群组保持锁定以维护管理员权威涉及敏感数据的应用通过自定义群组按需授予View/Edit区分资源类型授权Apps、Folders、Workspace Constants、Data Sources 的权限相互独立尤其是数据源权限仅管理员可配置务必将其视为安全边界借助审计日志复核所有用户与群组管理操作均进入审计日志权限变更后应及时复核必要时回溯变更记录。八、版本适用性与延伸阅读本文内容基于 version-2.50.0-LTS 权限文档 及 2.50.0-LTS 用户与群组管理教程其中的界面入口、权限项与源码实现均以该版本为基准更新版本如 3.0.0-LTS在权限维度上有所扩展但从用户—群组—资源构建 RBAC 的核心模型保持一致。如需继续深入可进一步阅读工作区概览 与工作区变量、工作区常量文档了解被授权资源的具体含义服务端实体 group_permissions.entity.ts、group_users.entity.ts 与 granular_permissions.entity.ts确认权限字段与关联关系群组权限模块 server/src/modules/group-permissions 下的常量、服务与控制器实现追踪权限的校验与执行链路。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考