1.Base基础/3.Icon图标/操作/search备份
1.Base基础/3.Icon图标/操作/search备份
EN
文档
关于AntDB
部署与升级
快速入门
使用教程
运维
调优
工具和插件
高级服务
数据安全
  • 文档首页 /
  • 参考 /
  • 权限说明

权限说明

更新时间:2024-07-01 14:39:45

AntDB 权限分为两部分,一部分是数据库系统权限,可以授予 role 或 user(两者区别在于后者默认具有 login 权限);一部分为数据库对象的操作权限。 对超级用户不做权限检查,其它走 acl。

数据库系统权限 pg_roles

  • rolsuper 是否具有超级用户权限
  • rolinherit 是否可以继承其他角色的权限
  • rolcreaterole 是否可以创建更多角色
  • rolcreatedb 是否可以创建数据库
  • rolcanlogin 是否可以登录
  • rolreplication 是否可以进行流复制
  • rolconnlimit 该角色可以连接的次数,如果没有限制,为 -1
  • rolpassword 口令
  • rolvaliduntil 口令失效日期(只用于口令认证);如果没有失效期,为 NULL

数据库对象的操作权限 pg_class.relacl

  • r -- SELECT ("读")
  • w -- UPDATE ("写")
  • a -- INSERT ("追加")
  • d -- DELETE
  • D -- TRUNCATE
  • x -- REFERENCES
  • t -- TRIGGER
  • X -- EXECUTE
  • U -- USAGE
  • C -- CREATE
  • c -- CONNECT
  • T -- TEMPORARY
  • arwdDxt -- ALL PRIVILEGES (针对表,对于其他对象该权限列表会变化)

操作权限说明

  • SELECT:该权限用来查询表或是表上的某些列,或是视图,序列。
  • INSERT:该权限允许对表或是视图进行插入数据操作,也可以使用 COPY FROM 进行数据的插入。
  • UPDATE:该权限允许对表或是或是表上特定的列或是视图进行更新操作。
  • DELETE:该权限允许对表或是视图进行删除数据的操作。
  • TRUNCATE:允许对表进行清空操作。
  • REFERENCES:允许给参照列和被参照列上创建外键约束。
  • TRIGGER:允许在表上创建触发器。
  • CREATE:对于数据库,允许在数据库上创建 Schema;对于 Schema,允许对 Schema 上创建数据库对象;* 对于表空间,允许把表或是索引指定到对应的表空间上。
  • CONNECT:允许用户连接到指定的数据库上。
  • TEMPORARY 或是 TEMP:允许在指定数据库的时候创建临时表。
  • EXECUTE:允许执行某个函数。
  • USAGE:对于程序语言来说,允许使用指定的程序语言创建函数;对于 Schema 来说,允许查找该 Schema 下的对象;对于序列来说,允许使用 currval 和 nextval 函数;对于外部封装器来说,允许使用外部封装器来创建外部服务器;对于外部服务器来说,允许创建外部表。

  • ALL PRIVILEGES:表示一次性给予可以授予的权限。

示例

新建只读角色

CREATE ROLE role1_select WITH

	LOGIN
	NOSUPERUSER
	CREATEDB
	CREATEROLE
	INHERIT
	REPLICATION
	CONNECTION LIMIT 10
	VALID UNTIL '2018-12-31T17:01:15+08:00' 
	PASSWORD '123456';
COMMENT ON ROLE role1_select IS 'for read';

GRANT SELECT ON table t1 TO role1_select;

新建写角色

CREATE ROLE role1_insert WITH

 	LOGIN
	NOSUPERUSER
	CREATEDB
	CREATEROLE
	INHERIT
	REPLICATION
	CONNECTION LIMIT 10
	VALID UNTIL '2018-12-31T17:01:15+08:00' 
PASSWORD '123456';
COMMENT ON ROLE role1_insert IS 'for write';

GRANT INSERT,UPDATE,DELETE,TRUNCATE ON table t1 TO role1_insert;

新建用户并赋予指定角色

  • 创建一个默认用户,只有 login 权限,其他权限都收回。
CREATE USER user1 WITH

	LOGIN
	NOSUPERUSER
	NOCREATEDB
	NOCREATEROLE
	INHERIT
	NOREPLICATION
	CONNECTION LIMIT -1
	PASSWORD 'xxxxxx';
  • 赋予只读角色
GRANT role1_select TO user1 ;
  • 赋予写角色
GRANT role1_insert TO user1 ;

验证模式下的表的相应权限

SELECT has_table_privilege('aa','select');
SELECT has_table_privilege('aa','insert');

对 sequence 类型的授权

usage 有 currval,nextval 这两个函数可用:

GRANT usage ON sequence sq1 TO user1;

update 有 setval 这个函数可用:

GRANT update ON sequence sq1 TO user1;

角色权限的继承

CREATE ROLE role_father xxx;
CREATE ROLE role_son xxx;
GRANT role_father TO role_son;

查看权限

在 adb 中的查看权限的快捷指令

  • \dn[S+] 列出所有模式
  • \dp 列出表,视图和序列的访问权限,同\z
  • \du[S+] 列出角色
  • \ddp 列出默认权限

database、schema、table_seq_view_etc、table_column 分 4 个级别来授权。

问题反馈