本文档风哥主要介绍Oracle数据库安全加固相关知识,包括数据库安全加固的概念、基线、加固、审计等内容,由风哥教程参考Oracle官方文档数据库安全内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 数据库安全加固概念
Oracle数据库安全加固是指通过配置和优化数据库安全设置,提高数据库的安全性,防止未经授权的访问和数据泄露。学习交流加群风哥微信: itpux-com
- 保护数据机密性
- 保护数据完整性
- 保护数据可用性
- 防止未授权访问
- 满足合规要求
1.2 数据库安全加固组件
数据库安全加固的主要组件:
- 用户管理:用户和权限管理
- 访问控制:访问控制策略
- 加密:数据加密
- 审计:安全审计
- 网络安全:网络安全配置
1.3 数据库安全加固功能
数据库安全加固的主要功能:
- 身份认证:用户身份认证
- 访问控制:访问权限控制
- 数据加密:数据加密保护
- 安全审计:安全审计记录
- 安全监控:安全状态监控
Part02-生产环境规划与建议
2.1 数据库安全加固规划
数据库安全加固规划要点:
– 安全基线:确定安全基线
– 安全评估:评估安全状态
– 风险评估:评估安全风险
– 合规评估:评估合规要求
# 安全加固规划
– 加固范围:确定加固范围
– 加固步骤:制定加固步骤
– 加固测试:测试加固效果
– 加固验证:验证加固结果
# 安全监控规划
– 监控指标:确定监控指标
– 监控频率:确定监控频率
– 告警阈值:设置告警阈值
– 响应流程:制定响应流程
2.2 数据库安全加固设计原则
数据库安全加固设计原则:
- 最小权限:授予最小必要权限
- 深度防御:多层安全防护
- 默认拒绝:默认拒绝访问
- 审计追踪:完善审计追踪
- 持续改进:持续安全改进
2.3 数据库安全加固策略
数据库安全加固策略:
- 用户策略:用户管理策略
- 权限策略:权限管理策略
- 加密策略:数据加密策略
- 审计策略:安全审计策略
- 网络策略:网络安全策略
Part03-生产环境项目实施方案
3.1 数据库安全基线
3.1.1 用户安全基线
# 1. 锁定默认账户
SQL> SELECT username, account_status FROM dba_users
WHERE username IN (‘SCOTT’,’HR’,’OE’,’PM’,’SH’);
USERNAME ACCOUNT_STATUS
——————– —————
SCOTT OPEN
HR OPEN
# 锁定不需要的账户
SQL> ALTER USER scott ACCOUNT LOCK;
SQL> ALTER USER hr ACCOUNT LOCK;
# 2. 修改默认密码
SQL> SELECT username FROM dba_users WHERE account_status = ‘OPEN’;
# 修改用户密码
SQL> ALTER USER system IDENTIFIED BY “Fgedu_2026!”;
SQL> ALTER USER sys IDENTIFIED BY “Fgedu_2026!”;
# 3. 配置密码策略
SQL> ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 12
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LOCK_TIME 1
PASSWORD_VERIFY_FUNCTION verify_function;
# 4. 检查密码复杂度
SQL> SELECT * FROM dba_profiles
WHERE resource_type = ‘PASSWORD’;
3.1.2 权限安全基线
# 1. 检查DBA权限
SQL> SELECT grantee FROM dba_role_privs
WHERE granted_role = ‘DBA’;
GRANTEE
——————————
SYS
SYSTEM
FGEDU_ADMIN
# 2. 检查危险权限
SQL> SELECT grantee, privilege
FROM dba_sys_privs
WHERE privilege IN (‘ANY TABLE’,’ANY PROCEDURE’);
# 3. 收回不必要的权限
SQL> REVOKE SELECT ANY TABLE FROM fgedu_user;
SQL> REVOKE EXECUTE ANY PROCEDURE FROM fgedu_user;
# 4. 检查对象权限
SQL> SELECT grantee, owner, table_name, privilege
FROM dba_tab_privs
WHERE grantee NOT IN (‘SYS’,’SYSTEM’);
# 5. 检查角色权限
SQL> SELECT * FROM dba_role_privs
WHERE grantee NOT IN (‘SYS’,’SYSTEM’);
3.2 数据库安全加固
3.2.1 网络安全加固
# 1. 配置sqlnet.ora
# 编辑 $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES = (NTS,TCPS,BEQ)
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256,AES192,AES128)
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256,SHA1)
# 2. 配置listener.ora
# 编辑 $ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = fgeduhost)(PORT = 2484))
(ADDRESS = (PROTOCOL = TCP)(HOST = fgeduhost)(PORT = 1521))
)
)
# 3. 配置IP限制
# 编辑 $ORACLE_HOME/network/admin/sqlnet.ora
TCP.EXCLUDED_NODES = (192.168.100.0/24)
TCP.INVITED_NODES = (192.168.1.0/24,localhost)
# 4. 重启监听
$ lsnrctl stop
$ lsnrctl start
# 5. 验证配置
$ lsnrctl status
3.2.2 数据加密加固
# 1. 配置透明数据加密(TDE)
# 创建密钥库
SQL> ADMINISTER KEY MANAGEMENT
CREATE KEYSTORE ‘/oracle/app/oracle/wallet’
IDENTIFIED BY “Fgedu_2026!”;
# 打开密钥库
SQL> ADMINISTER KEY MANAGEMENT
SET KEYSTORE OPEN
IDENTIFIED BY “Fgedu_2026!”;
# 创建主密钥
SQL> ADMINISTER KEY MANAGEMENT
SET KEY
IDENTIFIED BY “Fgedu_2026!”
WITH BACKUP;
# 2. 加密表空间
SQL> CREATE TABLESPACE fgedu_secure
DATAFILE ‘/oradata/fgedudb/fgedu_secure01.dbf’ SIZE 1G
ENCRYPTION USING ‘AES256’
DEFAULT STORAGE(ENCRYPT);
# 3. 加密列
SQL> ALTER TABLE customers
MODIFY (credit_card ENCRYPT USING ‘AES256’);
# 4. 查看加密状态
SQL> SELECT * FROM v$encryption_wallet;
SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces;
SQL> SELECT table_name, column_name FROM dba_encrypted_columns;
3.3 数据库安全审计
3.3.1 配置标准审计
# 1. 启用审计
SQL> ALTER SYSTEM SET audit_trail=db,extended SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
# 2. 审计用户登录
SQL> AUDIT CREATE SESSION;
# 3. 审计权限使用
SQL> AUDIT SELECT ANY TABLE BY ACCESS;
SQL> AUDIT EXECUTE ANY PROCEDURE BY ACCESS;
# 4. 审计特定操作
SQL> AUDIT ALTER USER BY ACCESS;
SQL> AUDIT CREATE USER BY ACCESS;
SQL> AUDIT DROP USER BY ACCESS;
# 5. 审计特定用户
SQL> AUDIT ALL BY fgedu_admin BY ACCESS;
# 6. 查看审计记录
SQL> SELECT * FROM dba_audit_trail
WHERE timestamp > SYSDATE – 1;
# 7. 查看审计选项
SQL> SELECT * FROM dba_stmt_audit_opts;
SQL> SELECT * FROM dba_priv_audit_opts;
3.3.2 配置统一审计
# 1. 创建审计策略
SQL> BEGIN
DBMS_AUDIT_MGMT.CREATE_AUDIT_POLICY(
audit_policy_name => ‘FGEDU_SECURITY_POLICY’,
privilege_select_actions => TRUE,
privilege_dml_actions => TRUE,
privilege_ddl_actions => TRUE
);
END;
/
# 2. 启用审计策略
SQL> BEGIN
DBMS_AUDIT_MGMT.ENABLE_AUDIT_POLICY(
audit_policy_name => ‘FGEDU_SECURITY_POLICY’
);
END;
/
# 3. 查看审计策略
SQL> SELECT * FROM audit_unified_policies;
# 4. 查看审计记录
SQL> SELECT * FROM unified_audit_trail
WHERE event_timestamp > SYSDATE – 1;
# 5. 清理审计记录
SQL> BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp => TRUE
);
END;
/
Part04-生产案例与实战讲解
4.1 数据库安全加固常见问题
4.1.1 权限过大
# 分析步骤:
# 1. 检查用户权限
SQL> SELECT grantee, privilege
FROM dba_sys_privs
WHERE grantee = ‘FGEDU_USER’;
GRANTEE PRIVILEGE
——————– ——————–
FGEDU_USER SELECT ANY TABLE
FGEDU_USER EXECUTE ANY PROCEDURE
# 2. 检查角色权限
SQL> SELECT granted_role FROM dba_role_privs
WHERE grantee = ‘FGEDU_USER’;
GRANTED_ROLE
——————————
DBA
# 3. 解决方案
# 收回不必要的权限
SQL> REVOKE DBA FROM fgedu_user;
SQL> REVOKE SELECT ANY TABLE FROM fgedu_user;
# 授予必要的权限
SQL> GRANT SELECT ON fgedu.orders TO fgedu_user;
SQL> GRANT EXECUTE ON fgedu.pkg_orders TO fgedu_user;
4.2 数据库安全加固故障排除
# 分析步骤:
# 1. 检查审计日志大小
SQL> SELECT segment_name, bytes/1024/1024 MB
FROM dba_segments
WHERE segment_name LIKE ‘AUD%’;
SEGMENT_NAME MB
——————– ———-
AUD$ 5000
# 2. 检查审计记录数量
SQL> SELECT count(*) FROM dba_audit_trail;
COUNT(*)
———-
5000000
# 3. 解决方案
# 清理旧审计记录
SQL> BEGIN
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
last_archive_time => SYSDATE – 30
);
END;
/
SQL> BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
use_last_arch_timestamp => TRUE
);
END;
/
4.3 数据库安全加固优化方案
数据库安全加固优化方案:
- 定期评估:定期安全评估
- 持续加固:持续安全加固
- 监控告警:安全监控告警
- 应急响应:安全应急响应
- 培训教育:安全培训教育
Part05-风哥经验总结与分享
5.1 数据库安全加固最佳实践
数据库安全加固最佳实践:
- 最小权限:授予最小必要权限
- 定期审计:定期安全审计
- 加密保护:敏感数据加密
- 网络安全:网络安全配置
- 监控告警:安全监控告警
- 应急响应:安全应急响应
5.2 数据库安全加固检查清单
– [ ] 默认账户已锁定
– [ ] 默认密码已修改
– [ ] 密码策略已配置
– [ ] 权限已最小化
– [ ] 网络安全已配置
– [ ] 数据加密已配置
– [ ] 安全审计已启用
– [ ] 监控告警已配置
# 数据库安全问题处理流程
1. 发现安全问题
2. 收集安全相关信息
3. 分析安全问题原因
4. 制定处理方案
5. 执行处理方案
6. 验证问题解决
7. 总结经验,优化预防措施
5.3 数据库安全加固工具推荐
数据库安全加固常用工具:
- DBSAT:数据库安全评估工具
- Oracle Audit Vault:审计管理
- Oracle Database Vault:访问控制
- TDE:透明数据加密
- 统一审计:统一审计功能
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
