Перейти к основному содержимому

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

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

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

Предопределенные роли:

РольРазрешенный доступ
pg_read_all_dataЧтение всех данных (таблиц, представлений, последовательностей), как если бы были права на эти объекты и права использования для всех схем, даже без явного указания их. У этой роли не установлен атрибут роли SELECT. Если используется RLS, администратор может пожелать установить BYPASSRLS на роли, которым предоставлена эта роль.
pg_write_all_dataЗаписывайте все данные (таблицы, представления, последовательности), как если бы были права INSERT, UPDATE, и DELETE на эти объекты, а также права USAGE на все схемы, даже без явного их наличия. У этой роли не установлен атрибут роли BYPASSRLS. Если используется RLS, администратор может пожелать установить BYPASSRLS на роли, которые предоставлены этой роли.
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_maintainВыполнять команды VACUUM, ANALYZE, CLUSTER, REFRESH MATERIALIZED VIEW, REINDEX и LOCK TABLE для всех отношений, как будто роль имеет права MAINTAIN на эти объекты, но при этом явным образом такие права ей не назначены.
pg_use_reserved_connectionsИспользовать слоты подключения, зарезервированные при помощи параметра reserved_connections.
pg_create_subscriptionРазрешить пользователям с правом CREATE для базы данных выполнять команду CREATE SUBSCRIPTION.

Роли 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 предназначена для того, чтобы позволить администраторам разрешить доверенным, но не суперпользовательским ролям отправлять сигналы другим базам данных. В настоящее время эта роль позволяет отправлять сигналов для отмены запроса в другой базе данных или завершения сеанса. Однако пользователь, которому назначена эта роль, не может отправлять сигналы в базу данных, принадлежащую суперпользователю.

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

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

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

GRANT pg_signal_backend TO admin_user;