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

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

В этой главе рассматриваются базовые принципы аутентификации и шифрования клиентских сеансов на сервере PostgreSQL В частности, описаны настройка файла pg_hba.conf для различных схем аутентификации и некоторые распространенные способы шифрования клиентских подключений.

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

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

В PostgreSQL 7.1.x клиентский доступ на уровне хоста задается в файле pg_hba.conf. Права и ограничения, описанные в этом файле, не следует путать с правами доступа к объектам базы данных, установленными для пользователей PostgreSQL. Файл pg_hba.conf позволяет задать тип аутентификации на уровне хоста, выполняемой перед подключением к базе данных, после которого вступают в силу права пользователей.

Примечание
Файл pg_hba.conf находится в каталоге данных PostgreSQL (например, /usr/local/pgsql/data) и создается автоматически при выполнении команды initdb в процессе установки PostgreSQL
.

Аутентификация PostgreSQL на уровне хоста отличается высокой гибкостью и большим разнообразием настраиваемых параметров. Например, доступ к базе данных можно ограничить отдельными хостами или предоставить его семейству IP-адресов при помощи сетевых масок. С каждым хостом связывается специальная запись, представленная отдельной строкой в файле pg_hba.conf.

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

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

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

Аутентификация с использованием паролей

Пароли используются для подтверждения личности пользователей PostgreSQL и предотвращения посторонних подключений. В PostgreSQL 7.1.x пароли хранятся в текстовом виде в системной таблице pg_shadow, структура которой описана в табл. 8.1. Хотя пароли хранятся в виде простого текста, просмотр содержимого таблицы pg_shadow разрешен только суперпользователям PostgreSQL.

Таблица 8.1. Структура таблицы pg_shadow.

Поле Тип
usenatne name
usesysld integer-
usecreatedb boolean
usetrace boolean
usesuper boolean
usecatupd boolean
passwd text
val until abstime

Системная таблица pg_shadow доступна из любой базы данных. Из этого следует, что пользовательский доступ не ограничивается конкретной базой. Если данные некоторого пользователя присутствуют в таблице pg_shadow, то этот пользователь сможет подключиться к любой базе данных на серверном компьютере (конечно, если ему вообще разрешено подключение).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.