Skip to content

DM 敏感数据管理

敏感数据管理的目标是:

  • 识别和分类敏感数据
  • 保护敏感数据不被未授权访问和泄露
  • 确保敏感数据的完整性和可用性
  • 满足合规性要求,如GDPR、等保2.0、个人信息保护法等
  • 建立敏感数据的全生命周期管理

DM数据库提供了丰富的敏感数据管理功能,包括数据加密、访问控制、审计、脱敏等,可以帮助企业建立完善的敏感数据保护体系。

敏感数据识别与分类

1. 敏感数据定义

敏感数据是指一旦泄露、非法提供或滥用,可能危害国家安全、公共利益、个人合法权益的数据。常见的敏感数据包括:

  • 个人信息:姓名、身份证号、电话号码、电子邮箱、地址等
  • 金融数据:银行账号、信用卡号、支付记录等
  • 健康数据:病历、诊断记录、用药记录等
  • 商业机密:客户信息、商业计划、技术文档等
  • 政府数据:国家秘密、政务信息等

2. 敏感数据识别

2.1 人工识别

通过业务人员和数据管理员的经验,手动识别敏感数据字段和表。这种方法适用于数据量较小、业务逻辑清晰的场景。

2.2 规则识别

基于预定义的规则和模式,自动识别敏感数据:

  • 正则表达式:如身份证号、电话号码、邮箱等可以通过正则表达式识别
  • 数据字典:基于业务数据字典,标记敏感数据字段
  • 机器学习:使用机器学习算法,基于数据特征自动识别敏感数据

2.3 DM数据库敏感数据识别工具

DM数据库提供了敏感数据识别工具,可以帮助用户自动识别数据库中的敏感数据:

shell
# 使用DM敏感数据识别工具
dmsensitive scan --database DM --host localhost --port 5236 --user SYSDBA --password SYSDBA --output sensitive_data_report.txt

3. 敏感数据分类

根据敏感程度和保护要求,敏感数据可以分为不同级别:

级别描述保护要求
绝密最高级别,泄露会造成严重危害严格访问控制、加密存储、全面审计
机密较高级别,泄露会造成较大危害严格访问控制、加密存储、审计
秘密一般级别,泄露会造成一定危害访问控制、加密存储
内部内部使用,不对外公开基本访问控制
公开可以公开的数据基本保护

敏感数据保护策略

1. 数据加密

1.1 存储加密

DM数据库支持多种存储加密方式:

  • 表空间加密:对整个表空间进行加密
  • 列加密:对特定敏感列进行加密
  • 透明数据加密(TDE):自动对数据进行加密和解密,对应用透明

表空间加密示例

sql
-- 创建加密表空间
CREATE TABLESPACE encrypted_ts DATAFILE 'encrypted_ts.dbf' SIZE 100M ENCRYPTION USING 'SM4' IDENTIFIED BY 'encrypt_key';

-- 将表移动到加密表空间
ALTER TABLE sensitive_table MOVE TABLESPACE encrypted_ts;

列加密示例

sql
-- 创建带加密列的表
CREATE TABLE user_info (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    id_card VARCHAR(18) ENCRYPT WITH 'SM4' BY 'encrypt_key',
    phone VARCHAR(11) ENCRYPT WITH 'SM4' BY 'encrypt_key'
);

1.2 传输加密

DM数据库支持SSL/TLS传输加密,保护数据在网络传输过程中的安全:

ini
-- dm.ini配置文件中启用SSL
tls_enable = 1
ssl_server_cert = /opt/dmdbms/ssl/server.crt
ssl_server_key = /opt/dmdbms/ssl/server.key
ssl_server_pwd = server_ssl_password

客户端连接字符串示例:

jdbc:dm://localhost:5236?ssl=true&sslTrustStore=/path/to/truststore&sslTrustStorePassword=truststore_password

1.3 加密算法

DM数据库支持多种加密算法,包括国密算法:

算法类型支持的算法
对称加密SM4、AES、DES、3DES
非对称加密SM2、RSA
哈希算法SM3、SHA1、SHA256、MD5

2. 数据脱敏

数据脱敏是指通过技术手段,对敏感数据进行变形处理,使其在保留数据格式和可用性的同时,不泄露真实信息。

