Иллюстрированный самоучитель по PostgreSQL

Аутентификация и шифрование

Запись в листинге 8.9 разрешает доступ к базам данных без пароля из небольшой подсети. Подсеть состоит из всех IP-адресов в интервале от 192.168.1.1 до 192.168.1.15. Как упоминалось ранее, за информацией о сетевых масках следует обращаться на сайт Linux Networking HOWTO (http://www.thelinuxreview.com/howto/networking) или к администратору сети.

Листинг 8.9. Доверенная подсеть.

host all 192.168.1.0 255.255.255.240 trust

Запись, приведенная в листинге 8.10, разрешает доступ с любого хоста из блока 192.168.1 к базе данных booktown без указания пароля.

Листинг 8.10. Доверенная подсеть.

host booktown 192.168.1.0 255.255.255.0 trust

Вспомните, о чем говорилось выше: при проверке очередного подключения записи файла pg_hba.conf последовательно читаются от начала к концу, и режим аутентификации определяется первой найденной записью. Если в файле не обнаруживается ни одного совпадения, подключение полностью запрещается.

Файл pgjdent.conf

Если в хостовой записи указан метод аутентификации ident, PostgreSQL использует файл pgjdent.conf для отображения идентификационного имени пользователя на имя пользователя PostgreSQL. "Идентификационное имя пользователя" предоставляется службой identd (RFC 1413) и определяет имя системной учетной записи, инициировавшей подключение. В целом этот метод аутентификации аналогичен методу trust, но с ограничением доступа по идентификационному имени пользователя.

Как сказано в спецификации протокола ident, "Идентификационный протокол не предназначен для аутентификации или управления доступом". Он всего лишь является удобным средством идентификации в сетях, состоящих из защищенных, хорошо контролируемых компьютеров, и не обеспечивает надежной защиты при внешнем доступе. Дело в том, что демон identd всего лишь возвращает имя, описывающее текущего пользователя системы. Например, предоставление пользователю jworsley доступа из подсети 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, относящихся к разным базам данных.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.