Раньше мы рассмотрели некоторые возможности правки меток, задающих секретность строк (и возможности в виде исключения обходить запреты на правку). А что касается возможностей править обычные поля таблицы, строки которой защищены метками секретности?
Свойство доступа к обычным полям (не к служебному полю секретности строки), ранее использованное, называлось READ_CONTROL. Уточним поведение этого свойства.
Выдадим:
@userprivilege employee ''
@phonepolicyoptions 'read_control'
Продолжим:
SQL> CONNECT employee/employee Connected. SQL> @phones
ENAME PNO ---------- -------------------- ALLEN 882-3154 WARD 610-1718 MARTIN 103-1983 BLAKE CLARK KING TURNER 293-1398 JAMES 932-6728 MILLER 865-6706
9 rows selected.
SQL> UPDATE scott.phone 2 SET pno = pno
3 WHERE 4 empno 5 = ( SELECT empno FROM scott.emp WHERE ename = 'ALLEN' );
1 row updated.
SQL> save updateallenpnumber
Created file updateallenpnumber.sql
SQL> @updateallen OPEN
1 row updated.
SQL> @updateallen LIMITED
1 row updated.
SQL> @updateallen OPEN
0 row updated.
SQL> @updateallenpnumber
0 row updated.
Пока ничего нового относительно меток (пользователю EMPLOYEE, как это и было раньше, позволено "играть" только "на повышение" секретности), а что касается обычных полей разрешенных ему строк, то правка, как показывает пример, возможна.
Однако в нашем распоряжении имеются и другие свойства меток в конкретной таблице, например:
Рассмотрим для примера свойство UPDATE_CONTROL. Выдадим:
@phonepolicyoptions 'update_control'
Повторим проверку:
SQL> CONNECT employee/employee Connected. SQL> @phones
ENAME PNO ---------- -------------------- ALLEN 882-3154 WARD 610-1718 MARTIN 103-1983 BLAKE 193-3112 CLARK 310-2673 KING 542-6672 TURNER 293-1398 JAMES 932-6728 MILLER 865-6706
9 rows selected.
SQL> @updateallen OPEN
1 row updated.
SQL> @updateallenpnumber
1 row updated.
SQL> @updateallen LIMITED