Проверить порядок правил pg_hba.conf и безопасно перечитать конфигурацию
PostgreSQLБезопасностьКоманда
-- File location
SHOW hba_file;
# Rules are read top to bottom and the FIRST matching rule wins;
# specific rules must come BEFORE general ones:
# hostssl appdb web_app 10.10.0.0/16 scram-sha-256
# host all all 10.10.0.0/16 reject
# host all all 0.0.0.0/0 scram-sha-256
-- Validate BEFORE reloading: pg_hba_file_rules reads the file on disk
SELECT line_number, type, database, user_name, address, netmask, auth_method, error
FROM pg_hba_file_rules
ORDER BY line_number;
-- Apply if the error column is empty
SELECT pg_reload_conf();Что делает
Показывает, где находится pg_hba.conf, как PostgreSQL его интерпретирует (строка, тип, база данных, пользователь, адрес, метод) и синтаксические ошибки до reload; затем перечитывает конфигурацию.
Когда использовать
При добавлении новой клиентской сети/приложения, переходе с md5 на scram-sha-256 или расследовании ошибок 'no pg_hba.conf entry for host'.
Внимание
pg_hba_file_rules показывает файл в текущем виде, а не действующие правила. Если в какой-либо строке error не пуст, reload вообще НЕ загружает pg_hba.conf, и продолжают действовать старые правила (в журнале: 'pg_hba.conf was not reloaded'). Изменения влияют только на новые подключения. Широкое правило, размещённое в начале (например, host all all 0.0.0.0/0 trust), нейтрализует все ограничения после него. При выключенном SSL строки hostssl не могут совпасть и показывают сообщение в столбце error. По умолчанию читать представление могут только суперпользователи. Убедитесь, что инструменты, редактирующие файл от root, не меняют его владельца; если пользователь postgres не может его прочитать, reload завершается ошибкой.
Связанные материалы
- Построить иерархию ролей с минимальными привилегиями (GRANT + ALTER DEFAULT PRIVILEGES)
- Настроить изоляцию арендаторов (tenant) через row-level security
- Включить SSL/TLS и проверить шифрование подключений (pg_stat_ssl)
- Перейти с паролей md5 на scram-sha-256
- Вести журналы аудита на уровне ролей и объектов через pgaudit