外观
KingBaseES 安全参数
安全参数概述
KingBaseES 的安全参数是保护数据库安全的重要配置项,合理的安全参数配置可以提高数据库的安全性,防止未授权访问和数据泄露。安全参数主要包括认证参数、访问控制参数、加密参数、审计参数等。
认证参数
listen_addresses
- 描述:指定数据库监听的 IP 地址
- 默认值:'localhost'
- 取值范围:以逗号分隔的 IP 地址列表,或 '*' 表示所有地址
- 配置建议:
- 生产环境建议只监听必要的 IP 地址,避免使用 '*'
- 结合防火墙使用,限制访问源 IP
- 建议设置为具体的 IP 地址,如 '192.168.1.100'
port
- 描述:指定数据库监听的端口
- 默认值:54321
- 取值范围:1 ~ 65535
- 配置建议:
- 建议修改默认端口,避免端口扫描攻击
- 结合防火墙使用,限制访问端口
- 确保端口未被其他服务占用
password_encryption
- 描述:指定密码加密方式
- 默认值:scram-sha-256
- 取值范围:md5、scram-sha-256
- 配置建议:
- 建议使用 scram-sha-256,安全性更高
- md5 加密方式安全性较低,不建议在生产环境使用
- 升级时注意密码兼容问题
pam_service_name
- 描述:指定 PAM 服务名称
- 默认值:'kingbase'
- 取值范围:字符串
- 配置建议:
- 如需使用 PAM 认证,确保 PAM 服务配置正确
- 配置文件位置:/etc/pam.d/kingbase
ldap_url
- 描述:指定 LDAP 服务器 URL
- 默认值:无
- 取值范围:LDAP URL 格式
- 配置建议:
- 如需使用 LDAP 认证,确保 LDAP URL 配置正确
- 建议使用 ldaps:// 协议进行加密通信
访问控制参数
max_connections
- 描述:允许的最大并发连接数
- 默认值:100
- 取值范围:1 ~ 100000
- 配置建议:
- 根据实际业务需求设置,避免设置过大
- 结合 connection_limits 资源池使用,限制单个用户的连接数
- 过高的设置可能导致资源耗尽攻击
superuser_reserved_connections
- 描述:为超级用户预留的连接数
- 默认值:3
- 取值范围:0 ~ max_connections-1
- 配置建议:
- 建议保留 3 ~ 5 个连接用于超级用户应急访问
- 确保即使普通连接耗尽,超级用户仍能登录
tcp_keepalives_idle
- 描述:TCP 连接空闲时间
- 默认值:7200
- 取值范围:0 ~ 2147483647
- 配置建议:
- 建议设置为 300 ~ 600 秒
- 较短的时间可以更快地检测到死连接
- 防止攻击者占用大量连接资源
tcp_keepalives_interval
- 描述:TCP keepalive 探测间隔
- 默认值:75
- 取值范围:0 ~ 2147483647
- 配置建议:
- 建议设置为 30 ~ 60 秒
- 与 tcp_keepalives_idle 配合使用
tcp_keepalives_count
- 描述:TCP keepalive 探测次数
- 默认值:9
- 取值范围:0 ~ 2147483647
- 配置建议:
- 建议设置为 3 ~ 5 次
- 与 tcp_keepalives_idle 和 tcp_keepalives_interval 配合使用
加密参数
ssl
- 描述:是否启用 SSL 连接
- 默认值:off
- 取值范围:on、off、prefer
- 配置建议:
- 生产环境建议启用 SSL,设置为 on
- 确保配置了正确的 SSL 证书和密钥
- 建议使用 CA 签发的证书,避免自签名证书
ssl_cert_file
- 描述:SSL 证书文件路径
- 默认值:'server.crt'
- 取值范围:字符串
- 配置建议:
- 确保证书文件存在且权限正确(600)
- 证书应包含完整的证书链
- 定期更新证书,避免证书过期
ssl_key_file
- 描述:SSL 密钥文件路径
- 默认值:'server.key'
- 取值范围:字符串
- 配置建议:
- 确保密钥文件存在且权限正确(600)
- 密钥应妥善保管,避免泄露
- 建议使用强密钥,长度不小于 2048 位
ssl_ca_file
- 描述:SSL CA 证书文件路径
- 默认值:''
- 取值范围:字符串
- 配置建议:
- 建议配置 CA 证书,用于验证客户端证书
- 确保 CA 证书可信
- 定期更新 CA 证书
ssl_ciphers
- 描述:指定允许的 SSL 密码套件
- 默认值:'HIGH:MEDIUM:+3DES:!aNULL'
- 取值范围:OpenSSL 密码套件字符串
- 配置建议:
- 建议使用更安全的密码套件,如 'HIGH:!aNULL:!MD5:!3DES'
- 避免使用不安全的密码套件,如 RC4、DES
- 定期更新密码套件配置,跟随安全最佳实践
审计参数
audit_enabled
- 描述:是否启用审计功能
- 默认值:off
- 取值范围:on、off
- 配置建议:
- 生产环境建议启用审计功能
- 审计可以记录数据库的重要操作,便于安全审计和故障排查
audit_directory
- 描述:指定审计日志目录
- 默认值:'pg_audit'
- 取值范围:字符串
- 配置建议:
- 确保目录存在且权限正确(700)
- 建议将审计日志存储在独立的磁盘分区
- 定期清理审计日志,避免磁盘空间不足
audit_filename
- 描述:指定审计日志文件名模板
- 默认值:'audit_%Y%m%d_%H%M%S.log'
- 取值范围:字符串,支持 strftime 格式
- 配置建议:
- 建议包含时间戳,便于日志管理
- 定期归档审计日志
audit_rotation_size
- 描述:指定审计日志文件大小限制
- 默认值:10MB
- 取值范围:1 ~ 2147483647
- 配置建议:
- 建议根据审计日志量调整
- 过大的文件可能影响日志查询性能
- 过小的文件会导致日志文件过多
audit_rotation_age
- 描述:指定审计日志文件时间限制
- 默认值:1d
- 取值范围:1min ~ 1y
- 配置建议:
- 建议根据审计需求调整
- 结合 audit_rotation_size 使用
audit_statement_classes
- 描述:指定需要审计的语句类型
- 默认值:'READ,WRITE'
- 取值范围:以逗号分隔的语句类型列表
- 配置建议:
- 生产环境建议审计所有重要操作,如 'READ,WRITE,DDL,DML,DCL'
- 根据实际需求调整审计范围,避免审计日志过大
其他安全参数
cluster_name
- 描述:指定集群名称
- 默认值:'kingbase'
- 取值范围:字符串
- 配置建议:
- 建议设置有意义的集群名称,便于管理
- 避免使用默认名称,提高安全性
data_directory_mode
- 描述:指定数据目录权限
- 默认值:0700
- 取值范围:0000 ~ 0777
- 配置建议:
- 建议保持默认值 0700,只允许数据库用户访问
- 避免设置过松的权限,防止数据泄露
max_prepared_transactions
- 描述:指定最大预备事务数
- 默认值:0
- 取值范围:0 ~ max_connections
- 配置建议:
- 如需使用预备事务,根据实际需求设置
- 过高的设置可能导致资源耗尽
- 建议设置为 max_connections 的 10% ~ 20%
temp_file_limit
- 描述:指定每个会话的临时文件大小限制
- 默认值:-1(无限制)
- 取值范围:-1 ~ 2147483647
- 配置建议:
- 建议设置合理的限制,防止磁盘空间耗尽攻击
- 根据磁盘空间大小调整
- 建议设置为 1GB ~ 10GB
版本差异
V8 R6 安全参数
- 支持基本的认证和加密功能
- 审计功能相对简单
- 安全参数配置选项较少
V8 R7 安全参数
- 增强了认证和加密功能,支持更多认证方式
- 改进了审计功能,支持更细粒度的审计
- 增加了更多安全参数配置选项
- 增强了对安全漏洞的防护
- 支持更多的加密算法和密码套件
安全参数加固最佳实践
- 最小权限原则:只授予用户必要的权限,避免过度授权
- 定期更新密码:定期更换数据库用户密码,使用强密码策略
- 启用加密通信:配置 SSL 加密,保护网络传输安全
- 启用审计功能:记录重要操作,便于安全审计和故障排查
- 限制访问源:结合防火墙使用,限制数据库访问源 IP 和端口
- 定期备份配置文件:备份 kingbase.conf 和 sys_hba.conf 等配置文件
- 定期更新数据库版本:及时安装安全补丁,修复已知漏洞
- 监控安全事件:定期检查审计日志和错误日志,发现异常情况
常见问题(FAQ)
Q1:如何选择密码加密方式?
A1:建议使用 scram-sha-256 加密方式,安全性更高。md5 加密方式安全性较低,不建议在生产环境使用。升级时注意密码兼容问题,可能需要使用 password_encryption = 'scram-sha-256,md5' 进行过渡。
Q2:如何限制数据库访问源?
A2:可以通过以下方式限制数据库访问源:
- 配置 listen_addresses,只监听必要的 IP 地址
- 配置防火墙,限制访问 IP 和端口
- 配置 sys_hba.conf,限制允许访问的 IP 地址和认证方式
Q3:如何启用 SSL 加密?
A3:启用 SSL 加密需要以下步骤:
- 生成或获取 SSL 证书和密钥
- 配置 ssl = on
- 配置 ssl_cert_file 和 ssl_key_file
- 配置 ssl_ca_file(可选,用于验证客户端证书)
- 重启数据库服务
Q4:如何配置审计功能?
A4:配置审计功能需要以下步骤:
- 配置 audit_enabled = on
- 配置审计日志目录和文件名
- 配置审计旋转策略
- 配置需要审计的语句类型
- 重启数据库服务
Q5:如何防止 SQL 注入攻击?
A5:防止 SQL 注入攻击可以从以下几个方面入手:
- 使用参数化查询,避免直接拼接 SQL 语句
- 限制用户权限,避免使用超级用户
- 启用严格的语法检查
- 定期审计 SQL 语句
Q6:如何备份和恢复安全参数配置?
A6:可以通过以下方式备份和恢复安全参数配置:
- 备份 kingbase.conf 和 sys_hba.conf 等配置文件
- 使用 sys_dumpall --globals-only 备份全局配置
- 定期备份审计日志和安全相关日志
Q7:如何监控安全事件?
A7:可以通过以下方式监控安全事件:
- 定期检查审计日志,发现异常操作
- 定期检查错误日志,发现登录失败等异常情况
- 使用监控工具监控数据库连接和操作
- 配置告警策略,及时通知安全事件
Q8:如何处理安全漏洞?
A8:处理安全漏洞可以从以下几个方面入手:
- 及时关注 KingBaseES 安全公告
- 及时安装安全补丁
- 配置防火墙和入侵检测系统
- 定期进行安全扫描和渗透测试
- 制定安全事件响应计划
