外观
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.txt3. 敏感数据分类
根据敏感程度和保护要求,敏感数据可以分为不同级别:
| 级别 | 描述 | 保护要求 |
|---|---|---|
| 绝密 | 最高级别,泄露会造成严重危害 | 严格访问控制、加密存储、全面审计 |
| 机密 | 较高级别,泄露会造成较大危害 | 严格访问控制、加密存储、审计 |
| 秘密 | 一般级别,泄露会造成一定危害 | 访问控制、加密存储 |
| 内部 | 内部使用,不对外公开 | 基本访问控制 |
| 公开 | 可以公开的数据 | 基本保护 |
敏感数据保护策略
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_password1.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 7 | DM 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数据库提供了丰富的敏感数据管理功能,可以帮助企业建立安全、可靠、合规的敏感数据管理体系,保护企业的核心数据资产。
