Настроить роли и привилегии пользователям PostgreSQL PGVector
Вы можете управлять правами доступа пользователей к базам данных в кластере PostgreSQL PGVector с помощью ролей и привилегий.
Роль — заранее настроенный набор привилегий для определенных операций. Назначение роли дает пользователю сразу все привилегии, которые входят в ее состав. Роль применяется на все базы данных в кластере.
Привилегия — право на выполнение операций над конкретным объектом базы данных: схемой, таблицей, функцией.
Привилегии настраиваются с помощью SQL-команд GRANT и REVOKE.
Для каждого пользователя вы можете:
Настроить роли пользователя
Пользователям кластера PostgreSQL PGVector можно назначать преднастроенные роли. Создать пользовательские роли нельзя.
Каждому пользователю можно назначить несколько ролей одновременно.
Назначение ролей не отменяет привилегии пользователя, которые настроены командами GRANT и REVOKE.
Вы можете назначить роли при создании пользователя, а также изменить список ролей у существующего пользователя — выдать дополнительные роли или забрать ранее выданные.
Преднастроенные роли
Состав преднастроенных ролей в кластере PostgreSQL PGVector изменить нельзя. Роль суперпользователя не предоставляется.
Изменить список ролей у пользователя
Вы можете изменить список ролей у существующего пользователя: выдать дополнительные роли или забрать ранее выданные.
-
В панели управления в верхнем меню нажмите Продукты и выберите Облачные базы данных.
-
Откройте вкладку Активные.
-
Откройте страницу кластера → вкладка Пользователи.
-
В меню пользователя выберите Настроить.
-
В поле Роли нажмите .
-
Измените список ролей у пользователя, для этого отметьте или снимите чекбоксы напротив ролей.
-
Чтобы сохранить изменения, нажмите .
Настроить привилегии пользователя
Объект базы данных (схему, таблицу, функцию) создает конкретный пользователь — он становится владельцем объекта и по умолчанию имеет на него все права. Другим пользователям, включая владельца базы данных, можно выдать привилегию на объект.
Начиная с версии PostgreSQL 15, привилегия CREATE на схему public по умолчанию не предоставляется.
Варианты работы со схемой public описаны в подразделе Usage Patterns инструкции Schemas документации PostgreSQL.
Выдать привилегии
Выдать пользователям привилегии на объекты базы данных можно с помощью команды GRANT, подробнее в инструкции GRANT документации PostgreSQL.
-
Подключитесь к базе данных от имени владельца объекта.
-
Выдайте пользователю нужные привилегии с помощью команды
GRANT.Пример выдачи доступа на чтение (
SELECT) к таблицеtableпользователюuser:GRANT SELECT ON table TO user;
Отозвать привилегии
Отозвать у пользователя привилегии можно с помощью команды REVOKE, подробнее в инструкции REVOKE документации PostgreSQL.
-
Подключитесь к базе данных от имени владельца объекта.
-
Отзовите у пользователя привилегии с помощью команды
REVOKE.Пример отзыва привилегии у пользователя
userна схемуschema:REVOKE USAGE ON SCHEMA schema FROM user;
Пример создания пользователя схемы с правами только на чтение
Вы можете создать пользователя с доступом к базе данных кластера, к таблице в схеме по умолчанию и ко всем таблицам схемы.
Автоматически все новые таблицы будут создаваться с доступом только на чтение (read-only) для этого пользователя.
-
Создайте пользователя
user. -
Выдайте доступ пользователю
userк базе данных. -
Подключитесь к базе данных от имени владельца объекта.
-
Создайте схему
schemaи таблицуtable:CREATE SCHEMA schema;CREATE TABLE schema.table(i int);INSERT INTO schema.table(i) values(1); -
Выдайте привилегии пользователю
user:GRANT USAGE ON SCHEMA schema TO user;GRANT SELECT ON ALL TABLES IN SCHEMA schema TO user;ALTER DEFAULT PRIVILEGES IN SCHEMA schema GRANT SELECT ON TABLES TO user;