Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dip-Othet-verst2.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2.48 Mб
Скачать

2.3 Реализация уровня сервера (бд)

2.3.1 Основные понятия

Схема (Schema) – коллекция объектов БД. Имеется у каждого пользователя СУБД Oracle. Имеет одноименное название с именем пользователя.

Табличное пространство – один или группа файлов содержащих данные. Табличное пространство относится к схема в отношении один ко многим.

2.3.2 Особенности реализации

СУЬД Oracle имеет много принципиальных отличий по сравнению с другими СУБД. Первое это что бросилось в глаза, что один Экземпляр Oracle поддерживает только одну базу данных, в отличи от MSSQL, mySQL, InterBase. Для запуска новой базы будет запушен новый экземпляр базы данных. Но после дальнейшего изучения СУБД Oracle, ситуация прояснилась. Старый подход с создание новой базы для каждого нового приложения здесь не желателен. Принцип разработки в Oracle следующий:

  1. Создать экземпляр БД

  2. Войти под пользователем SYS или SYSTEM

  3. Создать нового пользователя (в нашем случаи CRM). Назначить ему права разработчика (создание любых объектов в пределах своей схемы)

  4. Создание всех объектов баз данных в схеме CRM под пользователем CRM

  5. Создание роль обычного пользователя (crm-operator). Назвонить ему право на соединение, и соответствующие права на объекты схемы CRM.*

  6. Создаем пользователей и присваиваем им созданную роль

  7. При разработки клиента необходимо при обращении к объектам базы данных указывать схему.

2.3.3 FGAC в Oracle

В СУБД Oracle технология тщательного контроля доступа достаточно развита.

Начиная с Oracle 8i, позволяет во время выполнения динамически добавлять условие (конструкцию WHERE) ко всем запросам, обращенным к таблице или представлению базы данных. Это дает возможность процедурно изменять запрос во время выполнения, другими словами, динамически создавать представление. С помощью контекстов приложений можно безопасно добавлять в среду информацию (например, роль пользователя в отношении приложения) и обращаться к этой информации в процедуре или условии.

В различных публикациях средства FGAC описываются под различными названиями. Обычно используются следующие:

  • Детальный контроль доступа (Fine Grained Access Control);

  • Виртуальная приватная база данных (Virtual Private Database — VPD);

  • Защита на уровне строк (Row Level Security), или пакет DBMS_RLS (этот PL/SQL пакет реализует соответствующие возможности).

Преимущества использования средств тщательного контроля доступа — простота сопровождения, реализация этих средств на сервере, возможность развития приложений и упрощение их разработки и т.д.

2.3.3.1 Пример fgac в Oracle

Предположим, существуют правила защиты, определяющие, какие строки могут просматривать различные группы пользователей. Правила защиты позволяют разработать условие проверки, учитывающее, кто зарегистрирован и какую роль он имеет в системе. Средства тщательного контроля доступа позволяют переписать простой запрос

SELECT * FROM EMP следующим образом:

Таблица 2.2 - Правила защиты

Пользователь зарегистрирован как...

Запрос переписывается так...

Комментарии

Сотрудник

select *

from (select * from emp

where ename = USER)

Рядовые сотрудники могут

просматривать только

собственные записи,

Руководитель

подразделения

select *

from (select *

from emp

where mgr =

(select empno

from emp

where ename = USER)

or ename = USER

)

Руководители

подразделений могут

просматривать свои записи

и записи сотрудников

своего подразделения,

Сотрудники

отдела кадров.

select *

from (select *

from emp

where deptno =

SYS_CONTEXT('OurApp', 'ptno')

)

Сотрудники отдела кадров могут видеть все записи в данном подразделении. В этом примере представлен способ получения значений

переменных из контекста

приложения с помощью

встроенной функции

SYS_CONTEXT().

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]