AUDIT審計的一些使用
11g開始預設開啟了審計功能,配置選項為DB,同時對許可權,登入進行了審計
審計其實是個很有用的功能,如果不打算使用審計,也可以考慮開啟審計,但是刪除其定義的規則即可:
noaduit all;
noaduit all statements;
noaudit all privileges;
noaudit EXEMPT ACCESS POLICY;
對於審計存放的位置,建議設定為XML,EXTENDED。這樣增加了對SQL語句的捕獲,並且存放在作業系統上,更利於清理
預設審計不會取AUDIT SYSDBA登入的使用者,除非設定AUDIT_SYS_OPERATIONS為TRUE。所以,在決定啟用審計的系統中,要嚴格控制SYSDBA許可權的使用者
在啟用審計的系統中,嚴格控制DBA角色的分配,否則,審計資料可能會被篡改
審計的維護:
遷移AUD$和FGA_LOG$表,直接MOVE的話,配置表中的資料不會更改。但是影響不大
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
AUDIT_TRAIL_LOCATION_VALUE => 'USERS');
END;
/
清空所有審計資料
BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES,
USE_LAST_ARCH_TIMESTAMP => FALSE);
END;
/
TRUNCATE TABLE SYS.AUD$;
11g可以建立自動清理審計資料的JOB
其可以根據歸檔時間進行清理
BEGIN -- 清理DB審計資料必須初始化。
DBMS_AUDIT_MGMT.INIT_CLEANUP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
DEFAULT_CLEANUP_INTERVAL => 12); -- 定義排程清理工作的頻率。其決定DB如何清理審計資料,但和實際執行頻率無關
END;
/
SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS
BEGIN -- 定義歸檔審計資料的時間戳
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
LAST_ARCHIVE_TIME => SYSDATE);
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
LAST_ARCHIVE_TIME => SYSDATE);
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
LAST_ARCHIVE_TIME => SYSDATE);
END;
/
SELECT * FROM DBA_AUDIT_MGMT_LAST_ARCH_TS;
BEGIN
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
AUDIT_TRAIL_PURGE_INTERVAL => 24,
AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_PJ',
USE_LAST_ARCH_TIMESTAMP => TRUE );
END;
/
SELECT * FROM dba_scheduler_jobs
審計的一些用法:
審計登入
audit session;
本質是審計CREATE SESSION許可權的使用
可以獲得:登入時間,使用者名稱,主機,主機使用者名稱,主機上的程式號
SELECT * FROM DBA_COMMON_AUDIT_TRAIL
WHERE (STATEMENT_TYPE = 'LOGON' -- 普通登入
OR OS_PRIVILEGE = 'SYSDBA') -- SYSDBA登入
AND RETURNCODE > 0 -- 失敗的登入
審計DDL
audit ALTER SYSTEM,CLUSTER,CONTEXT,DATABASE LINK,DIMENSION,DIRECTORY,INDEX,MATERIALIZED VIEW,OUTLINE,PROCEDURE ,PROFILE,PUBLIC DATABASE LINK,PUBLIC SYNONYM,ROLE,ROLLBACK SEGMENT,SEQUENCE,SYNONYM,SYSTEM AUDIT,SYSTEM GRANT,TABLE,TABLESPACE,TRIGGER,TYPE,USER,VIEW,ALTER SEQUENCE,ALTER TABLE,COMMENT TABLE,GRANT DIRECTORY,GRANT PROCEDURE,GRANT SEQUENCE,GRANT TABLE,GRANT TYPE
審計功能沒有提供一種可以直接審計全部DDL的方法
審計指定物件上的DDL:
audit ALTER,AUDIT,COMMENT,GRANT,INDEX,RENAME on / default;
audit AUDIT,COMMENT,GRANT,RENAME on / default
審計物件上的所有操作,包括DML操作
audit all on;
審計由於物件不存在而報錯的語句
audit not exists;
SELECT * FROM dba_common_audit_trail WHERE returncode=942
審計報錯的語句
audit all statements whenever not successful; -- 審計DDL語句錯誤,以及PK衝突等
audit all on whenever not successful; -- 審計DML語句錯誤
如果撤銷使用者的DBA角色,需要分配給使用者那些必須的系統許可權
audit all privileges by;
SELECT DISTINCT priv_used FROM dba_common_audit_trail WHERE db_user='’
ALL與ALL STATEMENTS的區別
ALL審計特定的一類SQL,其不包含DML,ALTER TABLE等
ALL STATEMENTS審計使用者發出的所有SQL,不包含遞迴語句,同時,解析失敗的語句也不會記錄(DDL語句在執行時報錯,DML語句在解析時報錯)
審計其實是個很有用的功能,如果不打算使用審計,也可以考慮開啟審計,但是刪除其定義的規則即可:
noaduit all;
noaduit all statements;
noaudit all privileges;
noaudit EXEMPT ACCESS POLICY;
對於審計存放的位置,建議設定為XML,EXTENDED。這樣增加了對SQL語句的捕獲,並且存放在作業系統上,更利於清理
預設審計不會取AUDIT SYSDBA登入的使用者,除非設定AUDIT_SYS_OPERATIONS為TRUE。所以,在決定啟用審計的系統中,要嚴格控制SYSDBA許可權的使用者
在啟用審計的系統中,嚴格控制DBA角色的分配,否則,審計資料可能會被篡改
審計的維護:
遷移AUD$和FGA_LOG$表,直接MOVE的話,配置表中的資料不會更改。但是影響不大
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
AUDIT_TRAIL_LOCATION_VALUE => 'USERS');
END;
/
清空所有審計資料
BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES,
USE_LAST_ARCH_TIMESTAMP => FALSE);
END;
/
TRUNCATE TABLE SYS.AUD$;
11g可以建立自動清理審計資料的JOB
其可以根據歸檔時間進行清理
BEGIN -- 清理DB審計資料必須初始化。
DBMS_AUDIT_MGMT.INIT_CLEANUP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
DEFAULT_CLEANUP_INTERVAL => 12); -- 定義排程清理工作的頻率。其決定DB如何清理審計資料,但和實際執行頻率無關
END;
/
SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS
BEGIN -- 定義歸檔審計資料的時間戳
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
LAST_ARCHIVE_TIME => SYSDATE);
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
LAST_ARCHIVE_TIME => SYSDATE);
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
LAST_ARCHIVE_TIME => SYSDATE);
END;
/
SELECT * FROM DBA_AUDIT_MGMT_LAST_ARCH_TS;
BEGIN
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
AUDIT_TRAIL_PURGE_INTERVAL => 24,
AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_PJ',
USE_LAST_ARCH_TIMESTAMP => TRUE );
END;
/
SELECT * FROM dba_scheduler_jobs
審計的一些用法:
審計登入
audit session;
本質是審計CREATE SESSION許可權的使用
可以獲得:登入時間,使用者名稱,主機,主機使用者名稱,主機上的程式號
SELECT * FROM DBA_COMMON_AUDIT_TRAIL
WHERE (STATEMENT_TYPE = 'LOGON' -- 普通登入
OR OS_PRIVILEGE = 'SYSDBA') -- SYSDBA登入
AND RETURNCODE > 0 -- 失敗的登入
審計DDL
audit ALTER SYSTEM,CLUSTER,CONTEXT,DATABASE LINK,DIMENSION,DIRECTORY,INDEX,MATERIALIZED VIEW,OUTLINE,PROCEDURE ,PROFILE,PUBLIC DATABASE LINK,PUBLIC SYNONYM,ROLE,ROLLBACK SEGMENT,SEQUENCE,SYNONYM,SYSTEM AUDIT,SYSTEM GRANT,TABLE,TABLESPACE,TRIGGER,TYPE,USER,VIEW,ALTER SEQUENCE,ALTER TABLE,COMMENT TABLE,GRANT DIRECTORY,GRANT PROCEDURE,GRANT SEQUENCE,GRANT TABLE,GRANT TYPE
審計功能沒有提供一種可以直接審計全部DDL的方法
審計指定物件上的DDL:
audit ALTER,AUDIT,COMMENT,GRANT,INDEX,RENAME on
audit AUDIT,COMMENT,GRANT,RENAME on
審計物件上的所有操作,包括DML操作
audit all on
審計由於物件不存在而報錯的語句
audit not exists;
SELECT * FROM dba_common_audit_trail WHERE returncode=942
審計報錯的語句
audit all statements whenever not successful; -- 審計DDL語句錯誤,以及PK衝突等
audit all on
如果撤銷使用者的DBA角色,需要分配給使用者那些必須的系統許可權
audit all privileges by
SELECT DISTINCT priv_used FROM dba_common_audit_trail WHERE db_user='
ALL與ALL STATEMENTS的區別
ALL審計特定的一類SQL,其不包含DML,ALTER TABLE等
ALL STATEMENTS審計使用者發出的所有SQL,不包含遞迴語句,同時,解析失敗的語句也不會記錄(DDL語句在執行時報錯,DML語句在解析時報錯)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-749270/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL審計auditMySql
- AUDIT審計(2)
- Oracle Audit 審計功能的認識與使用Oracle
- SQL Server 審計(Audit)SQLServer
- ORACLE AUDIT審計(1)Oracle
- 【AUDIT]Oracle審計配置及常用sqlOracleSQL
- MySQL審計外掛-MariaDB Audit PluginMySqlPlugin
- FGA審計及audit_trail引數AI
- mysql 5.7新增server_audit 安全審計功能MySqlServer
- Oracle 標準審計,設定AUDIT_SYSLOG _LEVEL引數Oracle
- 程式碼審計中XSS挖掘一些體會
- ORACLE AUDITOracle
- DM7審計之物件審計物件
- Oracle Audit setupOracle
- mysqlalchemy audit extensionMySql
- audit by user by table
- 一些通過SAPABAP程式碼審查得出的ABAP程式設計最佳實踐程式設計
- Centos8 使用auditd配置系統審計CentOS
- DM7審計之語句序列審計
- DM7審計之語句級審計
- 一些通過SAP ABAP程式碼審查得出的ABAP程式設計最佳實踐程式設計
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇4 - XXE漏洞審計Java
- 免費開源的程式碼審計工具 Gosec 入門使用Go
- Oracle Linux 7使用syslog來管理Oracle ASM的審計檔案OracleLinuxASM
- Elasticsearch Auditing(es的審計功能)Elasticsearch
- 聚合型程式碼審計工具QingScan使用實踐
- 記一次完整的PHP程式碼審計——yccms v3.4審計PHP
- IT審計隨想
- Kubernetes 審計(Auditing)
- Oracle:審計清理Oracle
- Oracle審計(轉)Oracle
- Cobar SQL審計的設計與實現SQL
- 2.2.6 Overview of Common Audit ConfigurationsView
- linux監控工具auditLinux
- fluentd 推送 mariadb audit log
- 使用 @Audited 增強Spring Boot 應用程式的資料審計能力Spring Boot
- 使用grep命令,玩轉程式碼審計尋找Sink
- PHP程式碼審計05之正則使用不當PHP
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇3 - 檔案上傳漏洞審計Java