7
Схема обработки
Записи просматриваются сверху вниз
Применяется первая запись, которой соответствует
подключение (тип, база, пользователь и адрес)
выполняется аутентификация и проверка привилегии CONNECT
если результат отрицательный, доступ запрещается
если ни одна запись не подошла, доступ запрещается
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
Когда клиент пытается установить соединение, серверу известны
параметры подключения: тип (локально или по сети), запрашиваемое
имя базы данных, имя пользователя, в случае подключения по сети —
IP-адрес клиента. Обслуживающий процесс последовательно
проверяет записи файла pg_hba.conf на соответствие этим параметрам.
Если подходящая запись нашлась, выполняется аутентификация
указанным в ней методом. При успешной аутентификации подключение
разрешается, иначе — запрещается (следующие записи при этом уже
не рассматриваются).
Если ни одна из записей не подошла, то доступ запрещается.
Записи в файле pg_hba.conf должны идти сверху вниз от частного
к общему. Иначе запись более общего вида сработает раньше и до
частного случая дело не дойдет.
В примере на слайде видно три строки:
●
первая относится к локальным подключениям (local) через Unix-сокет
для любых баз (all) и пользователей (all);
●
вторая и третья относятся к подключениям (host) через
закольцовывающий (loopback) сетевой интерфейс (которому
соответствует имя хоста localhost) по адресам IPv4 127.0.0.1/32 и
IPv6 ::1/128.
В такой конфигурации PostgreSQL допускает соединения только
с локального компьютера через Unix-сокет или loopback-интерфейс.
Далее возможные значения полей рассматриваются более подробно.