Назначение ролей PostgreSQL
Сервис Managed Service for PostgreSQL не дает доступа к предопределенным ролям
- mdb_read_all_data — роль для чтения (
SELECT) всех данных в базе данных. - mdb_write_all_data — роль для изменения (
INSERT,UPDATE,DELETE) всех данных в базе данных, но без прав на выполнение операцийSELECT. - mdb_superuser — для пользователей, которые не являются владельцами базы данных, но должны управлять привилегиями так же, как владельцы.
- mdb_admin — для пользователей, которые не являются владельцами базы данных, но должны получать административные привилегии.
- mdb_monitor — для пользователей, которые должны читать различные параметры конфигурации, статистику и другую системную информацию.
- mdb_replication — для пользователей, которые должны иметь возможность выполнять логическую репликацию.
Примечание
В PostgreSQL роли могут включать в себя другие роли. Пользователь (то есть роль, которая может авторизоваться в базе данных) может быть членом одной или нескольких других ролей и получать их права. Подробнее о членстве в ролях
Чтобы назначить роль пользователю, используйте интерфейсы Yandex Cloud: назначение роли запросом GRANT отменяется при следующей операции с базой.
Примечание
В Managed Service for PostgreSQL не предусмотрено создание пользовательских ролей. Права пользователя определяются совокупностью назначенных ему привилегий.
Роль mdb_read_all_data
Роль mdb_read_all_data предоставляет права только на чтение всех пользовательских данных (DQL: SELECT) в базе данных во всех схемах (кроме системных каталогов).
Примечание
Роль mdb_read_all_data является более безопасной альтернативой стандартной роли PostgreSQL pg_read_all_datapg_catalog). Это исключает возможность чтения конфиденциальной системной информации.
Роль mdb_write_all_data
Роль mdb_write_all_data предоставляет права только на изменение всех пользовательских данных (DML: INSERT, UPDATE, DELETE) в базе данных во всех схемах (кроме системных каталогов).
Примечание
Роль mdb_write_all_data является более безопасной альтернативой стандартной роли PostgreSQL pg_write_all_datapg_catalog). Это исключает возможность изменения системной конфигурации и метаданных.
Важно
Роль mdb_write_all_data предоставляет права только на изменение данных, но не включает:
- права на чтение данных (DQL:
SELECT) - управление структурой и объектами базы данных (DDL:
CREATE,DROPи др.).
Для полного доступа к данным (без DDL, но с SELECT) необходимо также иметь роль mdb_read_all_data (автоматически запрашивается как дочерняя IDM-роль вместе с mdb_write_all_data).
Роль mdb_superuser
Роль mdb_superuser позволяет управлять привилегиями на объекты в базе данных.
Роль mdb_admin
Роль mdb_admin включает в себя следующие привилегии:
- Использование привилегий предопределенных ролей:
pg_monitorpg_signal_backend
Подробнее о предопределенных ролях в документации PostgreSQL.
- Использование подписки для логической репликации (
CREATE | DROP | ALTER SUBSCRIPTION). - Использование расширений:
dblinkpg_repackpostgres_fdwpg_cron
- Использование специфических функций расширений:
pg_stat_kcache_reset()из расширенияpg_stat_kcache;pg_stat_reset(),pg_stat_statements_reset()из расширенияpg_stat_statements.
Роль mdb_monitor
Роль mdb_monitor включает в себя следующие привилегии:
- Чтение и выполнение различных представлений и функций для мониторинга.
- Использование расширений:
pg_stat_statements
- Использование функций для работы с обычными файлами:
pg_ls_logdir()pg_ls_waldir()pg_ls_archive_statusdir()pg_ls_tmpdir ()
Роль mdb_replication
Роль mdb_replication включает в себя следующие привилегии:
- Подключение к кластеру с использованием протокола логической репликации (
replication=database). - Использование функций репликации:
pg_create_logical_replication_slot()pg_drop_replication_slot()