2.1 静态脱敏

静态脱敏是指在数据导出或复制时,对敏感数据进行脱敏处理,生成脱敏后的数据集,用于测试、开发或数据分析。

DM数据库静态脱敏示例:

sql
-- 创建脱敏策略
CREATE MASKING POLICY mask_id_card AS (id_card VARCHAR(18)) RETURNS VARCHAR(18) 
USING REPLACE(id_card, SUBSTR(id_card, 7, 8), '********');

-- 应用脱敏策略到表
APPLY MASKING POLICY mask_id_card ON user_info(id_card);

-- 导出脱敏数据
SELECT * FROM user_info MASKED;

2.2 动态脱敏

动态脱敏是指在查询数据时,根据用户权限动态对敏感数据进行脱敏处理,确保不同权限的用户只能看到相应级别的数据。

DM数据库动态脱敏示例:

sql
-- 创建动态脱敏策略
CREATE DYNAMIC MASKING POLICY dyn_mask_phone AS (phone VARCHAR(11)) 
RETURNS VARCHAR(11) 
USING CASE 
    WHEN CURRENT_USER = 'ADMIN' THEN phone
    ELSE CONCAT(SUBSTR(phone, 1, 3), '****', SUBSTR(phone, 8, 4)) 
END;

-- 应用动态脱敏策略
APPLY DYNAMIC MASKING POLICY dyn_mask_phone ON user_info(phone);

-- 查询数据,根据用户权限动态脱敏
SELECT * FROM user_info;

3. 访问控制

3.1 基于角色的访问控制(RBAC)

DM数据库支持RBAC模型,通过角色管理用户权限:

sql
-- 创建角色
CREATE ROLE sensitive_data_role;

-- 授予权限
GRANT SELECT ON sensitive_table TO sensitive_data_role;

-- 授予角色给用户
GRANT sensitive_data_role TO sensitive_user;

3.2 行级访问控制

对表中的特定行进行访问控制,只有授权用户才能访问:

sql
-- 创建行级访问策略
CREATE ROW LEVEL SECURITY POLICY rls_policy ON sensitive_table 
USING (department_id = CURRENT_USER_DEPARTMENT);

-- 应用行级访问策略
APPLY ROW LEVEL SECURITY POLICY rls_policy ON sensitive_table;

3.3 列级访问控制

对表中的特定列进行访问控制,只有授权用户才能访问:

sql
-- 授予列级权限
GRANT SELECT(id, name) ON sensitive_table TO normal_user;
GRANT SELECT(id, name, sensitive_column) ON sensitive_table TO admin_user;

4. 数据审计

4.1 审计策略

DM数据库支持细粒度的审计策略,可以审计各种数据库操作:

sql
-- 启用审计
ALTER SYSTEM SET AUDIT_ENABLE = 1;

-- 创建审计策略
CREATE AUDIT POLICY sensitive_data_audit
PRIVILEGES SELECT, INSERT, UPDATE, DELETE ON sensitive_table;

-- 应用审计策略
AUDIT POLICY sensitive_data_audit ON sensitive_table;

-- 查看审计日志
SELECT * FROM SYS.AUDIT$ ORDER BY AUDIT_TIME DESC;

4.2 审计日志管理

  • 定期备份审计日志
  • 限制审计日志访问权限
  • 配置审计日志保留时间
  • 监控审计日志增长情况
ini
-- dm.ini配置审计日志
AUDIT_FILE_PATH = /opt/dmdbms/audit
AUDIT_SPACE_LIMIT = 1024  -- 单个审计文件大小限制(MB)
AUDIT_SWITCH_MODE = 1  -- 审计文件切换模式:1-按大小,2-按时间
AUDIT_SWITCH_INTERVAL = 1440  -- 审计文件切换时间间隔(分钟)

敏感数据访问控制

1. 用户管理

  • 严格控制用户创建权限
  • 采用强密码策略
  • 定期审查用户列表,清理不必要的用户
  • 启用用户登录失败锁定机制
sql
-- 创建用户并设置强密码策略
CREATE USER sensitive_user IDENTIFIED BY "StrongPwd123!" PASSWORD_POLICY 6;

