Подключение к серверу Postgresql

Pg_hba.conf — это конфигурационный файл сервера PostgreSQL, который устанавливает доступ на уровне хоста.

    pg_hba.conf

    Настройки подключения определяютсяв конфигурационном файле pg_hba.conf («host-based authentication»)
    Изменения вступают в силу только после перечитывания файла сервером (SQL-функцией pg_reload_conf() или командой reload утилиты управления)

    # TYPE DATABASE USER ADDRESS METHOD host all all 127.0.0.1/32 scram-sha-256

    В строке указывается тип, база, пользователь, адрес и метод аутентификации
    Тип может быть local(unix-сокет) или host(подключение по протоколу TCP/IP)
    Записи host соответствуют подключениям c SSL и без SSL, а также подключениям, защищённым механизмами GSSAPI и не защищённым GSSAPI. Указание имени, начинающееся с точки (.), соответствует суффиксу актуального имени узла. Так, .example.com будет соответствовать foo.example.com (а не только example.com).
    В качестве базы данных может быть указана любая ( all ) или имя базы данных
    В качестве пользователя может быть указан любой ( all ) или имя роли, начение sameuser определяет, что данная запись соответствует, только если имя запрашиваемой базы данных совпадает с именем запрашиваемого пользователя. Значение samerole определяет, что запрашиваемый пользователь должен быть членом роли с таким же именем, как и у запрашиваемой базы данных
    В качестве адресса может быть указан любой ( all ) или ip/маска или доменное имя
    ip-адресс или доменное имя не указываются для типа local
    По умолчанию PostgreSQL слушает входящие соединения только с localhost
    Обычно параметр listen_addresses ставят в значение «*» (слушать все интерфейсы) и дальше регулируют доступ средствами pg_hba.conf
    Источник: https://edu.postgrespro.ru/16/dba1-16/dba1_13_access_overview.html


    Файл pg_hba.conf, со стандартным содержимым, создаётся командой initdb при инициализации каталога с данными. Однако его можно разместить в любом другом месте, с помощью конфигурационного параметра hba_file.
    Запись может быть директивой включения или записью аутентификации. Директивы включения указывают, что нужно обработать дополнительные файлы с записями. Записи будут вставлены вместо директив включения. Директивы включения содержат только два поля: директиву include, include_if_exists или include_dir и включаемый файл или каталог. Путь к файлу или каталогу может задаваться и как абсолютный, и как относительный и заключаться в двойные кавычки. Для формы include_dir будут включены все файлы, не начинающиеся с . и заканчивающиеся на .conf
    Удалённое соединение по TCP/IP невозможно, если сервер запущен без определения соответствующих значений для параметра конфигурации listen_addresses, поскольку по умолчанию система принимает подключения по TCP/IP только для локального адреса замыкания localhost

    hostssl - подключение устанавливаемыми по TCP/IP с применением шифрования SSL
    Источник: https://postgrespro.ru/docs/postgresql/16/client-authentication

    Метод аутентификации

    Метод аутентификации Указывает метод аутентификации, когда подключение соответствует этой записи


    trust - разрешает безусловное подключение. Этот метод позволяет тому, кто может подключиться к серверу с базой данных PostgreSQL, войти под любым желаемым пользователем PostgreSQL без введения пароля и без какой-либо другой аутентификации
    reject - отклоняет подключение безусловно. Эта возможность полезна для «фильтрации» некоторых серверов группы, например, строка reject может отклонить попытку подключения одного компьютера, при этом следующая строка позволяет подключиться остальным компьютерам в той же сети
    scram-sha-256 - проверяет пароль пользователя, производя аутентификацию SCRAM-SHA-256 или MD5
    password - Требует для аутентификации введения клиентом незашифрованного пароля. Поскольку пароль посылается простым текстом через сеть, такой способ не стоит использовать, если сеть не вызывает доверия
    peer - Получает имя пользователя операционной системы клиента из операционной системы и проверяет, соответствует ли оно имени пользователя запрашиваемой базы данных. Доступно только для локальных подключений
    cert - Проводит аутентификацию, используя клиентский сертификат SSL
    Источник: https://postgrespro.ru/docs/postgresql/16/auth-pg-hba-conf

    Параметры аутентификации

    После поля метод-аутентификации может идти поле (поля) вида имя=значение, определяющее параметры метода аутентификации.
    include - Эта строка будет заменена на содержимое указанного файла
    include_if_exists - Эта строка будет заменена на содержимое указанного файла, если файл существует
    include_dir - Эта строка будет заменена на содержимое всех файлов, найденных в каталоге, если они не начинаются с . и заканчиваются на .conf


    Поскольку записи файла pg_hba.conf рассматриваются последовательно для каждого подключения, порядок записей имеет большое значение. Обычно более ранние записи определяют чёткие критерии для соответствия параметров подключения, но для методов аутентификации допускают послабления. Напротив, записи более поздние смягчают требования к соответствию параметров подключения, но усиливают их в отношении методов аутентификации.

    Системное представление pg_hba_file_rules может быть полезно для предварительной проверки изменений в файле pg_hba.conf или для диагностики проблем, когда перезагрузка этого файла не даёт желаемого эффекта. Строки в этом представлении, содержащие в поле error не NULL, указывают на проблемы в соответствующих строках файла.

    Чтобы подключиться к конкретной базе данных, пользователь не только должен пройти все проверки файла pg_hba.conf, но должен иметь привилегию CONNECT для подключения к базе данных. Если вы хотите ограничить доступ к базам данных для определённых пользователей, проще предоставить/отозвать привилегию CONNECT, нежели устанавливать правила в записях файла pg_hba.conf.

    # Позволяет любому пользователю локальной системы подключаться # к любой базе данных, используя любое имя пользователя баз данных, через # Unix-сокеты (по умолчанию для локальных подключений). # # TYPE DATABASE USER ADDRESS METHOD local all all trust # То же, но для локальных замкнутых подключений по TCP/IP. # # TYPE DATABASE USER ADDRESS METHOD host all all 127.0.0.1/32 trust # То же, что и в предыдущей строке, но с указанием # сетевой маски в отдельном столбце # # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD host all all 127.0.0.1 255.255.255.255 trust # Позволяет любому пользователю любого компьютера с IP-адресом # 192.168.93.x подключаться к базе данных "postgres" # с именем, которое сообщает для данного подключения ident # (как правило, имя пользователя операционной системы). # # TYPE DATABASE USER ADDRESS METHOD host postgres all 192.168.93.0/24 ident # Позволяет любому пользователю компьютера 192.168.12.10 подключаться # к базе данных "postgres", если он передаёт правильный пароль. # # TYPE DATABASE USER ADDRESS METHOD host postgres all 192.168.12.10/32 scram-sha-256 # Позволяет любым пользователям с компьютеров в домене example.com # подключаться к любой базе данных, если передаётся правильный пароль. # # Для всех пользователей требуется аутентификация SCRAM, за исключением # пользователя 'mike', который использует старый клиент, не поддерживающий # аутентификацию SCRAM. # # TYPE DATABASE USER ADDRESS METHOD host all mike .example.com md5 host all all .example.com scram-sha-256

    Источник: https://postgrespro.ru/docs/postgresql/16/auth-pg-hba-conf


    Источники
    Последнее изменение: 08.11.2024 04:17


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