unauthorized SQL statement for policy
1 row updated.
SQL> @updateallen LIMITED UPDATE scott.phone *
ERROR at line 1: ORA-12406: unauthorized SQL statement for policy EMPSEC_POLICY
... ... ... ...
SQL> @updateallen
pnumber
UPDATE scott.phone *
ERROR at line 1: ORA-12406: unauthorized SQL statement for policy EMPSEC_POLICY
... ... ... ...
Факт налицо: включение UPDATE_CONTROL не изменило наши возможности по изменению метки, однако ж обычные поля запретных для него строк он править уже не в состоянии. Заметьте, что это коснулось только правки, но не чтения. Чтобы вновь защитить обычные поля от прочтения, достаточно выдать:
@phonepolicyoptions
'update_control, 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.
Свойства INSERT_CONTROL и DELETE_CONTROL аналогичны рассмотренному UPDATE_CONTROL. Свойство же WRITE_CONTROL введено для удобства и обозначает INSERT_CONTROL + UPDATE_CONTROL + DELETE_CONTROL. Это легко обнаруживается следующим образом. Продолжим:
SQL> @showoptions
POLICY_NAME SCHEMA_NAME TABLE_NAME TABLE_OPTIONS ---------------------- ------------ ------------ --------------- EMPSEC_POLICY SCOTT EMP READ_CONTROL, LABEL_DEFAULT EMPSEC_POLICY SCOTT
PHONE READ_CONTROL,
UPDATE_CONTROL
А теперь выдадим:
@phonepolicyoptions '
write_control, read_control'
Снова проверим свойства («особенности») применения нашей политики к конкретным таблицам:
SQL> @showoptions
POLICY_NAME SCHEMA_NAME TABLE_NAME TABLE_OPTIONS ---------------------- ------------ ------------ --------------- EMPSEC_POLICY SCOTT EMP READ_CONTROL, LABEL_DEFAULT EMPSEC_POLICY SCOTT
PHONE READ_CONTROL,
INSERT_CONTROL, UPDATE_CONTROL, DELETE_CONTROL
Содержание раздела