воскресенье, 13 января 2013 г.

18.3. Подключения и аутентификация

18.3.1 Настройки подключения

listen_addresses (string)
Определяет TCP/IP адрес(а) на которых сервер ожидает подключения клиентов. Эти значения указываются в строкой с точкой с запятой в качестве разделителя. Можно указать как имена, так и IP адреса. * обозначает все доступные IP интерфейсы. 0.0.0.0 разрешает слушать все IPv4, а :: все IPv6 адреса. Если список пустой, то сервер не будет ждать подключения ни на каком IP интерфейсе; в таком случае для подключения можно использовать только Unix domain socket. Значением по умолчанию является только "localhost", что разрешает только TCP/IP loopback подключения. Хотя настройки аутентификации клиента (глава 19) позволяет тонко настроить разрешения подключения к серверу, listen_addresses определяет доступные для использования интерфейсов, что может помочь предотвратить повторяющиеся повторные подключения злоумышленника к небезопасным сетевым интерфейсам. Этот параметр можно задать только при запуске сервера.
port (integer)
Сервер по умолчанию слушает порт 5432. Обратите внимание, что этот порт используется на всех IP адресах. Этот параметр может быть задан только при запуске сервера.
max_connections (integer)
Определяет максимальное количество одновременных подключений к серверу БД. По умолчанию разрешено 100 подключений, но их число может быть меньше, в зависимости от поддержки ядра (это определяется во время initdb). Параметр может быть задан только вовремя запуска сервера.
Увеличение числа подключений может потребовать большего объёма разделяемой памяти или семафоров, чем позволяют настройки вашей ОС. Подробнее об этом говорится в разделе 17.4.1.
Когда Вы запускаете резервный сервер, Вы должны разрешить то же количество подключений или больше, чем на мастере. В противном случае запросы к нему не смогут быть обработаны.
superuser_reserved_connections (integer)
Определяет число "слотов" подключений, которые зарезервированы для подключений суперпользователями PostgreSQL. Максимум max_connections подключений может быть активно одновременно. Когда же число активных подключений достигает max_connections - superuser_reserved_connections, новые подключения будут возможны только для суперпользователя; новые подключения для репликации не будут приняты.
Значение по умолчанию - 3. Это число должно быть меньше, чем max_connections. Этот параметр можно задать только при запуске сервера.
unix_socket_directory (string)
Определяет каталог Unix-domain socket, где сервер будет ожидать подключений от клиентских приложений. Значение по умолчанию - /tmp, но оно может быть изменено на этапе сборки. Этот параметр можно задать только при запуске сервера.
Кроме самого файла сокета, который называется .s.PGSQL.nnnn, где nnnn - номер порта сервера, ещё создаётся обычный файл с именем .s.PGSQL.nnnn.lock. Ни один из этих файлов не должен быть вручную удалён.
Этот параметр не используется на Windwos, так как там нет Unix=domain socket.
unix_socket_group (string)
Задаёт владельца группы Unix-domain socket. (Владельцем самого сокета всегда является пользователь, который запускает сервер.) Вместе с параметром unix_socket_permissions он может использоваться как дополнительный механизм контроля подключений через unix-domain socket. По умолчанию значение этого параметра - пустая строка, что означает группу по умолчанию для пользователя сервера. Этот параметр можно задать только при запуске сервера.
Этот параметр не используется на Windwos, так как там нет Unix=domain socket.
unix_socket_permissions (integer)
Задаёт права доступа к unix-domain socket, которые используют обычный механизм прав доступа к файлам. В качестве параметра ожидается число, которое задаёт формат доступа к файлу, используемое командами chmod и umask. (Для того, чтобы использовать восьмеричный формат ввода число должно начинаться с нуля (0)).
Значение по умолчанию - 0777, что подразумевает, что любой может подключиться к сокету. Логичным значением так же может быть 0770 (разрешение подключения только владельцу файла и группе, см unix_socket_group) и 0700 (разрешение подключения только пользователю). (Обратите внимание, что для unix-domain socket важны разрешения только на запись, так что нет никакого смысла задавать или снимать разрешения на выполнение или чтение).
Этот способ контроля доступа не зависит от описанного в главе 19.
Этот параметр можно задать только при запуске сервера.
Этот параметр не используется на Windwos, так как там нет Unix=domain socket.
bonjour (boolean)
Включает объявление о существовании сервера через Bonjour. По умолчанию - off. Этот параметр может быть задан только при запуске сервера.
bonjour_name (string)
Определяет имя Bonjour сервиса. Если в качестве параметра задана пустая строка (значение по умолчанию), то используется имя компьютера. Параметр игнорируется если сервер не был скомпилирован с поддержкой bonjour. Этот параметр может быть задан только при старте сервера.
tcp_keepalives_idle (integer)
Определяет количество секунд до отправки пакета keepalive по бездействующему каналу. Значение 0 использует системное значение. Этот параметр поддерживается только на системах, поддерживающих символы TCP_KEEPIDLE или TCP_KEEPALIVE и на Windows; на других системах это значение должно быть равно 0. Этот параметр игнорируется, если подключение происходит через unix-domain socket.
Примечание: на Windows значение 0 будет означать 2 часа, так как на Windows нет возможности прочитать системное значение.
tcp_keepalives_interval (integer)
Определяет количество секунд между отправкой keepalive по бездействующему соединению. Значение 0 использует системное значение. Этот параметр поддерживается только на системах, поддерживающих символ TCP_KEEPINTVL и на Windows; на других системах это значение должно быть равно 0. Этот параметр игнорируется, если подключение происходит через unix-domain socket.
Примечание: на Windows значение 0 будет означать 1 секунду, так как на Windows нет возможности прочитать системное значение.
tcp_keepalives_count (integer)
Определяет количество пакетов keepalive, отправляемых по бездействующему соединению. Значение 0 использует системное значение. Этот параметр поддерживается только на системах, поддерживающих символ TCP_KEEPCONT; на других системах это значение должно быть равно 0. Этот параметр игнорируется, если подключение происходит через unix-domain socket.
Примечание: этот параметр не поддерживается на Windows и должен быть равен 0.

18.3.2 Безопасность и аутентификация

authentication_timeout (integer)
Максимальное время для завершения аутентификации клиента в секундах. Если потенциальный клиент за это время не завершил протокол аутентификации, то сервер завершает соединения. Это не позволяет зависшим клиентам занимать соединение. Значение по умолчанию - 1 минута (1m). Этот параметр может быть задан либо в файле postgresql.conf, либо в командной строке.
ssl(boolean)
Разрешает SSL соединения. Перед использованием прочитайте раздел 17.9. По умолчанию - off. Этот параметр может быть задан только при запуске сервера. SSL соединения возможны только через TCP/IP соединения.
ssl_renogotiation_limit (integer)
Определяет как много данных может быть передано по SSL-шифрованному соединения перед повторным обменом ключами. Повторный обмен ключами снижает шансы атакующего провести криптоанализ на большом объёме переданных данных, но так же и снижает производительность. В качестве лимита используется сумма переданных и полученных данных. Если этот параметр равен 0, то повторный обмен ключами не происходит. Значение по умолчанию - 512MB.
Примечание: SSL библиотеки до ноября 2009 небезопасны при использовании обмена ключами SSL из-за уязвимости в SSL протоколе. В качестве решения этой проблемы некоторые поставщики предоставляют SSL библиотеки, не способные на обмен ключами. Если такие библиотеки есть на клиенте или сервере, то обмен ключами должен быть отключен.
ssl_ciphers (string)
Определяет список SSL шифров, которые можно использовать для безопасных подключений. В руководстве по openssl приведён список доступных шифров.
password_encryption (boolean)
Когда пароль определён в CREATE USER или ALTER ROLE без ENCRYPTED или UNENCRYPTED, то этот параметр определяет, должне ли пароль быть зашифрован. По умаолчанию - on (пароль шифруется).
krb_server_keyfile (string)
Задаёт расположение файла ключа сервера Kerberos. Более подробно об этом написано в разделах 19.3.5. или 19.3.3. Этот параметр может быть задан либо в файле postgresql.conf, либо в командной строке.
krb_srvname (string)
Задаёт имя сервиса Kerberos. Более подробно - в разделе 19.3.5. Этот параметр может быть задан либо в файле postgresql.conf, либо в командной строке.
krb_caseins_users (boolean)
Определяет, надо ли рассматривать имена пользователей Kerberos и GSSAPI как регистрозависимые. По умолчанию - off (не зависят от регистра). Этот параметр может быть задан либо в файле postgresql.conf, либо в командной строке.
db_user_namespace (boolean)
Этот параметр разрешает использовать отдельные пространства имён пользователей для каждой БД. По умолчанию off. Этот параметр может быть задан либо в файле postgresql.conf, либо в командной строке.
Если он активирован, то Вы должны создавать пользователя в виде имя_пользователя@имя_базы_данных. Когда при подключении передаётся имя пользователя,к нему присоединяют @ и имя базы данных, полученное в результате имя пользователя рассматривается сервером. Обратите внимание, что когда Вы создаёте пользователя с именем, содержащим @ в SQL окружении, Вы должны поместить имя пользователя в кавычки.
Если Вы используете этот параметр, Вы всё ещё можете создавать обычных, глобальных пользователей. Для этого просто добавьте @ к имени клиента, например joe@. Знак @ будет отброшен при поиске пользователя.
db_user_namespace приводит к тому, что имена пользователя на клиенте и сервере будут отличаться. Аутентификация всегда проводится с именем пользователя на сервере, так что метод аутентификации должен быть настроен на имя пользователя на сервере, не на клиенте. Так как md5 использует имя пользователя в качестве соли как на клиенте, так и на сервере, md5 не может быть использован при db_user_namespace.
Примечание: Эта опция используется в качестве временного решения. Когда будет найдено окончательное решение, опция будет удалена.

Комментариев нет:

Отправить комментарий