认证培训专区
学习笔记
文章

GCDW 用户与权限管理

发表于2026-07-13 10:22:4961次浏览0个评论

GCDW 用户与权限管理

一、概述

GCDW(GBase Cloud Data Warehouse)采用基于 RBAC(Role-Based Access Control,基于角色的访问控制) 的权限管理模型。

在GCDW中,用户(User) 不直接拥有权限,而是通过 角色(Role) 获得相应权限。角色之间支持继承关系,形成树状结构,实现权限复用和统一管理。

整个权限体系主要包括以下几个对象:

  • Tenant(租户)
  • User(用户)
  • Role(角色)
  • Privilege(权限)
  • Owner(对象所有者)
  • Warehouse(计算资源)

通过这种设计,可以实现权限集中管理、职责分离以及灵活的权限控制。


二、权限模型

用户、角色与权限关系

GCDW采用典型的RBAC模型:

用户(User)
      │
      ▼
角色(Role)
      │
      ▼
权限(Privilege)
      │
      ▼
数据库对象(Database/Table/View...)

即:

  • 用户登录租户实例;
  • 用户本身没有任何数据库操作权限;
  • 权限全部赋予角色;
  • 用户通过拥有角色获得对应权限。

因此,权限管理实际上就是角色管理。

系统内置角色

系统提供三个内置角色。

AccountAdmin

最高管理员。

拥有整个租户最高权限,可以:

  • 创建用户
  • 创建角色
  • 授权
  • 回收权限
  • 管理所有数据库对象

属于整个角色树的根节点。

SystemAdmin

系统管理员。

除 User、Role 管理之外,拥有其它所有数据库权限。

通常用于数据库日常管理。

PublicAdmin

公共角色。

默认所有用户都会拥有该角色。

该角色默认没有任何权限,仅作为角色树最底层节点存在。

角色关系如下:

AccountAdmin
      │
SystemAdmin
      │
业务角色A
业务角色B
业务角色C
      │
子角色……
      │
PublicAdmin

三、角色管理

角色特点

GCDW中的角色具有以下特点:

(1)角色拥有权限

权限不能直接赋给用户。

只能:

权限
   ↓
角色
   ↓
用户

(2)用户与角色为多对多关系

一个角色可以赋予多个用户。

一个用户也可以拥有多个角色。

例如:

RoleA
 ├──User1
 ├──User2

User3
 ├──RoleA
 ├──RoleB

(3)同一时间仅一个角色生效

虽然一个用户可以拥有多个角色。

但是:

执行SQL时,仅当前角色有效。

可通过:

USE ROLE role_name;

切换当前角色。

(4)角色支持继承

角色形成树状结构。

例如:

SystemAdmin
     │
    r1
 ┌───┴────┐
r1_1    r1_2

若:

r1_1拥有SELECT
r1_2拥有INSERT

则:

r1拥有:

SELECT
INSERT

父角色自动继承所有子角色权限。

(5)角色树不能形成闭环

官方建议:

整个租户所有角色均应位于同一棵继承树中。

避免:

  • 孤立角色
  • 多棵继承树
  • 循环继承

否则会导致权限管理复杂化。


四、角色管理操作

创建角色

CREATE ROLE role_name;

例如:

CREATE ROLE sales_role;

设置角色继承

GRANT ROLE child_role
TO ROLE parent_role;

例如:

GRANT ROLE sales_role
TO ROLE systemadmin;

表示:

SystemAdmin
    │
sales_role

给角色授权

GRANT privilege
ON object
TO ROLE role_name;

例如:

GRANT SELECT
ON testdb.t1
TO ROLE sales_role;

支持:

  • ALL
  • SELECT
  • INSERT
  • UPDATE
  • DELETE

等各种权限。

回收权限

REVOKE privilege
ON object
FROM ROLE role_name;

例如:

REVOKE SELECT
ON testdb.t1
FROM ROLE sales_role;

删除角色

DROP ROLE role_name;

例如:

DROP ROLE sales_role;

注意:

  • 权限同时删除;
  • 父角色继承得到的权限也会失效;
  • 应及时重新组织继承树。

五、用户管理

创建用户

示例:

CREATE USER user1
IDENTIFIED BY 'password'
DEFAULT_ROLE='r1'
DEFAULT_WAREHOUSE='wh1';

支持设置:

  • 默认角色
  • 默认Warehouse
  • 密码有效期
  • 是否锁定账户
