Minha pergunta
Posso definir permissões em um usuário (ex: postgres
) de modo que esse usuário só tenha permissão para fazer login do host local TCP, mas não da Internet?
Soquetes confiáveis vs senhas para controles remotos
Entendo que você pode inicializar o postgres para permitir que usuários locais façam login sem senha e hosts remotos façam login com uma senha:
initdb \
-D "$POSTGRES_DATA_DIR/" \
--username postgres --pwfile "$PWFILE" \
--auth-local=trust --auth-host=password
Intranet x Internet
Para qualquer sistema que esteja se conectando pela Internet, quero usar um usuário que tenha uma string aleatória de 128 bits muito, muito forte (não memorável).
Para acesso local e intranet, no entanto, prefiro poder ter um nome de usuário e uma senha que eu possa lembrar (e digitar).
Posso fazer isso... ou só tenho que configurar um usuário por sistema que tenha permissão para se conectar, com um .pgpass
em cada um?
(Não quero compartilhar chaves em arquivos de texto simples entre computadores)
Você não forneceu nenhuma informação sobre sua versão do PostgreSQL, suponho que você esteja usando o PostgreSQL 12.
Sim, use
pg_hba.conf
. Você pode querer carregar isso primeiro por meio dahba_file
configuração de tempo de execução.Se você deseja adicionar um usuário somente local protegido por senha, adicione
em seu
pg_hba.conf
.Você provavelmente deseja criar o usuário primeiro via
CREATE ROLE
:Você também pode verificar
host
ehostssl
registrar a entrada para adicionar ao seupg_hba.conf
para configurar sua intranet e autenticação baseada na Internet.Verifique as documentações vinculadas para obter mais informações.