七层安全模型

Pigsty 的纵深防御模型:从物理到用户的多层安全基线。

安全不是一道墙,而是一座城。Pigsty 采用纵深防御策略,在七个层次上构建多重保护,即使某一层被突破,仍有其他层提供保护。

这种分层思路解决三类核心风险:

  • 边界被突破:降低“单点失守导致全盘失守”的概率。
  • 内部滥用:即使内部账号被盗,也能通过最小权限限制破坏范围。
  • 不可预期故障:硬件、软件、人为错误都能被“多层兜底”。

概览


L1 物理与介质安全

物理层失守时,唯一的对抗手段是数据本身的自我保护。

解决的问题

  • 硬件故障导致静默数据损坏
  • 介质被盗导致数据泄露

Pigsty 支持

  • 数据校验和:默认开启 pg_checksum: true,可发现坏块/内存错误导致的数据损坏。
  • 可选透明加密:通过 pg_tde 等扩展实现数据静态加密,防止介质泄露。

L2 网络安全

控制“谁能接触到服务”,降低攻击面。

解决的问题

  • 未授权网络访问
  • 明文传输被窃听/篡改

Pigsty 支持

  • 防火墙分区node_firewall_mode 可启用 zone,内网信任、公网受限。
  • 监听收敛pg_listen 可限制监听地址,避免全网暴露。
  • TLS 能力:HBA 支持 ssl/cert,保证连接加密与身份校验。

L3 边界安全

“统一入口”是可审计、可控制、可封禁的基础。

解决的问题

  • 多入口难以管控
  • 外部系统无处统一加固

Pigsty 支持

  • HAProxy 入口:数据库流量统一入口,便于封禁/限流/切换。
  • Nginx 网关:基础设施服务统一 HTTPS 入口(nginx_sslmode)。
  • 集中管理口令:HAProxy 管理口令、Grafana 管理口令统一在配置中声明。

L4 主机安全

数据库安全的地基:最小权限、访问隔离、系统加固。

解决的问题

  • 主机被入侵导致全盘失守
  • 管理权限过度扩散

Pigsty 支持

  • SELinux 模式node_selinux_mode 可切换 enforcing 强制模式。
  • 最小权限管理员node_admin_sudo 支持 limit 限制 sudo 命令集。
  • 敏感文件权限:CA 私钥目录默认 0700,私钥文件 0600。

L5 应用安全

认证是所有数据库安全的“第一道闸门”。

解决的问题

  • 弱密码或明文认证导致账号泄露
  • 错误放行导致越权访问

Pigsty 支持

  • HBA 分层控制:默认规则按来源与角色分层,管理员外网访问必须 ssl
  • SCRAM 密码哈希pg_pwd_enc: scram-sha-256 默认启用。
  • 密码强度检查passwordcheck/credcheck 可启用,阻止弱口令。
  • 证书认证auth: cert 支持客户端证书认证。

L6 数据安全

保障数据在“可用、可恢复、可追责”。

解决的问题

  • 人为误操作与逻辑错误
  • 黑客入侵后数据被篡改或删除

Pigsty 支持

  • pgBackRest 备份:默认启用,支持本地与 MinIO 仓库。
  • 备份加密:MinIO 仓库支持 AES-256-CBC(cipher_type)。
  • PITR 恢复:结合归档可恢复到任意时间点。
  • 审计日志:模板启用 DDL/连接/慢查询日志,可选 pgaudit

L7 用户安全

最小权限不是口号,而是默认行为。

解决的问题

  • 业务账号拥有过高权限
  • 数据库之间相互“穿透”

Pigsty 支持

  • 四层 RBACdbrole_readonly/readwrite/admin/offline
  • 默认权限策略:对象创建即自动授予正确权限。
  • 数据库隔离revokeconn: true 可隔离跨库访问。
  • 公共权限收敛:撤销 public 模式 CREATE 权限。

安全加固路径

Pigsty 提供安全增强模板:conf/ha/safe.yml。它将常见加固项集中封装:

  • 强制 SSL、证书认证
  • 密码强度与过期策略
  • 连接与断开日志
  • 防火墙与 SELinux 加固

这条路径可以作为“从默认到合规”的快速升级方案。


接下来


最后修改 2026-02-08: fix dead links (646930b)