权限系统总览
本文介绍 StarRocks 中权限系统的基本概念。权限决定了哪些用户可以对哪些特定对象执行哪些特定的操作,从而方便您更加安全地管控数据和资源。
版本提示:本文介绍的权限管理系统从 3.0 版本开始提供。升级后的权限框架、语法与旧的系统无法兼容,请以 3.0 版本的操作说明为准。升级后,除个别操作外,您在原有系统上的大部分操作权限仍然保留。具体差异请见权限项文档的升级注意事项。
StarRocks 采用了两种权限模型:
- 基于角色的访问控制 (RBAC: role-based access control):权限通过角色来进行管理,即可以将权限赋予给角色,从而通过角色传递给用户。
- 基于用户标识的访问控制 (IBAC: identity-based access control):权限可以直接赋予给用户标识。
因此,每个用户标识拥有的最大权限范围为:它所拥有的角色权限及自身权限的并集。
基础概念:
- 对象 (Object) 是一个可以被授权访问的实体。除非进行授权,否则拒绝访问。例如 CATALOG、DATABASE、TABLE、VIEW 等。
- 权限项 (Privilege) 是一个对象的访问级别。不同的权限项代表着对目标对象的不同操作。例如 SELECT、ALTER、DROP 等。有关 StarRocks 支持的对象和权限项,参见 权限项。
- 用户标识 (User Identity):用户的唯一标识,同时也是可以被授权的实体。用户标识以
username@'userhost'
的方式呈现,由指定的用户名和用户登录的 IP 组成。用户标识简化了属性配置,相同用户名的用户标识共享一个属性。只需将属性配置给用户名,该属性会对所有包含该用户名的用户标识生效。 - 角色 (Role):权限的抽象合集,同时也是可以被授权的实体。可以将角色授予给用户,也可以将角色授予给其他角色产生嵌套,从而将其权限向下传递。StarRocks 提供系统预置角色,您也可以根据业务需求创建自定义角色。
下图展示了在 RBAC 和 IBAC 两种权限模型下的权限管理示例。
对象与权限
对象在逻辑上存在层级,这与他们所代表的概念有关。例如 Database 包含在 Catalog 中,而 Table、View、Materialized View、Function 又包含在 Database 中。下图展示了 StarRocks 系统中的对象层级关系。