Unified Auditing در نسخه 23c به صورت پیش فرض فعال است و در این نسخه به آن قابلیتهای جدیدی هم اضافه شده است. یکی از این قابلیتها، امکان Auditing در سطح Column است با کمک این فیچر می توانیم صرفا ستون(یا ستونهای) به خصوصی از یک Table یا View را Audit کنیم.
برای مثال قصد داریم هر selectای بر روی ستون mobile را Audit کنیم، برای این کار Audit Policy زیر را ایجاد می کنیم:
SQL> CREATE AUDIT POLICY Col_pol_Mobile ACTIONS select(mobile) ON usef.person; Audit policy created.
Policy ایجاد شده را فعال می کنیم:
SQL> AUDIT POLICY Col_Pol_Mobile; Audit succeeded.
با تنظیم این Policy، هر گونه تلاش برای مشاهده اطلاعات ستون mobile ثبت خواهد شد:
SQL> show user USER is "JAMSHID" SQL> select mobile from usef.person where name='Nader' and last_name='DastNeshan'; MOBILE ---------- 9146581254
SQL> select dbusername,action_name,object_schema,object_name from unified_audit_trail where unified_audit_policies like '%COL_POL_MOBILE%'; DBUSERNAME ACTION_NAM OBJECT_SCHEMA OBJECT_NAME --------------- ---------- --------------- ------------ JAMSHID SELECT USEF PERSON
اگر کاربر JAMSHID بخواهد اطلاعات ستون دیگری از این جدول را ببیند(به غیر از شماره موبایل)، Audit نخواهد شد:
SQL> show user USER is "JAMSHID" SQL> select id from usef.person where name='Nader' and last_name='DastNeshan'; ID ---------- 3
SQL> select count(*) from unified_audit_trail where unified_audit_policies like '%COL_POL_MOBILE%'; COUNT(*) ---------- 1
در ادامه تغییراتی را اعمال می کنیم تا این Policy در کنار ستون Mobile، ستون ID را هم Audit کند، برای این کار دستور زیر را اجرا می کنیم:
SQL> ALTER AUDIT POLICY Col_Pol_Mobile ADD ACTIONS select(ID) ON usef.person; Audit policy altered.
SQL> select audit_option,object_schema,object_name,object_type,column_name from audit_unified_policies where policy_name like '%COL_POL_MOBILE%'; AUDIT_OPTION OBJECT_SCHEMA OBJECT_NAME OBJECT_TYP COLUMN_NAME ------------ ------------- ------------ ---------- --------------- SELECT USEF PERSON TABLE MOBILE SELECT USEF PERSON TABLE ID
البته در زمان ساخت Audit Policy هم این امکان وجود داشت:
SQL> CREATE AUDIT POLICY Col_pol_Mobile2 ACTIONS select(mobile,ID) ON usef.person; Audit policy created.
در کنار جدول، ستونهای view را هم می توان audit کرد:
SQL> select audit_option,object_schema,object_name,object_type,column_name from audit_unified_policies where policy_name like '%COL_POL_VW_MOBILE_ID%'; AUDIT_OPTION OBJECT_SCHEMA OBJECT_NAME OBJECT_TYP COLUMN_NAME ------------ ------------- ------------ ---------- --------------- SELECT USEF VW_PERSON VIEW MOBILE SELECT USEF VW_PERSON VIEW ID