21.5. Предопределенные роли#

21.5. Предопределенные роли

21.5. Предопределенные роли

Tantor SE предоставляет набор предопределенных ролей, которые предоставляют доступ к определенным, часто необходимым, привилегированным возможностям и информации. Администраторы (включая роли, которые имеют привилегию CREATEROLE) могут GRANT эти роли пользователям и/или другим ролям в своей среде, предоставляя этим пользователям доступ к указанным возможностям и информации.

Предопределенные роли описаны в Таблица 21.1. Обратите внимание, что конкретные разрешения для каждой из ролей могут измениться в будущем с добавлением дополнительных возможностей. Администраторы должны следить за заметками к релизам для отслеживания изменений.

Таблица 21.1. Предопределенные роли

РольРазрешенный доступ
pg_read_all_dataЧтение всех данных (таблиц, представлений, последовательностей), как если бы у пользователя были права SELECT на эти объекты и права USAGE на все схемы, даже если они не были явно предоставлены. У этой роли не установлен атрибут BYPASSRLS. Если используется RLS, администратор может захотеть установить атрибут BYPASSRLS для ролей, которым предоставлена эта роль.
pg_write_all_dataЗаписывает все данные (таблицы, представления, последовательности), как если бы у пользователя были права INSERT, UPDATE и DELETE на эти объекты, а также права USAGE на все схемы, даже без явного назначения этих прав. У этой роли не установлен атрибут BYPASSRLS. Если используется RLS, администратор может захотеть установить атрибут BYPASSRLS для ролей, на которые данная роль предоставляется через GRANT.
pg_read_all_settingsЧитает все конфигурационные переменные, даже те, которые обычно видны только для суперпользователей.
pg_read_all_statsЧитает все представления pg_stat_* и использует различные расширения, связанные со статистикой, даже те, которые обычно видны только суперпользователям.
pg_stat_scan_tablesВыполняет функции мониторинга, которые могут получать блокировки ACCESS SHARE на таблицы, потенциально на длительное время.
pg_monitorЧтение/выполнение различных представлений и функций мониторинга. Эта роль является членом pg_read_all_settings, pg_read_all_stats и pg_stat_scan_tables.
pg_database_ownerНет доступа. Неявно включает текущего владельца базы данных.
pg_signal_backendСигнализирует другому бэкенду о необходимости отменить запрос или завершить его сессию.
pg_read_server_filesРазрешает чтение файлов из любого места, к которому база данных имеет доступ на сервере с помощью COPY и других функций доступа к файлам.
pg_write_server_filesРазрешает запись в файлы в любом месте, к которому база данных имеет доступ на сервере с помощью COPY и других функций доступа к файлам.
pg_execute_server_programПозволяет выполнять программы на сервере базы данных от имени пользователя, от имени которого работает база данных, с помощью COPY и других функций, позволяющих выполнять программы на стороне сервера.
pg_checkpointПозволяет выполнить команду CHECKPOINT.
pg_use_reserved_connectionsРазрешает использование слотов подключения, зарезервированных через reserved_connections.

Роли pg_monitor, pg_read_all_settings, pg_read_all_stats и pg_stat_scan_tables предназначены для облегчения настройки роли администратора для целей мониторинга сервера баз данных. Они предоставляют набор общих привилегий, позволяющих роли читать различные полезные настройки конфигурации, статистику и другую системную информацию, обычно ограниченную для суперпользователей.

Роль pg_database_owner имеет одного неявного члена, зависящего от ситуации, а именно владельца текущей базы данных. Как и любая роль, она может владеть объектами или получать предоставление привилегий доступа. Следовательно, после того, как pg_database_owner получает права в шаблонной базе данных, каждый владелец базы данных, созданной из этого шаблона, будет использовать эти права. pg_database_owner не может быть членом какой-либо роли и не может иметь неявных членов. Изначально эта роль владеет схемой public, поэтому каждый владелец базы данных управляет локальным использованием этой схемы.

Роль pg_signal_backend предназначена для разрешения администраторам разрешать доверенным, но не являющимся суперпользователями, ролям отправлять сигналы другим процессам бэкенда. В настоящее время эта роль позволяет отправлять сигналы для отмены запроса на другом бэкенде или завершения его сессии. Однако пользователь, получивший эту роль, не может отправлять сигналы бэкенду, принадлежащему суперпользователю. См. Раздел 9.27.2.

Следующие роли pg_read_server_files, pg_write_server_files и pg_execute_server_program предназначены для предоставления администраторам доверенных, но не являющихся суперпользователями, ролей, которые могут получить доступ к файлам и запускать программы на сервере базы данных от имени пользователя, от имени которого работает база данных. Поскольку эти роли могут получить доступ к любому файлу в файловой системе сервера, они обходят все проверки разрешений на уровне базы данных при прямом доступе к файлам, и их можно использовать для получения привилегий суперпользователя. Поэтому при предоставлении этих ролей пользователям необходимо быть особенно осторожным.

Будьте осторожны при предоставлении этих ролей, чтобы убедиться, что они используются только там, где это необходимо, и с пониманием того, что эти роли предоставляют доступ к привилегированной информации.

Администраторы могут предоставлять доступ к этим ролям пользователям с помощью команды GRANT, например:

GRANT pg_signal_backend TO admin_user;