
Minha pergunta
Posso definir permissões para um usuário (ex:) postgres
de forma que esse usuário só tenha permissão para fazer login no host local TCP, mas não na Internet?
Soquetes confiáveis versus senhas para controles remotos
Entendo que você pode inicializar o postgres para permitir que usuários locais façam login sem uma 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, entretanto, prefiro ter um nome de usuário e uma senha que eu possa lembrar (e digitar).
Posso fazer isso... ou preciso apenas configurar um usuário por sistema com permissão para se conectar, com um .pgpass
em cada um?
(Não quero compartilhar chaves em arquivos de texto simples entre computadores)
Responder1
Você não forneceu nenhuma informação sobre sua versão do PostgreSQL, presumo que você esteja usando o PostgreSQL 12.
Posso definir permissões para um usuário (ex: postgres) de forma que esse usuário só tenha permissão para fazer login no host local TCP, mas não na Internet?
Sim, usepg_hba.conf
. Você pode querer carregar isso primeiro viahba_file
configuração de tempo de execução.
Para acesso local e intranet, entretanto, prefiro ter um nome de usuário e uma senha que eu possa lembrar (e digitar).
Se você quiser adicionar um usuário local protegido por senha, adicione
local <database_name> <local-only_user_name> scram-sha-256
na tua pg_hba.conf
.
Você provavelmente deseja criar o usuário primeiro por meio de CREATE ROLE
:
CREATE ROLE username LOGIN ENCRYPTED PASSWORD 'insert-your-password-here';
Você também pode querer verificar host
e hostssl
registrar entradas para adicionar à pg_hba.conf
sua intranet e autenticação baseada na Internet.
Verifique as documentações vinculadas para obter mais informações.