Oracle
Oracle 數據庫安全 - 特定使用者和特定模組應用程序的審計跟踪
我想為特定使用者啟用審計跟踪,但僅適用於該使用者使用一個特定模組應用程序連接到數據庫時的會話。
例如。我只想在使用者test1使用TOAD連接到數據庫時啟用使用者test1的審計跟踪,而不是在使用者test1使用Golden6連接到數據庫時啟用。
這種類型的審計可能嗎?
謝謝,
您可以使用從 12.1 版開始提供的統一審計來執行此操作。
例子:
create user u1 identified by u1 quota unlimited on users; grant create session, create table to u1; grant audit_viewer to u1;
現在創建一個統一審計策略,當使用者是
U1
,模組不是時審計所有操作Golden6
:create audit policy mypolicy1 actions all when 'sys_context(''userenv'', ''current_user'') = ''U1'' and sys_context(''userenv'', ''module'') != ''Golden6''' evaluate per statement ; SQL> audit policy mypolicy1; Audit succeeded.
然後測試它:
SQL> conn u1/u1 Connected. SQL> select sys_context('userenv', 'current_user') as current_user, sys_context('userenv', 'module') as module from dual; CURRENT_USER MODULE -------------------- -------------------- U1 SQL*Plus SQL> create table t1 (c1 number); Table created. SQL> exec dbms_application_info.set_module('Golden6', null); PL/SQL procedure successfully completed. SQL> create table t2 (c1 number); Table created. SQL> exec dbms_application_info.set_module('SQL*Plus', null); PL/SQL procedure successfully completed. SQL> create table t3 (c1 number); Table created.
現在檢查審計跟踪的內容:
SQL> select event_timestamp, DBUSERNAME, ACTION_NAME, sql_text, RETURN_CODE from unified_audit_trail where dbusername = 'U1' and sql_text like 'create%' order by event_timestamp; EVENT_TIMESTAMP DBUSERNAME ACTION_NAME SQL_TEXT RETURN_CODE ------------------------------ ---------- -------------------- ------------------------------ ----------- 17-APR-18 02.04.29.381770 PM U1 CREATE TABLE create table t1 (c1 number) 0 17-APR-18 02.04.59.233856 PM U1 CREATE TABLE create table t3 (c1 number) 0
如您所見,
t2
在模組設置為 的情況下發出的表語句的創建Golden6
未經過審核。
Oracle
unified_audit_trail
視圖跟踪client_program_name
已審計的操作,並且Toad.exe
可以與其他操作一起找到。Sys_context
可以使審核策略條件考慮一些會話參數,但似乎沒有client_program_name
(client_info
不一樣) - 想知道 uat 在哪裡找到資訊?更多關於
sys_context
這裡:https ://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htmpo