PostgreSQL数据源认证核心是通过pg_hba.conf文件配置,主要方法包括scram-sha-256(推荐)、md5、trust(不安全)和peer/ident(本地使用),需按规则顺序精确设置用户、IP、数据库及认证方式,并结合SSL与最小权限原则确保安全。

PostgreSQL数据源的认证方式设置,核心在于通过修改其配置文件
pg_hba.conf
要配置PostgreSQL的数据源认证,你主要需要找到并编辑
pg_hba.conf
一条典型的
pg_hba.conf
TYPE DATABASE USER ADDRESS METHOD [OPTIONS]
local
host
hostssl
hostnossl
all
sameuser
all
samerole
192.168.1.100
192.168.1.0/24
all
0.0.0.0/0
::/0
local
trust
reject
md5
scram-sha-256
password
ident
local
peer
local
gssapi
ldap
cert
pam
scram-sha-256
channel_binding=require
配置步骤:
pg_hba.conf
SHOW data_directory;
psql
pg_hba.conf
pg_hba.conf
192.168.1.0/24
scram-sha-256
host all all 192.168.1.0/24 scram-sha-256
postgres
peer
local all postgres peer
pg_hba.conf
pg_ctl reload
psql
SELECT pg_reload_conf();
说实话,在PostgreSQL的数据源认证方法里,我们日常开发和运维最常打交道的,无外乎
md5
scram-sha-256
trust
peer
ident
我个人在项目里,如果不是特别古老的系统,基本都会力推
scram-sha-256
md5
md5
md5
scram-sha-256
如果你连接的是内部应用或者在非常受控的网络环境,有时为了方便,或者因为应用架构的限制,可能会用到
md5
scram-sha-256
scram-sha-256
trust
peer
ident
psql
配置
pg_hba.conf
首先,规则的顺序至关重要。PostgreSQL是自上而下地匹配规则的,一旦找到第一个匹配的规则,就会立即停止并应用该规则。这意味着,你必须把最具体的、限制性最强的规则放在前面,而把最通用、限制性最弱的规则放在后面。举个例子,如果你想允许特定IP
192.168.1.10
scram-sha-256
192.168.1.0/24
md5
192.168.1.10
192.168.1.0/24
# 正确的顺序:具体规则在前 host all all 192.168.1.10/32 scram-sha-256 # 优先匹配这个特定IP host all all 192.168.1.0/24 md5 # 再匹配整个网段 # 错误的顺序:通用规则在前,特定规则永远无法匹配 host all all 192.168.1.0/24 md5 # 这个规则会先被匹配,192.168.1.10也会走md5 host all all 192.168.1.10/32 scram-sha-256
其次,避免使用0.0.0.0/0
host all all 0.0.0.0/0 md5
scram-sha-256
hostssl
再者,细化访问权限。尽量不要使用
all
host myappdb appuser 192.168.1.100/32 scram-sha-256
host all all 192.168.1.100/32 scram-sha-256
最后,文件权限和重新加载。
pg_hba.conf
pg_ctl reload
SELECT pg_reload_conf();
选择PostgreSQL的认证策略,这不像点外卖,随便选个口味就好。得结合你的应用场景、安全预算和运维能力来定。没有放之四海而皆准的最佳方案,只有最适合你当前环境的。
1. 内部应用与受信任网络: 如果你的应用运行在受严格控制的内部网络中,并且客户端IP地址是已知的、有限的,那么
scram-sha-256
peer
ident
# 示例:允许内部应用服务器通过SCRAM-SHA-256连接 host all all 192.168.10.0/24 scram-sha-256 # 示例:允许本地操作系统用户连接,使用peer认证 local all all peer
2. 外部应用与非受信任网络(如互联网):
这几乎是所有Web应用和云服务面临的场景。在这种情况下,scram-sha-256
pg_hba.conf
hostssl
# 示例:允许来自任意IP的外部应用通过SCRAM-SHA-256和SSL连接 hostssl all all 0.0.0.0/0 scram-sha-256
同时,在应用连接字符串中也要指定SSL模式,例如
sslmode=require
sslmode=verify-full
3. 遗留系统兼容性: 如果你的应用非常老旧,可能只支持
md5
md5
scram-sha-256
4. 企业级集中认证: 对于大型企业环境,可能已经有了LDAP、Kerberos(GSSAPI)或PAM等集中认证系统。PostgreSQL支持这些认证方式,可以与企业现有的身份管理系统集成,实现统一的用户管理和认证。这能大大简化用户管理,并提高整体安全性。
# 示例:通过LDAP认证 host all all 0.0.0.0/0 ldap ldapserver=your.ldap.server ldapport=389 ldapbinddn="cn=admin,dc=example,dc=com" ldapbindpasswd="password" ldapsyncdb=1
总结一下,我的建议是:优先选择scram-sha-256
以上就是PostgreSQL数据源认证方式设置_PostgreSQL数据源认证配置的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号