
Мой вопрос
Могу ли я установить разрешения для пользователя (например: postgres
) таким образом, чтобы этому пользователю было разрешено входить в систему только с локального хоста TCP, но не из Интернета?
Доверенные сокеты против паролей для пультов ДУ
Я понимаю, что можно инициализировать postgres, чтобы разрешить локальным пользователям входить в систему без пароля, а удаленным хостам — входить с паролем:
initdb \
-D "$POSTGRES_DATA_DIR/" \
--username postgres --pwfile "$PWFILE" \
--auth-local=trust --auth-host=password
Интранет против Интернета
Для любой системы, подключающейся через Интернет, я хочу использовать пользователя, у которого есть очень, очень сильная (незапоминающаяся) случайная 128-битная строка.
Однако для локального и интранет-доступа я бы предпочел иметь имя пользователя и пароль, которые я могу запомнить (и ввести).
Могу ли я это сделать... или мне просто нужно настроить одного пользователя на систему, которому разрешено подключаться, с учетной записью .pgpass
на каждой?
(Я не хочу делиться ключами в текстовых файлах между компьютерами)
решение1
Вы не предоставили никакой информации о версии PostgreSQL. Я предполагаю, что вы используете PostgreSQL 12.
Можно ли установить разрешения для пользователя (например, postgres) таким образом, чтобы этому пользователю было разрешено входить в систему только с локального хоста TCP, но не из Интернета?
Да, используйтеpg_hba.conf
. Возможно, вы захотите сначала загрузить это черезhba_file
Конфигурация времени выполнения.
Однако для локального и интранет-доступа я бы предпочел иметь имя пользователя и пароль, которые я могу запомнить (и ввести).
Если вы хотите добавить локального пользователя, защищенного паролем, добавьте
local <database_name> <local-only_user_name> scram-sha-256
в вашей pg_hba.conf
.
Вероятно, вы сначала захотите создать пользователя с помощью CREATE ROLE
:
CREATE ROLE username LOGIN ENCRYPTED PASSWORD 'insert-your-password-here';
Вы также можете захотеть проверить host
и hostssl
записать запись, чтобы добавить ее в свою pg_hba.conf
конфигурацию аутентификации на основе интрасети и Интернета.
Более подробную информацию можно найти в прилагаемой документации.