21.5. 默认角色

PostgreSQL 提供了一组默认角色,这些角色提供对某些通常需要的特权功能和信息的访问。Management 员可以将这些角色授予用户和/或环境中的其他角色,使这些用户可以访问指定的功能和信息。

默认角色在Table 21.1中描述。请注意,随着其他功能的添加,将来每个默认角色的特定权限可能会更改。Management 员应监视发行说明中的更改。

表 21.1 默认角色

RoleAllowed Access
pg_read_all_settings读取所有配置变量,甚至通常只对超级用户可见的变量。
pg_read_all_stats阅读所有 pg_stat_ *视图,并使用各种与统计信息有关的扩展,甚至那些通常仅对超级用户可见的扩展。
pg_stat_scan_tables执行监视功能,这些功能可能长时间锁定表ACCESS SHARE
pg_monitor读取/执行各种监视视图和功能。该角色是pg_read_all_settingspg_read_all_statspg_stat_scan_tables的成员。
pg_signal_backend发 signal 通知另一个后端取消查询或终止其会话。
pg_read_server_files允许从数据库可以使用 COPY 和其他文件访问功能在服务器上访问的任何位置读取文件。
pg_write_server_files允许在数据库可以使用 COPY 和其他文件访问功能在服务器上访问的任何位置写入文件。
pg_execute_server_program允许用户在数据库服务器上执行程序,就像数据库运行时一样,用户使用 COPY 和其他允许执行服务器端程序的功能。

pg_monitorpg_read_all_settingspg_read_all_statspg_stat_scan_tables角色旨在使 Management 员可以轻松地配置角色,以监视数据库服务器。它们授予一组通用特权,允许角色读取各种有用的配置设置,统计信息和其他通常限于超级用户使用的系统信息。

pg_signal_backend角色旨在允许 Management 员启用受信任的但非超级用户角色,以将 signal 发送到其他后端。当前,此角色可发送 signal,以取消另一个后端上的查询或终止其会话。但是,被授予此角色的用户无法将 signal 发送到超级用户拥有的后端。参见Section 9.26.2

pg_read_server_filespg_write_server_filespg_execute_server_program角色旨在允许 Management 员拥有受信任的但非超级用户角色,这些角色能够以数据库运行用户的身份访问文件并在数据库服务器上运行程序。由于这些角色可以访问服务器文件系统上的任何文件,因此它们在直接访问文件时会绕过所有数据库级别的权限检查,并且它们可用于获得超级用户级别的访问权限,因此在授予这些角色以使用以下权限时应格外小心用户。

授予这些角色时应格外小心,以确保仅在需要时使用它们,并应了解这些角色会授予对特权信息的访问权限。

Management 员可以使用GRANT命令向用户授予对这些角色的访问权限,例如:

GRANT pg_signal_backend TO admin_user;