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