Mi pregunta es cómo crear un VPD en Oracle SQL que también la máscara de datos

0

Pregunta

Estoy tratando de crear un VPD en Oracle mediante instrucciones SQL. El propósito de este problema es por lo que un empleado SÓLO podía ver los registros de los empleados en el mismo departamento, mientras que el enmascaramiento de su compañero de trabajo, salarios como NULL.

El código de la tabla que se utiliza es la siguiente

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

Estoy seguro de cuál es la mejor manera de ir sobre hacer esto sería.... sería para crear un paquete y el uso de un contexto de aplicación. Creo que llegar a la mesa para mostrar sólo aquellos en los mismos "DEPT" entiendo pero no está seguro de cómo enmascarar los datos de aquellos con el mismo DEPARTAMENTO pero ID diferente.

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

Mejor respuesta

0

Nativo de RLS se le acercan, pero no totalmente ahí. El uso de "sec_relevant_cols" le dará la opción entre

  • viendo sólo las filas que coinciden con su predicado, pero todos los valores están presentes
  • ver todas las filas, pero enmascaramiento de los valores que no coinciden con su predicado

mientras que (si estoy leyendo correctamente) desea ver sólo predicado filas coincidentes Y máscara de algunos valores.

Usted puede lograr esto con un método de dos pasos

  1. Su contexto contiene dos claves (decir) DEPT y SU_ID

  2. La RLS política es "donde dept = sys_context(ctx,'DEPARTAMENTO')"

  3. Usted tiene una vista EMP a la que se aplica la directiva, siendo

     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

Voy a darle un tiro! Yo estaba usando un contexto en el que me permitió obtener el DPTO valor de la persona que se registra! Yo no sabía que se podía utilizar para obtener otro también... es posible hacer que todo en el mismo paquete?
Venzie

Sí, el contexto es obligado para el paquete, no las claves/valores en el contexto. Un contexto puede tener muchas claves/valores. "USERENV" es un clásico ejemplo de que
Connor McDonald

En otros idiomas

Esta página está en otros idiomas

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