跳到主要内容
版本:Latest-3.2

权限项

本文详细描述了 StarRocks 中可以用于赋权的权限项及其含义。您可以通过 GRANTREVOKE 操作对用户和角色进行权限的赋予和收回。

注意:本文介绍的权限项从 3.0 版本开始提供,升级后的权限框架、语法与旧的系统无法兼容,请以 3.0 版本的操作说明为准。升级后,除个别操作外,您在旧系统上的大部分操作权限仍然保留。具体差异请见文档最后的升级指南。

权限列表

系统级权限 (SYSTEM)

权限用途
NODE用于操作节点,比如添加,删除,下线节点。为确保集群安全,此权限不可直接授予给用户和角色。cluster_admin 角色拥有此权限。
GRANT创建用户/角色,更改用户/角色,将权限授予给用户/角色。此权限不可直接授予给用户和角色。user_admin 角色拥有此权限。
CREATE RESOURCE GROUP创建资源组。
CREATE RESOURCE创建资源给 Spark Load 和外表使用。
CREATE EXTERNAL CATALOG创建 External Catalog。
PLUGIN安装、卸载一个插件。
REPOSITORY创建、删除、查看仓库。
BLACKLIST创建、删除、查看 SQL 黑名单。
FILE创建、删除、查看文件。
OPERATE管理副本、配置项、变量、transaction等。
CREATE GLOBAL FUNCTION创建一个全局 UDF。
CREATE STORAGE VOLUME为远程存储系统创建存储卷 (Storage Volume)。

资源组权限 (RESOURCE GROUP)

权限用途
ALTER为指定资源组 (resource group) 增加、减少分类器 (classifier)。
DROP删除指定资源组。
ALL拥有对该资源组的上述所有权限。

资源权限 (RESOURCE)

权限用途
USAGE使用该资源 (resource)。
ALTER更改该资源。
DROP删除该资源。
ALL拥有对该资源的上述所有权限。

用户权限 (USER)

权限用途
IMPERSONATE允许用户 a 以用户 b 的身份执行操作。

全局用户自定义函数权限 (GLOBAL FUNCTION)

权限用途
USAGE在查询中使用该函数。
DROP删除该函数。
ALL拥有对该函数的上述所有所有权限。

数据目录权限 (CATALOG)

对象权限用途
CATALOG
(内部目录,默认名称为 default_catalog)
USAGE使用 internal catalog。
CREATE DATABASE在 internal catalog 里创建数据库。
ALL拥有对 internal catalog 的上述所有权限。
CATALOG (外部目录)USAGE使用 external catalog,查看里面的表。
DROP删除 external catalog。
ALL拥有对该 external catalog 的上述所有权限。

说明:StarRocks 内部数据目录不能删除。

数据库权限 (DATABASE)

权限用途
ALTER设置指定数据库的属性,重命名,设定配额等。
DROP删除数据库。
CREATE TABLE在数据库内创建表。
CREATE VIEW创建视图。
CREATE FUNCTION创建函数。
CREATE MATERIALIZED VIEW创建物化视图。
ALL拥有对该数据库的上述所有权限。

表权限 (TABLE)

权限用途
ALTER对表进行修改,对外表元数据进行刷新。
DROP删除表。
SELECT查询表中数据。
INSERT向表中导入数据。
UPDATE更新表。
EXPORT从 StarRocks 表中导出数据。
DELETE按条件删除指定表中的数据,或者清空指定表的数据。
ALL拥有对该表的上述所有权限。

视图权限 (VIEW)

权限用途
SELECT查询视图 (view) 中的数据。
ALTER修改一个视图的定义。
DROP删除一个逻辑视图。
ALL拥有对该视图的上述所有权限。

物化视图权限 (MATERIALIZED VIEW)

权限用途
SELECT查询时引用该物化视图 (materialized view) 的数据,以加速查询。
ALTER更改物化视图。
REFRESH刷新物化视图。
DROP删除物化视图。
ALL拥有对该物化视图的上述所有权限。

库级别用户自定义函数权限 (FUNCTION)

权限用途
USAGE使用该函数。
DROP删除该函数。
ALL拥有对该函数的上述所有权限。

存储卷权限 (STORAGE VOLUME)

权限用途
ALTER更改存储卷的认证属性、注释或状态(enabled)。
DROP删除指定存储卷。
USAGE查看指定存储卷的信息,设置指定存储卷为默认存储卷。
ALL拥有对该存储卷的上述所有权限。

升级注意事项

从 2.x 版本升级至 3.0 版本时,由于权限系统的升级,有可能导致您的部分操作无法进行。具体包含:

操作涉及命令升级前升级后
修改表ALTER TABLE,CANCEL ALTER TABLE拥有表或表所在数据库的 LOAD_PRIV 权限即可对表执行 ALTER TABLECANCEL ALTER TABlE 操作您需要拥有对应表的 ALTER 权限才可以执行该操作。
刷新外表REFRESH EXTERNAL TABLE拥有外表的 LOAD_PRIV 权限即可对外表进行刷新。您需要拥有对应外表的 ALTER 权限才可以对外表进行刷新。
备份与恢复BACKUP,RESTORE拥有数据库的 LOAD_PRIV 权限即可对该数据库及其下的任意表进行备份恢复。管理员需要重新对用户赋权,以保证用户可以执行BACKUPRESTORE操作。
删除后复原RECOVER 数据库或表拥有对应数据库或表的 ALTER_PRIV,CREATE_PRIVDROP_PRIV 权限即可对库或表进行复原。您需要拥有 default_catalog 的 CREATE DATABASE 权限才可以恢复数据库;需要拥有对应数据库的 CREATE TABLE 和对应表的 DROP 权限。
创建、更改用户CREATE USER,ALTER USER拥有数据库的 GRANT_PRIV 权限即可创建和更改用户。您需要拥有 user_admin 角色才可以执行CREATE USERALTER USER操作。
授予和收回权限GRANT,REVOKE拥有各对象的 GRANT_PRIV 权限即可将对应对象的权限授予给其他用户或角色。升级后,您仍旧可以将您在该对象上已经拥有的权限赋予给其他用户或角色。
在新的权限系统中:
  • 拥有 user_admin 角色的用户才可以将任意权限授予给任意用户和角色。
  • 当您的授权语句包含WITH GRANT OPTION时,您可以将该语句涉及的权限授予给其他用户或角色。

在 2.x 版本中,StarRocks 的角色实现并不完全。当您将角色赋予给用户时,StarRocks 直接将角色所有的权限赋予给用户,而并不是将角色本身赋予给用户。从而在老版本中,StarRocks 的用户和角色并没有直接的从属关系。

升级之后,StarRocks 会对每个用户拥有的权限进行升级,老的角色仍旧存在,但仍旧与用户没有从属关系。如果您希望使用新的 RBAC,可以按照新的 GRANT 操作进行赋权。