Greenplum/PostgreSQL pg_hba.conf 认证方法详解
pg_hba.conf 文件中的 METHOD
字段指定了客户端认证方式,以下是各种认证方法的详细说明和配置示例。
常用认证方法
1. trust
- 无条件允许连接
说明:不需要密码,完全信任连接
适用场景:本地开发环境、容器内部通信
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 trust
local all all trust
2. md5
- 密码认证(MD5加密)
说明:要求客户端提供MD5加密的密码
适用场景:需要基本安全的生产环境
host all all 0.0.0.0/0 md5
3. password
/plaintext
- 明文密码
说明:密码以明文传输(不安全)
适用场景:仅测试环境,不推荐生产使用
host all all 192.168.1.0/24 password
4. scram-sha-256
(PostgreSQL 10+)
说明:使用SCRAM-SHA-256加密,比md5更安全
适用场景:高安全要求的生产环境
host all all 10.0.0.0/8 scram-sha-256
5. peer
- 操作系统用户认证
说明:使用客户端操作系统用户名
适用场景:本地单用户环境
local all all peer
6. ident
- Ident协议认证
说明:通过ident服务器验证
适用场景:特定网络环境
host all all 192.168.1.0/24 ident
7. cert
- SSL客户端证书
说明:要求客户端提供SSL证书
适用场景:高安全要求的远程连接
hostssl all all 0.0.0.0/0 cert
特殊认证方法
8. gss
/sspi
- Kerberos认证
host all all 0.0.0.0/0 gss
9. ldap
- LDAP认证
host all all 0.0.0.0/0 ldap ldapserver=ldap.example.com ldapprefix="cn=" ldapsuffix=",dc=example,dc=com"
10. radius
- RADIUS认证
host all all 0.0.0.0/0 radius radiusserver=radius.example.com radiussecret=secret
配置示例
生产环境推荐配置
# TYPE DATABASE USER ADDRESS METHOD
local all postgres peer
local all all scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
hostssl all all 10.0.0.0/8 scram-sha-256
hostssl all admins 0.0.0.0/0 cert
开发环境简化配置
local all all trust
host all all 192.168.1.0/24 md5
方法安全性比较
方法 | 安全性 | 加密方式 | 适用版本 |
---|---|---|---|
trust | 无 | 无 | 所有 |
md5 | 中 | MD5哈希 | 所有 |
scram-sha-256 | 高 | SHA-256 | PG10+ |
password | 低 | 明文 | 所有 |
cert | 最高 | SSL证书 | 所有 |
配置后操作
重新加载配置:
# Greenplum gpstop -u # PostgreSQL pg_ctl reload
验证配置:
psql -h [host] -U [user] -d [db]
注意:md5
方法在Greenplum中仍然广泛使用,但新部署建议使用 scram-sha-256
以获得更好安全性。