Data Redaction و بهبودی برای viewها – اوراکل 23.6

اوراکل در نسخه 23.6 قابلیتهای جدیدی را در زمینه Data Redaction ارائه کرده است که یکی از این قابلیتها، پشتیبانی از Data Redaction در سطح view هست. در نسخه های قبلی، اگر در اجرای یک view به ستون Redact شده ای رجوع می شد، با خطای ORA-28094: SQL construct not supported by data reduction مواجه می شدیم اما در نسخه 23ai این قبیل Viewها را می توان بدون خطا اجرا کرد. در ادامه با سناریویی این مسئله را در دو نسخه 21c و 23ai بررسی می کنیم.

در ابتدا جدولی را ایجاد می کنیم:

SQL> create table tb(id number,name varchar2(14),last_name varchar2(14),salary number);
Table created
SQL> insert into tb values(1,’Ali’,’Geraili’,9850000);
1 row inserted
SQL> commit;
Commit complete

از روی این جدول، Viewای را به صورت زیر ایجاد می کنیم:

SQL> CREATE OR REPLACE VIEW vw_tb AS select id,lower(name) as first_name,lower(last_name) as last_name,salary+5000 as “sal+5000” from tb;
View created

Redaction policy زیر را به جدول اضافه می کنیم:

SQL> BEGIN
  2   DBMS_REDACT.ADD_POLICY(
  3   object_schema => 'USEF',
  4   object_name => 'TB',
  5   policy_name => 'SALRY_REDACT',
  6   expression => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') != ''USEF'''
  7   );
  8  END;
  9  /
PL/SQL procedure successfully completed

با تغییر در این پالیسی، ستون salary را به طور کامل از دید کاربر مخفی می کنیم(به استثنای کاربر usef و کاربرانی که مجوز EXEMPT REDACTION POLICY):

SQL> BEGIN
  2   DBMS_REDACT.ALTER_POLICY (
  3   object_schema => 'USEF',
  4   object_name => 'TB',
  5   policy_name => 'SALRY_REDACT',
  6   column_name => 'SALARY',
  7   action => DBMS_REDACT.ADD_COLUMN,
  8   function_type => DBMS_REDACT.FULL);
  9  END;
 10  /
PL/SQL procedure successfully completed

کاربر جدیدی را ایجاد می کنیم و صرف دسترسی select و connect را به این کاربر می دهیم:

SQL> create user vahid identified by q;
User created

SQL> grant create session,read any table to vahid;
Grant succeeded

به این کاربر وصل شده پرس و جو های زیر را اجرا می کنیم:

SQL> show user
User is "VAHID"
SQL> select * from usef.tb;
  ID NAME   LAST_NAME          SALARY
---- -----  -------------- ----------
   1 Ali    Geraili                 0
       
SQL> select * from usef.vw_tb;
  ID FIRST_NAME     LAST_NAME        sal+5000
---- -------------- -------------- ----------
   1 ali            geraili                 0

هر دو پرس و جو بدون خطا اجرا شدند اما همین کار در اوراکل 21c برای View قابل انجام نیست:

SQL*Plus: Release 21.0.0.0.0 - Production on Wed Jan 8 13:16:40 2025
SQL> select * from usef.tb;
        ID NAME           LAST_NAME          SALARY
---------- -------------- -------------- ----------
         1 Ali            Geraili                 0

SQL> select * from usef.vw_tb;
ORA-28094: SQL construct not supported by data redaction

 

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

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

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