Перейти к основному содержимому

Аутентификация по паролю

примечание

Эта страница переведена при помощи нейросети GigaChat.

Существует несколько методов аутентификации на основе паролей. Эти методы работают аналогично, но различаются способом хранения паролей пользователей на сервере и способом отправки пароля, предоставленного клиентом, через соединение.

scram-sha-256

: Метод scram-sha-256 выполняет аутентификацию SCRAM-SHA-256, описанную в RFC 7677. Это схема запроса-ответа, предотвращающая перехват паролей на ненадежных соединениях и поддерживающая безопасное хранение паролей на сервере в виде криптографического хеша.

Это самый безопасный из ныне предоставляемых методов, но он не поддерживается старыми клиентскими библиотеками.

md5

: Метод md5 использует нестандартный менее безопасный механизм запроса-ответа. Он предотвращает перехват паролей и избегает хранения паролей на сервере в виде простого текста, но не обеспечивает защиты, если злоумышленник сможет украсть хеш пароля с сервера. Кроме того, алгоритм хеширования MD5 сегодня больше не считается безопасным против целевых атак.

Чтобы облегчить переход от метода md5 к более новому методу SCRAM, если md5 указан в качестве метода в pg_hba.conf, но пароль пользователя на сервере зашифрован для SCRAM (см. ниже), то вместо этого автоматически будет выбран метод аутентификации на основе SCRAM.

password

: Метод password отправляет пароль открытым текстом и поэтому уязвим для атак с перехватом паролей "перехват". Его следует всегда избегать, если это возможно. Если соединение защищено шифрованием SSL, то password можно использовать безопасно. (Хотя аутентификация по сертификату SSL может быть лучшим выбором, если кто-то зависит от использования SSL).

Пароли баз данных PostgreSQL отделены от системных пользовательских паролей. Пароль каждого пользователя базы данных хранится в pg_authid системном каталоге. Пароли могут управляться с помощью команд SQL CREATE ROLE и ALTER ROLE, например, CREATE ROLE foo WITH LOGIN PASSWORD 'secret', или командой psql \password. Если для пользователя не установлен пароль, сохраненный пароль равен нулю, и проверка подлинности пароля всегда будет неудачной для этого пользователя.

Доступность различных методов аутентификации на основе паролей зависит от того, как зашифрован (или хеширован, точнее) пароль пользователя на сервере. Это контролируется параметром конфигурации password_encryption во время установки пароля. Если пароль был зашифрован с использованием настройки scram-sha-256, то его можно использовать для методов аутентификации scram-sha-256 и password (но передача пароля будет осуществляться открытым текстом в последнем случае). Спецификация метода аутентификации md5 автоматически переключится на использование метода scram-sha-256 в этом случае, как объяснено выше, поэтому он также будет работать. Если пароль был зашифрован с использованием настройки md5, то его можно использовать только для спецификаций методов аутентификации md5 и password (снова с передачей пароля открытым текстом в последнем случае). (Предыдущие выпуски PostgreSQL поддерживали хранение пароля на сервере открытым текстом. Это больше невозможно.) Чтобы проверить текущие хранимые хеши паролей, см. системный каталог pg_authid.

Чтобы обновить существующую установку с md5 до scram-sha-256, после того как убедитесь, что все используемые клиентские библиотеки достаточно новые, чтобы поддерживать SCRAM, установите password_encryption = 'scram-sha-256' в postgresql.conf, попросите всех пользователей установить новые пароли и измените спецификации методов аутентификации в pg_hba.conf на scram-sha-256.