南大通用GBase 8c用户、角色、权限体系详解

17 阅读3分钟

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

一、核心概念定义

1.用户(User)

  • 定义:数据库的认证实体,用于登录数据库和执行操作
  • 特性:
    必须有唯一用户名
    可设置密码、有效期、资源限制
    可被授予角色或直接拥有权限

2.角色(Role)

  • 定义:权限的集合,是一组系统权限和对象权限的集合
  • 特性:
    可以嵌套(角色授予角色)
    不可用于登录(除非设置 LOGIN 属性)
    便于批量权限管理

3.权限(Privilege)

  • 定义:对数据库资源执行操作的许可;表示用户访问某个数据库对象的操作是否被允许,数据库对象包括表、函数、模式、序列等等,操作包括了增、删、改、查、创建等等。

  • 二维分类:

    • 系统权限:实例级操作(如创建数据库、管理用户)
    • 对象权限:对象级操作(如查询表、执行函数)

二、三者关系模型

三者关系模型.png

关键特性:

  • 权限继承:角色 A 授予角色 B,则 B 拥有 A 的所有权限
  • 成员关系:用户加入角色,即获得该角色所有权限
  • 默认角色:用户可设置 SET DEFAULT ROLE 自动激活

三、权限详细分类

权限分类.png

1.系统权限(9 种核心权限)

重要:系统权限不支持 GRANT/REVOKE,必须通过 CREATE / ALTER USER 管理!

2.对象权限

对象权限.png

3.权限层级总结图

权限层级.png

四、用户、角色与权限管理操作

1.用户全生命周期管理

-- 创建用户
CREATE USER dev_user
WITH SYSADMIN PASSWORD 'Dev@2024'
VALID UNTIL '2025-01-01'
CONNECTION LIMIT 10;

-- 修改属性
ALTER USER dev_user 
WITH NOSYSADMIN
CONNECTION LIMIT 20;

-- 锁定/解锁
ALTER USER dev_user ACCOUNT LOCK;
ALTER USER dev_user ACCOUNT UNLOCK;

-- 删除用户(CASCADE级联删除依赖对象,需慎用)
DROP USER dev_user;
​

2.用户与权限管理

2.1 系统权限

--添加授权
alter user test with sysadmin createrole createdb ;

--取消授权
alter user test with nocreaterole nocreatedb noSysadmin ;
​

系统权限.png

2.2 对象权限

创建只读权限用户

-- 以test用户,对某库的public为例
CREATE USER test PASSWORD 'Czt@123456';
grant usage on schema public to test;
-- 只读public下单表
table1grant select on table public.table1 to test;
-- 只读public下所有表
grant select on all tables in schema public to test;
​

创建普通用户 create 权限和对象所有权限

-- 以test1用户,对try库的public为例 
CREATE USER test1 PASSWORD 'Test@2025';
GRANT CREATE ON DATABASE try     TO test1;
GRANT CREATE ON schema   public  TO test1;
grant all on all tables in schema public to test1;
​

查看 test 用户对 public 下所有表的 privilege_type

try=# SELECT grantee,table_schema,table_name, string_agg( privilege_type,', ' ) as privilege_type FROM information_schema.role_table_grants where grantee='test' group by table_name,table_schema,grantee; 
grantee | table_schema |    table_name     |                                           privilege_type---------+--------------+-------------------+---------------------------------------------------------------------------------------------------- 
test    | public       | t_json            | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM 
test    | public       | test              | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM 
test    | public       | test11            | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM 
test    | public       | all_db_links      | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM 
test    | public       | hte_as_syslog     | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM 
test    | public       | dual              | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM 
test    | public       | spatial_ref_sys   | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM
(7 rows)
​

3.角色与权限管理

-- 授予对象权限给角色
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA app TO app_developer;

-- 将角色授予用户
GRANT app_developer TO dev_user;

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。