角色
角色(Role)定义
在Lakehouse中,角色是一种授权管理的工具,用于将若干个权限点集中在一起,然后再将此角色授予给一个或多个用户(User)。
- 当用户被授予角色后,用户即拥有该角色包含的所有权限。
- 角色也可被授予更多的权限点,从而实现权限的灵活扩展与管理。
相较于直接对用户逐个授予权限(ACL 模式),通过“角色”来分配权限,可以显著简化管理流程,也更易于维护和审计。因此,推荐在日常的权限管理中,充分使用 基于角色的访问控制(RBAC, Role-Based Access Control)。
角色类型
Lakehouse中的角色分为两种类型:预置角色和自定义角色。
-
预置角色
- 预置角色是平台在服务实例创建时自动配置的角色,不可修改其权限或删除,但可以将预置角色直接授予给用户。
- 平台预置多个角色,涵盖从实例层面的管理到工作空间层面的管理与使用,帮助用户快速完成基本授权并使用产品功能。全部系统预置角色及其默认权限详见系统内置角色权限列表
-
自定义角色
- 用户可根据自身业务需要,在工作空间范围内创建自定义角色,对该角色进行灵活的权限配置与维护。
- 自定义角色的权限可随时修改或删除,以便适应不断变化的业务场景需求。
- 注意:目前仅支持在工作空间内创建自定义角色,不支持在实例级别创建自定义角色。创建自定义角色的操作仅支持使用SQL执行,暂不支持Web端操作。
角色级别
大数据平台将元数据对象区分为“实例级”和“工作空间级”两类,角色也相应分为“实例角色”和“空间角色”:
实例角色(Instance Role):实例级别角色有两个使用场景:1)用于实例级资源和操作的全局管控;2)用于跨多个工作空间的权限授予。
工作空间角色(Workspace Role):作用于特定工作空间范围内的对象(如schema、table、virtual cluster等)。工作空间角色以工作空间为边界,互不影响。
角色的管理与使用
查看角色
可在“管理” - “安全” - “角色”列表中,查看当前实例与工作空间内的角色信息。
或在“管理” - “工作空间”列表中点击进入工作空间详情页,切换到“角色”页签,查看工作空间下所有角色。
或在SQL中执行以下语句,查询当前连接的工作空间内所有工作空间级别角色:
将角色授予用户
当一个自定义角色创建并具备了相应权限后,需要将该角色授予给用户,用户才能实际使用该角色所包含的权限。
可通过Web端或SQL方式将角色授予用户。
Web端操作
在“安全”-“角色”页面,可以查看当前实例下的服务实例级别角色和工作空间级别角色。
对任一角色授权时,点击该角色名称,进入角色详情页,此时可以查看该角色已被授予的所有用户。点击“+用户授予”,在弹窗中勾选需要添加的用户,点击“授权”,即可将角色授予用户。 !
移除角色被授予的用户时,点击用户名右侧的"...",选择“移除用户”,即可取消该用户使用这个角色的权限。
在“管理”-“工作空间”列表进入工作空间详情页面,在“角色”页签也可以查看该空间内的角色列表,并通过上述操作将该角色授予或取消授予用户。
SQL操作
仅工作空间级别的用户支持使用SQL操作进行授权。在工作空间内执行以下语句,可将空间内角色授予指定用户。
执行以下语句可移除角色中的指定用户;
创建用户自定义角色
当前仅支持创建工作空间级别的自定义角色,需要使用具备该工作空间管理员(workspace_admin)角色的用户进行操作。仅支持使用SQL创建自定义角色。
创建语法示例:
给自定义角色添加权限
在工作空间内,可通过 GRANT 语句为自定义角色添加权限。示例:
常见问题
-
角色和 ACL(访问控制列表)的区别?
- ACL 直接将权限授予给用户;而角色将权限“打包”后再授予用户。
- 对于部门人员变动频繁或权限配置复杂的场景,建议优先使用角色方式减少重复操作。
-
是否支持多角色叠加权限?
- 支持。一个用户可被授予多个角色,最终生效的权限是各角色权限范围的并集。
-
实例角色是否可以访问工作空间?
- 否。实例角色与工作空间角色互不影响,实例角色不具备也无法获取工作空间级对象的权限。
-
预置角色能否修改或删除?
- 不可以。预置角色是系统内置、不可变动的角色,只能选择是否授予用户。