-- 启用登录失败锁定
ALTER USER sensitive_user FAILED_LOGIN_ATTEMPS 3 LOCK_TIME 30;

2. 角色管理

  • 基于最小权限原则,授予用户必要的最小权限
  • 定期审查角色权限,及时撤销不必要的权限
  • 分离职责,避免权限集中
sql
-- 创建不同职责的角色
CREATE ROLE readonly_role;
CREATE ROLE readwrite_role;
CREATE ROLE admin_role;

-- 授予不同权限
GRANT SELECT ANY TABLE TO readonly_role;
GRANT SELECT, INSERT, UPDATE, DELETE ANY TABLE TO readwrite_role;
GRANT DBA TO admin_role;

3. 权限审查

  • 定期进行权限审查,确保用户只拥有必要的权限
  • 使用DM数据库提供的权限审查工具
  • 记录权限变更日志
sql
-- 查看用户权限
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'SENSITIVE_USER';
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SENSITIVE_USER';

敏感数据加密

1. 透明数据加密(TDE)

透明数据加密是指在数据存储和检索过程中自动进行加密和解密,对应用程序透明,不需要修改应用代码。

1.1 TDE配置

ini
-- dm.ini配置TDE
ENCRYPT_NAME = SM4  -- 加密算法
HASH_NAME = SM3     -- 哈希算法
PUBLIC_KEY_ALG_NAME = SM2  -- 公钥算法
TDE_KEY_FILE = /opt/dmdbms/tde/tde.key  -- TDE密钥文件路径
TDE_KEY_PWD = tde_key_password  -- TDE密钥文件密码

1.2 创建加密表空间

sql
-- 创建加密表空间
CREATE TABLESPACE tde_ts DATAFILE 'tde_ts.dbf' SIZE 100M 
ENCRYPTION USING 'SM4' IDENTIFIED BY 'tde_tablespace_key';

-- 在加密表空间创建表
CREATE TABLE sensitive_table (
    id INT PRIMARY KEY,
    sensitive_data VARCHAR(100)
) TABLESPACE tde_ts;

2. 列级加密

对特定敏感列进行加密,提供更细粒度的保护:

sql
-- 创建带列加密的表
CREATE TABLE user_secure (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    id_card VARCHAR(18) ENCRYPT WITH 'SM4' BY 'column_encrypt_key',
    bank_card VARCHAR(20) ENCRYPT WITH 'SM4' BY 'column_encrypt_key'
);

-- 插入数据
INSERT INTO user_secure VALUES (1, '张三', '110101199001011234', '6222021234567890123');

-- 查询数据(自动解密)
SELECT * FROM user_secure;

3. 密钥管理

  • 使用安全的密钥生成算法
  • 定期更换密钥
  • 分离密钥管理与数据管理职责
  • 建立密钥备份和恢复机制
  • 限制密钥访问权限
sql
-- 生成新密钥
ALTER SYSTEM GENERATE NEW KEY FOR ENCRYPTION;

-- 备份密钥
BACKUP ENCRYPTION KEY TO '/opt/dmdbms/backup/encryption_key.bak' IDENTIFIED BY 'backup_key_password';

-- 恢复密钥
RESTORE ENCRYPTION KEY FROM '/opt/dmdbms/backup/encryption_key.bak' IDENTIFIED BY 'backup_key_password';

敏感数据脱敏

1. 脱敏算法

DM数据库支持多种脱敏算法:

算法类型描述示例
替换替换敏感部分为指定字符身份证号:110101********1234
截断截断敏感数据邮箱:user***@example.com
掩码保留部分字符,其他部分掩码手机号:138****1234
哈希将敏感数据转换为哈希值密码存储
随机化生成随机数据替换原始数据生成随机手机号
格式保留保持数据格式不变,替换内容生成格式一致的随机身份证号

2. 脱敏策略管理

sql
-- 创建脱敏策略
CREATE MASKING POLICY mask_email AS (email VARCHAR(100)) 
RETURNS VARCHAR(100) 
USING CONCAT(SUBSTR(email, 1, 3), '***', SUBSTR(email, INSTR(email, '@')));

