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