21.5. Предопределённые роли #
В PostgreSQL имеется набор предопределённых ролей, которые дают доступ к некоторым часто востребованным, но не общедоступным функциям и данным. Администраторы (включая роли с правами CREATEROLE
) могут назначать (GRANT
) эти роли пользователям и/или ролям в своей среде, таким образом открывая этим пользователям доступ к указанной функциональности и информации. Например:
GRANT pg_signal_backend TO admin_user;
Предупреждение
Управлять членством в этих ролях следует осмотрительно, чтобы они использовались только по необходимости и только с пониманием, что они открывают доступ к закрытой информации.
Имеющиеся предопределённые роли описаны ниже. Заметьте, что конкретные разрешения для каждой из таких ролей в будущем могут изменяться по мере добавления дополнительной функциональности. Администраторы должны следить за этими изменениями, просматривая замечания к выпускам.
pg_checkpoint
#pg_checkpoint
позволяет выполнять командуCHECKPOINT
.pg_create_subscription
#pg_create_subscription
разрешает пользователям с правомCREATE
для базы данных выполнять командуCREATE SUBSCRIPTION
.pg_database_owner
#pg_database_owner
всегда имеет ровно одного неявного члена: владельца текущей базы данных. Этой роли нельзя назначить членство в других ролях, и никакая роль не может быть членомpg_database_owner
. Однако, как и любая другая роль, она может владеть объектами и получать права доступа. Следовательно, права, данные ролиpg_database_owner
в базе-шаблоне, приобретёт владелец каждой базы, созданной из данного шаблона. Изначально эта роль владеет схемойpublic
, то есть владелец базы данных управляет использованием данной схемы в своей базе.pg_maintain
#pg_maintain
позволяет выполнять командыVACUUM
,ANALYZE
,CLUSTER
,REFRESH MATERIALIZED VIEW
,REINDEX
иLOCK TABLE
для всех отношений, как будто роль имеет праваMAINTAIN
на эти объекты.pg_monitor
pg_read_all_settings
pg_read_all_stats
pg_stat_scan_tables
#Эти роли созданы для того, чтобы администраторы могли легко настроить роль для мониторинга сервера БД. Эти роли наделяют своих членов набором общих прав, позволяющих читать различные полезные параметры конфигурации, статистику и другую системную информацию, что обычно доступно только суперпользователям.
pg_monitor
позволяет читать/выполнять различные представления и функции мониторинга. Эта роль включена в ролиpg_read_all_settings
,pg_read_all_stats
иpg_stat_scan_tables
.pg_read_all_settings
позволяет читать все конфигурационные переменные, даже те, что обычно видны только суперпользователям.pg_read_all_stats
позволяет читать все представления pg_stat_* и использовать различные расширения, связанные со статистикой, даже те, что обычно видны только суперпользователям.pg_stat_scan_tables
позволяет выполнять функции мониторинга, которые могут устанавливать блокировкиACCESS SHARE
в таблицах, возможно, на длительное время (напримерpgrowlocks(text)
в расширении pgrowlocks).pg_read_all_data
pg_write_all_data
#pg_read_all_data
позволяет читать все данные (таблицы, представления, последовательности), как будто роль имеет праваSELECT
на эти объекты и праваUSAGE
на все схемы. Эта роль не обходит политики защиты на уровне строк (RLS). Если используется политика RLS, администратор может задать атрибутBYPASSRLS
членам этой роли.pg_write_all_data
позволяет записывать все данные (таблицы, представления, последовательности), как будто роль имеет праваINSERT
,UPDATE
иDELETE
на эти объекты и праваUSAGE
на все схемы. Эта роль не обходит политики защиты на уровне строк (RLS). Если используется политика RLS, администратор может задать атрибутBYPASSRLS
членам этой роли.pg_read_server_files
pg_write_server_files
pg_execute_server_program
#Эти роли предназначены для того, чтобы администраторы могли выделить доверенные, но не имеющие права суперпользователей роли для доступа к файлам и запуска программ на сервере БД от имени пользователя, запускающего СУБД. Они обходят все проверки разрешений на уровне базы данных, а значит, воспользовавшись ими, можно получить права суперпользователя. Поэтому назначать их пользователям следует со всей осторожностью.
pg_read_server_files
позволяет читать файлы в любом месте файловой системы, куда имеет доступ СУБД на сервере, выполняяCOPY
и другие команды и функции для работы с файлами.pg_write_server_files
позволяет записывать файлы в любом месте файловой системы, куда имеет доступ СУБД на сервере, выполняяCOPY
и другие команды и функции для работы с файлами.pg_execute_server_program
позволяет выполнять программы на сервере (от имени пользователя, запускающего СУБД) так же, как это делает командаCOPY
и другие команды и функции, выполняющие программы на стороне сервера.pg_signal_autovacuum_worker
#pg_signal_autovacuum_worker
позволяет отправлять сигналы рабочим процессам автоочистки для отмены текущей очистки таблицы или завершения её сеанса. См. Подраздел 9.28.2.pg_signal_backend
#pg_signal_backend
позволяет отправлять сигналы другим обслуживающим процессам для отмены запроса или завершения сеанса. Обратите внимание, что эта роль не позволяет отправлять сигналы процессам, принадлежащим суперпользователям. См. Подраздел 9.28.2.pg_use_reserved_connections
#pg_use_reserved_connections
позволяет использовать слоты подключения, зарезервированные при помощи параметра reserved_connections.