Настройка прав и ролей в PostgreSQL

В PostgreSQL права доступа регулируются с помощью ролей. Роли представляют собой объекты, которые могут иметь права доступа к базам данных и отдельным объектам, а также выполнять действия в СУБД. Роли бывают двух типов:

  • Пользовательские роли (login roles)
  • Групповые роли (group roles)

Создание роли

Создание новой роли выполняется командой CREATE ROLE:

CREATE ROLE user_name WITH LOGIN PASSWORD 'password';

Для создания роли, которая будет использоваться только как группа без возможности входа:

CREATE ROLE group_name;

Назначение прав роли

Права назначаются с помощью команды GRANT. Пример предоставления прав на конкретную таблицу:

GRANT SELECT, INSERT ON TABLE table_name TO user_name;

Для предоставления прав на всю базу данных:

GRANT CONNECT ON DATABASE database_name TO user_name;

Использование групповых ролей

Групповые роли позволяют эффективно управлять правами для групп пользователей. Сначала создаётся групповая роль:

CREATE ROLE developers;

Затем пользовательская роль добавляется в эту группу:

GRANT developers TO user_name;

Теперь все права, назначенные группе, автоматически доступны её членам.

Просмотр прав и ролей

Посмотреть существующие роли:

\du

Проверка прав, назначенных роли:

\dp

Изменение и удаление ролей

Для изменения существующей роли используется команда ALTER ROLE:

ALTER ROLE user_name WITH PASSWORD 'new_password';

Удаление роли выполняется с помощью команды DROP ROLE:

DROP ROLE IF EXISTS user_name;

Отзыв прав доступа

Права отзываются с помощью команды REVOKE:

REVOKE INSERT ON TABLE table_name FROM user_name;