1. 程式人生 > >Oracle 審計管理

Oracle 審計管理

下面是實際生產庫的一個加固項,是針對於資料庫審計。

  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;   ---xxxx

DBOS建議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

應用測試

業務測試是否正常