4. 数据库连接来源IP白名单配置

数据库连接来源IP白名单配置 学习卡片

业务访问关系与白名单设计

数据库监听层的来源IP白名单,本质是把“哪些主机可以发起连接”这一业务访问关系,翻译成监听器可执行的过滤规则。配置前先梳理访问矩阵,再落到具体参数,避免误封应用服务器或漏放运维跳板机。

来源主机角色访问数据库端口是否放行
10.20.1.11订单应用服务器orderdb5432是
10.20.1.12订单应用服务器orderdb5432是
10.20.2.30运维跳板机全部实例5432是
10.20.3.0/24办公网段—5432否
0.0.0.0/0任意地址—5432否

PostgreSQL 监听层白名单配置

PostgreSQL 通过 pg_hba.conf 控制连接来源,配合 listen_addresses 限定监听网卡。以下配置仅允许应用服务器与跳板机连接,其余地址在认证前即被拒绝。

# postgresql.conf
listen_addresses = '10.20.0.5'   # 仅监听内网业务网卡

# pg_hba.conf(顺序自上而下匹配,命中即停止)
# TYPE  DATABASE  USER      ADDRESS         METHOD
host    orderdb   app_rw    10.20.1.11/32   scram-sha-256
host    orderdb   app_rw    10.20.1.12/32   scram-sha-256
host    all       dba_ops   10.20.2.30/32   scram-sha-256
host    all       all       0.0.0.0/0       reject
host    all       all       ::/0            reject
规则按顺序匹配,reject 必须放在放行规则之后,否则会拦截合法来源。修改后执行 SELECT pg_reload_conf(); 使配置生效,无需重启实例。

白名单生效路径与验证

数据库连接来源IP白名单生效路径 应用服务器 10.20.1.11 / .12 运维跳板机 10.20.2.30 办公网段 10.20.3.0/24 监听层 listen_addresses 10.20.0.5:5432 pg_hba.conf 匹配 ① 10.20.1.11/32 → 放行 ② 10.20.1.12/32 → 放行 ③ 10.20.2.30/32 → 放行 ④ 0.0.0.0/0 → reject ⑤ ::/0 → reject 认证通过 scram-sha-256 握手 连接被拒绝 no pg_hba.conf entry 验证命令: 白名单主机:psql -h 10.20.0.5 -U app_rw -d orderdb -c "SELECT 1;" → 成功 非白名单主机:psql -h 10.20.0.5 -U app_rw -d orderdb → FATAL: no pg_hba.conf entry

验证与结果判读

从白名单主机执行连接测试,应能正常进入认证流程并返回查询结果;从办公网段或任意非白名单地址发起连接,监听层在认证前即返回 FATAL: no pg_hba.conf entry for host ...,连接无法建立。

-- 白名单主机(10.20.1.11)执行
psql -h 10.20.0.5 -U app_rw -d orderdb -c "SELECT current_user, inet_server_addr();"
-- 预期:返回 app_rw 与 10.20.0.5

-- 非白名单主机(10.20.3.50)执行
psql -h 10.20.0.5 -U app_rw -d orderdb
-- 预期:FATAL: no pg_hba.conf entry for host "10.20.3.50", user "app_rw", database "orderdb"
若白名单主机连接失败,先检查 listen_addresses 是否包含目标网卡地址,再确认 pg_hba.conf 中规则顺序与网段掩码是否正确。修改后务必执行 pg_reload_conf() 并查看日志确认加载成功。

配置检查清单

  • 访问矩阵已覆盖全部业务来源,无遗漏应用服务器。
  • listen_addresses 仅绑定内网业务网卡,不监听 * 或公网地址。
  • pg_hba.conf 放行规则在前,reject 兜底规则在后。
  • 每条放行规则使用最小网段(优先 /32),避免使用过宽网段。
  • 白名单与非白名单主机均已实测,结果符合预期。
  • 配置变更已记录,并保留回滚用的旧版 pg_hba.conf。