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

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

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

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

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

Для каждого пользователя вы можете:

Настроить роли пользователя

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

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

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

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

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

РольОписание
dbaas_adminДает пользователю дополнительные привилегии:

  • использование подписок для логической репликации;
  • использование привилегий предопределенной роли pg_monitor. Подробнее о предопределенных ролях в инструкции Predefined Roles документации PostgreSQL;
  • использование расширений, для которых требуется эта роль;
  • использование функций сброса статистики из расширения pg_stat_statements
dbaas_replicationДает пользователю дополнительные привилегии:

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;