я создал ради удобства, чтобы
CONNECT vpd_admin/vpd_admin
HOST echo CONNECT vpd_admin/vpd_admin > drop_policy.sql
BEGIN DBMS_RLS.DROP_POLICY ( POLICY_NAME => 'epolicy' ,OBJECT_SCHEMA => 'scott' ,OBJECT_NAME => 'emp' ); END; /
SAVE drop_policy APPEND
(Файл drop_policy.sql я создал ради удобства, чтобы более экономно удалить политику во второй раз, ниже по тексту).
BEGIN DBMS_RLS.ADD_POLICY ( POLICY_NAME => 'epolicy' ,OBJECT_SCHEMA => 'scott' ,OBJECT_NAME => 'emp' ,FUNCTION_SCHEMA => 'vpd_admin' ,POLICY_FUNCTION => 'permissions_function' ,
SEC_RELEVANT_COLS =>
'sal, comm'
); END; /
Проверка:
SQL>
CONNECT scott/tiger Connected. SQL> SELECT ename,
sal, deptno FROM emp;
ENAME SAL
DEPTNO
---------- ---------- ---------- MILLER 1300
10
KING 5000
10
CLARK 2450
10
JAMES 950
30
TURNER 1500
30
BLAKE 2850
30
MARTIN 1250
30
WARD 1250
30
ALLEN 1600
30
9 rows selected.
А вот что получим, если не обратимся к «секретному» столбцу с зарплатой:
SQL> SELECT ename, deptno FROM emp;
ENAME
DEPTNO
---------- ---------- SMITH
20
ALLEN
30
WARD
30
JONES
20
MARTIN
30
BLAKE
30
CLARK
10
SCOTT
20
KING
10
TURNER
30
ADAMS
20
JAMES
30
FORD
20
MILLER
10
14 rows selected.
В любом случае защищенных данных мы не увидим, но способ достижения этого своеобразен: как только мы обращаемся к «секретным» столбцам, политика препятствует показу некоторых строк (как и раньше), но если мы к «секретным» столбцам не обращаемся, то пожалуйста – нам даются все строки, словно бы никакой политики и не было.
Довольно необычно: количество доступных строк при запросе к таблице зависит от того, запросили мы «секретный» столбец, или же нет. Более традиционного поведения можно достичь употреблением еще одного нового параметра.
Параметр SEC_RELEVANT_COLS_OPT
Если для него указать константу DBMS_RLS.ALL_ROWS, то при операции SELECT будут выдаваться все строки, но значения в «секретных» столбцах некоторых строк (защищенных политикой) мы не увидим:
@drop_policy
BEGIN DBMS_RLS.ADD_POLICY ( POLICY_NAME => 'epolicy' ,OBJECT_SCHEMA => 'scott' ,OBJECT_NAME => 'emp' ,FUNCTION_SCHEMA => 'vpd_admin' ,POLICY_FUNCTION => 'permissions_function' ,
SEC_RELEVANT_COLS => 'sal, comm'
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий