概述
目标读者:DBA、安全管理员。
用途:本文概述了UXDB安全与运行(SSL/加密/启动/资源限制)"与"安全数据库(审计/推理控制/客体重用/资源限制)"共内容,覆盖从通用加固到安全数据库专属能力。适用于等保合规建设与高安全等级行业的安全配置落地。
一、安全机制总览
UXDB 依据 GB/T 20273—2019《信息安全技术 数据库管理系统安全技术要求》 提供完整安全特性:
- 三权分立:管理员、安全员、审计员职责分离。
- 访问控制:身份鉴别、自主访问控制(DAC)、强制访问控制(MAC)、标记、数据流控制。
- 数据保护:用户数据完整性、保密性。
- 审计:内置安全审计系统。
- 加密:全库加密、列加密、表/行级访问授权、通信信道加密;支持国密 SM2/SM3/SM4/SM9 与 AES/DES/3DES/Blowfish/RC4。
二、口令与数据传输加密
- 口令默认以散列存储,推荐
password_encryption = scram-sha-256(挑战-响应,防止嗅探)。 - SCRAM 认证可绑定通道;GSSAPI 支持客户端与服务端加密。
三、SSL 连接
启用
# uxsinodb.conf
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
服务器在同一 TCP 端口同时监听普通与 SSL 连接,与客户端协商是否使用 SSL。
生成自签名证书(365 天)
openssl req -new -x509 -days 365 -nodes -text -out server.crt \
-keyout server.key -subj "/CN=yourdomain.com"
chmod 600 server.key
要求客户端证书(双向认证)
ssl_ca_file = 'root.crt'
# ux_hba.conf
hostssl all all 0.0.0.0/0 cert clientcert=1
服务器验证客户端证书是否由受信任 CA 签发,cn 属性匹配数据库用户名。
SSL 相关参数
| 参数 | 说明 |
|---|---|
ssl_ciphers |
SSL 密码列表(默认 HIGH:MEDIUM:+3DES:!aNULL) |
ssl_prefer_server_ciphers |
服务器优先选择密码 |
ssl_ecdh_curve |
ECDH 密钥交换曲线(默认 prime256v1) |
ssl_crl_file |
证书撤销列表(CRL) |
ssl_ca_file |
客户端证书的受信任 CA |
无 SSL 客户端:SSH 隧道
ssh -L 63333:localhost:5432 joe@foo.com
# 之后连接 localhost:63333 即通过加密隧道访问远端 5432
四、服务器启动与排障
uxdb$ ./uxdb -D <data_dir> # 本地集群
uxdb$ ./uxdb -Z -D <data_dir> # 分布式集群
常见启动/连接故障:
| 报错 | 原因 | 处理 |
|---|---|---|
could not bind IPv4 address ... Address already in use |
端口被占 | 检查是否已有实例运行,或换端口 |
Connection refused |
服务器未启动或未监听 TCP | 检查启动方式、listen_addresses、端口 |
Out of Memory: Killed process (uxdb) |
Linux 内存过量使用 | 调 vm.overcommit_memory,或配置 OOM 调整 |
资源限制
ulimit(软/硬限制):maxproc、openfiles、datasize需满足并发进程与文件需求。- 共享内存/信号量:
SHMMAX、SEMMNI等内核参数。 - Huge Pages:
vm.nr_hugepages,配合shared_buffers降低开销。
阻止服务器欺骗
本地用户可在服务器关闭时伪造服务器窃取密码。防护:将 unix_socket_directories 指向仅受信任本地用户可写的目录。
五、安全数据库专属能力
安全数据库在通用能力之上,增加面向高安全等级行业的机制。
1. 三权分立与安全报告
按管理员、审计员、安全员不同职责,提供对应的系统安全报表,报告安全参数值。
2. 自定义审计
独立审计系统,设置专门审计员,定义审计事件。
uxaudit.log = none # 审计类型:none / ... 按需开启
审计日志可读、支持操作记录与查询、审计策略设置、日志安全;支持日志自动覆盖防止磁盘占满:
logging_collector = on
3. 资源限制与监控
十个资源限制参数(max_connections、login_error_lock_times 等)防止服务器资源紧张。资源监控实现资源可控使用:
SELECT ux_size_pretty(ux_database_size('dbname'));
SELECT ux_size_pretty(ux_table_size('t'));
-- 当前活动会话
SELECT * FROM ux_stat_activity;
-- 终止会话
SELECT ux_cancel_backend(pid);
表空间资源限制:设定某表空间中单用户对象可用的空间上限,防止单个用户无限占用。
4. 客体重用
防止非法进程利用客体内存泄漏攻击:资源分配时不残留历史信息,资源回收时清除全部信息。
5. 推理控制
推理攻击 = 用户根据低安全级可见数据,推出同级或更高安全级的不可见信息(利用元组/属性/元素间的关联性)。
- 推理规则定义数据间的依赖关系。
- 信息泄露通道存在的两个条件:① 推理关系存在;② 推理左边所有列的标记最大值 < 右边任一列标记值。
- 唯一性约束推理控制:主键/唯一约束含行级控制的三个伪列(
plcol、plcol_level、plcol_scope);通过multilevel_unique_index选项控制,防止通过插入报错猜测主键值。
6. 基于任务优先级的 CPU 调度
sudo setcap cap_setuid,cap_sys_nice+ep /path/to/uxdb
结合 ux_set_user_nice 函数,为不同用户任务分配 CPU 优先级。
7. 物理安全保护
通过文件完整性保护工具实施:
cd <install>/bin
./ux_checker.sh -b # 对 bin 目录工具做物理保护
8. 并发会话限制
show max_connections;
按会话安全属性限定并发会话数量,超出时限制失败尝试。
9. 可信路径
UXDB 内部控制信息更新采用封锁机制(无用户使用时才修改并刷新),用户数据共享也通过封锁机制,因此不涉及可信路径问题。
总结
本文覆盖从通用加固(scram 口令、SSL、资源限制、启动排障)到安全数据库专属能力(三权分立、审计、客体重用、推理控制、表空间配额、CPU 调度)的完整安全体系。
其价值在于"分层落地":通用层(scram 口令 + SSL 双向认证 + 资源限制)是所有部署的安全底线;合规层(GB/T 20273 三权分立与审计)满足等保与涉密要求;安全数据库专属层(推理控制、客体重用、表空间配额、CPU 调度)则针对军、政、金融等高安全等级行业。据此可按安全等级选择版本并逐层启用,避免"普通版裸奔"或"安全版功能闲置"两种极端。




