База знаний по Open Source
Авторизация
Поиск по базе знаний

В PostgreSQL клиентский доступ к базам данных на уровне хоста задается в файле pg_hba.conf (hba означает host-based authentication – аутентификацию на основе хоста.). Файл находится в хранится в директории кластера баз данных. Записи этого файла определяют: какиe узлы могут подключиться, метод аутентификации клиентов, какие имена пользователей PostgreSQL они могут использовать, к каким базам данных кластера они могут получить доступ. Записи могут быть следующих форм:

local DATABASE USER METHOD [OPTIONS]
host DATABASE USER ADDRESS METHOD [OPTIONS]
hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]

Поля заглавными буквами должны быть заменены  актуальными значениями.

Значения полей:

  • local – запись будет соответствовать локальным подключениям, производимым через Unix-domain socket. Если записи такого типа нет, то подключения через Unix-domain socket будут запрещены.
  • host – запись соответсвует подключениям через TCP/IP. Запись host соответствует как SSL так и обычным подключениям. Здесь нужно обратить внимание на значение параметра listen_addresses – по умолчанию такие соединения будут ожидаться только с localhost. Для того чтобы подключения были возможны с других, удаленных хостов необходимо прописать соотвествующие адреса.
  • hostssl – запись соответствует только SSL подключениям через TCP/IP.
  • hostnossl – запись соответствует только не SSL (обычным) подключениям через TCP/IP.
  • DATABASE – определяет имена баз данных, доступ к которым описывает данная запись. Значениями могут быть:
    • собственно имя или имена баз данных кластера PostgreSQL, разделенные запятой;
    • @filename – имена баз данных хранятся во внешнем файле filename;
    • all – все базы данных кластера PostgreSQL;
    • sameuser – база данных с тем-же именем, что и пользователь в  поле USER;
    • samerole – база данных с тем-же именем, что и роль пользователя в поле USER;
    • replication – определяет, что запись будет соответствовать случаю подключения для репликации.
  • USER – имя или имена пользователей PostgreSQL, правила доступа для которых определяет данная запись. Значениями могут быть:
    • собственно имя или имена пользователей PostgreSQL, разделенные запятой;
    • all – все пользователи PostgreSQL;
    • @filename – имена пользователей хранятся во внешнем файле filename;
    • +группа – все пользователи, входящие в указанную группу/группы.
  • ADDRESS – Определяет адреса машины клиента, которым соответствует эта запись. Значениями могут быть:
    • all – любой адрес;
    • samehost – адрес самого сервера PostgreSQL;
    • samenetto – все адреса подсети в которой находится сервер;
    • имя или имена хостов, разделенные запятыми;
    • .hostname – суффикс имени хоста: .myhost.com – допустимы one.myhost.com, two.myhost.com и т.д. Но не myhost.com!!!
    • IP адрес или диапазон IP адресов в нотации CIDR (например 192.168.0.1/24).
  • METHOD – Определяет метод аутентификации, который будет использован. Возможные значения:
    • trust – Безусловно разрешает все подключения. Этот метод разрешает любому, кто может подключиться к серверу БД, зайти под любым пользователем PostgreSQL без необходимости предоставить пароль или использования какого-либо ещё способа аутентификации.
    • reject – Безусловно отклоняет подключение. Это полезно для “отфильтровывания” некоторых узлов из группы, например строка reject может запретить конкретному узлу подключение, тогда как следующая строка разрешает подключения для остальных узлов этой сети.
    • md5 – Требует от клиента предоставить md5 шифрованный пароль для аутентификации.
    • password – Требует от клиента предоставить незашифрованный пароль для аутентификации. Так как пароль посылается по сети в открытом виде, эта опция не должна использоваться для небезопасных сетей.
    • gss – Использует GSSAPI для аутентификации пользователя. Доступно только для TCP/IP подключений.
    • sspi – Использует SSPI для аутентификации пользователя. Доступно только для Windows.
    • krb5 – Использует Kreberos V5 для аутентификации пользователя. Доступно только для TCP/IP подключений.
    • ident – Получает имя пользователя ОС клиента, соединяясь с сервером ident на клиенте и проверяет, соответствует ли оно имени пользователя для запрашиваемой БД. Аутентификация ident может использоваться только на TCP/IP соединениях. Когда это значение используется для локальных соединений, то вместо этого используется peer аутентификация.
    • peer – Получает имя пользователя ОС из самой ОС и проверяет, соответствует ли оно имени пользователя для запрашиваемой БД. Доступно только для локальных подключений.
    • ldap – Аутентификация при помощи сервера LDAP.
    • radius – Аутентификация при помощи сервера RADIUS.
    • cert – Аутентификация при помощи SSL сертификата клиента.
    • pam – Аутентификация при помощи Pluggable Authentication Modules (PAM), предоставляемыми ОC.

Файл pg_hba.conf поставляемый по-умолчанию выглядит примерно так:

# 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
host all all 0.0.0.0/0 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres trust
#host replication postgres 127.0.0.1/32 trust
#host replication postgres ::1/128 trust