Роли и пользователи

Тема дорожной карты · PostgreSQL

PostgreSQL использует унифицированную концепцию ролей для представления как пользователей базы данных, так и групп: роль с атрибутом LOGIN функционирует как традиционный пользователь, способный подключаться к базе данных. Ролями управляют с помощью CREATE ROLE, ALTER ROLE и DROP ROLE, а привилегии предоставляются через GRANT и отзываются через REVOKE, образуя основу управления доступом при администрировании баз данных PostgreSQL. Членство в роли позволяет одной роли наследовать привилегии другой, обеспечивая групповое управление правами доступа — например, роли readonly можно предоставить SELECT на все таблицы, и отдельные пользователи унаследуют этот доступ, являясь членами данной роли. Роли суперпользователей обходят все средства контроля доступа PostgreSQL и должны быть зарезервированы для администраторов, выполняющих задачи обслуживания; учётные записи приложений должны использовать принцип наименьших привилегий. Понимание ролей PostgreSQL и их флагов атрибутов — SUPERUSER, CREATEDB, CREATEROLE, REPLICATION — необходимо для безопасного администрирования многоарендных баз данных.

Как это работает

Роли и пользователи делается через пакеты дистрибутива (apt/dnf), официальные PGDG-репо (свежие версии), Docker-образы (postgres:16-alpine для тестов) или managed cloud (Yandex Managed PostgreSQL, RDS). Ключевой конфиг — в postgresql.conf; правила client auth — в pg_hba.conf. Критичные параметры: shared_buffers (~25% RAM), effective_cache_size (~75%), work_mem (per-sort), maintenance_work_mem, max_connections. pgtune — для разумных дефолтов.

Когда применять

Официальные PGDG-репо в production вместо дистрибутивных — они поставляют актуальную major-версию. Postgres в Docker — только dev/test, никогда production-данные (volume-права + OOM-kill реальны); managed cloud или bare-metal с правильными бекапами — это production-уровень. Версия — в окне 5-летней поддержки.

Типичные ошибки

Ловушки Роли и пользователи: дефолт max_connections=100 и "too many connections" — фикс это connection pool (PgBouncer), а не бездумное поднятие cap; рядом 16 + 13 бинари, не тот psql в PATH; дефолтный pg_hba.conf с peer auth путает новичков; не загружен pg_stat_statements с первого дня (потом не найти медленные запросы).

Связанные понятия

Полезные ресурсы