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
以獲得更好安全性。