Файл pgjdent conf
Файл pgjdent.conf
Если в хостовой записи указан метод аутентификации ident, PostgreSQL использует файл pgjdent.conf для отображения идентификационного имени пользователя на имя пользователя PostgreSQL. «Идентификационное имя пользователя» предоставляется службой identd (RFC 1413) и определяет имя системной учетной записи, инициировавшей подключение. В целом этот метод аутентификации аналогичен методу trust, но с ограничением доступа по идентификационному имени пользователя.
Как сказано в спецификации протокола ident, «Идентификационный протокол не предназначен для аутентификации или управления доступом». Он всего лишь является удобным средством идентификации в сетях, состоящих из защищенных, хорошо контролируемых компьютеров, и не обеспечивает надежной защиты при внешнем доступе. Дело в том, что демон identd всего лишь возвращает имя, описывающее текущего пользователя системы. Например, предоставление пользователю jworsl ey доступа из подсети IP-адресов создает серьезную угрозу для безопасности системы, поскольку любой пользователь компьютера, входящего в эту подсеть, сможет создать учетную запись jworsl еу и успешно пройти «аутентификацию».
Файл pgjdent.conf должен находиться в одном каталоге с файлом pg_hba.conf. Путь к этому каталогу определяется переменной среды PGDATA (например, /usr/local/ pgsql/data). Как и в случае с pg_hba.conf, внесение изменений в pgjdent.conf не требует перезапуска PostgreSQL.
Содержимое файла pgjdent.conf связывает идентификационные имена с именами пользователей PostgreSQL при помощи особых определений, называемых картами идентификации. Карты идентификации обычно применяются в системах, в которых системные имена пользователей не совпадают с именами пользователей PostgreSQL. Основные правила определения и использования карт идентификации перечислены ниже.
- Каждая запись файла определяется в отдельной строке и связывает имя карты, идентификационное имя пользователя и имя пользователя PostgreSQL.
- Файл pgjdent.conf может содержать несколько карт. Каждая группа строк, в которых указано общее имя карты, рассматривается как одна карта.
- Типы подключений, относящихся к пользователям данной карты, определяются содержимым файла pg_hba.conf.
Отдельная запись файла pgjdent.conf состоит из трех полей: имени карты, идентификационного имени пользователя и преобразованного имени пользователя PostgreSQL:
HMfljopibi идентификационное_имя KKfl_PostgreSQL
Поля разделяются пробелами или символами табуляции.
- имя_карты. Имя, используемое для ссылок на карту идентификации в файле pgjiba.conf.
- идентификационное_имя. Идентификационное имя обычно совпадает с именем пользователя системы, подключающегося к базе данных. Предоставляется демоном identd, работающим в системе, пытающейся установить связь с сервером.
- uмя_PostgreSQL. Имя пользователя PostgreSQL, соответствующее заданному идентификационному имени. Файл может содержать несколько строк с одинаковыми идентификационными именами, но разными именами PostgreSQL. Это позволяет сопоставить одной учетной записи системного пользователя несколько учетных записей пользователей PostgreSQL, относящихся к разным базам данных.
Допустим, на сервере базы данных booktown имеются учетные записи системных пользователей jdrake, jworsl ey и auditor, принадлежащие соответственно двум специалистам по сбыту и аудитору.
Для двух групп пользователей было бы логично создать пару карт идентификации. Предположим, рабочая станция отдела сбыта имеет IP-адрес 192.168.1.3 и ей необходим доступ только к базе данных booktown. Рабочая станция аудитора имеет IP-адрес 192.168.1.4 и требует доступа ко всем базам данных. Файл pgajiba.conf для такого сценария приведен в листинге 8.11.