Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бугаенко О.С. Безопасность в СУБД Oracle 10g.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
482 Кб
Скачать
☆

Как это работает?

Вот очень простой пример, иллюстрирующий, как работает Oracle Label Security. Мы создали и заполнили таблицу с четырьмя записями, которая называется documents, и определили для нее два уровня защиты: PUBLIC и INTERNAL. Каждому уровню также присваивается числовое значение: 1000 или 2000. Затем мы назначим уровень каждой строке в таблице. Ниже показан простой оператор SELECT для таблицы:

SQL> SELECT * FROM documents;

 

DOCID   DOCNAME          LEVEL      DOC_LABEL

-----   -----------      --------   ---------

1       SHARE_WARE       PUBLIC     1000

2       WEST_PAYROLL     INTERNAL   2000

3       EAST_SALES       INTERNAL   2000

4       COMP_PAYROLL     INTERNAL   2000

Теперь допустим, что имеется два пользователя нашей базы данных: EMP и MGR. Уровни доступа этим пользователям мы назначаем следующим образом:

   Пользователю EMP назначается уровень PUBLIC (только для чтения).

   Пользователю MGR назначаются уровни INTERNAL и PUBLIC (чтение-запись).

Когда эти пользователи обращаются к таблице, EMP может читать только строку 1, тогда как MGR имеет полный доступ для чтения-записи ко всем четырем строкам.

Что происходит внутри базы данных, когда этот пользователь обращается к таблице documents? Предположим, что этот запрос выполняет пользователь EMP:

SELECT * FROM documents;

База данных Oracle производит синтаксический анализ запроса и определяет, что таблица находится под защитой с помощью меток. Oracle Label Security добавляет к запросу фразу WHERE, чтобы гарантировать, что пользователь EMP видит только строки, отмеченные меткой доступа PUBLIC:

SELECT * FROM documents

  WHERE doc_label = 1000;

Ниже приводится то, что пользователь EMP увидит после выполнения запроса:

DOCID     DOCNAME         LEVEL      DOC_LABEL

-----     ----------      ------     ---------

1         SHARE_WARE      PUBLIC     1000

Вы могли бы задать вопрос: "Почему бы не создать представление, которое ограничивало бы доступ, базируясь на некотором значении столбца?" И в самом деле, если вашему приложению требуется всего лишь несколько уровней, и нет никаких специальных требований по защите, которые нужно учесть, то методы добавления к вашей таблице столбца защиты и использования приложений будут адекватными.

Но предположим, что ваши системные требования изменились, и теперь вы должны в нескольких организациях управлять несколькими иерархиями пользователей, с настраиваемыми разрешениями на чтение/запись для изменяющихся наборов данных. Кроме того, контролируемые организации находятся в различных странах, в каждой из которых действует собственное законодательство и ограничения в области защищенности. Такие требования намного труднее реализовать, если вы используете только представления.

К счастью, Oracle Label Security разработана специально для масштабирования; поэтому реализация этого типа защиты приложений более проста, чем вы могли бы ожидать.

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