Moje pytanie brzmi, jak stworzyć VPN w Oracle z wykorzystaniem SQL, który będzie również maskować dane

0

Pytanie

Staram się stworzyć VPN w Oracle za pomocą instrukcji SQL. Celem tego problemu polega na tym, aby pracownik mógł przeglądać wpisy TYLKO dla pracowników jednego działu, ukrywanie wynagrodzenia swoich kolegów jako ZEROWE.

Kod używanej tabeli wygląda następująco

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

Nie jestem pewien, jak najlepiej to zrobić.... byłoby utworzyć pakiet i korzystać kontekst aplikacji. Uważam, że aby zmusić tabeli wyświetlić tylko ci, którzy znajdują się w jednym i tym samym "DZIALE" wiem, ale nie jestem pewien, jak ukryć dane tych, u których ten sam dział, ale inny identyfikator.

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

Najlepsza odpowiedź

0

Ojczysty RLS przybliży cię, ale nie w pełni. Korzystanie z "sec_relevant_cols" daje możliwość między

  • widzę tylko wiersze pasujące do предикату, ale wszystkie wartości są obecne
  • wyświetlanie wszystkich wierszy, ale chowanie się wartości, które nie pasują do twojego предикату

biorąc pod uwagę, że (jeśli dobrze czytam) chcesz zobaczyć tylko wiersze spełniające предикатам, A także maskować niektóre wartości.

Można to osiągnąć za pomocą metody dwupoziomowego

  1. Twój kontekst zawiera dwa klucze (powiedzmy) DEPT i YOUR_ID

  2. Polityka RLS jest taka: "gdzie jest dział = sys_context(ctx,'DZIAŁ')".

  3. Masz pomysł na EMP, do którego odnosi się ta zasada, będąc

     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

Spróbuję to zrobić! Użyłem kontekst, który pozwolił mi uzyskać wartość DEPT od tego, kto jest zalogowany! Nie wiedziałem, że mogę go użyć, aby uzyskać jeszcze jedno... czy jest możliwe zrobić to wszystko w jednym pakiecie?
Venzie

Tak, kontekst związany z pakietu, a nie do kluczy/wartości w kontekście. Kontekst może mieć dużo kluczy/wartości. "USERENV" - klasyczny przykład tego
Connor McDonald

W innych językach

Ta strona jest w innych językach

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