Поиск неиспользуемых строчек в файле pg_hba.conf
Для поиска неиспользуемых строчек в файле pg_hba.conf
я написал скрипт check hba.awk. Скрипт собирает из журналов работы PostgreSQL и локально установленного PgBouncer, если он есть, список входящих подключений с именами пользователей, названиями баз данных и IP-адресами, с которых были установлены подключения. Если в журналах не обнаружено ни одно подключение, программа завершается с сообщением об ошибке. Если же подключения найдены, то работа программы продолжается - каждая строчка файла pg_hba.conf
, начинающаяся с ключевых слов host
и local
, проверяется на наличие подключений, соответствующих этой строчке. Если соответствие не найдено, строчка из файла pg_hba.conf
выводится с соответствующим примечанием.
Перед использованием скрипта нужно включить в файле конфигурации, например, /etc/postgresql/12/main/postgresql.conf
, запись в журнал сообщений об установке подключений:
log_connections = on
После чего применить изменения из файла конфигурации с помощью одной из команд:
# systemctl reload postgresql
# /etc/init.d/postgresql reload
Перед использованием скрипта нужно убедиться, что переменные с именами файлов журналов и файла конфигурации pg_hba.conf
указывают на существующие актуальные файлы:
postgresql_log = "/var/log/postgresql/postgresql-12-main.log";
pgbouncer_log = "/var/log/pgbouncer/pgbouncer.log";
postgresql_hba = "/etc/postgresql/12/main/pg_hba.conf";
Далее нужно просто запустить скрипт:
$ ./check_hba.awk
Пример вывода программы:
Used by PgBouncer: host "app_wifi" "app_wifi" 199.30.81.70/32 md5
Unused: host "app_wifi" "uradius" 199.30.81.70/32 md5
Used by client: host "vkomandu" "vkomandu" 10.2.88.122/32 md5
Probably used by PgBouncer: host "mogilefs_12" "mogilefs_12" 10.2.88.224/32 md5
Для получения более объективной картины стоит дождаться, когда в журналах накопится достаточно информации. Но в вывод программы могут попасть и нужные строчки, которые просто не использовались за время ведения журнала, поэтому перед удалением каких-либо строчек из файла pg_hba.conf
стоит убедиться, что они действительно не нужны.