Starrocks由两种权限模型构成

基于角色的访问控制 (RBAC: role-based access control):权限通过角色来进行管理,即可以将权限赋予给角色,从而通过角色传递给用户。

基于用户标识的访问控制 (IBAC: identity-based access control):权限可以直接赋予给用户标识。

整体使用如下

其中分为四大模块

  1. 对象

对象是存在的实体,例如Database 包含在 Catalog 下,Table包含在 Database下

  1. 权限,

依附于对象之上,每个对象有不同的权限项可以被授权

  1. 用户

用户由用户登录的 IP(userhost) 和用户名(username)组成,比如username@’userhost’。StarRocks 会将拥有相同用户名,但来自不同 IP 的用户识别为不同的用户标识。ip默认为 ‘%’,即表示从任意 host 连接到 StarRocks 的同名用户。

  1. 角色

一组权限的集合,用户可以有多个角色,也可以为每个用户设置登录时自动激活的默认角色 (default role),用户也可以在当前会话中手动激活拥有的角色 (active role)。

角色可以被继承,会因为继承所获的父角色的权限

需要注意的是,一个角色的最多继承层数为 16。角色的继承关系不能是双向的,比如将角色 A 赋予给 B,不能同时又把 B 赋予给 A,可能会造成继承关系不清楚。

Starrocks提供了一组默认角色供使用

root:拥有全局权限。root 用户默认拥有 root 角色。

cluster_admin:拥有集群的管理权限。包含对节点的操作权限,如增加、减少节点。

db_admin:拥有数据库的管理权限。

user_admin:拥有用户和角色的管理权限。包含创建用户、角色、赋权等权限。

角色可以设置默认激活,比如SET DEFAULT ROLE 更改自己的默认角色

也可以进行手动激活,SET ROLE 命令来设置当前的激活角色。

那么我们接下来详细讲解下如何管理starrocks这样一个集群

首先我们可以创建用户,示例为

CREATE USER jack@’172.10.1.10′ IDENTIFIED BY ‘12345’ DEFAULT ROLE ‘example_role’;

这样就创建了一个用户

其次是创建角色

CREATE ROLE example_role;

同时可以给角色授予权限

— 赋予角色所有表的查询权限。

GRANT SELECT ON ALL TABLES IN ALL DATABASES TO ROLE read_only;

— 赋予角色所有视图的查询权限。

GRANT SELECT ON ALL VIEWS IN ALL DATABASES TO ROLE read_only;

— 赋予角色所有物化视图的查询和加速权限。

GRANT SELECT ON ALL MATERIALIZED VIEWS IN ALL DATABASES TO ROLE read_only;

撤销权限

REVOKE SELECT ON TABLE sr_member FROM ROLE example_role;

角色和用户的绑定

GRANT example_role TO USER jack@’172.10.1.10‘;

撤销角色绑定

REVOKE example_role FROM USER jack@’172.10.1.10‘;

这里推荐在实际使用中,创建一个运维角色绑定系统预置角色 db_admin、user_admin 以及 cluster_admin。

然后给每个运维人员创建一个账号绑定运维角色来进行使用,

对于用户来说,除了最基本的用户名+密码认证方式外,StarRocks 还支持 Lightweight Directory Access Protocol(LDAP)认证。这里先不赘述了,不过给出官方文档

https://docs.starrocks.io/zh-cn/latest/administration/Authentication

最后我们列出一个表格,来对应不同实体可以赋予的权限列表

系统级权限 (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。

资源组权限 (RESOURCE GROUP)

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

全局用户自定义函数权限 (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 的上述所有权限。

数据库权限 (DATABASE)

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

表权限 (TABLE)

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

视图权限 (VIEW)

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

物化视图权限 (MATERIALIZED VIEW)

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

发表评论

邮箱地址不会被公开。 必填项已用*标注