Oracle

Oracle 數據庫安全 - 特定使用者和特定模組應用程序的審計跟踪

  • June 8, 2018

我想為特定使用者啟用審計跟踪,但僅適用於該使用者使用一個特定模組應用程序連接到數據庫時的會話。

例如。我只想在使用者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未經過審核。

Oracleunified_audit_trail視圖跟踪client_program_name已審計的操作,並且Toad.exe可以與其他操作一起找到。Sys_context可以使審核策略條件考慮一些會話參數,但似乎沒有client_program_nameclient_info不一樣) - 想知道 uat 在哪裡找到資訊?

更多關於sys_context這裡:https ://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htmpo

引用自:https://dba.stackexchange.com/questions/204166