Перейти к основному содержимому

Аутентификация ident

примечание

Эта страница переведена при помощи нейросети GigaChat.

Метод аутентификации ident функционирует следующим образом: имя пользователя операционной системы клиента извлекается с помощью сервера ident и принимается как допустимое имя пользователя базы данных (при необходимости производится сопоставление имен). Данный метод доступен только для TCP/IP-соединений.

Примечание

Когда идентификатор указан для локального (не TCP/IP) соединения, будет использоваться аутентификация peer (см. Раздел Аутентификация peer).

Для метода аутентификации ident предусмотрены следующие параметры конфигурации:

map

: Данный параметр позволяет сопоставлять имена пользователей операционной системы с именами пользователей базы данных. Подробности см. в разделе «Карты сопоставления имен пользователей».

Протокол идентификации (ident) регламентирован документом RFC 1413. Большинство Unix-подобных систем включают предустановленный идент-сервер, слушающий TCP-порт 113. Его задача — отвечать на запросы вида: «Кто именно установил соединение с моего порта X на порт Y?». Так как PostgreSQL владеет информацией о портах X и Y, он может обратиться к идент-серверу на клиентской стороне и выяснить имя пользователя ОС, создавшего данное соединение.

Однако данный подход сильно зависит от надежности клиентской машины: злоумышленник, взломавший клиент, способен развернуть собственный идент-сервер на порту 113 и подставить произвольное имя пользователя. Таким образом, метод эффективен только в изолированных сетях, где все компьютеры строго контролируются, а администратор базы данных тесно сотрудничает с администраторами систем. Важно помнить, что доверять следует только надежному идент-серверу.

Протокол идентификации не предназначен для авторизации или контроля доступа
--RFC 1413

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