Skip to content

Oracle 安全最佳实践

安全最佳实践概述

Oracle数据库安全是保护企业核心数据资产的重要组成部分。遵循安全最佳实践可以减少安全风险、保护数据机密性、完整性和可用性,并确保符合合规要求。

访问控制最佳实践

1. 最小权限原则

  • 只授予用户和应用程序必要的权限
  • 避免使用DBA等高级权限
  • 使用角色管理权限,便于权限回收和管理
  • 定期审查和回收不必要的权限

示例

sql
-- 创建角色并授予必要权限
CREATE ROLE app_user_role;
GRANT SELECT, INSERT, UPDATE ON user_info TO app_user_role;
GRANT EXECUTE ON proc_get_user_info TO app_user_role;

-- 将角色授予用户
GRANT app_user_role TO app_user;

2. 身份认证

  • 使用强密码策略,包括密码长度、复杂度和过期时间
  • 启用密码验证函数,如 ORA12C_STRONG_VERIFY_FUNCTION
  • 考虑使用外部身份认证,如LDAP、Kerberos等
  • 启用双因素认证,提高认证安全性
  • 定期锁定或删除不活跃用户

示例

sql
-- 启用强密码验证函数
ALTER PROFILE DEFAULT LIMIT
  PASSWORD_LIFE_TIME 90
  PASSWORD_GRACE_TIME 7
  PASSWORD_REUSE_TIME 365
  PASSWORD_REUSE_MAX 5
  PASSWORD_VERIFY_FUNCTION ORA12C_STRONG_VERIFY_FUNCTION
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 1;

3. 网络访问控制

  • 限制数据库监听地址,避免监听所有网络接口
  • 使用监听器密码保护监听器配置
  • 配置TCP/IP端口过滤,只允许特定IP访问
  • 启用SQL*Net加密,保护网络传输数据
  • 考虑使用Oracle Connection Manager,集中管理连接

示例

sql
-- 配置监听器只监听特定IP
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    )
  )

-- 为监听器设置密码
LSNRCTL> set password
LSNRCTL> save_config

4. 特权用户管理

  • 限制SYS、SYSTEM等特权用户的访问
  • 为特权用户设置强密码
  • 避免在应用程序中使用特权用户
  • 定期审查特权用户的活动
  • 考虑使用Oracle Database Vault,限制特权用户的访问

数据加密最佳实践

1. 透明数据加密 (TDE)

  • 启用TDE,加密数据文件和备份
  • 加密敏感数据列,如密码、信用卡号等
  • 定期轮换加密密钥
  • 安全管理加密密钥,避免密钥泄露

示例

sql
-- 创建加密表空间
CREATE TABLESPACE encrypted_ts
  DATAFILE '/u01/oradata/ORCL/encrypted_ts01.dbf' SIZE 100M
  ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);

-- 创建加密列
CREATE TABLE user_info (
  user_id NUMBER,
  user_name VARCHAR2(50),
  credit_card VARCHAR2(16) ENCRYPT USING 'AES256'
);

2. 网络传输加密

  • 启用SQL*Net加密,保护客户端和服务器之间的数据传输
  • 配置加密算法,如AES256
  • 启用SSL/TLS,保护HTTPS访问
  • 避免使用明文传输敏感数据

示例

sql
-- 在sqlnet.ora中配置加密
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256, AES192, AES128)
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256, SHA1)

3. 备份加密

  • 启用RMAN备份加密,保护备份数据
  • 选择合适的加密算法
  • 安全管理备份加密密钥
  • 验证加密备份的可恢复性

示例

sql
-- 配置RMAN加密
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256';

-- 执行加密备份
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

审计和监控最佳实践

1. 数据库审计

  • 启用数据库审计,记录重要操作
  • 审计特权用户活动
  • 审计敏感数据访问
  • 审计用户登录和注销
  • 定期审查审计日志,发现异常活动

示例

sql
-- 启用统一审计
ALTER SYSTEM SET audit_trail = DB,EXTENDED SCOPE=SPFILE;

-- 审计用户登录和注销
CREATE AUDIT POLICY login_audit_policy
  ACTIONS LOGON, LOGOFF;

-- 审计敏感表访问
CREATE AUDIT POLICY sensitive_data_audit_policy
  ACTIONS SELECT, INSERT, UPDATE, DELETE ON user_info;

-- 启用审计策略
AUDIT POLICY login_audit_policy;
AUDIT POLICY sensitive_data_audit_policy;

2. 监控数据库活动

  • 配置数据库监控,实时监控数据库活动
  • 设置告警阈值,及时发现异常活动
  • 监控用户登录失败尝试
  • 监控特权用户活动
  • 监控数据库性能,发现异常行为

