Поиск неиспользуемых строчек в файле 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 стоит убедиться, что они действительно не нужны.