Перейти к основному содержимому

Настроить роли и привилегии пользователям PostgreSQL для 1С

Вы можете управлять правами доступа пользователей к базам данных в кластере PostgreSQL для 1С с помощью ролей и привилегий.

Роль — предопределенный набор привилегий. Роли настраиваются через панель управления.

Привилегия — право на выполнение операций над конкретным объектом базы данных: схемой, таблицей, функцией. Привилегии настраиваются с помощью SQL-команд GRANT и REVOKE.

Назначенные пользователю роли действуют во всех базах данных кластера, а привилегии — только в той базе данных, где они выданы.

Роли и привилегии — независимые механизмы управления правами. Вы можете использовать их по отдельности или вместе. Назначение ролей не отменяет привилегии пользователя, которые настроены командами GRANT и REVOKE.

Роли

Пользователям кластера PostgreSQL для 1С можно назначать преднастроенные роли. Создать пользовательские роли нельзя.

Каждому пользователю можно назначить несколько ролей одновременно.

Вы можете назначить роли при создании пользователя, а также изменить список ролей у существующего пользователя — выдать дополнительные роли или забрать ранее выданные.

Преднастроенные роли

Состав преднастроенных ролей в кластере PostgreSQL для 1С изменить нельзя. Роль суперпользователя не предоставляется.

РольОписание
pg_read_all_statsПредоставляет доступ к статистике работы PostgreSQL, включая сведения из системных представлений мониторинга и статистики. Роль предназначена для диагностики и мониторинга и не предоставляет прав на изменение пользовательских данных
pg_signal_backendПозволяет отправлять сигналы другим серверным процессам PostgreSQL, например завершать или отменять пользовательские сессии. Роль не позволяет управлять процессами суперпользователей и не предоставляет доступ к пользовательским данным

Изменить список ролей у пользователя

Вы можете изменить список ролей у существующего пользователя: выдать дополнительные роли или забрать ранее выданные.

  1. В панели управления в верхнем меню нажмите Продукты и выберите Облачные базы данных.

  2. Откройте вкладку Активные.

  3. Откройте страницу кластера → вкладка Пользователи.

  4. В меню пользователя выберите Настроить.

  5. В поле Роли нажмите .

  6. Измените список ролей у пользователя, для этого отметьте или снимите чекбоксы напротив ролей.

  7. Чтобы сохранить изменения, нажмите .

Привилегии

Объект базы данных (схему, таблицу, функцию) создает конкретный пользователь — он становится владельцем объекта и по умолчанию имеет на него все права. Другим пользователям, включая владельца базы данных, можно выдать привилегию на объект.

Начиная с версии PostgreSQL 15, привилегия CREATE на схему public по умолчанию не предоставляется. Варианты работы со схемой public описаны в подразделе Usage Patterns инструкции Schemas документации PostgreSQL.

Выдать привилегии

Выдать пользователям привилегии на объекты базы данных можно с помощью команды GRANT, подробнее в инструкции GRANT документации PostgreSQL.

  1. Подключитесь к базе данных от имени владельца объекта.

  2. Выдайте пользователю нужные привилегии с помощью команды GRANT.

    Пример выдачи доступа на чтение (SELECT) к таблице table пользователю user:

    GRANT SELECT ON table TO user;

Отозвать привилегии

Отозвать у пользователя привилегии можно с помощью команды REVOKE, подробнее в инструкции REVOKE документации PostgreSQL.

  1. Подключитесь к базе данных от имени владельца объекта.

  2. Отзовите у пользователя привилегии с помощью команды REVOKE.

    Пример отзыва привилегии у пользователя user на схему schema:

    REVOKE USAGE ON SCHEMA schema FROM user;

Пример создания пользователя схемы с правами только на чтение

Вы можете создать пользователя с доступом к базе данных кластера, к таблице в схеме по умолчанию и ко всем таблицам схемы.

Автоматически все новые таблицы будут создаваться с доступом только на чтение (read-only) для этого пользователя.

  1. Создайте пользователя user.

  2. Выдайте доступ пользователю user к базе данных.

  3. Подключитесь к базе данных от имени владельца объекта.

  4. Создайте схему schema и таблицу table:

    CREATE SCHEMA schema;
    CREATE TABLE schema.table(i int);
    INSERT INTO schema.table(i) values(1);
  5. Выдайте привилегии пользователю 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;