PASSWORD EXPIRE INTERVAL 90 DAY
ACCOUNT LOCK

给用户赋角色

GRANT ROLE role_name
TO USER username;

例如:

GRANT ROLE sales_role
TO USER user1;

用户即可拥有该角色权限。

用户切换角色

USE ROLE role_name;

切换后:

执行SQL全部按照当前角色权限执行。

修改用户

支持:

修改密码

SET PASSWORD;

修改默认角色

ALTER USER
DEFAULT_ROLE='role';

修改默认Warehouse

ALTER USER
DEFAULT_WAREHOUSE='wh1';

锁定用户

ALTER USER user1
ACCOUNT LOCK;

解锁:

ALTER USER user1
ACCOUNT UNLOCK;

删除用户

DROP USER user1;

六、Owner机制

GCDW引入Owner概念。

数据库对象:

  • Database
  • Table
  • View
  • Procedure
  • Function
  • Warehouse

均拥有Owner。

默认:

对象创建者当前角色即为Owner。

Owner拥有:

  • 查询
  • 修改
  • 删除
  • 转移Owner

等完整权限。

转移Owner

TRANSFORM OWNERSHIP
ON TABLE db.table
TO ROLE role_name;

例如:

TRANSFORM OWNERSHIP
ON TABLE test.t
TO ROLE analyst;

Owner即可变更。

若Owner角色删除,则Owner自动回退为AccountAdmin。


七、权限体系

GCDW支持四级权限控制:

  • 全局权限
  • 数据库权限
  • 表权限
  • 列权限

授权格式分别如下:

全局

GRANT ...
ON *.*.* to ROLE ...

数据库

GRANT ...
ON db.* to ROLE ...

GRANT ...
ON db.table to ROLE ...

GRANT ...(column)
ON db.table to ROLE ...

常见权限

包括但不限于:

权限 作用
SELECT 查询数据
INSERT 插入数据
UPDATE 修改数据
DELETE 删除数据
CREATE 创建数据库、表
DROP 删除数据库、表
ALTER 修改对象结构
CREATE VIEW 创建视图
EXECUTE 执行存储过程
CREATE USER 创建及管理用户
SHOW DATABASES 查看数据库
PROCESS 查看进程
SUPER 执行管理命令
EVENT 管理事件
CREATE ROUTINE 创建存储过程
ALTER ROUTINE 修改存储过程
CREATE FILE FORMAT 创建File Format
CREATE STAGE 创建Stage
STAGE READ 读取Stage
STAGE WRITE 写入Stage
MODIFY_WAREHOUSE 修改Warehouse
OPERATE_WAREHOUSE 启停Warehouse并执行SQL
USAGE_WAREHOUSE 使用Warehouse

八、Warehouse权限

Warehouse属于全局资源。

支持:

GRANT USAGE_WAREHOUSE
ON *.*.*
TO ROLE role1;

也支持针对单个Warehouse授权:

GRANT USAGE_WAREHOUSE
ON WAREHOUSE wh1
TO ROLE role1;

Warehouse权限主要包括:

  • USAGE_WAREHOUSE
  • OPERATE_WAREHOUSE
  • MODIFY_WAREHOUSE

分别用于:

  • 使用Warehouse
  • 启停Warehouse
  • 修改Warehouse配置

九、密码安全策略

系统支持统一密码策略。

主要参数包括:

参数 说明
password_min_length 最小密码长度
password_format_option 密码复杂度要求
password_life_time 密码生命周期
password_reuse_max 历史密码重复限制
password_reuse_time 密码重复使用时间限制

密码复杂度支持:

  • 数字
  • 小写字母
  • 大写字母
  • 特殊字符

可组合配置满足企业安全要求。


十、最佳实践

为了保证权限体系清晰、易维护,建议遵循以下原则:

  1. 所有权限均通过角色进行管理,不直接面向用户授权。
  2. 所有角色统一纳入同一棵角色继承树,避免孤立角色和循环继承。
  3. 根据业务职责设计角色,遵循最小权限原则。
  4. 用户可拥有多个角色,但通过切换当前角色完成不同业务操作。
  5. 定期检查角色继承关系、权限分配和用户状态,及时清理无效角色和用户。
  6. 结合密码策略和账户锁定机制,加强账号安全管理。
  7. 对数据库对象合理规划Owner,避免因角色删除导致Owner异常回退。

评论

登录后才可以发表评论