安全概述

Pigsty 的安全能力总览与合规对照表。

Pigsty 提供多层次的安全防护,从网络边界到数据存储,全方位保护您的数据库。


安全层次

第一层:网络安全

组件 防护措施
防火墙 限制入站端口,仅开放必要服务
HAProxy 服务入口,隐藏后端拓扑
SSL/TLS 加密客户端与服务器之间的通信

第二层:认证安全

组件 防护措施
HBA 规则 基于来源地址的访问控制
密码认证 SCRAM-SHA-256 加密存储
证书认证 可选的客户端证书验证

第三层:授权安全

组件 防护措施
角色系统 分层的权限角色
对象权限 精细的表/函数级权限
行级安全 可选的 RLS 策略

第四层:数据安全

组件 防护措施
数据校验 检测存储层数据损坏
备份加密 AES-256 加密备份文件
审计日志 记录所有重要操作

默认配置

用户与密码

用户 用途 默认密码 建议
postgres 系统超级用户 无密码(仅本地) 保持无密码
dbuser_dba 管理员用户 DBUser.DBA 必须修改
dbuser_monitor 监控用户 DBUser.Monitor 必须修改
replicator 复制用户 DBUser.Replicator 必须修改

重要:生产环境部署后,请立即修改这些默认密码!

HBA 规则

Pigsty 默认的 HBA 规则按来源地址分层:

来源 认证方式 说明
本地 Socket ident/peer OS 用户映射,最安全
localhost scram-sha-256 密码认证
内网 (intra) scram-sha-256 密码认证
基础设施节点 scram-sha-256 + SSL 管理员强制 SSL
外网 (world) scram-sha-256 + SSL 管理员强制 SSL

SSL 配置

配置项 默认值 说明
PostgreSQL SSL 启用 客户端可选择使用
Patroni SSL 禁用 可配置启用
Pgbouncer SSL 禁用 可配置启用
Nginx HTTPS 启用 管理界面默认 HTTPS

安全增强配置

启用密码强度检查

pg_libs: 'passwordcheck, pg_stat_statements, auto_explain'

强制 SSL 连接

pg_hba_rules:
  - {user: all, db: all, addr: world, auth: ssl}

启用客户端证书认证

pg_hba_rules:
  - {user: secure_user, db: all, addr: world, auth: cert}

启用 Patroni SSL

patroni_ssl_enabled: true

启用 Pgbouncer SSL

pgbouncer_sslmode: require

安全检查清单

部署前

  • 准备好要使用的密码(使用密码管理器生成)
  • 规划网络分区(内网/外网 CIDR)
  • 确定 SSL 证书策略(自签名/外部 CA)

部署后

  • 修改所有默认密码
  • 验证 HBA 规则符合预期
  • 测试 SSL 连接正常
  • 配置监控告警(认证失败)
  • 备份 CA 私钥

定期维护

  • 审计用户权限
  • 检查过期账户
  • 更新证书(如需要)
  • 检查审计日志

安全相关参数

参数 说明
pg_pwd_enc 密码加密算法
pg_default_hba_rules 默认 HBA 规则
pg_hba_rules 自定义 HBA 规则
pg_default_roles 默认角色定义
patroni_ssl_enabled Patroni SSL 开关
pgbouncer_sslmode Pgbouncer SSL 模式
node_firewall_mode 防火墙模式