В 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;