| 版本号 | 日期 | 修改说明 | 编制人 | 审核人 |
|---|---|---|---|---|
| 1.0 | 2026.07.24 | 完成初稿 | 沈坤 | - |
1、核心资产
VexDB 的核心资产分为七类,覆盖数据、结构、访问、运行、审计、内存和密码资源,是数据库安全保护的主要对象。
| 核心资产 | 资产内容 | 资产价值 |
|---|---|---|
| 数据资产 | 业务数据、用户数据、交易数据等存储内容 | 数据库核心资源。泄露、篡改或丢失影响业务安全 |
| 数据库结构资产 | 模式、表、字段、索引、视图、存储过程、函数、约束等 | 描述数据组织和业务逻辑。非法修改影响业务正确性 |
| 数据库管理资产 | 用户、角色、权限、配置参数、安全策略等 | 控制访问范围和运行行为。错误配置影响整体安全 |
| 数据库运行资产 | 实例、进程、数据文件、日志文件及计算存储资源 | 支撑数据库服务运行。破坏导致服务不可用 |
| 数据库操作记录资产 | 访问日志、审计记录、运行日志、管理操作记录等 | 支撑安全分析、事件追踪和责任认定 |
| 数据库内存资产 | 内存中的业务数据、缓存、会话信息和认证凭证 | 运行过程中的敏感信息。泄露可能导致数据或凭证暴露 |
| 密码与密钥资产 | 加密密钥、口令摘要、认证凭证等密码资源 | 支撑身份认证和数据保护。泄露可能导致安全机制失效 |
核心资产的机密性、完整性和可用性,决定数据库安全运行和业务连续性。
2、安全风险和应对措施
VexDB 面临外部攻击、内部误操作、权限滥用和运行环境异常等风险,可能导致非法访问、数据泄露、数据篡改、身份冒用和服务不可用。主要风险与应对措施如下。
| 安全风险 | 风险描述 | 应对措施 |
|---|---|---|
| 非法访问风险 | 非授权主机连接数据库,获取非法访问入口 | 网络防火墙 |
| 身份认证风险 | 弱口令、凭证泄露或认证缺陷导致身份冒用 | 身份认证 |
| 通信安全风险 | 网络传输被窃听、伪造、重放或篡改 | 安全传输 |
| 权限控制风险 | 权限配置不当或权限提升导致越权访问 | 访问控制 |
| 数据安全风险 | 数据存储、传输、处理过程中发生泄露或篡改 | 透明加密、驱动加密、机密计算、动态脱敏、数据防篡改 |
| 密钥安全风险 | 密钥泄露、丢失或生命周期管理不足导致保护失效 | 密钥管理 |
| 操作追溯风险 | 数据访问和管理操作缺少记录,无法有效追责 | 数据库审计、数据防篡改 |
| 服务可用性风险 | 恶意请求或资源异常消耗导致性能下降或服务中断 | 资源安全 |
| 运行环境风险 | 不可信环境或异常运行环境导致数据暴露风险 | 驱动加密、机密计算、密钥管理 |
VexDB 通过网络防护、身份认证、访问控制、数据保护、密码保护、安全审计和资源管理等能力,降低非法访问、数据泄露、数据篡改和服务不可用等安全风险。
3、安全机制
VexDB 从接入、传输、访问、存储、计算、合规六个维度构建防御模型,各安全机制相互独立又相互配合。
3.1 网络防火墙
安全威胁:
- 非法来源接入:非授权 IP/网段主机尝试访问数据库服务,建立网络连接
- 数据库服务暴露:数据库监听地址或服务端口暴露于非可信网络,攻击者可进行端口扫描、服务探测等行为
- 非授权网络区域访问:不同安全区域之间缺少网络隔离,导致不满足要求的客户端尝试访问数据库服务
安全功能:
- 多维度网络接入控制:按照网络来源、目标数据库等维度配置接入规则,实现数据库服务访问边界控制
- 主机级:按客户端 IP 地址/网段限制数据库服务允许接入的来源范围
- 数据库级:按目标数据库限制客户端可建立连接的数据库范围
- 连接策略级:针对不同来源配置允许、拒绝以及认证方式等连接策略
- 多维度网络接入控制:按照网络来源、目标数据库等维度配置接入规则,实现数据库服务访问边界控制
防御效果(与安全威胁一一对应):
- 非法来源接入:主机级接入控制,非授权 IP/网段的连接请求在数据库连接建立阶段被拒绝,避免非法客户端访问数据库服务
- 数据库服务暴露:通过网络访问规则限制数据库服务可访问范围,减少端口扫描、连接探测等攻击风险
- 非授权网络区域访问:通过来源地址控制和网络隔离策略,限制不同网络区域之间的数据库访问边界
其他效果:
- 性能:规则在数据库连接建立阶段执行,不参与 SQL 请求处理流程,对查询性能无影响
- 易用性:基于
pg_hba.conf文本配置,无需重启即可通过pg_reload_conf()重新加载生效
使用流程:
-- 编辑 pg_hba.conf,按"主机/数据库/用户"维度配置接入规则(对应:非法来源接入、数据库服务暴露) -- 格式:host 数据库 用户 地址 认证方式;自上而下匹配,首条命中生效 host all u1 192.168.1.0/24 sm3 -- 仅允许可信网段,强制国密 SM3 认证 hostssl all all 0.0.0.0/0 cert -- 其余来源须 SSL 加密 + 证书认证 host all all 0.0.0.0/0 reject -- 显式拒绝兜底(对应:非授权网络区域访问) -- 重载配置生效(无需重启) SELECT pg_reload_conf(); -- 验证:非授权来源连接被拒 -- vsql -h 10.0.0.1 -U u1 -d vexdb → FATAL: no pg_hba.conf entry
3.2 身份认证
安全威胁:
- 弱口令攻击:用户设置简单口令、常用口令或低复杂度口令,容易被字典攻击破解
- 暴力破解:攻击者通过大量认证请求持续尝试不同口令,获取合法用户访问权限
- 口令泄露:用户口令因配置泄露、人工泄露、凭证复用等原因被攻击者获取
- 认证信息窃取:攻击者通过截获或分析认证交互信息,尝试恢复用户认证凭证
- 默认账户风险:数据库默认账户未及时修改或未禁用,可能被攻击者利用进行非法登录
- 账户生命周期风险:长期未使用账户、过期账户或异常账户仍保持登录能力,增加非法访问风险
- 非法身份登录:攻击者使用窃取的账户凭证冒充合法用户尝试登录数据库
安全功能:
- 用户生命周期管理:支持用户创建、修改、锁定、解锁、删除等账户管理操作
- 口令复杂度校验:支持口令长度、字符类型等复杂度策略配置,限制低强度口令使用
- 弱口令检测:支持常见弱口令检测,阻止高风险口令设置
- 口令安全存储:采用不可逆密码哈希方式存储用户认证信息,避免明文口令泄露
- 安全认证协议:支持基于挑战响应机制的认证协议,避免认证过程中直接传输明文口令
- 认证失败限制:支持连续认证失败次数限制,超过阈值后自动锁定账户
- 密码有效期管理:支持密码有效期配置,到期提醒或强制修改密码
- 多因素认证:支持证书认证、Kerberos 等增强认证方式,提高身份可信度
- 认证会话管理:支持认证会话超时控制,降低长期未使用会话风险
防御效果(与安全威胁一一对应):
- 弱口令攻击:口令复杂度校验 + 弱口令检测,在用户创建或修改密码阶段阻止低强度口令
- 暴力破解:认证失败限制,连续认证失败达到阈值后自动锁定账户,降低口令爆破风险
- 口令泄露:口令安全存储,系统中不保存明文密码,降低凭证泄露后的影响
- 认证信息窃取:安全认证协议采用挑战响应机制,避免认证过程中的明文口令传输
- 默认账户风险:用户生命周期管理 + 弱口令检测,支持默认账户修改、禁用及安全管理
- 账户生命周期风险:密码有效期管理 + 用户管理,对长期未使用或过期账户进行限制
- 非法身份登录:多因素认证增强身份可信度,降低凭证泄露导致的冒用风险
其他效果:
- 性能:认证过程在连接建立阶段执行,认证成功后的 SQL 执行过程无额外性能开销
- 易用性:支持参数化配置认证策略,账户策略可统一管理
- 可扩展性:支持外部认证源扩展,如 LDAP、Kerberos 等认证方式
使用流程:
-- 1. 配置口令复杂度与失败锁定策略(对应:弱口令攻击、暴力破解) ALTER SYSTEM SET password_policy = 1; -- 校验至少 1 类有效字符 ALTER SYSTEM SET password_min_length = 8; ALTER SYSTEM SET password_min_uppercase = 1; -- 至少 1 个大写字母 ALTER SYSTEM SET password_min_lowercase = 1; -- 至少 1 个小写字母 ALTER SYSTEM SET password_min_digital = 1; -- 至少 1 个数字 ALTER SYSTEM SET password_min_special = 1; -- 至少 1 个特殊字符 ALTER SYSTEM SET failed_login_attempts = 5; -- 连续失败 5 次锁定 ALTER SYSTEM SET password_lock_time = 1440; -- 锁定 1440 分钟 ALTER SYSTEM SET password_reuse_time = 60; -- 60 天内口令不可复用 SELECT pg_reload_conf(); -- 2. 载入弱口令字典,拦截常见弱口令(对应:弱口令攻击) CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('123456', 'password', 'qwerty'); -- 3. 弱口令创建被拒 CREATE USER u1 PASSWORD '123456'; -- ERROR: Password is too weak -- 4. 合规口令 + 设置有效期(对应:账户生命周期风险) CREATE USER u1 PASSWORD 'Vex@12345' VALID UNTIL '2026-12-31'; -- 5. 验证连续失败锁定(对应:暴力破解) -- 用错误口令连续登录 u1 五次 → 账户被自动锁定
3.3 安全传输
安全威胁:
- 通信身份冒用:攻击者伪造客户端或服务端身份,尝试建立非法通信连接
- 通信数据重放:攻击者截获历史通信数据并重新发送,尝试影响正常业务流程
- 证书伪造:使用非法、自签或伪造证书冒充合法通信实体,实施中间人攻击
- 网络中间人窃听:攻击者在客户端与服务端之间监听通信内容,获取敏感数据
- 传输数据篡改:攻击者修改传输过程中的 SQL 请求或响应数据,影响数据完整性
- 明文传输泄露:未启用加密传输时,口令、SQL 语句及业务数据可能被网络窃取
安全功能:
- TLS 协议:支持 TLS 1.2 加密通信通道,对传输数据进行加密保护
- TLCP 协议:支持国密 TLCP 协议,满足国密场景下安全传输需求
- 双向证书认证:支持客户端与服务端基于数字证书进行双向身份验证
- 证书有效校验:支持证书有效期、签发机构及合法性校验
- 算法套件配置:支持配置加密算法套件,限制弱加密算法使用
防御效果(与安全威胁一一对应):
- 通信身份冒用:通过证书认证机制验证通信双方身份,非法实体无法建立可信加密连接
- 通信数据重放:TLS/TLCP 协议通过记录序列号及完整性校验机制,异常重放数据无法通过校验
- 证书伪造:通过证书有效性校验,非法、过期或不可信证书无法用于建立安全连接
- 网络中间人窃听:TLS/TLCP 加密通信通道保护传输数据,防止网络窃听获取明文内容
- 传输数据篡改:TLS/TLCP 提供数据完整性校验,传输过程中被修改的数据无法通过验证
- 明文传输泄露:通过强制启用加密通信和限制弱算法套件,避免敏感数据明文传输
其他效果:
- 性能:支持 TLS 硬件加速能力,加解密处理开销可控
- 可扩展性:支持 TLS/TLCP 双协议栈,满足国际算法与国密算法应用场景
使用流程:
-- 1. 服务端开启 SSL 并强制国密套件(对应:中间人窃听、明文传输泄露) vb_guc set -D $PGDATA -c "ssl=on" vb_guc set -D $PGDATA -c "require_ssl=on" vb_guc set -D $PGDATA -c "ssl_ciphers='ECDHE-ECDSA-SM4-CBC-SM3'" -- 仅启用国密 SM 套件(国密 TLCP) vb_guc set -D $PGDATA -c "ssl_cert_file='$PGDATA/server.crt'" vb_guc set -D $PGDATA -c "ssl_key_file='$PGDATA/server.key'" vb_guc set -D $PGDATA -c "ssl_ca_file='$PGDATA/demoCA/cacert.pem'" vb_ctl restart -D $PGDATA -- 2. 在 pg_hba.conf 首行强制 SSL + 证书双向认证(对应:通信身份冒用、证书伪造) -- hostssl all u1 0.0.0.0/0 cert -- 3. 客户端配置证书后加密连接(对应:传输数据篡改、通信数据重放) -- export PGSSLMODE=verify-ca PGSSLCERT=.../client.crt PGSSLKEY=.../client.key PGSSLROOTCERT=.../cacert.pem -- vsql -h <db_ip> -p 5432 -d vexdb -U u1 -r安全威胁:
- 未授权访问:无数据库对象访问权限的用户尝试读取或修改数据
- 越权访问:已授权用户访问职责范围之外的数据库对象或敏感数据
- 权限提升:普通用户获取超出授权范围的角色或管理权限
- 权限滥用:合法用户利用已有权限执行超出业务职责范围的操作
- 权限集中风险:单一管理员同时拥有用户管理、权限管理、审计管理等全部权限,缺少职责分离
- 特权用户数据访问:高权限用户利用管理权限查看不应访问的业务数据
- 合规权责分离缺失:用户管理、权限管理、审计管理未进行角色隔离,无法满足等保/商密要求
- 敏感数据越权读取:用户访问安全级别高于自身权限的数据
- 敏感数据越权流动:高安全级别数据被低安全级别主体访问或传播
- 特权用户绕过访问控制:管理员权限绕过普通访问控制策略访问敏感对象
- 跨范围数据访问:通过复杂查询、关联查询等方式绕过数据隔离限制
安全功能:
- 自主访问控制:基于 RBAC 角色权限模型,实现用户、角色与数据库对象权限关联,支持细粒度对象权限控制
- 三权分立:支持安全管理员、系统管理员、审计管理员角色分离,实现用户管理、权限管理、审计管理职责隔离
- 强制访问控制:支持表、行、列级安全标记,根据用户安全级别限制敏感数据访问范围
- 行级访问控制:支持基于策略的行级数据过滤,查询过程中自动添加访问约束,对应用透明
防御效果(与安全威胁一一对应):
- 未授权访问:通过对象权限校验,无访问权限的用户无法读取或修改数据库对象
- 越权访问:通过细粒度权限控制,仅允许用户访问授权范围内的数据对象
- 权限提升:通过 RBAC 角色管理和最小权限原则,限制用户获取额外权限
- 权限滥用:通过最小权限控制,降低用户持有过度权限导致的数据风险
- 权限集中风险:通过三权分立,用户、权限、安全策略等管理职责相互隔离
- 特权用户数据访问:通过强制访问控制,对敏感数据访问进行额外安全级别限制
- 合规权责分离缺失:通过三权分立满足等保/商密关于职责分离要求
- 敏感数据越权读取:通过强制访问控制,用户安全级别低于数据标记时禁止访问
- 敏感数据越权流动:通过强制访问控制和行级访问控制,限制敏感数据向低安全级别主体流动
- 特权用户绕过访问控制:通过强制访问控制策略,限制管理员绕过安全策略访问敏感数据
- 跨范围数据访问:通过行级访问控制,在查询执行过程中自动增加过滤条件,避免通过关联查询绕过隔离
其他效果:
- 性能:权限检查、标签检查、行级过滤均在查询优化和执行阶段完成,对业务访问性能影响可控
- 易用性:支持角色批量授权、安全策略统一配置,行级访问控制对应用透明
- 可扩展性:支持对象、行、列多级访问控制粒度,满足不同安全等级保护需求
使用流程:
-- 自主访问控制 RBAC:按最小权限授权(对应:未授权访问、越权访问、权限提升) CREATE ROLE r1; GRANT USAGE ON SCHEMA public TO r1; GRANT SELECT ON t1 TO r1; CREATE USER u1 PASSWORD 'Vex@12345'; GRANT r1 TO u1; -- 验证:u1 执行 DELETE FROM t1 → ERROR: permission denied -- 三权分立:系统/安全/审计管理员相互制衡(对应:权限集中风险、合规权责分离缺失) ALTER SYSTEM SET enable_separation_of_duty = on; -- 重启生效 CREATE USER u2 PASSWORD 'Vex@12345' SYSADMIN; -- 系统管理员:运维、对象、参数 CREATE USER u3 PASSWORD 'Vex@12345' SSOADMIN; -- 安全管理员:用户与安全策略 CREATE USER u4 PASSWORD 'Vex@12345' AUDITADMIN; -- 审计管理员:审计策略与日志 -- 验证:u3 无权创建用户 -- u3 执行 CREATE USER → ERROR: permission denied -- 强制访问控制 MAC:按密级限制敏感数据(对应:敏感数据越权读取、特权用户绕过访问控制) ALTER SYSTEM SET ogmac_enable_mac = on; -- 开启强制访问控制 CREATE SECURITY LABEL l1 'L10:G1'; -- 高密级 CREATE SECURITY LABEL l2 'L5:G1'; -- 低密级 SECURITY LABEL ON TABLE t1 IS 'l1'; -- 客体(表)高密级 SECURITY LABEL ON ROLE u1 IS 'l2'; -- 主体(用户)低密级 -- 验证:u1 密级低于 t1,读取被拒 -- u1 执行 SELECT * FROM t1 → ERROR -- 行级访问控制 RLS:按会话变量过滤行(对应:跨范围数据访问) CREATE ROW LEVEL SECURITY POLICY p1 ON t1 USING (c2 = current_setting('app.dept')); ALTER TABLE t1 ENABLE ROW LEVEL SECURITY; -- SET app.dept = 'd1'; SELECT * FROM t1; -- 仅返回 c2='d1' 的行
3.5 安全审计
安全威胁:
- 审计日志篡改:攻击者修改或删除审计记录,隐藏真实操作行为
- 攻击行为隐匿:关闭审计功能或绕过审计策略,使关键操作无法被记录
- 恶意操作抵赖:用户否认执行过敏感操作,无法通过审计记录进行追溯
- 审计日志容量耗尽:大量无效操作产生海量日志,导致关键审计记录无法有效保存
- 特权用户操作不可追溯:管理员等高权限用户操作缺少独立审计记录,无法进行责任认定
安全功能:
- 细粒度审计策略:支持按照用户、操作类型、数据库对象、操作结果等维度配置审计范围
- 系统审计:支持对权限变更、访问操作、密码变更、登录失败等关键安全事件进行记录
- 日志安全保护:支持审计日志安全存储,防止未授权修改或删除
- 日志容量控制:支持审计日志空间、文件数量阈值配置,避免日志无限增长
- 日志查询分析:支持按照时间、用户等条件查询审计记录(
pg_query_audit) - 审计员独立管理:支持独立审计管理员管理审计数据,降低高权限用户篡改审计记录风险
防御效果(与安全威胁一一对应):
- 审计日志篡改:日志安全保护 + 审计员独立管理,限制非授权用户修改或删除审计记录
- 攻击行为隐匿:系统审计 + 细粒度审计策略,对关键安全事件进行持续记录,避免操作无痕
- 恶意操作抵赖:细粒度审计策略,记录操作用户、时间、对象及操作内容,实现行为追溯
- 审计日志容量耗尽:日志容量控制,通过空间和文件数量限制保障审计记录持续保存
- 特权用户操作不可追溯:审计员独立管理,对管理员等特权用户行为进行独立记录和审查
其他效果:
- 性能:审计日志采用异步记录机制,降低审计功能对事务处理性能影响
- 易用性:支持标准 SQL 查询审计日志(
pg_query_audit),无需额外分析工具
使用流程:
-- 1. 开启审计并配置日志目录与容量(对应:攻击行为隐匿、审计日志容量耗尽) ALTER SYSTEM SET enable_audit = on; ALTER SYSTEM SET audit_directory = '$PGDATA/vb_audit_log'; ALTER SYSTEM SET audit_directory_size = 10240; -- 目录最大 10240MB ALTER SYSTEM SET audit_directory_full_policy = 1; -- 满目录处理策略 SELECT pg_reload_conf(); -- 2. 创建审计策略,细粒度记录指定表操作(对应:恶意操作抵赖、特权用户操作不可追溯) CREATE AUDIT POLICY ap1 ON TABLE t1; SELECT * FROM audit_policy; -- 查看已建策略 -- 3. 按时间区间查询审计日志 SELECT * FROM vb_audit_log('2026-07-22 00:00:00', now()) WHERE polname = 'ap1';
3.6 驱动加密
安全威胁:
- 传输环节信息泄露:客户端与数据库服务端通信过程中,敏感列数据可能被窃听
- 存储环节信息泄露:数据库以明文形式存储敏感数据,数据库文件泄露可能导致数据暴露
- 存储介质泄露:磁盘文件、备份文件或数据镜像被非法获取,导致敏感数据泄露
- 服务端数据窥探:数据库管理员、云环境或不可信运行环境可能直接查看敏感业务数据
- 密文数据篡改:攻击者修改、替换数据库中的密文数据,导致业务数据被非法改变
- 应用侧密钥泄露:加密密钥管理不当可能导致加密数据被恢复
安全功能:
- 客户端透明加密:通过数据库驱动实现数据自动加密和解密,业务应用无需修改 SQL
- 列级数据加密:支持指定敏感列进行加密存储,实现不同数据列差异化保护
- 密文等值查询:支持基于密文的等值查询,客户端对查询条件自动加密,服务端完成密文匹配
- 密文完整性校验:加密数据同时生成 MAC 校验值,客户端读取数据时自动验证完整性
- 客户端密钥管理:加密密钥和 MAC 密钥由客户端管理,数据库服务端不保存用户明文密钥
- 密文存储保护:数据库存储内容、索引数据等持久化内容均以密文形式保存
防御效果(与安全威胁一一对应):
- 传输环节信息泄露:客户端驱动对敏感数据进行加密后传输,网络窃听无法获取明文数据
- 存储环节信息泄露:敏感列以密文形式存储,数据库文件泄露后无法直接读取业务数据
- 存储介质泄露:磁盘文件、备份文件中的敏感字段为密文,无客户端密钥无法恢复明文
- 服务端数据窥探:服务端仅保存和处理密文数据,数据库管理员无法直接查看敏感字段内容
- 密文数据篡改:通过 MAC 完整性校验机制,检测密文非法修改或替换,校验失败的数据无法正常解密使用
- 应用侧密钥泄露:通过客户端密钥管理机制,降低密钥集中存储导致的数据泄露风险
与机密计算的关系:
- 驱动加密主要解决数据在客户端、传输过程以及数据库存储阶段的机密性和完整性保护,通过客户端加密实现密文存储、密文等值查询以及密文完整性校验。
- 机密计算主要解决服务端参与复杂计算场景下的数据保护,通过可信执行环境保护计算过程中的明文数据。
其他效果:
- 性能:加解密和 MAC 计算主要在客户端完成,减少服务端明文处理开销
- 易用性:通过驱动自动完成加密、完整性校验、查询改写及解密,业务 SQL 基本无需调整
- 安全性:数据库服务端无法直接获取敏感字段明文,同时可检测密文数据非法修改
使用流程:
-- 1. 创建客户端主密钥 CMK(密钥存于客户端,对应:应用侧密钥泄露) CREATE CLIENT MASTER KEY cmk1 WITH (KEY_STORE = localkms, KEY_PATH = "key_path_value", ALGORITHM = RSA_2048); -- 2. 创建列加密密钥 CEK,绑定 CMK CREATE COLUMN ENCRYPTION KEY cek1 WITH VALUES (CLIENT_MASTER_KEY = cmk1, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256); -- 3. 创建加密表,敏感列经驱动加密后密文落盘(对应:存储环节泄露、服务端数据窥探) CREATE TABLE t1 ( c1 INT, c2 TEXT ENCRYPTED WITH (column_encryption_key = cek1, encryption_type = DETERMINISTIC) ); -- 4. 经密态驱动写入与等值查询(对应:传输环节泄露、密文数据篡改) -- 客户端驱动自动加解密并校验 MAC,服务端全程只处理密文 INSERT INTO t1 VALUES (1, 'v1'); SELECT * FROM t1 WHERE c2 = 'v1'; -- 5. 验证:服务端存储为密文 -- \d t1 → c2 列 Modifiers = encrypted
3.7 机密计算
规划中。
3.8 密码函数
安全威胁:
- 弱密码算法风险:使用 DES、MD5 等已淘汰算法保护数据,导致加密数据或摘要结果易被破解
- 密码算法不合规:未采用符合国家密码管理要求或行业标准的密码算法,无法满足安全合规要求
- 存储数据明文风险:敏感数据未经过密码函数加密直接存储,数据库泄露后可能造成数据暴露
- 数据完整性校验不足:存储或传输过程中缺少密码校验机制,无法发现数据被非法修改
- 随机数可预测:随机数生成能力不足导致密钥、盐值、初始化向量等密码参数安全性降低
- 口令派生强度不足:直接使用低强度口令生成密钥,导致密钥容易被暴力破解
安全功能:
- 加密函数:支持 AES、SM4 等对称密码算法,实现数据加密保护
- 解密函数:支持密文恢复明文,用于授权场景下的数据访问
- 哈希函数:支持 SHA256、SM3 等密码杂凑算法,实现数据摘要和完整性校验
- 密钥派生函数:支持 PBKDF2 等算法,将用户口令安全派生为密码密钥
- 随机数函数:提供安全随机数生成能力,用于密钥、盐值、初始化向量等密码参数生成
- 国密 + 国际双算法体系:同时支持 SM 系列国密算法和国际通用密码算法
防御效果(与安全威胁一一对应):
- 弱密码算法风险:提供 AES、SM4、SHA256、SM3 等安全密码算法,避免使用已淘汰弱算法保护敏感数据
- 密码算法不合规:支持国密 SM 系列和国际标准密码算法,满足不同安全合规场景需求
- 存储数据明文风险:通过加密函数对敏感数据进行加密后存储,数据库泄露后无法直接获取明文数据
- 数据完整性校验不足:通过哈希函数生成数据摘要,检测数据是否发生非法修改
- 随机数可预测:通过安全随机数函数生成高质量随机值,提高密钥、盐值及初始化向量安全性
- 口令派生强度不足:通过 PBKDF2 等密钥派生算法增加口令破解成本,提高派生密钥安全性
其他效果:
- 性能:密码函数作为数据库内置能力提供,减少外部密码服务调用开销
- 易用性:支持 SQL 直接调用密码函数,无需额外部署密码组件
- 可扩展性:同时支持国际密码算法和国密算法,适配不同安全应用场景
使用流程:
-- 1. 对称加密:敏感数据加密后存储(对应:存储数据明文风险、弱密码算法) SELECT gs_encrypt('data', '1', 'SM4'); -- 国密 SM4 SELECT gs_decrypt(gs_encrypt('data', '1', 'SM4'), '1', 'SM4'); -- 解密还原 SELECT gs_encrypt('data', '1', 'AES128'); -- 国际 AES128 -- 2. 哈希:数据摘要与完整性校验(对应:数据完整性校验不足、弱密码算法) SELECT gs_hash('data', 'sm3'); -- 国密 SM3 SELECT gs_hash('data', 'sha256'); -- 国际 SHA256 -- 3. 安全随机数:生成密钥、盐值(对应:随机数可预测) SELECT gen_random_uuid(); -- 4. 口令派生:认证与口令存储内部基于 PBKDF2 派生,避免低强度口令直接生成密钥(对应:口令派生强度不足)
安全威胁:
- 磁盘窃取:物理存储介质、虚拟磁盘文件被非法获取,导致数据库数据泄露
- 数据文件泄露:操作系统用户、存储管理员直接访问数据库文件获取明文数据
- 存储残留泄露:WAL、临时文件、备份文件等持久化内容包含敏感明文信息
- 备份介质丢失:脱机备份文件被带离安全环境后,数据失去保护
- 存储层数据篡改:攻击者直接修改数据库底层文件,影响数据完整性
安全功能:
- 全量存储加密:支持对表数据、索引、日志、临时文件等存储内容自动加解密,对业务应用透明
- 密钥分层管理:支持根密钥、主密钥、数据加密密钥多级密钥体系,实现密钥隔离管理
- 外部密钥管理:支持通过密码卡/HSM 等外部密钥设备保护根密钥
- 密钥轮转机制:支持密钥周期性更新,降低长期密钥泄露风险
- 透明访问控制:数据库正常运行过程中自动完成加解密,应用无需感知加密过程
防御效果(与安全威胁一一对应):
- 磁盘窃取:全量存储加密,数据库文件以密文形式保存,非法获取存储介质无法直接读取数据
- 数据文件泄露:存储层自动加密,操作系统用户或存储管理员仅能获取密文数据
- 存储残留泄露:对 WAL、临时文件、备份文件等敏感存储内容进行加密保护,避免残留数据泄露
- 备份介质丢失:备份数据以密文形式保存,介质丢失后无密钥无法恢复明文
- 存储层数据篡改:通过密文完整性校验机制检测非法修改,防止底层文件被无感篡改
其他效果:
- 性能:支持硬件密码设备加速密码运算,降低透明加密对数据库读写性能影响
- 易用性:创建加密存储空间后,业务 SQL 无需修改,数据库自动完成加解密
- 安全性:数据库文件、备份文件与日志文件均受到统一加密保护
使用流程:
-- 0. 配置密码卡环境变量(写入 ~/.bashrc 后 source 生效) -- export CRYPTDEV_TYPE=gdaccard CRYPTDEV_LIBPATH=/opt/card/lib CRYPTDEV_KEY=master_key -- 1. 开启透明加密(POSTMASTER 参数,需重启)(对应:磁盘窃取、存储残留泄露) ALTER SYSTEM SET enable_tde = on; -- vb_ctl restart -D $PGDATA -- 2. 创建加密表,数据自动加解密(对应:数据文件泄露、备份介质丢失) CREATE TABLE t1 ( c1 INT, c2 TEXT ) WITH (enable_tde = on, dek_info = 1); -- dek_info 指定密钥索引 -- 3. 正常读写,对应用透明 INSERT INTO t1 VALUES (1, 'v1'); CHECKPOINT; -- 触发落盘 -- 4. 验证:物理文件为密文 SELECT pg_relation_filepath('t1'); -- hexdump -C $PGDATA/base/<...>/<file> → 密文,无可读明文
3.10 数据防篡改
安全威胁:
- 业务数据非法修改:攻击者直接修改业务数据,伪造交易记录或历史状态
- 历史记录删除:删除历史变更记录,破坏数据演变过程的完整性
- 历史记录伪造:非法插入虚假历史记录,制造错误业务轨迹
- 操作行为抵赖:用户否认执行过的数据修改操作,无法证明原始变更过程
- 审计证据破坏:篡改数据变更记录,影响安全审计和责任追踪
安全功能:
- 防篡改数据表:支持创建防篡改表,对业务数据变更自动生成历史记录
- 历史版本记录:每次 INSERT、UPDATE、DELETE 操作自动记录变更前后状态
- 哈希完整性校验:基于数据摘要生成完整性校验信息,检测历史记录非法修改
- 追加式历史存储:历史记录仅支持追加,不允许用户直接修改或删除
- 全局事件链管理:通过全局事件记录表关联多个数据变更事件,形成完整追溯链
防御效果(与安全威胁一一对应):
- 业务数据非法修改:防篡改数据表 + 哈希完整性校验,数据修改过程自动生成历史记录,非法修改可被检测
- 历史记录删除:追加式历史存储,历史记录禁止直接删除,删除行为会破坏完整性校验链
- 历史记录伪造:历史版本记录 + 哈希校验,伪造记录无法通过完整性验证
- 操作行为抵赖:历史记录保存用户、时间、操作类型等信息,支持对数据变更行为进行追溯
- 审计证据破坏:全局事件链管理,数据变更记录形成关联链路,提高审计证据可信度
其他效果:
- 性能:哈希摘要在数据变更阶段同步生成,额外计算开销可控
- 易用性:通过数据库表属性开启防篡改能力,业务 SQL 无需额外改造
- 可追溯性:历史记录自动维护,无需额外 ETL 或外部审计系统
使用流程:
-- 1. 创建防篡改模式(账本 Schema),其下行存表自动具备防篡改属性(对应:业务数据非法修改) CREATE SCHEMA s1 WITH BLOCKCHAIN; -- 2. 建表,系统自动追加 hash 列并登记历史表(对应:历史记录伪造) CREATE TABLE s1.t1 (c1 INT, c2 TEXT, c3 NUMERIC); -- 3. 正常 DML,操作记入历史表与全局区块表(对应:操作行为抵赖) INSERT INTO s1.t1 VALUES (1, 'v1', 5000.00); UPDATE s1.t1 SET c3 = 5500.00 WHERE c1 = 1; -- 4. 校验数据一致性(对应:历史记录删除、历史记录伪造) SELECT pg_catalog.ledger_hist_check('s1', 't1'); -- t 完整 / f 检测到篡改 SELECT pg_catalog.ledger_gchain_check('s1', 't1'); -- 校验全局区块表 -- 5. 审计管理员查看历史记录(历史表只追加,不可改;对应:审计证据破坏) -- SELECT * FROM blockchain.s1_t1_hist; -- SELECT * FROM gs_global_chain;
3.11 动态脱敏
安全威胁:
- 敏感信息泄露:身份证号、手机号、银行卡号等敏感字段查询时直接返回明文
- 权限范围外信息暴露:具有数据查询权限的用户查看超出业务职责范围的敏感信息
- 查询输出泄露:查询结果、数据导出等输出渠道包含敏感明文,导致二次传播风险
- 应用场景差异化需求不足:不同角色、不同业务场景无法按照安全要求展示不同数据内容
安全功能:
- 细粒度脱敏策略:支持按照用户、角色、数据库对象、字段等维度配置脱敏规则
- 多种脱敏算法:支持遮蔽、替换、哈希等脱敏方式,满足不同敏感数据保护需求
- 实时动态脱敏:查询结果返回阶段实时执行脱敏处理,不改变数据库中原始数据
- 角色差异化展示:根据访问主体身份动态返回不同数据视图
- 访问路径防绕过:支持 SQL 查询、视图访问、数据导出等数据库访问路径统一执行脱敏策略
防御效果(与安全威胁一一对应):
- 敏感信息泄露:细粒度脱敏策略 + 脱敏算法,根据策略自动隐藏敏感字段内容,避免明文暴露
- 权限范围外信息暴露:角色差异化展示,根据访问用户身份返回对应脱敏结果,降低敏感数据泄露风险
- 查询输出泄露:访问路径防绕过,查询和导出等数据库输出场景统一返回脱敏数据
- 应用场景差异化需求不足:动态脱敏策略支持不同角色采用不同展示规则,满足多业务场景数据共享需求
其他效果:
- 性能:脱敏处理在查询结果返回阶段完成,对数据存储和查询执行影响较小
- 易用性:通过策略配置实现动态生效,无需修改应用代码
- 安全性:敏感数据保持原始存储状态,仅在展示阶段进行保护
使用流程:
-- 1. 为敏感列定义资源标签(对应:敏感信息泄露) CREATE RESOURCE LABEL rl1 ADD COLUMN(u1.t1.c2); -- 2. 创建脱敏策略,绑定业务角色 r1(对应:权限范围外信息暴露、角色差异化展示) CREATE MASKING POLICY mp1 creditcardmasking ON LABEL(rl1) FILTER ON ROLES(r1); -- 3. 同一 SQL,不同身份返回不同结果 -- 管理员(不在 FILTER 覆盖范围)查询: SELECT c1, c2 FROM t1; -- 返回:1 | 13812345678 -- 业务角色 r1(被策略覆盖)查询: SELECT c1, c2 FROM t1; -- 返回:1 | 138****5678 -- 4. 访问路径统一脱敏,导出同样脱敏(对应:查询输出泄露、防绕过) -- COPY (SELECT c2 FROM t1) TO '/tmp/out.csv'; → 导出内容仍为脱敏值
3.12 密钥管理
安全威胁:
- 密钥泄露:根密钥、主密钥或数据密钥泄露导致加密保护失效
- 密钥明文存储:密钥以明文形式保存在配置文件或磁盘中,被非法获取
- 默认密钥风险:产品内置固定密钥或交付过程中的密钥管理不当导致密钥泄露
- 密钥生命周期失控:密钥长期不更新、不轮换或无法安全销毁,增加泄露风险
- 密钥集中管理不足:多个系统独立管理密钥,导致密钥分散、权限失控和审计困难
安全功能:
- 外部密钥管理服务对接:支持通过 PKCS#11 等接口对接企业级 KMS/HSM,实现密钥统一管理
- 硬件密钥保护:支持密码卡等硬件安全设备保存根密钥,提高密钥抗提取能力
- 密钥不落盘:数据库不保存用户密钥明文,通过密钥标识、索引等方式调用外部密钥服务
- 密钥生命周期管理:支持密钥生成、启用、停用、轮换、销毁等全生命周期管理
- 密钥分层管理:支持根密钥、密钥加密密钥、数据密钥多级密钥体系,降低单密钥泄露影响范围
- 国密密码体系支持:支持 SM2/SM3/SM4 等国密算法相关密钥管理
防御效果(与安全威胁一一对应):
- 密钥泄露:硬件密钥保护 + 外部密钥管理服务,密钥与业务数据分离,服务器被攻击时无法直接获取密钥
- 密钥明文存储:密钥不落盘,数据库本地仅保存密钥引用信息,避免配置文件或数据目录泄露密钥
- 默认密钥风险:外部密钥管理服务,使用企业自主管理密钥,避免产品默认密钥或固定密钥风险
- 密钥生命周期失控:密钥生命周期管理,支持定期轮换和安全销毁,降低长期使用风险
- 密钥集中管理不足:统一密钥管理接口,实现多业务场景下密钥集中管理、权限控制和审计追踪
其他效果:
- 安全性:密钥独立于业务数据管理,降低数据泄露后密钥同时暴露风险
- 可扩展性:支持企业级 KMS/HSM 接入,满足不同部署环境下密钥管理要求
- 易用性:数据库通过密钥标识自动调用密钥服务,业务无需感知密钥管理过程
使用流程:
-- 0. 配置密码卡环境(写入 ~/.bashrc 后 source 生效) -- export CRYPTDEV_TYPE=gdaccard CRYPTDEV_LIBPATH=/opt/card/lib -- 1. 开启审计,密钥管理函数执行即产生审计记录 ALTER SYSTEM SET enable_audit = on; -- 2. 在密码卡内生成/导出/备份/销毁密钥(对应:密钥泄露、密钥生命周期失控) SELECT cryptocard_generate_key(256, 1, 'UEK_SM2', 'Aa123456'); -- 生成密钥,存于卡内 SELECT cryptocard_export_key(1, 'UEK_SM2'); -- 导出密钥信息 SELECT cryptocard_backup_key('bk1.dat', 'Aa123456'); -- 备份 SELECT cryptocard_delete_key(1, 'USER_KEK'); -- 销毁 -- 3. 验证:密钥存于密码卡,数据库目录无密钥明文(对应:密钥明文存储、默认密钥风险) -- grep -r "UEK_SM2" $PGDATA → 无密钥明文
3.13 资源安全
安全威胁:
- 资源耗尽攻击:攻击者通过大量连接、复杂查询等方式消耗数据库 CPU、内存和连接资源,导致服务不可用
- 恶意 SQL 长时间占用:用户提交大查询、全表扫描或长事务,占用系统资源影响其他业务
- 单用户资源独占:单个用户大量创建连接或执行高消耗任务,影响其他用户正常访问
- 空间资源耗尽:数据持续增长导致磁盘空间不足,影响数据库正常运行
- 异常会话长期占用:空闲连接、异常事务长期占用数据库资源,降低系统可用性
安全功能:
- 连接资源控制:限制数据库最大连接数以及单用户最大连接数量
- 用户资源配额:支持按照用户设置连接、计算等资源使用限制,避免单用户占用全部资源
- SQL 执行控制:支持查询超时、事务超时等机制,限制长时间运行任务
- 空间资源监控:支持数据库、表空间空间使用阈值告警,提前发现资源风险
- 资源参数配置:支持通过参数配置资源限制策略,适配不同业务场景
防御效果(与安全威胁一一对应):
- 资源耗尽攻击:连接资源控制 + 用户资源配额,限制异常连接数量,避免实例资源被耗尽
- 恶意 SQL 长时间占用:SQL 执行控制,限制超长查询和异常事务,降低资源长期占用风险
- 单用户资源独占:用户资源配额,限制单用户连接和资源使用范围,保障多用户公平访问
- 空间资源耗尽:空间资源监控,通过阈值告警及时发现空间增长风险,避免业务中断
- 异常会话长期占用:连接控制 + SQL 执行控制,限制异常会话持续占用系统资源
其他效果:
- 性能:资源限制在连接建立和任务调度阶段执行,对正常业务性能影响较小
- 可扩展性:支持多用户、多业务场景下资源隔离,避免单一业务影响整体数据库服务
- 易用性:通过参数和角色级配置实现资源策略管理,无需修改业务代码
使用流程:
-- 1. 限制实例最大连接数(POSTMASTER 参数,需重启)(对应:资源耗尽攻击) ALTER SYSTEM SET max_connections = 500; -- vb_ctl restart -D $PGDATA -- 2. 限制单用户连接配额(对应:单用户资源独占) ALTER ROLE u1 CONNECTION LIMIT 50; -- 3. 限制单语句执行时长,防长事务拖垮实例(对应:恶意 SQL 长时间占用、异常会话长期占用) ALTER SYSTEM SET statement_timeout = 60000; -- 单语句最长 60 秒 SELECT pg_reload_conf(); -- 4. 监控连接与空间使用(对应:空间资源耗尽) SELECT usename, count(*) FROM pg_stat_activity GROUP BY usename; -- 各用户连接数 SELECT pg_size_pretty(pg_database_size('vexdb')); -- 数据库空间占用 -- 5. 验证:u1 超过 50 连接被拒 -- FATAL: too many connections for role "u1"
4、未来安全能力规划
VexDB 将持续完善数据库安全体系,面向云环境、多租户场景和更高等级安全需求,规划建设以下安全能力。
4.1 机密计算
面向不可信基础设施环境,提供数据使用过程中的安全保护能力。
- 支持在可信执行环境中处理敏感数据;
- 降低数据库运行环境对明文数据的可见性;
- 扩展密态查询能力,支持更多 SQL 运算场景;
- 优化密态计算性能,提升业务适用范围。
4.2 入侵检测与安全告警
建设数据库运行过程中的主动检测能力。
- 基于访问行为、审计记录识别异常操作;
- 检测暴力破解、异常登录、异常查询、批量数据访问等行为;
- 支持安全事件告警通知;
- 支持与安全运营平台联动。
4.3 数据安全治理
完善敏感数据识别和保护能力。
- 自动发现数据库中的敏感字段;
- 支持数据分类分级管理;
- 根据数据等级关联访问控制、脱敏和审计策略;
- 提供敏感数据分布和使用情况分析。
4.4 安全运维增强
提升数据库安全管理自动化能力。
- 支持安全配置检查;
- 检测弱口令、风险权限和不安全配置;
- 提供安全基线检查能力;
- 支持安全策略统一管理。
4.5 密钥管理增强
完善密钥生命周期管理能力。
- 支持更多企业级 KMS/HSM 接入方式;
- 支持密钥自动轮换;
- 支持密钥使用审计;
- 提升多实例、多集群场景下的密钥管理能力。
4.6 数据保护增强
扩展数据保护范围。
- 支持更多存储对象加密,包括备份文件、归档日志等;
- 增强主备、容灾场景下的数据保护能力;
- 扩展数据脱敏算法和应用场景;
- 提升数据共享过程中的安全控制能力。
4.7 安全分析与运营
提升安全事件发现和处置能力。
- 支持多维度安全事件分析;
- 支持操作行为关联分析;
- 支持安全风险统计和报告生成;
- 缩短安全事件定位和处置时间。
附1 安全机制统计表
本产品安全机制覆盖网络访问、身份认证、权限控制、数据保护、密码管理、安全审计和资源控制等方面。主要安全机制及实现来源如下。
| 序号 | 安全机制 | 简要说明 | 是否自研 |
|---|---|---|---|
| 1 | 网络防火墙 | 提供基于主机地址、用户角色、目标数据库的连接访问控制 | 基于开源增强 |
| 2 | 身份认证 | 提供用户管理、口令策略、认证协议、失败限制、多因素认证等身份保护能力 | 基于开源增强 |
| 3 | 安全传输 | 提供 TLS/TLCP 加密通信、双向认证和安全算法配置能力 | 基于开源增强 |
| 4 | 访问控制 | 提供 RBAC、自主访问控制、三权分立、强制访问控制和行级访问控制能力 | 部分自研,部分基于开源增强 |
| 5 | 数据库审计 | 提供细粒度审计、关键操作记录、审计查询和审计数据保护能力 | 基于开源增强 |
| 6 | 驱动加密 | 提供客户端加密、列级加密、密文存储、密文等值查询和完整性保护能力 | 基于开源增强 |
| 7 | 机密计算 | 提供密态查询和密态计算能力,降低运行环境对明文数据的访问 | 规划建设 |
| 8 | 密码函数 | 提供加密、哈希、密钥派生、随机数等密码基础能力,支持国密算法 | 基于开源增强 |
| 9 | 透明加密 | 提供数据库存储加密、日志加密、多级密钥管理和密钥轮换能力 | 基于开源增强 |
| 10 | 数据防篡改 | 提供数据变更记录、历史追踪、完整性校验和防删除保护能力 | 基于开源增强 |
| 11 | 动态脱敏 | 提供敏感字段动态脱敏、角色差异化展示和访问路径保护能力 | 基于开源增强 |
| 12 | 密钥管理 | 提供 KMS/HSM 对接、密钥生命周期管理、硬件保护和密钥不落盘能力 | 基于开源增强 |
| 13 | 资源安全 | 提供连接控制、资源限制、空间监控和异常资源占用防护能力 | 基于开源增强 |
附2 证明材料(商密证书等)
送测产品已取得或正在办理的资质证书如下:
- 商用密码模块认证
- CC EAL 4+证书