Oracle基础(3)--审计
数据库的安全性和审计
数据库安全
一个安全的系统可确保其中包含的数据的机密性。 安全性主要有:限制对数据和服务的访问、验证用户、监控可疑活动。
监视和审计
-
Mandatory auditing -- 强制审计
-
Standard database auditing – 标准数据库审
-
Value-based auditing – 基于值的审计
-
Fine-grained auditing (FGA) -- 细粒度审计
审计的活动类型
User accounts, roles, and privileges –用户账号操作 角色和权限
Object actions – 对象操作
Application context values – 应用程序上下文的值
Oracle Data Pump – ORACLE数据泵
Oracle Database Real Application Security – RAC安全
Oracle Database Vault – 数据库加密系统
Oracle Label Security – OACLE标签安全
Oracle Recovery Manager – RMAN恢复管理
Oracle SQL*Loader direct path events – SQLLOADER直接路径事件
…………
强制审计的内容
CREATE/ALTER/DROP AUDIT POLICY
AUDIT/NOAUDIT
EXECUTE of:DBMS_FGA、DBMS_AUDIT_MGMT
ALTER TABLE against AUDSYS audit trail table
Top-level statements by administrative users (SYS, SYSDBA, SYSOPER, SYSASM, SYSBACKUP, SYSDG, and SYSKM) until the database opens
默认审计模式
Oracle 19c之前默认情况下使用混合审计模式。
Oracle 19c之后的默认为统一审计功能(Oracle建议使用)。
查询V$OPTION以确定数据库是否已是统一审计:
`SELECT value FROM v$option WHERE parameter = 'Unified Auditing';`
用户管理审计需要的角色(权限)
-
AUDIT_ADMIN:
1.创建统一且细粒度的审计策略 2.执行AUDIT(审计)和NOAUDIT (非审计)SQL语句 3.查看审计数据 4.维护和管理审计跟踪(AUDSYS模式中的表)
-
AUDIT_VIEWER:
查看和分析审计数据
数据审计流程
启用统一审计
- 1.关闭数据库:
SQL> SHUTDOWN IMMEDIATE
- 2.关闭监听
$ lsnrctl stop
- 3.在oracle用户下执行启用统一审核可执行文件:
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
- 4.重启监听:
$ lsnrctl start
- 5.打开数据库:
SQL> STARTUP
创建统一审计策略
统一审计默认策略
(三种包含常用审计项预定义策略)
- ORA_SECURECONFIG
包含与Oracle Database 11g相同的默认审计设置。 默认情况下,此策略为统一审计和混合模式审计环境启用。 有关设置的完整列表,请参考《 Oracle数据库安全指南12c/19c》。
- ORA_DATABASE_PARAMETER_AUDIT
包含用于设置参数(ALTER DATABASE,ALTER SYSTEM和CREATE SPFILE)的常用Oracle数据库命令的审计设置
- ORA_ACCOUNT_MGMT_AUDIT
包含常用用户帐户和权限命令的审计设置(CREATE USER,ALTER USER,DROP USER,CREATE ROLE,DROP ROLE,ALTER ROLE,SET ROLE,GRANT和REVOKE)
创建统一审计策略
- 使用CREATE AUDIT POLICY 语句:
CREATE AUDIT POLICY select_emp_pol 审计名
ACTIONS select on hr.employees 审计动作
- 也可以使用EMCC进行策略创建。
系统范围的审计选项
- 对系统权限进行审计:
CREATE AUDIT POLICY audit_syspriv_pol1
PRIVILEGES SELECT ANY TABLE,CREATE LIBRARY
- 对ALTER TRIGGER操作进行审计:
CREATE AUDIT POLICY audit_actions_po12
ACTIONS AUDIT,ALTER TRIGGER
- 对角色进行审计:
CREATE AUDIT POLICY audit_role_pol3
ROLES mgr_role
- 对系统权限 相应操作和角色进行审计:
CREATE AUDIT POLICY audit_mixed_pol4
PRIVILEGES DROP ANY TABLE
ACTIONS CREATE TABLE,DROP TABLE,TRUNCATE TABLE
ROLES emp_role
特定对象审计选项
CREATE AUDIT POLICY audit_objpriv_pol5
ACTIONS SELECT, UPDATE, LOCK ON hr.employees
CREATE AUDIT POLICY audit_objpriv_pol6
ACTIONS ALL
CREATE AUDIT POLICY audit_objpriv_pol7
ACTIONS EXECUTE, GRANT ON hr.raise_salary_proc
指定条件
- 条件和评估PER SESSION
CREATE AUDIT POLICY audit_mixed_pol5
ACTIONS RENAME ON hr.employees,ALTER ON hr.jobs,
WHEN 'SYS_CONTEXT (''USERENV'', ''SESSION_USER'')=''JIM'''
EVALUATE PER SESSION
- 条件和评估PER STATEMENT
CREATE AUDIT POLICY audit_objpriv_pol6
ACTIONS ALTER ON OE.ORDERS
WHEN 'SYS_CONTEXT(''USERENV'',''CLIENT_IDENTIFIER'')=''OE'''
EVALUATE PER STATEMENT
- 条件和评估PER INSTANCE
CREATE AUDIT POLICY audit_objpriv_pol7
ROLES dba
WHEN SYS_CONTEXT(''USERENV'',''INSTANCE_NAME'')=''sales'''
EVALUATE PER INSTANCE
维护审计记录
启用和禁用审计策略
启用审计策略
- 适用于所有用户
SQL> AUDIT POLICY audit_syspriv_pol1;
- 仅适用于某些用户
SQL> AUDIT POLICY audit_pol2 BY scott, oe;
SQL> AUDIT POLICY audit_pol3 BY sys;
- 排除某些用户
SQL> AUDIT POLICY audit_pol4 EXCEPT jim, george;
- 根据失败或成功操作定义审计记录
SQL> AUDIT POLICY audit_syspriv_pol1 WHENEVER SUCCESSFUL ;
SQL> AUDIT POLICY audit_objpriv_pol2 WHENEVER NOT SUCCESSFUL ;
SQL> AUDIT POLICY auditpol5 BY joe WHENEVER SUCCESSFUL ;
禁用审计策略
通过使用NOAUDIT命令禁用审计策略
更改统一审计策略
- 使用ALTER AUDIT POLICY语句
ALTER AUDIT POLICY select_emp_pol
ADD ACTIONS select on hr.job_history
- 使用EMCC
查看审计策略信息
SQL> SELECT policy_name, audit_option, condition_eval_opt
2 FROM audit_unified_policies;
POLICY_NAME AUDIT_OPTION CONDITION_EVAL_OPT
-------------------- ---------------- ----------------
POL1 DELETE INSTANCE
POL2 TRUNCATE TABLE NONE
SQL> SELECT policy_name, enabled_opt, user_name, success, failure
2 FROM audit_unified_enabled_policies;
POLICY_NAME ENABLED_ USER_NAME SUC FAI
-------------------- -------- ---------- --- ---
POL3 BY PM NO YES
POL2 EXCEPT SYSTEM NO YES
POL4 BY SYS YES YES
POL6 BY ALL USERS YES NO
设置审计跟踪记录的写入模式
- 立即写入模式:立即写入审计记录
SQL> EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(-
DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,-
DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,-
DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);
- 排队写入模式:SGA队列的内容定期写入磁盘(默认模式)
SQL> EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(-
DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,-
DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,-
DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE);
归档和清除审计记录
定期归档并清除审计记录,以防止其过大.
-
创建审计归档
将审计跟踪记录复制到数据库表
使用Oracle Audit Vault -
清除审计日志
通过使用DBMS_AUDIT_MGMT.CREATE_PURGE_JOB PL/SQL过程,创建计划并在指定时间运行的清除作业
使用DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL PL/SQL过程手动进行 -
安排自动清除作业
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB
(AUDIT_TRAIL_TYPE=> DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,AUDIT_TRAIL_PURGE_INTERVAL => 12,
AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_PJ',
USE_LAST_ARCH_TIMESTAMP => TRUE,CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT);
- 手动清除审计记录
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED);
本文作者:那个人后来
本文链接:https://www.cnblogs.com/ngrhl/p/17707065.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2021-09-16 2109——CHD6.2.0集群环境下phoenix5.0.0安装