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;