CONNECT sys/password AS SYSDBA
GRANT EXECUTE ON dbms_rls TO scott;
-- В этом примере ограничение видимости включаем к колонке SAL таблицы SCOTT.EMP для пользователя SYSTEM
-- Для начала проверим как отображаются данные под SYSTEM до включения политики
Connect system/manager
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 17.12.1980 800,00 20
7499 ALLEN SALESMAN 7698 20.02.1981 1600,00 300,00 30
7521 WARD SALESMAN 7698 22.02.1981 1250,00 500,00 30
7566 JONES MANAGER 7839 02.04.1981 2975,00 20
7654 MARTIN SALESMAN 7698 28.09.1981 1250,00 1400,00 30
7698 BLAKE MANAGER 7839 01.05.1981 2850,00 30
7782 CLARK MANAGER 7839 09.06.1981 2450,00 10
7788 SCOTT ANALYST 7566 19.04.1987 3000,00 20
7839 KING PRESIDENT 17.11.1981 5000,00 10
7844 TURNER SALESMAN 7698 08.09.1981 1500,00 0,00 30
7876 ADAMS CLERK 7788 23.05.1987 1100,00 20
7900 JAMES CLERK 7698 03.12.1981 950,00 30
7902 FORD ANALYST 7566 03.12.1981 3000,00 20
7934 MILLER CLERK 7782 23.01.1982 1300,00 10
14 rows selected
-- Создать функцию ограничения доступа для пользователя SYSTEM
-- Заходим под SCOTT и создаем функцию для политики безопасности
connect scott/tiger
CREATE OR REPLACE FUNCTION pf_job (oowner IN VARCHAR2, ojname IN VARCHAR2)
RETURN VARCHAR2 AS
con VARCHAR2 (200);
BEGIN
con := 'USER != ''SYSTEM''';
RETURN (con);
END pf_job;
/
-- Создаем политику ограничивающий видимость данных в колонке SAL таблицы SCOTT.SAL
-- для пользователей указанных в функции pf_job
BEGIN
DBMS_RLS.ADD_POLICY (object_schema => 'scott',
object_name => 'emp',
policy_name => 'sp_job',
function_schema => 'scott',
policy_function => 'pf_job',
sec_relevant_cols => 'sal',
sec_relevant_cols_opt=>dbms_rls.ALL_ROWS);
END;
/
-- После включения ограничения видимости, для пользователя SYSTEM не видны данные колонки SAL
Connect system/manager
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- ---------- --------- ------
7369 SMITH CLERK 7902 17.12.1980 20
7499 ALLEN SALESMAN 7698 20.02.1981 300,00 30
7521 WARD SALESMAN 7698 22.02.1981 500,00 30
7566 JONES MANAGER 7839 02.04.1981 20
7654 MARTIN SALESMAN 7698 28.09.1981 1400,00 30
7698 BLAKE MANAGER 7839 01.05.1981 30
7782 CLARK MANAGER 7839 09.06.1981 10
7788 SCOTT ANALYST 7566 19.04.1987 20
7839 KING PRESIDENT 17.11.1981 10
7844 TURNER SALESMAN 7698 08.09.1981 0,00 30
7876 ADAMS CLERK 7788 23.05.1987 20
7900 JAMES CLERK 7698 03.12.1981 30
7902 FORD ANALYST 7566 03.12.1981 20
7934 MILLER CLERK 7782 23.01.1982 10
14 rows selected
Комментариев нет:
Отправить комментарий