Oracle 审计管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34556414/article/details/83024034

下面是实际生产库的一个加固项,是针对于数据库审计。

  1. 检查是否记录操作日志;检查是否根据业务要求制定数据库审计策略(需要重启数据库)

注意事项及影响:

  •  开启审计功能,对于os 级别审计需要部署清理脚本,db 级别审计也需要部署清理脚本
  • 对于开启db 级别的审计时,需要迁移审计表到非系统表空间,迁移前truncate sys.aud$ 表
  • 该项加固需要重启数据库

 

序号

操作内容

操作步骤

责任人

时间

1

登陆数据库

Sqlplus ‘/as sysdba’

 

 

2

检查数据库状态

Select open_mode from v$database;

 

 

3

修改审计级别

审计级别可以选择os 或者db ,根据需要自己决定

alter system set audit_trail='xxxx' scope=spfile;   ---xxxxDBOS建议DB

 

 

4

关闭数据库

Alter system switch logfile;

Alter system checkpoint;

Shutdown immediate;

 

 

5

重启数据库

Startup ;

 

 

6

查看参数

Show parameter audit ;

查看参数是否已经修改

 

 

7

清空审计表

迁移审计前清空审计表否则迁移速度可能很慢

Truncate table sys.aud$;

 

 

8

迁移审计日志11g

将aud$所在的system 表空间迁移到非system 表空间如TBS_DTLDATA:

 

BEGIN DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

                                            --this moves table AUD$

                                           audit_trail_location_value => 'TBS_DTLDATA'); --AUD替换为系统中TBS_DTLDATA表空间

END;

/

 

BEGIN

  DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,

                                            --this moves table FGA_LOG$

                                           audit_trail_location_value => 'TBS_DTLDATA'); --FGA替换为系统中的TBS_DTLDATA表空间

END;

/

 

 

9

迁移审计日志9i,10g

将aud$所在的system 表空间迁移到非系统表空间如tms:

alter table AUDIT$ move tablespace TMS;

alter table AUDIT_ACTIONS move tablespace TMS;

alter table AUD$ move tablespace TMS;

alter table AUD$ move lob(SQLBIND) store as SYS_aud$_sqlbind_0000000384C00040$$ (tablespace TMS);

alter table AUD$ move lob(SQLTEXT) store as SYS_aud$_sqltext_0000000384C00041$$ (tablespace TMS);

alter index I_AUDIT rebuild online tablespace TMS;

alter index I_AUDIT_ACTIONS rebuild online tablespace TMS;

 

select t.tablespace_name,t.segment_name,t.column_name  from dba_lobs t where t.table_name='AUD$';

 

 

 

10

对于db级别的审计部署清理脚本

清理脚本:

 

CREATE PROCEDURE P_CLEAR_AUDIT AS

 

  LVC_SQL VARCHAR2(200);

BEGIN

 

  LVC_SQL := 'TRUNCATE TABLE SYS.AUD$';

  EXECUTE IMMEDIATE LVC_SQL;

 

END;

/

 

--记得修改执行时间,使用job来定时清理aud$表

DECLARE

  JOBS INT;

BEGIN

 

  SYS.DBMS_JOB.SUBMIT(JOB       => JOBS,

                      WHAT      => 'P_CLEAR_AUDIT;',

                      NEXT_DATE => TO_DATE('2018-10-21 23:59:00',

                                           'YYYY-MM-DD HH24:MI:SS'),

                      INTERVAL  => 'SYSDATE+1');

  COMMIT;

END;

/

 

SYS.DBMS_JOB.SUBMIT是什么

用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务。

一、dbms_job涉及到的知识点
1、创建job:
variable jobno number;
dbms_job.submit(:jobno, —-job号  
                'your_procedure;',—-执行的存储过程, ';'不能省略 
                next_date, —-下次执行时间  
                'interval' —-每次间隔时间,interval以天为单位
); 

 

 

 

 

--查询job 部署情况

COL WHAT FOR A30

COL INTERVAL FOR A30

SET LINES 1000

SELECT JOB,WHAT ,INTERVAL ,T.NEXT_DATE FROM DBA_JOBS T WHERE WHAT LIKE '%AUD%';

 

 

 

 

 

 

 

 

 

 

 

 

11

应用测试

业务测试是否正常

 

 

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/83024034