A minha pergunta é como criar um VPD em Oracle SQL, que também vai máscara de dados

0

Pergunta

Eu estou tentando criar um VPD no Oracle usando instruções SQL. O objetivo deste problema é, portanto, um funcionário poderá exibir SOMENTE os registros de funcionários do mesmo departamento, enquanto mascarar sua colega de trabalho, de salários como NULL.

O código para a tabela a ser utilizada é a seguinte

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

Eu tenho certeza que a melhor maneira de fazer isso seria.... seria criar um pacote e use um contexto de aplicação. Eu acredito chegando a tabela para exibir apenas aqueles na mesma "DEPT" eu entendo, mas a certeza de como mascarar os dados de pessoas com mesmo DEPARTAMENTO, mas diferentes de IDENTIFICAÇÃO.

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

Melhor resposta

0

Nativo RLS você vai chegar perto, mas não totalmente lá. Usando "sec_relevant_cols" vai dar a você a opção entre

  • ver apenas as linhas que correspondem a seu predicado, mas todos os valores estão presentes
  • ver todas as linhas, mas mascaramento de valores que não correspondem ao seu predicado

considerando que (se eu estou lendo corretamente) que você deseja ver somente predicado de correspondência de linhas E máscara de alguns valores bem.

Você pode conseguir isso através de um método de dois passos

  1. O contexto contém duas teclas (modo de dizer) DEPT e YOUR_ID

  2. A RLS política é "onde dept = sys_context(ctx,'DEPARTAMENTO')"

  3. Você tem uma visão EMP para que essa política é aplicada, sendo

     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

Eu vou dar-lhe um tiro! Eu estava usando um contexto que permitiu-me adquirir o DEPARTAMENTO de valor de quem está registrado! Eu não sabia que eu poderia usá-lo para obter outro bem... é possível fazer isso tudo dentro do mesmo pacote?
Venzie

Sim, o contexto é vinculado ao pacote, não as chaves/valores dentro do contexto. Um contexto pode ter muitas chaves/valores. "USERENV" é um exemplo clássico de que
Connor McDonald

Em outros idiomas

Esta página está em outros idiomas

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