合规清单
等保三级与 SOC2 Type II 详细合规对照。
本文档详细对照 Pigsty 的安全能力与 中国等保三级(GB/T 22239-2019)和 SOC 2 Type II 的合规要求。
等保三级对照
身份鉴别
应对登录的用户进行身份标识和鉴别,身份标识具有唯一性
| 要求项 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| 身份唯一性 | ✅ | ✅ | PostgreSQL 角色系统保证用户名唯一 |
| 口令复杂度 | ⚠️ | ✅ | 启用 passwordcheck 或 credcheck 扩展 |
| 口令定期更换 | ⚠️ | ✅ | 使用 expire_in/expire_at 设置用户有效期 |
| 登录失败处理 | ⚠️ | ✅ | 日志记录 + fail2ban 自动封禁 |
| 双因素认证 | ⚠️ | ✅ | 密码 + 客户端 SSL 证书 |
访问控制
应授予管理用户所需的最小权限,实现管理用户的权限分离
| 要求项 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| 访问控制 | ✅ | ✅ | HBA 规则 + RBAC + 可选 SELinux |
| 最小权限 | ✅ | ✅ | 分层角色体系 |
| 权限分离 | ✅ | ✅ | DBA / Monitor / 业务用户分离 |
| 默认拒绝 | ✅ | ✅ | 无匹配 HBA 规则时拒绝连接 |
安全审计
应启用安全审计功能,审计覆盖到每个用户
| 要求项 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| 审计日志 | ✅ | ✅ | 记录 DDL、慢查询、认证事件 |
| 日志保护 | ✅ | ✅ | 文件权限 0640 + VictoriaLogs 集中存储 |
| 审计范围 | ⚠️ | ✅ | 启用 pgaudit 扩展记录所有操作 |
通信安全
应采用密码技术保证通信过程中数据的完整性和保密性
| 要求项 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| 通信加密 | ✅ | ✅ | 默认启用 SSL,可强制 SSL |
| 数据完整性 | ✅ | ✅ | 数据校验和默认启用 |
数据安全
应采用密码技术保证重要数据在存储过程中的保密性
| 要求项 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| 存储加密 | ⚠️ | ✅ | 备份加密 + Percona TDE 内核支持 |
| 备份恢复 | ✅ | ✅ | pgBackRest 自动备份,PITR 恢复 |
网络安全
应在网络边界部署访问控制设备
| 要求项 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| 网络隔离 | ✅ | ✅ | 防火墙 + HBA 规则 |
| 入侵防范 | ⚠️ | ✅ | 日志监控告警 + fail2ban |
SOC 2 Type II 对照
安全性(Security)
| 控制点 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| CC6.1 逻辑访问控制 | ✅ | ✅ | HBA + RBAC |
| CC6.2 用户注册授权 | ✅ | ✅ | Ansible 声明式管理 |
| CC6.3 最小权限 | ✅ | ✅ | 分层角色体系 |
| CC6.6 传输加密 | ✅ | ✅ | SSL/TLS 全局启用 |
| CC6.7 静态加密 | ⚠️ | ✅ | 备份加密 + 可选 TDE |
| CC6.8 恶意软件防护 | ⚠️ | ✅ | 最小安装 + 审计 |
可用性(Availability)
| 控制点 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| A1.1 容量规划 | ✅ | ✅ | 监控指标 + 告警 |
| A1.2 数据恢复 | ✅ | ✅ | PITR 备份恢复 |
| CC9.1 业务连续性 | ✅ | ✅ | HA + 自动故障转移 |
监控(Monitoring)
| 控制点 | 默认满足 | 配置可达 | Pigsty 实现 |
|---|---|---|---|
| CC7.1 入侵检测 | ⚠️ | ✅ | 认证失败告警 |
| CC7.2 系统监控 | ✅ | ✅ | VictoriaMetrics + Grafana |
| CC7.3 事件响应 | ✅ | ✅ | AlertManager 告警通知 |
实现合规的配置
等保三级完整配置
# 密码策略
pg_libs: 'passwordcheck, pg_stat_statements, auto_explain'
# 强制 SSL
pg_default_hba_rules:
- {user: all, db: all, addr: world, auth: ssl}
# 用户有效期
pg_users:
- name: dbuser_app
password: 'xxx'
expire_in: 90 # 90天后过期
# 审计日志
pg_parameters:
log_statement: all
log_connections: 'on'
log_disconnections: 'on'
# 启用 pgaudit
pg_extensions:
- pgaudit
SOC 2 完整配置
# 同步复制(零数据丢失)
pg_conf: crit.yml
pg_rpo: 0
# 备份加密
pgbackrest_method: minio
pgbackrest_repo:
minio:
cipher_type: aes-256-cbc
cipher_pass: 'YourSecurePassword!'
# Patroni SSL
patroni_ssl_enabled: true
# Pgbouncer SSL
pgbouncer_sslmode: require
合规检查脚本
可以使用以下命令检查当前配置的合规状态:
# 检查 SSL 配置
psql -c "SHOW ssl;"
# 检查密码加密方式
psql -c "SHOW password_encryption;"
# 检查 HBA 规则
psql -c "SELECT * FROM pg_hba_file_rules;"
# 检查用户过期时间
psql -c "SELECT usename, valuntil FROM pg_user WHERE valuntil IS NOT NULL;"
# 检查数据校验和
psql -c "SHOW data_checksums;"
合规文档
进行合规审计时,可能需要提供以下文档:
- 架构文档:系统架构图、网络拓扑图
- 配置清单:
pigsty.yml配置文件 - 用户清单:用户列表、角色分配
- 审计日志:PostgreSQL 日志、操作日志
- 备份记录:备份策略、恢复测试记录
- 监控告警:告警规则、响应流程