暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

UXDB安全加固-数据库与主机双重防线

原创 优炫数据库 1天前
4

概述

目标读者: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(软/硬限制):maxprocopenfilesdatasize 需满足并发进程与文件需求。
  • 共享内存/信号量:SHMMAXSEMMNI 等内核参数。
  • Huge Pages:vm.nr_hugepages,配合 shared_buffers 降低开销。

阻止服务器欺骗

本地用户可在服务器关闭时伪造服务器窃取密码。防护:将 unix_socket_directories 指向仅受信任本地用户可写的目录。

五、安全数据库专属能力

安全数据库在通用能力之上,增加面向高安全等级行业的机制。

1. 三权分立与安全报告

按管理员、审计员、安全员不同职责,提供对应的系统安全报表,报告安全参数值。

2. 自定义审计

独立审计系统,设置专门审计员,定义审计事件。

uxaudit.log = none # 审计类型:none / ... 按需开启

审计日志可读、支持操作记录与查询、审计策略设置、日志安全;支持日志自动覆盖防止磁盘占满:

logging_collector = on

3. 资源限制与监控

十个资源限制参数(max_connectionslogin_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. 推理控制

推理攻击 = 用户根据低安全级可见数据,推出同级或更高安全级的不可见信息(利用元组/属性/元素间的关联性)。

  • 推理规则定义数据间的依赖关系。
  • 信息泄露通道存在的两个条件:① 推理关系存在;② 推理左边所有列的标记最大值 < 右边任一列标记值。
  • 唯一性约束推理控制:主键/唯一约束含行级控制的三个伪列(plcolplcol_levelplcol_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 调度)则针对军、政、金融等高安全等级行业。据此可按安全等级选择版本并逐层启用,避免"普通版裸奔"或"安全版功能闲置"两种极端。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论