云数据库 PostgreSQL 用户与权限操作

腾讯云数据库 PostgreSQL 未开放 superuser 角色属性和 pg_execute_server_program、pg_read_server_files、pg_write_server_files 角色供用户使用。但因为部分操作必须要求 superuser 进行,所以云数据库 PostgreSQL 提供了 pg_tencentdb_superuser 角色用以替代 superuser。

相关产品
云数据库 PostgreSQL 产品页,含版本规格、价格与购买入口。

一、pg_tencentdb_superuser 角色

此角色支持的权限包括:系统权限和数据库对象权限。详细权限如下表:

二、系统权限

权限 描述
CREATEDB 可以执行 database 的创建。
BYPASSRLS 可以绕过所有行级安全策略检查。
REPLICATION 默认拥有 replication 权限,也可以授权 replication 权限给其他用户。
CREATEROLE 拥有如社区版中 CREATEROLE 的权限,但是已将 pg_read_server_files, pg_write_server_files 和 pg_execute_server_program 从 createrole 权限中移除。

三、对象权限

对象 描述
database 默认拥有所有 owner 为非 superuser 的 database 的权限。
schema 默认拥有所有 owner 为非 superuser 的 schema 的权限。
table/sequence 默认拥有所有 owner 为非 superuser 的 table/sequence 的权限。
function 默认拥有所有 owner 为非 superuser 的 function 的权限。
language 无特殊权限。
tablespace 无特殊权限。
FDW / foreign server 默认拥有所有 owner 为非 superuser 的 FDW / foreign server 的权限。
TYPE 默认拥有所有 owner 为非 superuser 的 type 的权限。

四、其他操作

·订阅/发布:可以创建订阅/发布;可以创建 publication for all tables;可以创建 slot。

·插件:可创建所有支持的插件。创建插件时,当前 pg_tencentdb_superuser 会临时提权为 superuser,通过所有的权限检查。

·load_file 权限保持默认行为,仅可以加载/lib/plugins/目录下的 so。

·开放 pgstat_get_backend_current_activity 函数中查看死锁的详细信息的权限,方便用户自己排查死锁。

·限制 pg_signal_backend 函数,只有 pg_tencentdb_superuser 才能 kill pg_tencentdb_superuser 的进程。

·允许 checkpoint。内核小版本需等于或高于 V10.17_r1.8、V11.12_r1.7、V12.7_r1.8、V13.3_r1.6、V14.2_r1.5,大版本等于或高于 V15。

·允许创建和修改 owner 为 tencentdb_superuser 的 event_trigger。允许创建和修改 event_trigger 的内核小版本需等于或高于 V10.17_r1.8、V11.12_r1.7、V12.7_r1.8、V13.3_r1.6、V14.2_r1.5,大版本等于或高于 V15。

五、权限操作

详细权限操作可以参考 PostgreSQL 社区产品文档:

·创建用户,详细可参考 产品文档:

CREATE USER name [ [ WITH ] option [ … ] ]where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL | VALID UNTIL 'timestamp' | IN ROLE role_name [, …] | IN GROUP role_name [, …] | ROLE role_name [, …] | ADMIN role_name [, …] | USER role_name [, …] | SYSID uid

·创建角色,详细可参考 产品文档:

CREATE ROLE name [ [ WITH ] option [ … ] ]where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL | VALID UNTIL 'timestamp' | IN ROLE role_name [, …] | IN GROUP role_name [, …] | ROLE role_name [, …] | ADMIN role_name [, …] | USER role_name [, …] | SYSID uid

·修改角色属性,详细可参考 产品文档:

ALTER ROLE role_specification [ WITH ] option [ … ]where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL | VALID UNTIL 'timestamp'

·赋予角色对象权限,详细可参考 产品文档:

#简单写法GRANT <权限> on <对象> to <角色>;

·回收角色对象权限,详细可参考 产品文档:

#简单写法REVOKE <权限> ON <对象> FROM <角色>;

·将角色赋予其他角色:

#简单写法GRANT <角色名> to <其他角色>;

六、管理系统账号

数据库管理系统自动创建并使用的账号列举如下:

注意:说明:

注意:云数据库 PostgreSQL 的管控系统账号完全由腾讯云进行管理。

账号名 说明 允许的操作
tencentdb_admin_* 账号名和角色名在 tencentdb_admin_ 后面的字符串为系统随机生成字符串。 用于监控组件采集监控数据,以及管理系统进行实例运行状态拨测。
tencentdb_repl_* 账号名和角色名在 tencentdb_repl_ 后面的字符串为系统随机生成字符串。 用于实现实例的主从数据同步,及备份组件备份功能。
repluser 所属角色为 repluser。 部分实例用于实现实例的主从数据同步。后续该账号将废弃。
赞 (0)
上一篇 4天前
下一篇 4天前