外观
DM 高级安全特性
安全特性体系
DM 数据库的安全特性体系包括以下层次:
| 安全层次 | 核心特性 | 功能描述 |
|---|---|---|
| 身份认证 | 多因素认证、LDAP 集成、证书认证 | 验证用户身份,防止非法访问 |
| 访问控制 | 细粒度权限管理、行级安全、列级安全 | 控制用户对数据的访问权限 |
| 数据保护 | 透明数据加密、列加密、大字段加密 | 保护数据的机密性 |
| 安全审计 | 细粒度审计、统一审计、审计分析 | 记录和分析数据库活动 |
| 入侵检测 | 异常行为检测、攻击防护 | 检测和防止数据库攻击 |
| 安全管理 | 安全配置管理、漏洞扫描、安全加固 | 管理和维护数据库安全 |
安全合规支持
DM 数据库的安全特性支持多种安全合规标准,包括:
- 等保 2.0 三级、四级
- GDPR(通用数据保护条例)
- SOX(萨班斯-奥克斯利法案)
- PCI DSS(支付卡行业数据安全标准)
- HIPAA(健康保险流通与责任法案)
身份认证机制
DM 数据库提供了多种身份认证机制,确保只有合法用户才能访问数据库系统。
认证方式
| 认证方式 | 描述 | 适用场景 |
|---|---|---|
| 密码认证 | 使用用户名和密码进行认证 | 基本认证场景 |
| 多因素认证 | 结合密码和其他因素(如令牌、指纹)进行认证 | 高安全要求场景 |
| LDAP 集成 | 集成外部 LDAP 服务器进行认证 | 企业统一身份管理 |
| 证书认证 | 使用数字证书进行认证 | 高安全要求场景 |
| 操作系统认证 | 使用操作系统用户进行认证 | 本地管理场景 |
| 集群认证 | 集群节点间的认证机制 | 集群环境 |
密码策略
DM 数据库提供了严格的密码策略,增强密码的安全性:
| 策略项 | 描述 | 默认值 |
|---|---|---|
| 密码长度 | 密码最小长度 | 8 |
| 密码复杂度 | 密码必须包含的字符类型 | 字母、数字、特殊字符 |
| 密码过期 | 密码有效期(天) | 90 |
| 密码历史 | 禁止使用的历史密码数量 | 5 |
| 登录失败锁定 | 连续登录失败次数 | 5 |
| 锁定时间 | 登录失败锁定时间(分钟) | 30 |
配置示例
sql
-- 设置密码策略
ALTER SYSTEM SET "PASSWORD_POLICY" = 31 SPFILE; -- 启用所有密码策略
-- 创建使用 LDAP 认证的用户
CREATE USER ldap_user IDENTIFIED EXTERNALLY AS 'uid=ldap_user,ou=people,dc=example,dc=com';
-- 配置证书认证
ALTER SYSTEM SET "ENABLE_SSL" = 1 SPFILE;
ALTER SYSTEM SET "SSL_KEY" = '/path/to/server.key' SPFILE;
ALTER SYSTEM SET "SSL_CERT" = '/path/to/server.crt' SPFILE;访问控制
DM 数据库提供了细粒度的访问控制机制,确保用户只能访问其被授权的数据和资源。
权限管理
权限级别
DM 数据库的权限分为以下几个级别:
- 系统权限:对数据库系统级资源的访问权限,如 CREATE TABLE、ALTER SYSTEM 等
- 对象权限:对特定数据库对象的访问权限,如 SELECT、INSERT、UPDATE、DELETE 等
- 角色权限:预定义的权限集合,便于权限管理
- 行级权限:对表中特定行的访问权限
- 列级权限:对表中特定列的访问权限
角色管理
DM 数据库提供了多种预定义角色,同时支持自定义角色:
| 预定义角色 | 权限描述 |
|---|---|
| DBA | 数据库管理员角色,拥有所有权限 |
| RESOURCE | 资源角色,允许创建数据库对象 |
| PUBLIC | 公共角色,所有用户默认拥有 |
| AUDITOR | 审计员角色,负责审计管理 |
| SECURITY | 安全管理员角色,负责安全配置 |
配置示例
sql
-- 创建自定义角色
CREATE ROLE sales_role;
-- 授予权限给角色
GRANT SELECT, INSERT, UPDATE ON sales TO sales_role;
GRANT EXECUTE ON sales_proc TO sales_role;
-- 授予角色给用户
GRANT sales_role TO sales_user;
-- 行级安全控制
CREATE POLICY sales_dept_policy ON sales
USING (dept_id = SYS_CONTEXT('USERENV', 'SESSION_USER_DEPT'));
-- 列级安全控制
REVOKE SELECT ON sales(bonus) FROM sales_user;虚拟专用数据库(VPD)
DM 数据库支持虚拟专用数据库(VPD),允许根据用户的身份或上下文信息动态控制数据访问。
VPD 工作原理
- 定义安全策略函数,根据用户上下文返回过滤条件
- 将安全策略应用到表或视图上
- 当用户访问表或视图时,数据库自动将过滤条件添加到查询中
- 用户只能看到符合过滤条件的数据
配置示例
sql
-- 创建安全策略函数
CREATE FUNCTION sales_vpd_func(obj_schema VARCHAR(128), obj_name VARCHAR(128))
RETURNS VARCHAR(1000)
AS
BEGIN
RETURN 'dept_id = ' || SYS_CONTEXT('USERENV', 'SESSION_USER_DEPT');
END;
-- 创建安全策略
CREATE POLICY sales_vpd_policy ON sales
USING sales_vpd_func;
-- 启用 VPD
ALTER SYSTEM SET "ENABLE_VPD" = 1 SPFILE;数据保护
DM 数据库提供了多种数据保护机制,保护数据的机密性和完整性。
透明数据加密(TDE)
透明数据加密(TDE)自动加密数据库文件,对应用程序透明,无需修改应用代码。
TDE 特点
- 加密整个数据文件,包括数据、索引和元数据
- 对应用程序完全透明,无需修改应用代码
- 支持多种加密算法,如 AES-128、AES-192、AES-256
- 加密密钥由密钥管理器管理,安全可靠
配置示例
sql
-- 启用 TDE
ALTER SYSTEM SET "ENABLE_TDE" = 1 SPFILE;
-- 设置 TDE 加密算法
ALTER SYSTEM SET "TDE_ALGORITHM" = 'AES256' SPFILE;
-- 创建加密表空间
CREATE TABLESPACE encrypted_ts
DATAFILE 'encrypted.dbf' SIZE 100M
ENCRYPTION USING 'AES256' IDENTIFIED BY 'tde_key';
-- 在加密表空间创建表
CREATE TABLE sensitive_data (id INT, data VARCHAR(100))
TABLESPACE encrypted_ts;列加密
列加密允许对表中的特定列进行加密,提供更细粒度的数据保护。
列加密特点
- 支持对特定列进行加密,保护敏感数据
- 支持多种加密算法
- 提供加密函数和解密函数,方便应用程序使用
- 支持索引加密,保护索引数据
配置示例
sql
-- 创建带列加密的表
CREATE TABLE customer (
id INT PRIMARY KEY,
name VARCHAR(100),
credit_card VARCHAR(16) ENCRYPT USING 'AES128' IDENTIFIED BY 'col_key',
ssn VARCHAR(11) ENCRYPT USING 'AES128' IDENTIFIED BY 'col_key'
);
-- 插入数据
INSERT INTO customer VALUES (1, 'John', '1234567890123456', '123-45-6789');
-- 查询加密列
SELECT id, name, DECRYPT(credit_card) FROM customer;大字段加密
DM 数据库支持对大字段(CLOB、BLOB)进行加密,保护大型敏感数据。
配置示例
sql
-- 创建带大字段加密的表
CREATE TABLE document (
id INT PRIMARY KEY,
title VARCHAR(100),
content CLOB ENCRYPT USING 'AES256' IDENTIFIED BY 'blob_key',
attachment BLOB ENCRYPT USING 'AES256' IDENTIFIED BY 'blob_key'
);
-- 插入大字段数据
INSERT INTO document VALUES (1, '机密文档', '这是机密内容', EMPTY_BLOB());安全审计
DM 数据库提供了全面的审计功能,记录和分析数据库活动,帮助管理员监控数据库使用情况,检测和防止非法活动。
审计类型
| 审计类型 | 描述 | 配置参数 |
|---|---|---|
| 语句审计 | 审计特定类型的 SQL 语句 | AUDIT_SQL_TYPE |
| 对象审计 | 审计对特定对象的操作 | AUDIT_OBJECT |
| 权限审计 | 审计特定权限的使用 | AUDIT_PRIV |
| 细粒度审计 | 审计特定条件下的操作 | AUDIT_POLICY |
| 统一审计 | 集中管理所有审计策略 | UNIFIED_AUDIT |
审计配置
基本审计配置
sql
-- 启用审计
ALTER SYSTEM SET "ENABLE_AUDIT" = 1 SPFILE;
-- 设置审计日志路径
ALTER SYSTEM SET "AUDIT_FILE_PATH" = '/dm/audit' SPFILE;
-- 设置审计日志大小
ALTER SYSTEM SET "AUDIT_FILE_SIZE" = 1024 SPFILE;语句审计
sql
-- 审计所有 CREATE TABLE 语句
AUDIT CREATE TABLE;
-- 审计所有 SELECT 语句
AUDIT SELECT TABLE;
-- 审计特定用户的 UPDATE 语句
AUDIT UPDATE TABLE BY sales_user;对象审计
sql
-- 审计对 sales 表的所有操作
AUDIT ALL ON sales;
-- 审计对 sales 表的 SELECT 和 INSERT 操作
AUDIT SELECT, INSERT ON sales;
-- 审计对 sales_proc 存储过程的执行
AUDIT EXECUTE ON sales_proc;细粒度审计
sql
-- 创建审计策略
CREATE AUDIT POLICY sensitive_data_policy
PRIVILEGES SELECT, UPDATE ON sensitive_data
WHEN 'SYS_CONTEXT(''USERENV'', ''SESSION_USER'') <> ''ADMIN''' EVALUATE PER STATEMENT;
-- 启用审计策略
AUDIT POLICY sensitive_data_policy;审计分析
DM 数据库提供了审计分析工具,帮助管理员分析审计日志,检测异常活动。
审计视图
| 视图名称 | 用途 |
|---|---|
| DBA_AUDIT_TRAIL | 所有审计记录 |
| DBA_AUDIT_STATEMENT | 语句审计记录 |
| DBA_AUDIT_OBJECT | 对象审计记录 |
| DBA_AUDIT_SESSION | 会话审计记录 |
| DBA_AUDIT_PRIVILEGES | 权限审计记录 |
审计分析示例
sql
-- 查询最近 7 天的审计记录
SELECT * FROM DBA_AUDIT_TRAIL
WHERE TIMESTAMP >= SYSDATE - 7;
-- 查询失败的登录尝试
SELECT USERNAME, TIMESTAMP, OS_USERNAME, USERHOST, RETURNCODE
FROM DBA_AUDIT_SESSION
WHERE ACTION_NAME = 'LOGON'
AND RETURNCODE != 0;
-- 查询对敏感表的访问
SELECT * FROM DBA_AUDIT_OBJECT
WHERE OBJECT_NAME = 'SENSITIVE_DATA'
AND ACTION_NAME IN ('SELECT', 'UPDATE', 'DELETE');入侵检测与防护
DM 数据库提供了入侵检测和防护机制,检测和防止数据库攻击,保护数据库系统的安全。
异常行为检测
DM 数据库能够检测异常的数据库行为,如:
- 异常登录模式(如非工作时间登录、异常地点登录)
- 异常查询模式(如大量数据查询、全表扫描)
- 异常权限使用(如普通用户使用管理员权限)
- 异常数据修改(如大量数据删除、更新)
攻击防护
DM 数据库提供了多种攻击防护机制,包括:
| 防护机制 | 描述 |
|---|---|
| SQL 注入防护 | 检测和防止 SQL 注入攻击 |
| 缓冲区溢出防护 | 防止缓冲区溢出攻击 |
| 拒绝服务防护 | 限制并发连接数,防止 DoS 攻击 |
| 暴力破解防护 | 锁定多次登录失败的用户 |
| 命令注入防护 | 防止命令注入攻击 |
配置示例
sql
-- 启用入侵检测
ALTER SYSTEM SET "ENABLE_INTRUSION_DETECTION" = 1 SPFILE;
-- 设置登录失败锁定次数
ALTER SYSTEM SET "FAILED_LOGIN_ATTEMPTS" = 5 SPFILE;
-- 设置锁定时间
ALTER SYSTEM SET "PASSWORD_LOCK_TIME" = 30 SPFILE;
-- 限制并发连接数
ALTER SYSTEM SET "MAX_SESSIONS" = 1000 SPFILE;
-- 启用 SQL 注入防护
ALTER SYSTEM SET "ENABLE_SQL_INJECTION_PROTECTION" = 1 SPFILE;安全管理工具
DM 数据库提供了多种安全管理工具,方便管理员管理和维护数据库安全。
安全管理工具
| 工具名称 | 功能描述 |
|---|---|
| DM 安全管理工具 | 图形化安全管理界面,用于配置和管理数据库安全 |
| DM 审计分析工具 | 审计日志分析工具,用于分析和报告审计数据 |
| DM 漏洞扫描工具 | 数据库漏洞扫描工具,用于检测数据库漏洞 |
| DM 安全加固工具 | 数据库安全加固工具,用于加固数据库配置 |
| DM 密钥管理工具 | 密钥管理工具,用于管理加密密钥 |
安全配置管理
DM 数据库提供了安全配置管理功能,帮助管理员管理数据库的安全配置。
安全配置检查
sql
-- 检查数据库安全配置
CALL SP_DB_SECURITY_CHECK();
-- 查看安全配置报告
SELECT * FROM V$DB_SECURITY_CHECK_RESULT;安全加固
sql
-- 执行安全加固
CALL SP_DB_SECURITY_HARDEN();
-- 查看加固建议
SELECT * FROM V$DB_SECURITY_HARDEN_ADVICE;安全审计报告
DM 数据库支持生成安全审计报告,帮助管理员了解数据库的安全状况,满足合规要求。
报告类型
| 报告类型 | 内容 | 适用场景 |
|---|---|---|
| 安全合规报告 | 数据库安全配置与合规标准的对比 | 合规检查 |
| 审计汇总报告 | 审计日志的汇总分析 | 日常监控 |
| 异常行为报告 | 异常数据库行为的分析 | 安全事件调查 |
| 权限使用报告 | 用户权限使用情况的分析 | 权限管理 |
生成报告
sql
-- 生成安全合规报告
CALL SP_GENERATE_COMPLIANCE_REPORT('GDPR', '/dm/reports/gdpr_report.html');
-- 生成审计汇总报告
CALL SP_GENERATE_AUDIT_SUMMARY_REPORT(SYSDATE - 7, SYSDATE, '/dm/reports/audit_summary.html');
-- 生成异常行为报告
CALL SP_GENERATE_ANOMALY_REPORT(SYSDATE - 7, SYSDATE, '/dm/reports/anomaly_report.html');版本差异
DM 7 vs DM 8 安全特性差异
| 差异点 | DM 7 | DM 8 |
|---|---|---|
| 身份认证 | 基本密码认证 | 支持多因素认证、LDAP 集成、证书认证 |
| 访问控制 | 基本权限管理 | 支持行级安全、列级安全、VPD |
| 数据加密 | 基本列加密 | 支持透明数据加密、列加密、大字段加密 |
| 安全审计 | 基本审计功能 | 支持细粒度审计、统一审计、审计分析 |
| 入侵检测 | 无 | 支持异常行为检测、攻击防护 |
| 安全管理 | 基本安全管理 | 提供完整的安全管理工具链 |
DM 8.1 新特性
- 增强了多因素认证,支持更多认证因素
- 优化了透明数据加密性能,减少加密开销
- 增强了细粒度审计,支持更复杂的审计条件
- 改进了入侵检测算法,提高了检测准确率
- 增加了安全合规报告,支持更多合规标准
- 增强了与第三方安全工具的集成
安全最佳实践
1. 身份认证最佳实践
- 使用强密码策略,要求密码包含字母、数字和特殊字符
- 启用多因素认证,提高认证安全性
- 定期更换密码,避免密码过期
- 限制登录失败次数,防止暴力破解
- 集成企业 LDAP 或 AD,实现统一身份管理
2. 访问控制最佳实践
- 遵循最小权限原则,只授予用户必要的权限
- 使用角色管理权限,便于权限维护
- 实现行级和列级安全,保护敏感数据
- 定期审查用户权限,撤销不必要的权限
- 使用 VPD 实现动态数据访问控制
3. 数据保护最佳实践
- 对敏感数据实施加密,包括存储加密和传输加密
- 使用强加密算法,如 AES-256
- 安全管理加密密钥,定期更换密钥
- 对备份数据也进行加密,保护备份数据安全
- 实现数据脱敏,保护非生产环境中的数据
4. 安全审计最佳实践
- 启用全面的审计功能,记录所有重要数据库活动
- 定期分析审计日志,检测异常行为
- 安全存储审计日志,防止日志被篡改
- 保留审计日志足够长的时间,满足合规要求
- 使用统一审计,简化审计管理
5. 入侵检测最佳实践
- 启用入侵检测功能,检测异常数据库行为
- 配置合理的检测阈值,减少误报
- 定期更新入侵检测规则,适应新的攻击方式
- 建立安全事件响应机制,及时处理安全事件
- 与企业 SIEM 系统集成,实现集中安全监控
常见问题(FAQ)
Q1: 如何启用 DM 数据库的透明数据加密?
A1: 可以通过以下步骤启用:
- 设置加密算法:
ALTER SYSTEM SET "TDE_ALGORITHM" = 'AES256' SPFILE; - 启用 TDE:
ALTER SYSTEM SET "ENABLE_TDE" = 1 SPFILE; - 重启数据库实例
- 创建加密表空间:
CREATE TABLESPACE encrypted_ts DATAFILE 'encrypted.dbf' SIZE 100M ENCRYPTION USING 'AES256' IDENTIFIED BY 'tde_key';
Q2: 如何实现 DM 数据库的行级安全?
A2: 可以通过以下方式实现:
- 使用行级权限:
CREATE POLICY sales_dept_policy ON sales USING (dept_id = SYS_CONTEXT('USERENV', 'SESSION_USER_DEPT')); - 使用 VPD(虚拟专用数据库):创建安全策略函数并应用到表上
- 使用视图:创建基于用户权限的视图
Q3: 如何配置 DM 数据库的审计功能?
A3: 可以通过以下步骤配置:
- 启用审计:
ALTER SYSTEM SET "ENABLE_AUDIT" = 1 SPFILE; - 设置审计日志路径:
ALTER SYSTEM SET "AUDIT_FILE_PATH" = '/dm/audit' SPFILE; - 配置审计类型:使用 AUDIT 命令配置语句审计、对象审计或权限审计
- 创建细粒度审计策略:
CREATE AUDIT POLICY sensitive_data_policy PRIVILEGES SELECT, UPDATE ON sensitive_data;
Q4: 如何集成 DM 数据库与 LDAP?
A4: 可以通过以下步骤集成:
- 配置 LDAP 服务器连接信息
- 创建外部认证用户:
CREATE USER ldap_user IDENTIFIED EXTERNALLY AS 'uid=ldap_user,ou=people,dc=example,dc=com'; - 启用 LDAP 认证:
ALTER SYSTEM SET "ENABLE_LDAP" = 1 SPFILE; - 配置 LDAP 参数:设置 LDAP 服务器地址、端口、基础 DN 等
Q5: 如何保护 DM 数据库的备份数据?
A5: 可以通过以下方式保护:
- 对备份数据进行加密:
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO backup1 BACKUPSET '/opt/dmdbms/backup/backup1' ENCRYPT WITH 'AES256' IDENTIFIED BY 'backup_key'; - 安全存储备份数据,限制访问权限
- 定期测试备份恢复,确保备份数据可用
- 实现备份数据的异地存储,防止本地灾难
Q6: 如何检测 DM 数据库中的异常行为?
A6: 可以通过以下方式检测:
- 启用入侵检测功能:
ALTER SYSTEM SET "ENABLE_INTRUSION_DETECTION" = 1 SPFILE; - 分析审计日志,查找异常登录、异常查询或异常数据修改
- 使用 DM 审计分析工具,生成异常行为报告
- 配置告警,及时通知管理员异常行为
Q7: 如何实现 DM 数据库的列级安全?
A7: 可以通过以下方式实现:
- 回收特定列的权限:
REVOKE SELECT ON sales(bonus) FROM sales_user; - 使用列加密:
CREATE TABLE customer (id INT, credit_card VARCHAR(16) ENCRYPT USING 'AES128' IDENTIFIED BY 'col_key'); - 使用视图,隐藏敏感列:
CREATE VIEW customer_view AS SELECT id, name FROM customer;
Q8: 如何管理 DM 数据库的加密密钥?
A8: 可以通过以下方式管理:
- 使用 DM 密钥管理工具管理加密密钥
- 定期更换加密密钥,提高安全性
- 安全存储密钥备份,防止密钥丢失
- 实现密钥的访问控制,只有授权人员才能访问密钥
Q9: 如何进行 DM 数据库的安全合规检查?
A9: 可以通过以下步骤进行:
- 执行安全配置检查:
CALL SP_DB_SECURITY_CHECK(); - 查看安全配置报告:
SELECT * FROM V$DB_SECURITY_CHECK_RESULT; - 生成安全合规报告:
CALL SP_GENERATE_COMPLIANCE_REPORT('GDPR', '/dm/reports/gdpr_report.html'); - 根据报告修复安全配置问题
Q10: 如何加固 DM 数据库的安全配置?
A10: 可以通过以下方式加固:
- 执行安全加固:
CALL SP_DB_SECURITY_HARDEN(); - 查看加固建议:
SELECT * FROM V$DB_SECURITY_HARDEN_ADVICE; - 禁用不必要的服务和功能
- 限制数据库的网络访问,使用防火墙
- 定期更新数据库补丁,修复安全漏洞
