我的问题

我的问题

我的问题

我可以为用户设置权限(例如postgres:)以使该用户只允许从 TCP 本地主机登录,而不允许从 Internet 登录吗?

远程控制的可信套接字与密码

我知道您可以初始化 postgres 以允许本地用户无需密码登录,并允许远程主机使用密码登录:

initdb \
            -D "$POSTGRES_DATA_DIR/" \
            --username postgres --pwfile "$PWFILE" \
            --auth-local=trust --auth-host=password

内部网与互联网

对于任何通过互联网连接的系统,我都希望使用具有非常非常强(不可记忆)的随机 128 位字符串的用户。

但是,对于本地和内联网访问,我希望能够拥有我能记住(并输入)的用户名和密码。

我可以这样做吗...或者我只需要为每个允许连接的系统设置一个用户,.pgpass每个用户都有一个?
(我不想在计算机之间共享纯文本文件中的密钥)

答案1

您没有提供有关 PostgreSQL 版本的任何信息,我假设您使用的是 PostgreSQL 12。

我可以为用户(例如:postgres)设置权限,使得该用户只允许从 TCP 本地主机登录,而不允许从 Internet 登录吗?

是的,使用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';

您可能还想检查hosthostssl记录要添加到您的条目,pg_hba.conf以配置您的内部网和基于互联网的身份验证。

查看链接的文档以获取更多信息。

相关内容