کاهش حجم Unified Audit Trail در اوراکل 23ai

ویژگی Unified Auditing در پایگاه داده اوراکل مکانیزمی قدرتمند برای ثبت فعالیت‌های دیتابیس به‌صورت متمرکز و منسجم است. با این حال، این ویژگی می‌تواند چالش‌هایی برای DBA ایجاد کند، به‌ویژه زمانی که مدیریت حجم Audit Trail مدنظر باشد.

یکی از نگرانی‌های رایج، فراهم کردن فضای ذخیره‌سازی کافی برای جدول AUD$UNIFIED است. در برخی محیط‌ها، DBA ممکن است بخواهد میزان داده‌های ذخیره‌شده در Audit Trail را با حذف ستون‌های مشخص کاهش دهد.

اوراکل 23ai (نسخه 23.7) یک پارامتر جدید برای این منظور معرفی کرده است: UNIFIED_AUDIT_TRAIL_EXCLUDE_COLUMNS

پارامتر unified_audit_trail_exclude_columns این امکان را می دهد تا از ثبت Audit در ستون‌های مشخصی از Unified Audit Trail جلوگیری کنیم، که باعث کاهش مصرف فضا و همچنین کاهش سربار ثبت جزئیات غیرضروری می‌شود.

SQL> SHOW PARAMETER unified_audit_trail_exclude_columns;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
unified_audit_trail_exclude_columns  string      NONE

به‌صورت پیش‌فرض، مقدار آن NONE است، یعنی هیچ ستونی مستثنی نمی‌شود. برای اینکه تعیین کنیم این پارامتر چه مقدار مجازی را می پذیرد، از ترفند زیر استفاده می کنیم:

SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=test;

ORA-00096: invalid value TEST for parameter
unified_audit_trail_exclude_columns, must be from among
none, dp_clob_parameters1, rls_info, sql_binds, sql_text

مقادیر معتبر شامل موارد زیر هستند:

NONEهیچ ستونی مستثنی نمی‌شود.

SQL_TEXTمتن دستور SQL در Audit Trail ذخیره نمی‌شوند.

SQL_BINDSمقادیر bind variable       ثبت نمی شوند

DP_CLOB_PARAMETERS1 Data Pumpاطلاعات مربوط به  در ستون DP_CLOB_PARAMETERS1 ذخیره نمی شوند.

RLS_INFOاطلاعات مربوط به RLS/VPD/FGAC در ستون RLS_INFO ثبت نمی‌شوند.

 

استثنا کردن SQL_TEXT

در ابتدا با ایجاد یک policy، رفتار پیش فرض دیتابیس را بررسی می کنیم:

SQL> SHOW PARAMETER unified_audit_trail_exclude_columns

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
unified_audit_trail_exclude_columns  string      NONE

SQL> VARIABLE v_id NUMBER;

SQL> EXEC :v_id := 1;

SQL> SELECT * FROM vahid.tb WHERE id=:v_id;
SQL> SELECT * FROM vahid.tb WHERE id=:v_id;
SQL> SELECT dbusername, action_name, object_name,
            TO_CHAR(sql_binds) AS sql_binds,
            TO_CHAR(sql_text)  AS sql_text
     FROM   unified_audit_trail
     WHERE  unified_audit_policies='POL_SELECT_TB';

DBUSERNAME ACTION_NAM OBJECT_NAME SQL_BINDS  SQL_TEXT
---------- ---------- ----------- ---------- --------------------------------------------
VAHID      SELECT     TB          #1(1):1    select * from vahid.tb where id=:V_ID

 این تست نشان می دهد ستون SQL_TEXT به صورت پیش فرض متن دستور SQL را نگه می دارد.

این تست را با هدف استثنا کردن sql_text تکرار می کنیم:

SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=sql_text;
System altered.

SQL> EXEC dbms_audit_mgmt.clean_audit_trail(
       audit_trail_type=>dbms_audit_mgmt.audit_trail_unified,
       use_last_arch_timestamp=>false);
PL/SQL procedure successfully completed.

SQL> select * from vahid.tb where id=:V_ID;
        ID FIRST_NAME LAST_NAME
---------- ---------- -----------
         1 Vahid      Yousefzadeh
SQL> select dbusername,action_name ,object_name,to_char(sql_binds) sql_binds ,to_char(sql_text) sql_text  from unified_audit_trail  x where  unified_audit_policies='POL_SELECT_TB';
DBUSERNAME ACTION_NAM OBJECT_NAME SQL_BINDS  SQL_TEXT
---------- ---------- ----------- ---------- -----------------------------------------
VAHID      SELECT     TB           #1(1):1

حالا ستون SQL_TEXT دیتایی ندارد و اطلاعات bind variable همچنان موجود است.

 

استثنا کردن SQL_BINDS

همانطور که در ابتدا عنوان شد، امکان اسثتا کردن ستون SQL_BINDS هم وجود دارد:

SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=sql_binds;
System altered;

SQL> select * from vahid.tb where id=:V_ID;
        ID FIRST_NAME LAST_NAME
---------- ---------- -----------
         1 Vahid      Yousefzadeh

SQL> select dbusername,action_name ,object_name,to_char(sql_binds) sql_binds ,to_char(sql_text) sql_text  from unified_audit_trail  x where  unified_audit_policies='POL_SELECT_TB';
DBUSERNAME ACTION_NAM OBJECT_NAME SQL_BINDS  SQL_TEXT
---------- ---------- ----------- ---------- --------------------------------------
VAHID      SELECT     TB                     select * from vahid.tb where id=:V_ID

با این تنظیم، bind variable دیگر در ستون مدنظر ذخیره نشده اما متن SQL همچنان در دسترس است.

 

استثنا کردن DP_CLOB_PARAMETERS1 برای Data Pump

ابتدا رفتار پیش فرض اوراکل را با ایجاد یک Audit Policy برای Data Pump و گرفتن دامپی از یک جدول بررسی می کنیم:

SQL> create audit policy comp_policy ACTIONS  COMPONENT=datapump export;
Audit policy created.

SQL> audit policy comp_policy;
Audit succeeded.
SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=none;
System altered;

$ expdp directory=q dumpfile=test.dmp tables=vahid.tb

همانطور که کوئری بعدی نشان می دهد، ستون DP_CLOB_PARAMETERS1 حاوی اطلاعات است:

SQL> SELECT action_name,
            TO_CHAR(dp_clob_parameters1) dp_clob_parameters1
     FROM   unified_audit_trail
     WHERE  unified_audit_policies='COMP_POLICY';

ACTION_NAM DP_CLOB_PARAMETERS1
---------- ------------------------------------------------------
EXPORT     {"parameter":"CLIENT_COMMAND","value":"vahid/********@...}

:در تست بعدی، قصد داریم این ستون را استثنا کنیم

SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=dp_clob_parameters1;
System altered;

$ expdp directory=q dumpfile=test.dmp tables=vahid.tb

SQL> SELECT action_name,
            TO_CHAR(dp_clob_parameters1) dp_clob_parameters1
     FROM   unified_audit_trail
     WHERE  unified_audit_policies='COMP_POLICY';

ACTION_NAM DP_CLOB_PARAMETERS1
---------- -------------------------
EXPORT

ستون DP_CLOB_PARAMETERS1 خالی است.

 

استثنا کردن RLS_INFO

برای محیط‌هایی که از RLS، VPD یا FGAC استفاده می‌کنند، می‌توان ستون RLS_INFO را نیز مستثنی کرد:

SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=rls_info;
System altered;

پس از فعال‌سازی، ستون RLS_INFO مقداری را در خودش ذخیره نمی کند.

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *