Digital Q.DataBase предоставляет набор предопределенных ролей,
которые дают доступ к определенным, часто необходимым привилегированным возможностям
и информации. Администраторы (включая роли, имеющие
привилегию CREATEROLE) могут с помощью команды GRANT предоставлять эти
роли пользователям и/или другим ролям в своей среде, обеспечивая этим
пользователям доступ к указанным возможностям и информации.
Предопределенные роли описаны в Таблица 3.6.1. Обратите внимание, что конкретные разрешения для каждой из ролей могут измениться в будущем по мере добавления новых возможностей. Администраторам следует следить за изменениями в примечаниях к выпуску.
Таблица 3.6.1. Предопределенные роли
| Роль | Разрешенный доступ |
|---|---|
| pg_read_all_data | Чтение всех данных (таблиц, представлений, последовательностей), как если бы имелись
права SELECT на эти объекты и права USAGE на
все схемы, даже без их явного наличия. Эта роль не имеет
установленного атрибута роли BYPASSRLS. Если используется 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 предназначена для того, чтобы позволить
администраторам наделять доверенные, но не являющиеся суперпользователями роли правом посылать сигналы
другим бэкендам. В настоящее время эта роль позволяет посылать сигналы для
отмены запроса в другом бэкенде или завершения его сессии. Однако пользователь,
которому предоставлена эта роль, не может посылать сигналы бэкенду, владельцем которого является
суперпользователь. См. Раздел 2.6.28.2.
Роли pg_read_server_files, pg_write_server_files и
pg_execute_server_program предназначены для того, чтобы администраторы могли иметь
доверенные, но не являющиеся суперпользователями роли, способные получать доступ к файлам и запускать программы на
сервере базы данных от имени пользователя, под которым работает база данных. Так как эти роли могут обращаться к любому файлу в файловой
системе сервера, они обходят все проверки разрешений на уровне базы данных при прямом обращении к файлам
и могут быть использованы для получения доступа уровня суперпользователя, поэтому
при предоставлении этих ролей пользователям следует проявлять большую осторожность.
При предоставлении этих ролей следует соблюдать осторожность, чтобы гарантировать их использование только там, где это необходимо, и с пониманием того, что эти роли дают доступ к привилегированной информации.
Администраторы могут предоставлять доступ к этим ролям пользователям с помощью команды
GRANT, например:
GRANT pg_signal_backend TO admin_user;