Moje otázka je, jak vytvořit VPD v Oracle s SQL, který bude také maska údaje

0

Otázka

Snažím se vytvořit VPD v Oracle pomocí SQL příkazů. Účelem tohoto problému je tak zaměstnanec mohl zobrazit POUZE záznamy zaměstnanců v jednom oddělení, zatímco maskování jejich spolupracovník platy jako NULL.

Kód pro tabulku používá, je následující

create table Employee
(
    ID number primary key,
    DEPT varchar2(25),
    SALARY number(8,2),
    NAME varchar2(25)
); 

Já jsem si nejste jisti, co je nejlepší způsob, jak jít o tom, to by bylo.... bylo by to vytvořit balíček, a použít aplikaci kontextu. Věřím, že dostat se v tabulce zobrazí pouze ty, ve stejné "DEPT" chápu, ale nejste si jisti, jak maskovat údajů těch, kteří se na stejné fakultě, ale jiné ID.

data-masking oracle sql vpd
2021-11-16 18:11:02
1

Nejlepší odpověď

0

Nativní RLS se dostanete blízko, ale není to úplně tam. Pomocí "sec_relevant_cols" vám dá možnost mezi

  • vidět pouze řádky, které odpovídají vašim predikát, ale všechny hodnoty jsou přítomny
  • vidět všechny řádky, ale maskovací hodnoty, které se neshodují váš predikát

vzhledem k tomu, že (pokud čtu správně) chcete vidět pouze predikát odpovídající řádky A maska se některé hodnoty stejně.

Byste mohli dosáhnout s dvou-krok způsob

  1. Vaše kontextu obsahuje dva klíče (řekněme) ODDĚLENÍ a YOUR_ID

  2. RLS politiky ", kde dept = sys_context(ctx,'DEPT')"

  3. Budete mít výhled EMP, na které se zásady, že

     select 
       id, 
       dept, 
       name,
       case when id = sys_context(ctx,'YOUR_ID') then sal else null end sal
     from EMP_TABLE
    
2021-11-17 05:57:22

Dám tomu šanci! Byl jsem pomocí kontextu, který mi umožnil získat DEPT hodnotu od toho, kdo je přihlášen! Netušil jsem, mohl jsem používat to, aby získat další, stejně... je to možné udělat vše v jednom balení?
Venzie

Ano, kontext je vázán na balíček, ne klíče/hodnoty v kontextu. Kontext může mít mnoho klíče/hodnoty. "USERENV" je klasickým příkladem, že
Connor McDonald

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................