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

Примечание

Эта страница переведена при помощи нейросети 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;