|
|
|||||||||||||||||||||||||||||
|
Изучаем метки доступа к строкам в Oracle: задание свойств столбца доступа в таблицеВладимир Пржиялковский
"Я за свечку, АннотацияЭта статья является непосредственным продолжением статьи "Изучаем метки доступа к строкам: специальные привилегии для избранных", и рассматривает некоторые возможности управления правкой полей записей, защищенных метками доступа средствами Label Security в Oracle в соответствии с мандатным доступом. Подразумеваемые в статье состояние базы и сценарные файлы соответствуют концу предыдущей статьи. Правка обычных полейРаньше мы рассмотрели некоторые возможности правки меток, задающих секретность строк (и возможности в виде исключения обходить запреты на правку). А что касается возможностей править обычные поля таблицы, строки которой защищены метками секретности? Свойство доступа к обычным полям (не к служебному полю секретности строки), ранее использованное, называлось READ_CONTROL. Уточним поведение этого свойства. Выдадим: @userprivilege employee '' @phonepolicyoptions 'read_control' Продолжим: SQL> CONNECT employee/employee
9 rows selected. SQL> UPDATE scott.phone 1 row updated. SQL> save updateallenpnumber 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
9 rows selected. SQL> @updateallen OPEN 1 row updated. SQL> @updateallenpnumber 1 row updated. SQL> @updateallen LIMITED 1 row updated. SQL> @updateallen LIMITED SQL> @updateallenpnumber Факт налицо: включение UPDATE_CONTROL не изменило наши возможности по изменению метки , однако ж обычные поля запретных для него строк он править уже не в состоянии. Заметьте, что это коснулось только правки, но не чтения. Чтобы вновь защитить обычные поля от прочтения, достаточно выдать: @phonepolicyoptions 'update_control, read_control' Доказательство: SQL> CONNECT employee/employee
9 rows selected. Свойства INSERT_CONTROL и DELETE_CONTROL аналогичны рассмотренному UPDATE_CONTROL. Свойство же WRITE_CONTROL введено для удобства и обозначает INSERT_CONTROL + UPDATE_CONTROL + DELETE_CONTROL. Это легко обнаруживается следующим образом. Продолжим: SQL> @showoptions
А теперь выдадим: @phonepolicyoptions 'write_control, read_control' Снова проверим свойства ("особенности") применения нашей политики к конкретным таблицам: SQL> @showoptions
Ссылки по теме
|
|