Уровни доступа к базам данных PostgreSQL — постоянный предмет спора между администраторами и разработчиками по поводу привилегий суперпользователя. Разберёмся с типовой схемой доступа.
Доступ к серверу PostgreSQL
Выделим три категории пользователей, требующих доступа к серверу:
- Администраторы с правами суперпользователя.
- Пользователи приложений с доступом к базам приложений.
- Реплики с правами репликации.
Разработчики не должны иметь постоянный доступ к боевой системе.
Сетевые подходы
Netmask: серверы разделены по сегментам приватной сети (например, 10.1.0.0/16 для приложений, 10.2.0.0/16 для реплик).
DNS: использование записей в /etc/hosts с доменными именами для идентификации серверов.
С коннектором: применение pgbouncer для маршрутизации подключений на разные порты (например, 6432 для приложений, 5432 для реплик).
Конфигурация ролей
Создание групповой роли projects:
CREATE ROLE projects
NOINHERIT
NOREPLICATION
LOGIN
PASSWORD 'any password'; Пользователи приложений назначаются в эту роль при создании.
Резюме
Предложенный подход обеспечивает универсальную конфигурацию для типовых случаев без необходимости частых изменений файла pg_hba.conf.