3. 日志管理

  • 配置审计日志的存储位置和大小
  • 定期归档审计日志,避免日志文件过大
  • 保护审计日志的完整性和可用性
  • 限制审计日志的访问权限
  • 定期备份审计日志

安全补丁管理最佳实践

1. 补丁评估

  • 定期检查Oracle安全公告,了解最新补丁
  • 评估补丁的重要性和影响范围
  • 确定补丁应用优先级,优先应用安全补丁

2. 补丁测试

  • 在测试环境中测试补丁,验证补丁的有效性
  • 测试应用程序兼容性,确保补丁不会影响业务
  • 测试系统性能,确保补丁不会导致性能下降
  • 测试回滚流程,确保在补丁应用失败时能够快速回滚

3. 补丁应用

  • 制定详细的补丁应用计划
  • 选择合适的补丁应用时间,避免影响业务
  • 在应用补丁前进行备份
  • 应用补丁后验证系统状态
  • 记录补丁应用过程和结果

4. 补丁验证

  • 验证补丁是否成功应用
  • 验证系统功能是否正常
  • 验证应用程序是否兼容
  • 验证系统性能是否正常

数据库加固最佳实践

1. 删除不必要的组件

  • 删除不必要的数据库组件和选项
  • 删除默认用户和示例 schema,如 SCOTT、HR 等
  • 禁用不必要的数据库服务

示例

sql
-- 删除示例用户
DROP USER SCOTT CASCADE;
DROP USER HR CASCADE;

2. 配置安全参数

  • 启用安全相关参数,如 SEC_CASE_SENSITIVE_LOGON(密码大小写敏感)
  • 禁用危险参数,如 REMOTE_OS_AUTHENT(远程操作系统认证)
  • 配置合理的资源限制,如 PROCESSESSESSIONS

示例

sql
-- 启用密码大小写敏感
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE SCOPE=SPFILE;

-- 禁用远程操作系统认证
ALTER SYSTEM SET REMOTE_OS_AUTHENT = FALSE SCOPE=SPFILE;

3. 保护数据库文件

  • 限制数据库文件的访问权限,只允许Oracle用户访问
  • 定期备份数据库文件
  • 存储数据库文件在安全的位置
  • 考虑使用ASM或其他安全存储解决方案

4. 定期安全评估

  • 定期进行数据库安全评估,发现安全漏洞
  • 使用Oracle安全评估工具,如 Oracle Database Security Assessment Tool (DBSAT)
  • 定期进行渗透测试,评估系统安全性
  • 根据评估结果,及时修复安全漏洞

19c 与 21c 安全差异

Oracle 19c 安全特性

  • 增强了自动诊断功能
  • 支持自动索引管理
  • 增强了SQL计划管理
  • 支持分区表在线迁移
  • 增强了Data Guard的安全性

Oracle 21c 安全特性

  • 引入了Autonomous Database,具有更强的安全性
  • 支持区块链表,提供不可篡改的数据存储
  • 增强了JSON支持,提供更好的JSON数据安全
  • 支持SQL宏,简化复杂查询的安全性
  • 增强了PL/SQL的安全性

安全工具推荐

  • Oracle Database Security Assessment Tool (DBSAT):Oracle官方安全评估工具
  • Oracle Enterprise Manager (OEM):Oracle官方监控和管理工具,支持安全监控
  • Oracle Audit Vault and Database Firewall (AVDF):Oracle官方审计和防火墙解决方案
  • OpenVAS:开源漏洞扫描工具
  • Nessus:商业化漏洞扫描工具

最佳实践

  1. 遵循最小权限原则:只授予必要的权限,减少安全风险
  2. 启用数据加密:保护数据在存储和传输过程中的安全
  3. 实施强身份认证:使用强密码策略和双因素认证
  4. 启用审计和监控:实时监控数据库活动,及时发现异常
  5. 定期应用安全补丁:及时修复安全漏洞
  6. 定期进行安全评估:发现和修复安全漏洞
  7. 保护数据库文件:限制数据库文件的访问权限
  8. 删除不必要的组件:减少攻击面
  9. 培训和意识:提高团队的安全意识和技能
  10. 制定安全策略:制定全面的安全策略,指导安全实践

结论

Oracle数据库安全是企业数据安全的重要组成部分。遵循安全最佳实践可以减少安全风险、保护数据机密性、完整性和可用性,并确保符合合规要求。随着Oracle版本的不断更新,安全特性也在不断增强,DBA团队需要持续关注最新的安全技术和最佳实践,不断提升数据库系统的安全性。