Для управления правами доступа в PostgreSQL на разных уровнях гранулярности можно использовать следующие подходы:
- Управление на уровне хоста. 3 Доступ определяется в конфигурационном файле сервера pghba.conf. 3 В нём указываются, какие пользователи, с каких компьютеров и к каким базам данных имеют доступ, а также как осуществляется обмен данными для каждого подключения (используются ли пароли, шифрование данных). 3
- Управление правами ролей. 2 Для изменения прав доступа уже существующей роли нужно использовать команду ALTER ROLE. 2
- Передача привилегий. 2 Как правило, при создании БД или таблицы права доступа к ней есть только у создавшей её роли. 2 Передавать права доступа другим ролям можно при помощи команды GRANT. 2
- Контроль доступа на уровне таблиц и столбцов. 5 Для этого нужно редактировать ACL, связанные с таблицей или столбцом. 5 Для этого используются команды GRANT и REVOKE. 5
Например, чтобы создать пользователя с доступом только на чтение к базе данных, нужно выполнить следующие команды: 1
CREATEUSER reader_user;REVOKEALL PRIVILEGES ONALL TABLES IN SCHEMA public FROM reader_user;GRANTSELECTONALL TABLES IN SCHEMA public TO reader_user;
Эти команды создадут пользователя reader_user, которому предоставлены права только на чтение всех таблиц в схеме public. 1