Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

2005 г.

Изучаем метки доступа к строкам: правка обычных столбцов таблицы

Владимир Пржиялковский,
Преподаватель технологий Oracle
www.ccas.ru/prz/
 
"Я за свечку,
Свечка - в печку!
Я за книжку,
Та - бежать ..."
Корней Чуковский,
«Мойдодыр»

Аннотация

Эта статья является непосредственным продолжением статьи «Изучаем метки доступа к строкам: специальные привилегии для избранных», и рассматривает некоторые возможности управления правкой полей записей, защищенных метками доступа средствами Label Security в Oracle в соответствии с мандатным доступом.

Подразумеваемые в статье состояние базы и сценарные файлы соответствуют концу предыдущей статьи.

Правка обычных полей

Раньше мы рассмотрели некоторые возможности правки меток, задающих секретность строк (и возможности в виде исключения обходить запреты на правку). А что касается возможностей править обычные поля таблицы, строки которой защищены метками секретности?

Свойство доступа к обычным полям (не к служебному полю секретности строки), ранее использованное, называлось 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, как это и было раньше, позволено "играть" только "на повышение" секретности), а что касается обычных полей разрешенных ему строк, то правка, как показывает пример, возможна.

Однако в нашем распоряжении имеются и другие свойства меток в конкретной таблице, например:

  • INSERT_CONTROL,
  • UPDATE_CONTROL,
  • DELETE_CONTROL,
  • WRITE_CONTROL.

Рассмотрим для примера свойство 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

1 row updated.

SQL> @updateallen LIMITED
UPDATE scott.phone
             *
ERROR at line 1:
ORA-12406: unauthorized SQL statement for policy EMPSEC_POLICY
... ... ... ...


SQL> @updateallenpnumber
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
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...