StarRocks权限管理工具

本工具与getu作为一对,本次介绍工具setu。


本工具属于starrocks 2.1版本时开发,经过了2.1->3.3.11版本的迭代,同时支持2.1,2.5,3.0…等权限变革版本的兼容。目前内部运维日常使用。

增删管理
2.5- 版本时,starrocks的权限指标,如select_priv,alter_priv,格式化为select,alter…
3.0+版本时,starrocks的权限指标,支持到catalog,materialized等

模拟授权
支持对角色、账号进行授权。

(表级别) internal default_catalog 普通账号授权指令:
setu -s <cluster> -u <username> -t <schema.tablename> -p <permission>


解析:对adhoc集群中的test1用户授予3个表的select权限
当有库表不存在时,提示异常(3.0+后,库表与权限解耦,库表不存在,则授权失败)

查看权限是否已经授予


由于有两个库表不存在,所以仅只有一个授予成功。

(表级别) external catalog普通账号授权指令:
setu -s <cluster> -u <username> -t <schema.tablename> -p <permission> -a <catalog>


-a指定catalog名称,同时授予多个权限,例如select,alter…

再次检验权限是否已经授予


这里[hive]与[default_catalog]进行区分。

直接使用show grants查看指标

(库级别) internal default_catalog 普通账号授权指令:
setu -s <cluster> -u <username> -t <schema.*> -p <permission>

检验指标


这里对库级别的database,materialized,view都支持了查询权限

(库级别) external catalog 同理:
setu -s <cluster> -u <username> -t <schema.*> -p <permission> -a <catalog>


检验指标

再次使用show grants查看指标

(物化视图,视图) internal default_catalog 普通账号授权指令:
setu -s <cluster> -u <username> -t <schema.tablename> -p <permission>

检验指标


后台自动稽核-t输入的库表类型,支持识别内表,物化视图,视图。

再次使用show grants查看指标

同时支持系统所拥有的所有catalog,例如iceberg,那就-a iceberg

上面简单介绍了授权操作,下面模拟撤销权限。撤销权限,仅需加个-r即可,代表revoke

(表级别) internal default_catalog 普通账号授权指令:
setu -s <cluster> -u <username> -t <schema.*> -p <permission> -a <catalog>


撤销用户对ods.cn_wc_mb_vm__scan_di的查询权限
setu -s sr-adhoc -u test1 -t ods.cn_wc_mb_vm__scan_di -p SELECT -r


回收成功

(库级别) internal default_catalog 普通账号授权指令:
setu -s <cluster> -u <username> -t demo.*,ops.* -p <permission> -r


回收 demo,ops两个库的查询权限

setu -s <cluster> -u <username> -t dwd.*,ods.* -p select -a hive -r


回收 dwd,ods两个库的查询权限,但保留alter权限

setu -s sr-adhoc -u test1 -t ads.a1,ads_dev.scan_di,ods.acheck_details_byuser -p SELECT,alter -a hive -r


回收 ads.a1,ads_dev.scan_di,ods.acheck_details_byuser 三个hive表的权限

检验指标

再次使用show grants查看指标

最后还有一种方式:角色授权,加上参数-m role 代表 -u

备注:本工具setu(权限管理工具) 与 getu(权限可视化工具) 同一套逻辑。
好处:在命令行就能实现权限管理,无需繁琐的编辑授权语句。
兼容:内部兼容所有的starrocks版本。