云数据库 GAUSSDB-角色:内置角色

时间:2024-11-13 14:46:32

内置角色

GaussDB 提供了一组默认角色,以gs_role_开头命名。它们提供对特定的、通常需要高权限的操作的访问,可以将这些角色授权给数据库内的其他用户或角色,让这些用户能够使用特定的功能。在授予这些角色时应当非常小心,以确保它们被用在需要的地方。表1描述了内置角色允许的权限范围。

表1 内置角色权限描述

角色

权限描述

gs_role_signal_backend

具有调用函数pg_cancel_backend、pg_terminate_backend和pg_terminate_session来取消或终止其他会话的权限,或调用函数pg_terminate_active_session_socket来关闭活跃会话和客户端的socket连接,但不能操作属于初始用户和PERSISTENCE用户的会话。

gs_role_tablespace

具有创建表空间(tablespace)的权限。

gs_role_replication

具有调用逻辑复制相关函数的权限,例如kill_snapshot、pg_create_logical_replication_slot、pg_create_physical_replication_slot、pg_drop_replication_slot、pg_replication_slot_advance、pg_create_physical_replication_slot_extern、pg_logical_slot_get_changes、pg_logical_slot_peek_changes、pg_logical_slot_get_binary_changes、pg_logical_slot_peek_binary_changes。

gs_role_account_lock

具有加解锁用户的权限,但不能加解锁初始用户和PERSISTENCE用户。

gs_role_pldebugger

具有执行dbe_pldebugger下调试函数的权限。

gs_role_public_dblink_drop

具有执行删除public database link对象的权限。

gs_role_public_dblink_alter

具有执行修改public database link对象的权限。

gs_role_seclabel

具有创建、删除和应用安全标签的权限。

gs_role_public_synonym_create

具有创建public同义词的权限。

gs_role_public_synonym_drop

具有删除public同义词的权限。

gs_role_pdb_create

具有创建pluggable database(PDB)的权限。

关于内置角色的管理有如下约束:
  • 以gs_role_开头的角色名作为数据库的内置角色保留名,禁止新建以“gs_role_”开头的用户/角色/模式,也禁止将已有的用户/角色/模式重命名为以“gs_role_”开头。
  • 禁止对内置角色进行ALTER和DROP操作。
  • 内置角色默认没有 LOG IN权限,不设预置密码。
  • gsql元命令\du和\dg不显示内置角色的相关信息,但若显示指定了pattern为特定内置角色则会显示。
  • 三权分立关闭时,初始用户、具有SYSADMIN权限的用户和具有内置角色ADMIN OPTION权限的用户有权对内置角色执行GRANT/REVOKE管理。三权分立打开时,初始用户和具有内置角色ADMIN OPTION权限的用户有权对内置角色执行GRANT/REVOKE管理。例如:
    1
    2
    GRANT gs_role_signal_backend TO user1;
    REVOKE gs_role_signal_backend FROM user1;
    
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0023.html