Oracle 審計管理
下面是實際生產庫的一個加固項,是針對於資料庫審計。
- 檢查是否記錄操作日誌;檢查是否根據業務要求制定資料庫審計策略(需要重啟資料庫)
注意事項及影響:
- 開啟審計功能,對於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 |
|
|
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涉及到的知識點
--查詢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 |
應用測試 |
業務測試是否正常 |
|
|