Предопределенные роли#
Примечание
Эта страница переведена при помощи нейросети GigaChat.
PostgreSQL предоставляет набор предопределенных ролей, обеспечивающих доступ к различным важным функциональным возможностям и данным. Администраторы (включая роли с полномочием CREATEROLE) могут выдавать эти роли пользователям и другим ролям, предоставляя им доступ к соответствующим ресурсам.
Подробное описание предопределенных ролей приводится в таблице ниже. Заметьте, что конкретный набор привилегий для каждой роли может меняться в будущих выпусках, поэтому администраторы должны следить за примечаниями к релизам.
Предопределенные роли:
Роль |
Разрешенный доступ |
|---|---|
pg_read_all_data |
Чтение всех данных (таблиц, представлений, последовательностей), как если бы были права на эти объекты и права использования для всех схем, даже без явного указания их. У этой роли не установлен атрибут роли |
pg_write_all_data |
Записывайте все данные (таблицы, представления, последовательности), как если бы были права |
pg_read_all_settings |
Чтение всех переменных конфигурации, даже тех, которые обычно видны только суперпользователям. |
pg_read_all_stats |
Читать все представления pg_stat_ * и использовать различные расширения, связанные со статистикой, даже те, которые обычно видны только суперпользователям. |
pg_stat_scan_tables |
Выполнять функции мониторинга, которые могут занимать |
pg_monitor |
Чтение/выполнение различных представлений и функций мониторинга. Эта роль является членом |
pg_database_owner |
Нет доступа. Участие состоит, неявно, из текущего владельца базы данных. |
pg_signal_backend |
Сигнализировать другому бэкенду о необходимости отменить запрос или завершить его сеанс. |
pg_read_server_files |
Разрешить чтение файлов из любого места, к которому база данных имеет доступ на сервере с помощью COPY и других функций доступа к файлам. |
pg_write_server_files |
Разрешить запись в файлы в любом месте, к которому может получить доступ база данных на сервере с помощью команды COPY и других функций доступа к файлам. |
pg_execute_server_program |
Разрешите выполнение программ на сервере баз данных от имени пользователя, под которым работает база данных, с использованием команды COPY и других функций, которые позволяют выполнять программу на стороне сервера. |
pg_checkpoint |
Разрешить выполнение команды |
pg_maintain |
Выполнять команды |
pg_use_reserved_connections |
Использовать слоты подключения, зарезервированные при помощи параметра |
pg_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;