Audit裡審計SQL語句與審計系統許可權的區別
Audit可以實現對於特定物件、特定SQL語句、特定許可權的審計,其中對於SQL語句和系統許可權的審計在概念上有時容易混淆起來,比如拿audit user與audit alter user作比較.
audit user是對SQL語句的審計,採用是簡寫的方式,相當於以下三條語句共同作用的結果:
audit alter user ;
audit create user ;
audit drop user;
即會對alter user、create user、drop user命令進行審計
Audit alter user是對alter user許可權的審計,會對需要alter user許可權才能執行的命令進行審計
上述兩種方法在alter user操作審計上的區別按照官方文件的說法在於:
Audit user:會記錄使用者修改自己口令的操作,也會記錄使用者修改別人口令的操作
Audit alter user:僅會記錄使用者修改其它使用者口令的操作(因為只有具備了alter user許可權的使用者才能修改其它使用者口令),不記錄使用者修改自己口令的操作(因為使用者修改自己的口令不需要alter user許可權),所以這裡再一次表明這是針對許可權的審計而非語句本身的審計
下面做一個簡單的測試來證明一下上面的結論
////////////////////////////////////////////////////
//AUDIT USER功能測試
///////////////////////////////////////////////////
#### MNG使用者不具有alter user許可權,分別對自己和其它使用者的口令進行修改
SQL> show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string XML, EXTENDED
--connect as SYS
audit user;
--connect as mng
--修改自己口令
alter user mng identified by asdf_1234 replace by old_password;
--生成的審計記錄
xmlns:xsi=""
xsi:schemaLocation="">
ryId>
r>
e_Number>
--修改其它使用者的口令,返回ORA-01031錯誤,雖然mng使用者沒有alter user許可權但對其它使用者的操作仍會留下印跡,因為audit user後面沒有跟隨whenever successful表明對於成功和失敗兩種情況均進行審計
alter user zd identified by asdf_1234 replace by old_password;
--有審計記錄
ryId>
r>
e_Number>
17151977
注:
--賦予mng使用者alter user許可權
--connect as SYS
grant alter user to mng;
--connect as mng
alter user zd identified by qwer_1234;
--語句被審計
xmlns:xsi=""
xsi:schemaLocation="">
注:
////////////////////////////////////////////////////
//AUDIT ALTER USER功能測試
///////////////////////////////////////////////////
####關閉之前開啟的所有審計,測試使用者在不具備alter user許可權,具備alter user許可權這兩種情況下的審計行為
--connect SYS
noaudit user;
revoke alter user from mng;
audit alter user;
--connect mng,修改自己和其它使用者的口令都沒有生成審計檔案
alter user mng identified by yuhj_1234 replace mnbv_1234;
alter user zd identified by qwer_1234 replace fghf_1234;
--connect SYS
grant alter user to mng;
--connect mng,修改自己的口令也會被審計,這個和官方的結論稍有差異
alter user mng identified by knmf_5678 replace yuhj_1234;
alter user zd identified by knmf_5678;
--記錄下來的審計資訊
**修改自己口令的審計
ryId>
r>
e_Number>
**修改其它使用者口令的審計
ryId>
r>
e_Number>
/Returncode>
因此對於audit user和audit alter user在alter user命令審計上的區別可以簡要概括如下:
Command |
是否具有Alter user許可權 |
是否審計修改自己口令的操作 |
是否審計修改其它使用者口令的操作 |
Audit user
|
N |
Y |
Y |
Y |
Y |
Y |
|
Audit alter user
|
N |
N |
N |
Y |
Y |
Y |
我們再來測一下audit table和audit create any table,看看這兩者的區別:
////////////////////////////////////////////////////
//AUDIT TABLE功能測試
///////////////////////////////////////////////////
####使用者沒有create any table許可權,audit table只審計自己使用者下的建表操作
--connect SYS
noaudit alter user;
revoke create any table from mng;
audit table;
--connect mng,建立自己的表,再建立別人的表,雖然沒有create any table許可權,也會審計建立其它使用者表的記錄
create table mng2 (id number);
create table zd.mng2 (id number);
xmlns:xsi=""
xsi:schemaLocation="">
ryId>
r>
e_Number>
ryId>
r>
e_Number>
####使用者具有create any table許可權,audit table會同時審計自己使用者下的建表操作和在其它使用者下的建表操作
Create table t11(id number);
Create table zd.t11(id number);
xmlns:xsi=""
xsi:schemaLocation="">
ryId>
r>
e_Number>
1821
ryId>
r>
e_Number>
589
////////////////////////////////////////////////////
//AUDIT CREATE ANY TABLE功能測試
///////////////////////////////////////////////////
####使用者不具備create any table許可權,audit create any table的情況下,只記錄在別的使用者下建表的操作
--connect SYS
revoke create any table from mng;
noaudit table;
audit create any table;
--connect mng建立自己和其它使用者下表的都沒有生成審計
create table mng4 (id number);
create table zd.mng4 (id number);
####使用者具備create any table許可權,audit create any table的情況下,只記錄在別的使用者下建表的操作
--connect SYS
grant create any table to mng;
noaudit table;
audit create any table;
--connect mng 產生的審計記錄中只看到建立其它使用者下表的操作
create table mng5 (id number);
create table zd.mng5 (id number); --未記錄建立自及使用者下表的操作
xmlns:xsi=""
xsi:schemaLocation="">
ryId>
r>
e_Number>
4E0F
因此對於audit table和audit create any table審計效果上的區別可以簡要概括如下:
Command |
是否具有create any table許可權 |
是否審計在自己使用者下建表的操作 |
是否審計在其它使用者下建表的操作 |
audit table
|
N |
Y |
Y |
Y |
Y |
Y |
|
audit create any table |
N |
N |
N |
Y |
N |
Y |
再深入一點,audit table會審計create table、drop table、truncate table這三類語句,如果我僅僅需要審計其中的create table語句,即使用Audit create table會出現什麼結果:
--connect SYS
grant create any table to mng;
audit create table;
col audit_option format a30
set linesize 130
--看到系統自動將create table、create any table作為語句同時也作為許可權進行審計
select audit_option,success,failure from dba_stmt_audit_opts;
AUDIT_OPTION SUCCESS FAILURE
------------------------------ ---------- ----------
CREATE TABLE BY ACCESS BY ACCESS
CREATE ANY TABLE BY ACCESS BY ACCESS
select * from dba_priv_audit_opts;
PRIVILEGE SUCCESS FAILURE
---------------------------------------- ---------- ----------
CREATE TABLE BY ACCESS BY ACCESS
CREATE ANY TABLE BY ACCESS BY ACCESS
--connect mng 產生的審計記錄中只看到建立其它使用者下表的操作
Create table mng7 (id number);
Create table zd.mng7(id number);
--生成的審計記錄也證明了上述的觀點
ryId>
r>
e_Number>
64F96
>
ryId>
r>
e_Number>
4E1F
結論:在oracle的審計體系中,語句級的審計有兩種寫法一種是使用簡寫方式,比如執行
命令audit table則之後會對create table、drop table、truncate table三類操作進行審計,又
比如audit alter table僅會對alter table …語句進行審計,使用簡寫的方式是純粹語句級別的
審計,不涉及到許可權的問題。另一種就是Audit create table,這種寫法既會對create table、
create any table語句進行審計,同時又因為Create table也是一種系統許可權,所以也會對
create table、create any table許可權進行審計,這種情況下語句級和許可權級的審計是無法完全
區分清楚的。在SQL Language Reference中audit命令介紹裡有關於哪些命令屬於語句審計
哪些命令屬於許可權審計的詳細定義大家可以參考一下
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1354987/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 審計(Audit)SQLServer
- audit審計
- 審計--audit
- MySQL審計auditMySql
- AUDIT審計(2)
- Oracle 審計 auditOracle
- oracle 審計(Audit)Oracle
- 【AUDIT]Oracle審計配置及常用sqlOracleSQL
- 語句審計相關的表是stmt_audit_option_map
- ORACLE AUDIT審計(1)Oracle
- oracle開啟audit(審計)Oracle
- Oracle Audit 審計 說明Oracle
- Oracle Audit 審計功能的認識與使用Oracle
- 11gR2中如何noaudit所有預設開啟的語句和許可權審計選項
- AUDIT審計的一些使用
- 雲審計與大資料審計:區別、優勢與應用場景大資料
- Oracle audit 審計功能說明Oracle
- 簡單使用oracle的審計語句Oracle
- RHEL審計內容/etc/audit/audit.rules
- 許可權系統設計
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇2 - SQL隱碼攻擊漏洞審計JavaSQL
- 【實驗】Oracle審計語句的使用演示Oracle
- Cobar SQL審計的設計與實現SQL
- [提權禁區] SQL語句利用xp_cmdshell獲取許可權SQL
- 運維審計系統運維
- 日誌審計系統
- Oracle使用系統級觸發器審計重要帳號的DDL語句Oracle觸發器
- MySQL審計外掛-MariaDB Audit PluginMySqlPlugin
- FGA審計及audit_trail引數AI
- SSH服務審計工具ssh-audit
- [MySQLFAQ]系列–如何利用觸發器實現賬戶許可權審計MySql觸發器
- Spring Security + jwt 許可權系統設計,包含SQLSpringJWTSQL
- 關於許可權系統的設計
- Oracle使用審計監控使用者執行過的SQL語句OracleSQL
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇4 - XXE漏洞審計Java
- 許可權系統設計(2)--operation
- 許可權系統設計(3)-- subject
- 許可權系統設計(4)--resource