تا قبل از اوراکل نسخه 21c، هرگونه تغییر در یک Unified Audit Policy، برای sessionهای متصل به دیتابیس اعمال نمی شد و برای اثرپذیری فوری تغییرات audit policy، باید کاربران متصل به دیتابیس را مجبور به log out کرد تا بعد از اتصال مجدد به دیتابیس، مطابق با قوانین جدید audit شوند. این محدودیت را در سناریوی زیر توضیح دادیم.
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
–session 1:
SQL> create user vahid identified by a;
User created.
SQL> grant create session to vahid;
Grant succeeded.
SQL> grant select on usef.tbl1 to vahid;
Grant succeeded.
SQL> create audit policy audpolselect actions select on usef.tbl1;
Audit policy created.
–session 2:
SQL> conn vahid/a@192.168.56.22:1521/pdb1
Connected.
–session 1:
SQL> audit policy audpolselect by vahid;
Audit succeeded
–session 2:
SQL> show user
USER is “VAHID”
SQL> select count(*) from usef.tbl1;
COUNT(*)
———-
3
فعال شدن audit policy قبل از اجرای دستور select، منجر به audit کاربر vahid نخواهد شد:
SQL> select dbusername,action_name,unified_audit_policies from unified_audit_trail where unified_audit_policies like ‘%AUDPOLSELECT%’;
no rows selected
البته اگر کاربر vahid مجددا لاگین کند، از طریق این audit policy، آدیت خواهد شد:
SQL> conn vahid/a@192.168.56.22:1521/pdb1
Connected.
SQL> select count(*) from usef.tbl1;
COUNT(*)
———-
3
–session 1:
SQL> show user
USER is “SYS”
SQL> select dbusername,action_name,unified_audit_policies from unified_audit_trail where unified_audit_policies like ‘%AUDPOLSELECT%’;
DBUSERNAME ACTION_NAME UNIFIED_AUDIT_POLICIES
———- ————— ————————-
VAHID SELECT AUDPOLSELECT
رفتار اوراکل 21c در این زمینه متفاوت است و تغییرات در audit policy، بلافاصله برای همه، حتی برای sessionهای متصل به دیتابیس هم اعمال خواهد شد:
SQL*Plus: Release 21.0.0.0.0 – Production on Thu Aug 26 23:41:35 2021
–session 1:
SQL> create user vahid identified by a;
User created.
SQL> grant create session to vahid;
Grant succeeded.
SQL> grant select on usef.tbl1 to vahid;
Grant succeeded.
SQL> create audit policy audpolselect actions select on usef.tbl1;
Done
–session 2:
SQL> conn vahid/a@192.168.56.20:1521/pdb1
Connected.
–session 1:
SQL> audit policy audpolselect by vahid;
Audit succeeded
–session 2:
SQL> show user
USER is “VAHID“
SQL> select count(*) from usef.tbl1;
COUNT(*)
———-
4
با توجه به ویژگی جدید اوراکل 21c، انتظار داریم که رویت اطلاعات جدول tbl1 توسط کاربر وحید audit شود:
SQL> select dbusername,action_name,unified_audit_policies from unified_audit_trail where unified_audit_policies like ‘%AUDPOLSELECT%’;
DBUSERNAME ACTION_NAME UNIFIED_AUDIT_POLICIES
———- ————— ————————-
VAHID SELECT AUDPOLSELECT