版本号日期修改说明编制人审核人
1.02026.07.24完成初稿沈坤-

1、核心资产

VexDB 的核心资产分为七类,覆盖数据、结构、访问、运行、审计、内存和密码资源,是数据库安全保护的主要对象。

核心资产资产内容资产价值
数据资产业务数据、用户数据、交易数据等存储内容数据库核心资源。泄露、篡改或丢失影响业务安全
数据库结构资产模式、表、字段、索引、视图、存储过程、函数、约束等描述数据组织和业务逻辑。非法修改影响业务正确性
数据库管理资产用户、角色、权限、配置参数、安全策略等控制访问范围和运行行为。错误配置影响整体安全
数据库运行资产实例、进程、数据文件、日志文件及计算存储资源支撑数据库服务运行。破坏导致服务不可用
数据库操作记录资产访问日志、审计记录、运行日志、管理操作记录等支撑安全分析、事件追踪和责任认定
数据库内存资产内存中的业务数据、缓存、会话信息和认证凭证运行过程中的敏感信息。泄露可能导致数据或凭证暴露
密码与密钥资产加密密钥、口令摘要、认证凭证等密码资源支撑身份认证和数据保护。泄露可能导致安全机制失效

核心资产的机密性、完整性和可用性,决定数据库安全运行和业务连续性。


2、安全风险和应对措施

VexDB 面临外部攻击、内部误操作、权限滥用和运行环境异常等风险,可能导致非法访问、数据泄露、数据篡改、身份冒用和服务不可用。主要风险与应对措施如下。

安全风险风险描述应对措施
非法访问风险非授权主机连接数据库,获取非法访问入口网络防火墙
身份认证风险弱口令、凭证泄露或认证缺陷导致身份冒用身份认证
通信安全风险网络传输被窃听、伪造、重放或篡改安全传输
权限控制风险权限配置不当或权限提升导致越权访问访问控制
数据安全风险数据存储、传输、处理过程中发生泄露或篡改透明加密、驱动加密、机密计算、动态脱敏、数据防篡改
密钥安全风险密钥泄露、丢失或生命周期管理不足导致保护失效密钥管理
操作追溯风险数据访问和管理操作缺少记录,无法有效追责数据库审计、数据防篡改
服务可用性风险恶意请求或资源异常消耗导致性能下降或服务中断资源安全
运行环境风险不可信环境或异常运行环境导致数据暴露风险驱动加密、机密计算、密钥管理

VexDB 通过网络防护、身份认证、访问控制、数据保护、密码保护、安全审计和资源管理等能力,降低非法访问、数据泄露、数据篡改和服务不可用等安全风险。

3、安全机制

VexDB 从接入、传输、访问、存储、计算、合规六个维度构建防御模型,各安全机制相互独立又相互配合。