-- 修改脱敏策略
ALTER MASKING POLICY mask_email AS (email VARCHAR(100)) 
RETURNS VARCHAR(100) 
USING CONCAT(SUBSTR(email, 1, 2), '***', SUBSTR(email, INSTR(email, '@')));

-- 删除脱敏策略
DROP MASKING POLICY mask_email;

-- 查看脱敏策略
SELECT * FROM DBA_MASKING_POLICIES;

3. 动态脱敏实现

动态脱敏根据用户权限和上下文信息,动态决定是否脱敏以及如何脱敏:

sql
-- 创建基于角色的动态脱敏
CREATE DYNAMIC MASKING POLICY role_based_masking AS (salary NUMBER) 
RETURNS NUMBER 
USING CASE 
    WHEN DBA_ROLE_IS_GRANTED('HR_ADMIN') THEN salary
    ELSE NULL 
END;

-- 应用动态脱敏
APPLY DYNAMIC MASKING POLICY role_based_masking ON employee(salary);

敏感数据备份与恢复

1. 备份数据加密

  • 对备份数据进行加密,防止备份数据泄露
  • 使用安全的备份存储介质
  • 限制备份数据的访问权限
  • 定期测试备份数据的可恢复性
shell
# 使用dmrman进行加密备份
dmrman
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/encrypted_backup' 
ENCRYPT WITH 'SM4' IDENTIFIED BY 'backup_encrypt_key';

2. 备份数据访问控制

  • 严格控制备份数据的访问权限
  • 备份数据应存储在安全的位置
  • 定期审计备份数据的访问日志
  • 备份数据应进行完整性校验

3. 备份数据恢复

  • 恢复过程中保持数据加密状态
  • 验证恢复后的数据完整性和一致性
  • 恢复后检查访问控制和脱敏策略是否正确应用
shell
# 恢复加密备份
dmrman
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/encrypted_backup' 
DECRYPT WITH 'SM4' IDENTIFIED BY 'backup_encrypt_key';

敏感数据生命周期管理

1. 数据创建

  • 在数据创建阶段识别敏感数据
  • 应用适当的访问控制和加密策略
  • 记录数据创建日志

2. 数据存储

  • 采用合适的存储加密方式
  • 定期备份数据
  • 监控数据访问和使用情况

3. 数据使用

  • 实施最小权限原则
  • 应用动态脱敏
  • 审计敏感数据访问

4. 数据共享

  • 对共享数据进行脱敏处理
  • 签订数据共享协议
  • 监控数据共享行为

5. 数据归档

  • 对过期数据进行归档
  • 归档数据仍需保持适当的保护
  • 建立归档数据访问机制

6. 数据销毁

  • 采用安全的数据销毁方法
  • 验证数据销毁效果
  • 记录数据销毁日志
sql
-- 安全删除敏感数据
DELETE FROM sensitive_table WHERE id = 1;
PURGE TABLE sensitive_table;  -- 彻底删除表数据

-- 销毁数据库
DROP DATABASE DAMENG INCLUDING BACKUPS;

合规性要求

1. 国内合规要求

  • 等保2.0:信息安全等级保护基本要求,包括数据安全、备份恢复、访问控制等
  • 个人信息保护法:保护个人信息权益,规范个人信息处理活动
  • 数据安全法:保障数据安全,促进数据开发利用
  • 密码法:规范密码应用和管理,促进密码事业发展

2. 国际合规要求

  • GDPR:欧盟通用数据保护条例,保护个人数据和隐私
  • HIPAA:美国健康保险隐私和责任法案,保护健康数据
  • PCI DSS:支付卡行业数据安全标准,保护支付卡数据
  • SOX:美国萨班斯-奥克斯利法案,规范财务报告和数据安全

3. 合规性审计

  • 定期进行合规性审计
  • 记录审计结果和整改措施
  • 保存审计日志和报告
  • 建立合规性管理体系

最佳实践

1. 数据分类分级

  • 建立明确的数据分类分级标准
  • 对所有数据进行分类标记
  • 根据分类级别应用相应的保护措施

2. 最小权限原则

  • 只授予用户必要的最小权限
  • 定期审查和回收不必要的权限
  • 分离职责,避免权限集中

