
Mi pregunta
¿Puedo establecer permisos para un usuario (por ejemplo, postgres
) de modo que ese usuario solo pueda iniciar sesión desde TCP localhost, pero no desde Internet?
Sockets confiables versus contraseñas para controles remotos
Entiendo que puedes inicializar postgres para permitir que los usuarios locales inicien sesión sin contraseña y que los hosts remotos inicien sesión con una contraseña:
initdb \
-D "$POSTGRES_DATA_DIR/" \
--username postgres --pwfile "$PWFILE" \
--auth-local=trust --auth-host=password
Intranet versus Internet
Para cualquier sistema que se conecte a través de Internet, quiero utilizar un usuario que tenga una cadena aleatoria de 128 bits muy, muy fuerte (no memorable).
Sin embargo, para el acceso local y de intranet, preferiría poder tener un nombre de usuario y una contraseña que pueda recordar (y escribir).
¿Puedo hacer esto... o simplemente tengo que configurar un usuario por sistema que pueda conectarse, con un .pgpass
en cada uno?
(No quiero compartir claves en archivos de texto sin formato entre computadoras)
Respuesta1
No has proporcionado ninguna información sobre tu versión de PostgreSQL, supongo que estás usando PostgreSQL 12.
¿Puedo establecer permisos para un usuario (por ejemplo, postgres) de modo que ese usuario solo pueda iniciar sesión desde TCP localhost, pero no desde Internet?
Si, usapg_hba.conf
. Es posible que desees cargar esto primero a través dehba_file
configuración del tiempo de ejecución.
Sin embargo, para el acceso local y de intranet, preferiría poder tener un nombre de usuario y una contraseña que pueda recordar (y escribir).
Si desea agregar un usuario solo local protegido con contraseña, agregue
local <database_name> <local-only_user_name> scram-sha-256
en tus pg_hba.conf
.
Probablemente quieras crear el usuario primero a través de CREATE ROLE
:
CREATE ROLE username LOGIN ENCRYPTED PASSWORD 'insert-your-password-here';
También es posible que desee verificar host
y hostssl
registrar la entrada para agregarla a su pg_hba.conf
configuración de autenticación basada en Internet e intranet.
Consulte la documentación vinculada para obtener más información.