3.1 网络防火墙

  • 安全威胁:

    1. 非法来源接入:非授权 IP/网段主机尝试访问数据库服务,建立网络连接
    2. 数据库服务暴露:数据库监听地址或服务端口暴露于非可信网络,攻击者可进行端口扫描、服务探测等行为
    3. 非授权网络区域访问:不同安全区域之间缺少网络隔离,导致不满足要求的客户端尝试访问数据库服务
  • 安全功能:

    • 多维度网络接入控制:按照网络来源、目标数据库等维度配置接入规则,实现数据库服务访问边界控制
      • 主机级:按客户端 IP 地址/网段限制数据库服务允许接入的来源范围
      • 数据库级:按目标数据库限制客户端可建立连接的数据库范围
      • 连接策略级:针对不同来源配置允许、拒绝以及认证方式等连接策略
  • 防御效果(与安全威胁一一对应):

    1. 非法来源接入:主机级接入控制,非授权 IP/网段的连接请求在数据库连接建立阶段被拒绝,避免非法客户端访问数据库服务
    2. 数据库服务暴露:通过网络访问规则限制数据库服务可访问范围,减少端口扫描、连接探测等攻击风险
    3. 非授权网络区域访问:通过来源地址控制和网络隔离策略,限制不同网络区域之间的数据库访问边界
  • 其他效果:

    • 性能:规则在数据库连接建立阶段执行,不参与 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 身份认证

  • 安全威胁:

    1. 弱口令攻击:用户设置简单口令、常用口令或低复杂度口令,容易被字典攻击破解
    2. 暴力破解:攻击者通过大量认证请求持续尝试不同口令,获取合法用户访问权限
    3. 口令泄露:用户口令因配置泄露、人工泄露、凭证复用等原因被攻击者获取
    4. 认证信息窃取:攻击者通过截获或分析认证交互信息,尝试恢复用户认证凭证
    5. 默认账户风险:数据库默认账户未及时修改或未禁用,可能被攻击者利用进行非法登录
    6. 账户生命周期风险:长期未使用账户、过期账户或异常账户仍保持登录能力,增加非法访问风险
    7. 非法身份登录:攻击者使用窃取的账户凭证冒充合法用户尝试登录数据库
  • 安全功能:

    • 用户生命周期管理:支持用户创建、修改、锁定、解锁、删除等账户管理操作
    • 口令复杂度校验:支持口令长度、字符类型等复杂度策略配置,限制低强度口令使用
    • 弱口令检测:支持常见弱口令检测,阻止高风险口令设置
    • 口令安全存储:采用不可逆密码哈希方式存储用户认证信息,避免明文口令泄露
    • 安全认证协议:支持基于挑战响应机制的认证协议,避免认证过程中直接传输明文口令
    • 认证失败限制:支持连续认证失败次数限制,超过阈值后自动锁定账户
    • 密码有效期管理:支持密码有效期配置,到期提醒或强制修改密码
    • 多因素认证:支持证书认证、Kerberos 等增强认证方式,提高身份可信度
    • 认证会话管理:支持认证会话超时控制,降低长期未使用会话风险
  • 防御效果(与安全威胁一一对应):

    1. 弱口令攻击:口令复杂度校验 + 弱口令检测,在用户创建或修改密码阶段阻止低强度口令
    2. 暴力破解:认证失败限制,连续认证失败达到阈值后自动锁定账户,降低口令爆破风险
    3. 口令泄露:口令安全存储,系统中不保存明文密码,降低凭证泄露后的影响
    4. 认证信息窃取:安全认证协议采用挑战响应机制,避免认证过程中的明文口令传输
    5. 默认账户风险:用户生命周期管理 + 弱口令检测,支持默认账户修改、禁用及安全管理
    6. 账户生命周期风险:密码有效期管理 + 用户管理,对长期未使用或过期账户进行限制
    7. 非法身份登录:多因素认证增强身份可信度,降低凭证泄露导致的冒用风险
  • 其他效果:

    • 性能:认证过程在连接建立阶段执行,认证成功后的 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 安全传输

  • 安全威胁:

    1. 通信身份冒用:攻击者伪造客户端或服务端身份,尝试建立非法通信连接
    2. 通信数据重放:攻击者截获历史通信数据并重新发送,尝试影响正常业务流程
    3. 证书伪造:使用非法、自签或伪造证书冒充合法通信实体,实施中间人攻击
    4. 网络中间人窃听:攻击者在客户端与服务端之间监听通信内容,获取敏感数据
    5. 传输数据篡改:攻击者修改传输过程中的 SQL 请求或响应数据,影响数据完整性
    6. 明文传输泄露:未启用加密传输时,口令、SQL 语句及业务数据可能被网络窃取
  • 安全功能:

    • TLS 协议:支持 TLS 1.2 加密通信通道,对传输数据进行加密保护
    • TLCP 协议:支持国密 TLCP 协议,满足国密场景下安全传输需求
    • 双向证书认证:支持客户端与服务端基于数字证书进行双向身份验证
    • 证书有效校验:支持证书有效期、签发机构及合法性校验
    • 算法套件配置:支持配置加密算法套件,限制弱加密算法使用
  • 防御效果(与安全威胁一一对应):

    1. 通信身份冒用:通过证书认证机制验证通信双方身份,非法实体无法建立可信加密连接
    2. 通信数据重放:TLS/TLCP 协议通过记录序列号及完整性校验机制,异常重放数据无法通过校验
    3. 证书伪造:通过证书有效性校验,非法、过期或不可信证书无法用于建立安全连接
    4. 网络中间人窃听:TLS/TLCP 加密通信通道保护传输数据,防止网络窃听获取明文内容
    5. 传输数据篡改:TLS/TLCP 提供数据完整性校验,传输过程中被修改的数据无法通过验证
    6. 明文传输泄露:通过强制启用加密通信和限制弱算法套件,避免敏感数据明文传输
  • 其他效果:

    • 性能:支持 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
    
  • 安全威胁:

    1. 未授权访问:无数据库对象访问权限的用户尝试读取或修改数据
    2. 越权访问:已授权用户访问职责范围之外的数据库对象或敏感数据
    3. 权限提升:普通用户获取超出授权范围的角色或管理权限
    4. 权限滥用:合法用户利用已有权限执行超出业务职责范围的操作
    5. 权限集中风险:单一管理员同时拥有用户管理、权限管理、审计管理等全部权限,缺少职责分离
    6. 特权用户数据访问:高权限用户利用管理权限查看不应访问的业务数据
    7. 合规权责分离缺失:用户管理、权限管理、审计管理未进行角色隔离,无法满足等保/商密要求
    8. 敏感数据越权读取:用户访问安全级别高于自身权限的数据
    9. 敏感数据越权流动:高安全级别数据被低安全级别主体访问或传播
    10. 特权用户绕过访问控制:管理员权限绕过普通访问控制策略访问敏感对象
    11. 跨范围数据访问:通过复杂查询、关联查询等方式绕过数据隔离限制
  • 安全功能:

    • 自主访问控制:基于 RBAC 角色权限模型,实现用户、角色与数据库对象权限关联,支持细粒度对象权限控制
    • 三权分立:支持安全管理员、系统管理员、审计管理员角色分离,实现用户管理、权限管理、审计管理职责隔离
    • 强制访问控制:支持表、行、列级安全标记,根据用户安全级别限制敏感数据访问范围
    • 行级访问控制:支持基于策略的行级数据过滤,查询过程中自动添加访问约束,对应用透明
  • 防御效果(与安全威胁一一对应):

    1. 未授权访问:通过对象权限校验,无访问权限的用户无法读取或修改数据库对象
    2. 越权访问:通过细粒度权限控制,仅允许用户访问授权范围内的数据对象
    3. 权限提升:通过 RBAC 角色管理和最小权限原则,限制用户获取额外权限
    4. 权限滥用:通过最小权限控制,降低用户持有过度权限导致的数据风险
    5. 权限集中风险:通过三权分立,用户、权限、安全策略等管理职责相互隔离
    6. 特权用户数据访问:通过强制访问控制,对敏感数据访问进行额外安全级别限制
    7. 合规权责分离缺失:通过三权分立满足等保/商密关于职责分离要求
    8. 敏感数据越权读取:通过强制访问控制,用户安全级别低于数据标记时禁止访问
    9. 敏感数据越权流动:通过强制访问控制和行级访问控制,限制敏感数据向低安全级别主体流动
    10. 特权用户绕过访问控制:通过强制访问控制策略,限制管理员绕过安全策略访问敏感数据
    11. 跨范围数据访问:通过行级访问控制,在查询执行过程中自动增加过滤条件,避免通过关联查询绕过隔离
  • 其他效果:

    • 性能:权限检查、标签检查、行级过滤均在查询优化和执行阶段完成,对业务访问性能影响可控
    • 易用性:支持角色批量授权、安全策略统一配置,行级访问控制对应用透明
    • 可扩展性:支持对象、行、列多级访问控制粒度,满足不同安全等级保护需求
  • 使用流程:

    -- 自主访问控制 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 安全审计

  • 安全威胁:

    1. 审计日志篡改:攻击者修改或删除审计记录,隐藏真实操作行为
    2. 攻击行为隐匿:关闭审计功能或绕过审计策略,使关键操作无法被记录
    3. 恶意操作抵赖:用户否认执行过敏感操作,无法通过审计记录进行追溯
    4. 审计日志容量耗尽:大量无效操作产生海量日志,导致关键审计记录无法有效保存
    5. 特权用户操作不可追溯:管理员等高权限用户操作缺少独立审计记录,无法进行责任认定
  • 安全功能:

    • 细粒度审计策略:支持按照用户、操作类型、数据库对象、操作结果等维度配置审计范围
    • 系统审计:支持对权限变更、访问操作、密码变更、登录失败等关键安全事件进行记录
    • 日志安全保护:支持审计日志安全存储,防止未授权修改或删除
    • 日志容量控制:支持审计日志空间、文件数量阈值配置,避免日志无限增长
    • 日志查询分析:支持按照时间、用户等条件查询审计记录(pg_query_audit)
    • 审计员独立管理:支持独立审计管理员管理审计数据,降低高权限用户篡改审计记录风险
  • 防御效果(与安全威胁一一对应):

    1. 审计日志篡改:日志安全保护 + 审计员独立管理,限制非授权用户修改或删除审计记录
    2. 攻击行为隐匿:系统审计 + 细粒度审计策略,对关键安全事件进行持续记录,避免操作无痕
    3. 恶意操作抵赖:细粒度审计策略,记录操作用户、时间、对象及操作内容,实现行为追溯
    4. 审计日志容量耗尽:日志容量控制,通过空间和文件数量限制保障审计记录持续保存
    5. 特权用户操作不可追溯:审计员独立管理,对管理员等特权用户行为进行独立记录和审查
  • 其他效果:

    • 性能:审计日志采用异步记录机制,降低审计功能对事务处理性能影响
    • 易用性:支持标准 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 驱动加密

  • 安全威胁:

    1. 传输环节信息泄露:客户端与数据库服务端通信过程中,敏感列数据可能被窃听
    2. 存储环节信息泄露:数据库以明文形式存储敏感数据,数据库文件泄露可能导致数据暴露
    3. 存储介质泄露:磁盘文件、备份文件或数据镜像被非法获取,导致敏感数据泄露
    4. 服务端数据窥探:数据库管理员、云环境或不可信运行环境可能直接查看敏感业务数据
    5. 密文数据篡改:攻击者修改、替换数据库中的密文数据,导致业务数据被非法改变
    6. 应用侧密钥泄露:加密密钥管理不当可能导致加密数据被恢复
  • 安全功能:

    • 客户端透明加密:通过数据库驱动实现数据自动加密和解密,业务应用无需修改 SQL
    • 列级数据加密:支持指定敏感列进行加密存储,实现不同数据列差异化保护
    • 密文等值查询:支持基于密文的等值查询,客户端对查询条件自动加密,服务端完成密文匹配
    • 密文完整性校验:加密数据同时生成 MAC 校验值,客户端读取数据时自动验证完整性
    • 客户端密钥管理:加密密钥和 MAC 密钥由客户端管理,数据库服务端不保存用户明文密钥
    • 密文存储保护:数据库存储内容、索引数据等持久化内容均以密文形式保存
  • 防御效果(与安全威胁一一对应):

    1. 传输环节信息泄露:客户端驱动对敏感数据进行加密后传输,网络窃听无法获取明文数据
    2. 存储环节信息泄露:敏感列以密文形式存储,数据库文件泄露后无法直接读取业务数据
    3. 存储介质泄露:磁盘文件、备份文件中的敏感字段为密文,无客户端密钥无法恢复明文
    4. 服务端数据窥探:服务端仅保存和处理密文数据,数据库管理员无法直接查看敏感字段内容
    5. 密文数据篡改:通过 MAC 完整性校验机制,检测密文非法修改或替换,校验失败的数据无法正常解密使用
    6. 应用侧密钥泄露:通过客户端密钥管理机制,降低密钥集中存储导致的数据泄露风险
  • 与机密计算的关系:

    • 驱动加密主要解决数据在客户端、传输过程以及数据库存储阶段的机密性和完整性保护,通过客户端加密实现密文存储、密文等值查询以及密文完整性校验。
    • 机密计算主要解决服务端参与复杂计算场景下的数据保护,通过可信执行环境保护计算过程中的明文数据。
  • 其他效果:

    • 性能:加解密和 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 密码函数

  • 安全威胁:

    1. 弱密码算法风险:使用 DES、MD5 等已淘汰算法保护数据,导致加密数据或摘要结果易被破解
    2. 密码算法不合规:未采用符合国家密码管理要求或行业标准的密码算法,无法满足安全合规要求
    3. 存储数据明文风险:敏感数据未经过密码函数加密直接存储,数据库泄露后可能造成数据暴露
    4. 数据完整性校验不足:存储或传输过程中缺少密码校验机制,无法发现数据被非法修改
    5. 随机数可预测:随机数生成能力不足导致密钥、盐值、初始化向量等密码参数安全性降低
    6. 口令派生强度不足:直接使用低强度口令生成密钥,导致密钥容易被暴力破解
  • 安全功能:

    • 加密函数:支持 AES、SM4 等对称密码算法,实现数据加密保护
    • 解密函数:支持密文恢复明文,用于授权场景下的数据访问
    • 哈希函数:支持 SHA256、SM3 等密码杂凑算法,实现数据摘要和完整性校验
    • 密钥派生函数:支持 PBKDF2 等算法,将用户口令安全派生为密码密钥
    • 随机数函数:提供安全随机数生成能力,用于密钥、盐值、初始化向量等密码参数生成
    • 国密 + 国际双算法体系:同时支持 SM 系列国密算法和国际通用密码算法
  • 防御效果(与安全威胁一一对应):

    1. 弱密码算法风险:提供 AES、SM4、SHA256、SM3 等安全密码算法,避免使用已淘汰弱算法保护敏感数据
    2. 密码算法不合规:支持国密 SM 系列和国际标准密码算法,满足不同安全合规场景需求
    3. 存储数据明文风险:通过加密函数对敏感数据进行加密后存储,数据库泄露后无法直接获取明文数据
    4. 数据完整性校验不足:通过哈希函数生成数据摘要,检测数据是否发生非法修改
    5. 随机数可预测:通过安全随机数函数生成高质量随机值,提高密钥、盐值及初始化向量安全性
    6. 口令派生强度不足:通过 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 派生,避免低强度口令直接生成密钥(对应:口令派生强度不足)
    

