概要
pg_hba.conf 是 PostgreSQL 用于控制客户端如何连接到服务器的主机基于认证(HBA)配置文件,它通过一系列按顺序排列的规则来决定允许哪些用户、从哪些地址、以何种方式访问哪些数据库。每条规则由“连接类型”、“数据库”、“用户”、“地址”、“认证方法”及可选“方法选项”六个字段组成。当客户端发起连接时,PostgreSQL 会自上而下匹配这些规则,一旦找到第一条匹配项便执行对应的认证,不会继续尝试后续规则,因此规则顺序非常关键。
1. 文件位置与注释
- 默认位于 PostgreSQL 数据目录下(例如
/var/lib/pgsql/<version>/data/pg_hba.conf或 Debian/Ubuntu 系统的/etc/postgresql/<version>/main/pg_hba.conf)。 - 文件中以
#开头的行均为注释,会被忽略;空行同样被忽略,便于分组与说明。
2. 记录格式
# TYPE DATABASE USER ADDRESS METHOD [OPTIONS]
-
TYPE:指定连接方式,可选值:
local:通过 Unix 域套接字连接host:通过 TCP/IP 连接,支持 IPv4/IPv6hostssl:仅通过 SSL 的 TCP/IP 连接hostnossl:仅通过非 SSL 的 TCP/IP 连接
-
DATABASE:指定规则适用的数据库,可使用:
- 数据库名(如
mydb) - 逗号分隔列表(如
db1,db2) - 关键字
all(所有数据库) - 关键字
replication(备用流复制连接)
- 数据库名(如
-
USER:指定允许连接的用户,同样支持列表、正则(需括号)及关键字
all。 -
ADDRESS:仅在
host*类型下使用,用 CIDR 表示的客户端 IP 范围(如192.168.1.0/24或::1/128)。 -
METHOD:认证方法,如
trust、md5、password、peer、gss、sspi、ident、ldap、cert等。 -
OPTIONS:视认证方法而定,如
map=xxx(对于ident/peer)、clientcert=1(对于cert),或用于 Kerberos/GSSAPI 等额外参数。
3. 认证方法简介
- trust:无验证,任何匹配规则的客户端可直接连接,风险最高。
- md5:基于 MD5 哈希的密码认证,是最常用的远程认证方式。
- password:明文密码认证,仅在安全网络或 SSL 环境下使用。
- peer(仅
local):使用操作系统用户身份匹配 PostgreSQL 用户。 - ident(仅
host):通过 ident 服务器确认客户端操作系统用户名。 - cert:基于客户端 SSL 证书的双向认证,需设置
hostssl和clientcert=1。
4. 规则匹配与优先级
- PostgreSQL 严格按照文件顺序逐条匹配规则,首个满足所有字段条件的规则生效,之后不再继续匹配。
- 若无任何规则匹配,连接被拒绝。
- 因此,应先写最精确的规则(如特定数据库、用户与地址),再写更通用的规则(如
all)以避免意外放行或拒绝。
5. 包含指令与分块管理
- 支持
include 'filename'、include_if_exists 'filename'与include_dir 'directory'指令,可将规则拆分到多个文件,以便环境分层管理与版本控制。 include_dir会按文件名顺序(C locale)加载所有.conf文件,便于插件或自动化工具生成额外规则。
6. 查看与验证规则
-
使用内置视图可检验规则加载情况:
SELECT * FROM pg_hba_file_rules;该视图列出了每条记录的生效情况、源文件及行号,有助于诊断规则是否按预期匹配。
-
修改
pg_hba.conf后,无需重启 PostgreSQL,只需执行:pg_ctl reload -D <data_directory>或在 SQL 中运行:
SELECT pg_reload_conf();
7. 最佳实践
- 最小授权原则:对不同环境(内网、管理网)使用不同规则文件,避免使用
trust; - 分组管理:将生产、测试、开发规则拆分到不同目录并通过
include_dir引入; - 定期审计:结合
pg_hba_file_rules、日志审计相互验证,确保证书、用户映射等配置未被绕过; - 版本控制:将
pg_hba.conf及包含文件一并纳入版本管理,保证变更可追溯; - 自动化验证:在 CI/CD 流水线中加入配置扫描,检测开放的 IP 段与弱认证方法(如
password、trust)。
以上即为 pg_hba.conf 配置文件的结构与含义详细解读,涵盖了字段说明、认证方法、匹配机制、包含指令及运维最佳实践,供日常环境安全配置和审计参考。
1910

被折叠的 条评论
为什么被折叠?



