Аутентификация и шифрование
Ниже перечислены компоненты записей pg_hba.conf, упоминаемые в листинге 8.5.
- база_данных. Имя базы данных, к которой разрешено подключаться заданному хосту. Возможны три варианта:
- ключевое слово all означает, что клиент может подключиться к любой базе данных, обслуживаемой сервером PostgreSQL;
- ключевое слово sameuser означает, что клиент может подключаться только к базе данных, имя которой совпадает с именем аутентифицированного пользователя;
- если в записи указывается конкретное имя базы данных, клиент сможет подключиться только к этой базе.
- ip_adpec, сетевая_маска. Поля ip_adpec и сетевая_маска определяют либо конкретный IP-адрес, либо интервал IP-адресов, которым разрешено подключение к серверу PostgreSQL. Интервал задается в виде сетевой маски, описывающей IP-сеть. При указании отдельного IP-адреса поле сетевой маски должно быть равно 255.255.255.255.
Примечание
За информацией о сетевых масках обращайтесь на сайт Linux Networking HOWTO (http://www.thelinuxreview.com/howto/networking) или к системному администратору. - метод_аутентификации. Метод аутентификации, который должен использоваться сервером при подключении пользователя к PostgreSQL. Ниже перечислены допустимые значения этого поля.
- trust. Хост объявляется доверенным, то есть любой пользователь с него подключается к базе данных PostgreSQL без пароля. Таким образом, вы автоматически доверяете всем пользователям хоста. Естественно, это весьма рискованный метод, если заданный хост недостаточно хорошо защищен или предоставляет доступ посторонним пользователям.
- reject. Доступ к PostgreSQL для соответствующего хоста/пользователя автоматически отклоняется. Такая настройка подходит лишь в том случае, если хост заведомо не должен получать доступ к серверу PostgreSQL.
- password. Для получения доступа пользователь должен ввести пароль, который совпадает с паролем, хранящимся в глобальной системной таблице pg_shadow с именем этого пользователя. Пароль пересылается в текстовом виде.
- crypt. Этот метод аналогичен методу password, но в нем пароль пересылается не в простом текстовом виде, а с применением простой схемы шифрования, которая не обеспечивает надежной защиты, но это все же лучше, чем простая пересылка пароля в текстовом виде, как в методе password.
- krb4, krb5. Используется система аутентификации Kerberos версий 4 и 5. Вопросы установки и настройки Kerberos выходят за рамки темы книги, но если вы захотите организовать аутентификацию с использованием Kerberos, такой вариант существует.
- ident. При запросе на подключение от хоста с IP-адресом, заданным в файле pg_hba.conf, должна применяться карта идентификации. У метода имеется один обязательный параметр, значением которого является либо специальное ключевое слово sameuser, либо имя карты, определенной в файле pgjdent.conf. Дополнительная информация о картах идентификации приведена в пункте "Файл pg_ident.conf".
- параметр. Поле параметра может быть обязательным или необязательным в зависимости от выбранного метода аутентификации. В PostgreSQL 7.1.x оно обязательно только для метода Ident.
Внимание
Методы password и crypt рекомендуется использовать лишь в сочетании с внешним механизмом шифрования. Информация о применении единого механизма шифрования для всего трафика PostgreSQL приведена в разделе "Шифрование сеанса".
Примеры записей в файле pg_hba.conf
В этом разделе приведены некоторые примеры записей в файле pg_hba.conf.
Запись, приведенная в листинге 8.6, разрешает подключиться к любой (all) базе данных без пароля (trust) всем пользователям хоста с IP-адресом 192.168.1.10.
Листинг 8.6. Один доверенный хост.
host all 192.168.1.10 255.255.255.255 trust
Следующая запись (листинг 8.7) запрещает подключение всем пользователям с IP-адреса 192.168.1.10. Для этого в режиме аутентификации reject вместо базы данных указывается ключевое слово all.
Листинг 8.7. Запрет доступа с одного хоста.
host all 192.168.1.10 255.255.255.255 reject
Следующая запись (листинг 8.8) разрешает подключение к базе данных templatel с хоста 192.168.1.10 любому пользователю, указавшему правильный пароль. Режим crypt обеспечивает шифрование пароля в процессе аутентификации.
Листинг 8.8. Один хост, одна база данных.
host templatel 192.168.1.10 255.255.255.255 crypt