3. 多层保护策略

  • 采用多层保护措施,如加密+访问控制+审计
  • 不同级别的敏感数据采用不同的保护策略
  • 定期测试保护措施的有效性

4. 定期审计和监控

  • 启用全面的审计功能
  • 监控敏感数据访问和使用情况
  • 及时处理异常访问行为

5. 员工培训

  • 定期对员工进行数据安全培训
  • 提高员工的敏感数据保护意识
  • 建立数据安全责任制

6. 定期安全评估

  • 定期进行数据安全评估
  • 识别潜在的安全风险
  • 采取措施降低风险

7. 应急响应

  • 建立敏感数据泄露应急预案
  • 定期进行应急演练
  • 发生数据泄露时及时响应和处理

不同版本的差异

DM 7 vs DM 8

特性DM 7DM 8
透明数据加密(TDE)支持表空间加密支持表空间加密、列加密、透明数据加密
数据脱敏基本支持支持静态脱敏、动态脱敏,多种脱敏算法
访问控制基于角色的访问控制增强的访问控制,支持行级、列级访问控制
审计功能基本审计细粒度审计,支持多种审计策略
加密算法支持基本加密算法支持国密算法(SM2、SM3、SM4)
敏感数据识别手动识别支持自动敏感数据识别工具

DM 8.1 新特性

  • 增强的敏感数据识别功能
  • 更丰富的数据脱敏算法
  • 改进的密钥管理机制
  • 更好的合规性支持
  • 集成的数据安全管理平台

常见问题(FAQ)

Q1: 如何识别数据库中的敏感数据?

A1: 可以通过以下方法识别敏感数据:

  • 人工识别:根据业务经验手动标记
  • 规则识别:使用正则表达式、数据字典等规则
  • 自动识别:使用DM数据库提供的敏感数据识别工具
  • 机器学习:使用机器学习算法自动识别

Q2: 如何选择合适的加密算法?

A2: 选择加密算法时应考虑以下因素:

  • 安全性要求:根据数据敏感级别选择合适的算法
  • 性能影响:不同算法的性能开销不同
  • 合规要求:是否需要符合特定法规要求(如国密算法)
  • 兼容性:与现有系统的兼容性

Q3: 如何实现动态脱敏?

A3: 实现动态脱敏的步骤:

  • 创建动态脱敏策略,定义脱敏规则
  • 应用脱敏策略到目标表和列
  • 配置用户权限,确定不同用户的脱敏级别
  • 验证脱敏效果,确保不同用户看到不同的数据

Q4: 如何管理加密密钥?

A4: 密钥管理的最佳实践:

  • 使用安全的密钥生成算法
  • 定期更换密钥
  • 分离密钥管理与数据管理职责
  • 建立密钥备份和恢复机制
  • 限制密钥访问权限
  • 记录密钥操作日志

Q5: 如何确保备份数据的安全?

A5: 确保备份数据安全的措施:

  • 对备份数据进行加密
  • 存储在安全的位置
  • 限制备份数据的访问权限
  • 定期测试备份数据的可恢复性
  • 建立备份数据的访问审计机制

Q6: 如何处理敏感数据泄露事件?

A6: 处理敏感数据泄露事件的步骤:

  • 立即启动应急预案
  • 隔离受影响的系统和数据
  • 评估泄露的范围和影响
  • 通知相关人员和监管机构
  • 采取措施防止进一步泄露
  • 调查泄露原因
  • 实施整改措施
  • 向受影响的个人通报

Q7: 如何满足合规性要求?

A7: 满足合规性要求的方法:

  • 了解相关法规和标准的要求
  • 建立合规性管理体系
  • 实施相应的技术和管理措施
  • 定期进行合规性审计
  • 保存审计记录和报告
  • 持续改进合规性管理

在实际应用中,应根据企业的业务需求和合规要求,选择合适的敏感数据管理策略和技术手段。同时,应定期进行安全评估和审计,及时发现和处理潜在的安全风险,持续改进敏感数据管理体系。

随着数据安全法规的日益严格和技术的不断发展,敏感数据管理将成为企业数据管理的核心内容之一。DM数据库提供了丰富的敏感数据管理功能,可以帮助企业建立安全、可靠、合规的敏感数据管理体系,保护企业的核心数据资产。