安全威胁:

  1. 磁盘窃取:物理存储介质、虚拟磁盘文件被非法获取,导致数据库数据泄露
  2. 数据文件泄露:操作系统用户、存储管理员直接访问数据库文件获取明文数据
  3. 存储残留泄露:WAL、临时文件、备份文件等持久化内容包含敏感明文信息
  4. 备份介质丢失:脱机备份文件被带离安全环境后,数据失去保护
  5. 存储层数据篡改:攻击者直接修改数据库底层文件,影响数据完整性
  • 安全功能:

    • 全量存储加密:支持对表数据、索引、日志、临时文件等存储内容自动加解密,对业务应用透明
    • 密钥分层管理:支持根密钥、主密钥、数据加密密钥多级密钥体系,实现密钥隔离管理
    • 外部密钥管理:支持通过密码卡/HSM 等外部密钥设备保护根密钥
    • 密钥轮转机制:支持密钥周期性更新,降低长期密钥泄露风险
    • 透明访问控制:数据库正常运行过程中自动完成加解密,应用无需感知加密过程
  • 防御效果(与安全威胁一一对应):

    1. 磁盘窃取:全量存储加密,数据库文件以密文形式保存,非法获取存储介质无法直接读取数据
    2. 数据文件泄露:存储层自动加密,操作系统用户或存储管理员仅能获取密文数据
    3. 存储残留泄露:对 WAL、临时文件、备份文件等敏感存储内容进行加密保护,避免残留数据泄露
    4. 备份介质丢失:备份数据以密文形式保存,介质丢失后无密钥无法恢复明文
    5. 存储层数据篡改:通过密文完整性校验机制检测非法修改,防止底层文件被无感篡改
  • 其他效果:

    • 性能:支持硬件密码设备加速密码运算,降低透明加密对数据库读写性能影响
    • 易用性:创建加密存储空间后,业务 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 数据防篡改

  • 安全威胁:

    1. 业务数据非法修改:攻击者直接修改业务数据,伪造交易记录或历史状态
    2. 历史记录删除:删除历史变更记录,破坏数据演变过程的完整性
    3. 历史记录伪造:非法插入虚假历史记录,制造错误业务轨迹
    4. 操作行为抵赖:用户否认执行过的数据修改操作,无法证明原始变更过程
    5. 审计证据破坏:篡改数据变更记录,影响安全审计和责任追踪
  • 安全功能:

    • 防篡改数据表:支持创建防篡改表,对业务数据变更自动生成历史记录
    • 历史版本记录:每次 INSERT、UPDATE、DELETE 操作自动记录变更前后状态
    • 哈希完整性校验:基于数据摘要生成完整性校验信息,检测历史记录非法修改
    • 追加式历史存储:历史记录仅支持追加,不允许用户直接修改或删除
    • 全局事件链管理:通过全局事件记录表关联多个数据变更事件,形成完整追溯链
  • 防御效果(与安全威胁一一对应):

    1. 业务数据非法修改:防篡改数据表 + 哈希完整性校验,数据修改过程自动生成历史记录,非法修改可被检测
    2. 历史记录删除:追加式历史存储,历史记录禁止直接删除,删除行为会破坏完整性校验链
    3. 历史记录伪造:历史版本记录 + 哈希校验,伪造记录无法通过完整性验证
    4. 操作行为抵赖:历史记录保存用户、时间、操作类型等信息,支持对数据变更行为进行追溯
    5. 审计证据破坏:全局事件链管理,数据变更记录形成关联链路,提高审计证据可信度
  • 其他效果:

    • 性能:哈希摘要在数据变更阶段同步生成,额外计算开销可控
    • 易用性:通过数据库表属性开启防篡改能力,业务 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 动态脱敏

  • 安全威胁:

    1. 敏感信息泄露:身份证号、手机号、银行卡号等敏感字段查询时直接返回明文
    2. 权限范围外信息暴露:具有数据查询权限的用户查看超出业务职责范围的敏感信息
    3. 查询输出泄露:查询结果、数据导出等输出渠道包含敏感明文,导致二次传播风险
    4. 应用场景差异化需求不足:不同角色、不同业务场景无法按照安全要求展示不同数据内容
  • 安全功能:

    • 细粒度脱敏策略:支持按照用户、角色、数据库对象、字段等维度配置脱敏规则
    • 多种脱敏算法:支持遮蔽、替换、哈希等脱敏方式,满足不同敏感数据保护需求
    • 实时动态脱敏:查询结果返回阶段实时执行脱敏处理,不改变数据库中原始数据
    • 角色差异化展示:根据访问主体身份动态返回不同数据视图
    • 访问路径防绕过:支持 SQL 查询、视图访问、数据导出等数据库访问路径统一执行脱敏策略
  • 防御效果(与安全威胁一一对应):

    1. 敏感信息泄露:细粒度脱敏策略 + 脱敏算法,根据策略自动隐藏敏感字段内容,避免明文暴露
    2. 权限范围外信息暴露:角色差异化展示,根据访问用户身份返回对应脱敏结果,降低敏感数据泄露风险
    3. 查询输出泄露:访问路径防绕过,查询和导出等数据库输出场景统一返回脱敏数据
    4. 应用场景差异化需求不足:动态脱敏策略支持不同角色采用不同展示规则,满足多业务场景数据共享需求
  • 其他效果:

    • 性能:脱敏处理在查询结果返回阶段完成,对数据存储和查询执行影响较小
    • 易用性:通过策略配置实现动态生效,无需修改应用代码
    • 安全性:敏感数据保持原始存储状态,仅在展示阶段进行保护
  • 使用流程:

    -- 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 密钥管理

  • 安全威胁:

    1. 密钥泄露:根密钥、主密钥或数据密钥泄露导致加密保护失效
    2. 密钥明文存储:密钥以明文形式保存在配置文件或磁盘中,被非法获取
    3. 默认密钥风险:产品内置固定密钥或交付过程中的密钥管理不当导致密钥泄露
    4. 密钥生命周期失控:密钥长期不更新、不轮换或无法安全销毁,增加泄露风险
    5. 密钥集中管理不足:多个系统独立管理密钥,导致密钥分散、权限失控和审计困难
  • 安全功能:

    • 外部密钥管理服务对接:支持通过 PKCS#11 等接口对接企业级 KMS/HSM,实现密钥统一管理
    • 硬件密钥保护:支持密码卡等硬件安全设备保存根密钥,提高密钥抗提取能力
    • 密钥不落盘:数据库不保存用户密钥明文,通过密钥标识、索引等方式调用外部密钥服务
    • 密钥生命周期管理:支持密钥生成、启用、停用、轮换、销毁等全生命周期管理
    • 密钥分层管理:支持根密钥、密钥加密密钥、数据密钥多级密钥体系,降低单密钥泄露影响范围
    • 国密密码体系支持:支持 SM2/SM3/SM4 等国密算法相关密钥管理
  • 防御效果(与安全威胁一一对应):

    1. 密钥泄露:硬件密钥保护 + 外部密钥管理服务,密钥与业务数据分离,服务器被攻击时无法直接获取密钥
    2. 密钥明文存储:密钥不落盘,数据库本地仅保存密钥引用信息,避免配置文件或数据目录泄露密钥
    3. 默认密钥风险:外部密钥管理服务,使用企业自主管理密钥,避免产品默认密钥或固定密钥风险
    4. 密钥生命周期失控:密钥生命周期管理,支持定期轮换和安全销毁,降低长期使用风险
    5. 密钥集中管理不足:统一密钥管理接口,实现多业务场景下密钥集中管理、权限控制和审计追踪
  • 其他效果:

    • 安全性:密钥独立于业务数据管理,降低数据泄露后密钥同时暴露风险
    • 可扩展性:支持企业级 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 资源安全

  • 安全威胁:

    1. 资源耗尽攻击:攻击者通过大量连接、复杂查询等方式消耗数据库 CPU、内存和连接资源,导致服务不可用
    2. 恶意 SQL 长时间占用:用户提交大查询、全表扫描或长事务,占用系统资源影响其他业务
    3. 单用户资源独占:单个用户大量创建连接或执行高消耗任务,影响其他用户正常访问
    4. 空间资源耗尽:数据持续增长导致磁盘空间不足,影响数据库正常运行
    5. 异常会话长期占用:空闲连接、异常事务长期占用数据库资源,降低系统可用性
  • 安全功能:

    • 连接资源控制:限制数据库最大连接数以及单用户最大连接数量
    • 用户资源配额:支持按照用户设置连接、计算等资源使用限制,避免单用户占用全部资源
    • SQL 执行控制:支持查询超时、事务超时等机制,限制长时间运行任务
    • 空间资源监控:支持数据库、表空间空间使用阈值告警,提前发现资源风险
    • 资源参数配置:支持通过参数配置资源限制策略,适配不同业务场景
  • 防御效果(与安全威胁一一对应):

    1. 资源耗尽攻击:连接资源控制 + 用户资源配额,限制异常连接数量,避免实例资源被耗尽
    2. 恶意 SQL 长时间占用:SQL 执行控制,限制超长查询和异常事务,降低资源长期占用风险
    3. 单用户资源独占:用户资源配额,限制单用户连接和资源使用范围,保障多用户公平访问
    4. 空间资源耗尽:空间资源监控,通过阈值告警及时发现空间增长风险,避免业务中断
    5. 异常会话长期占用:连接控制 + 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+证书