Разграничение доступа в ORACLE 10

advertisement
Разграничение доступа в
ORACLE 10
Дмитрий Петренко
Идея разделения доступа
 Система одна – пользователей
много
 Пользователи различаются по
уровню привилегий
 Каждый пользователь имеет свои
привилегии доступа к объектам
системы
 Пользователь имеет право
передавать свои права другим
Реализация идеи разделения
доступа
 В СУБД создан специальный объект
– пользователь
 Создан механизм предоставления и
лишения прав доступа grant/revoke
 Grant/revoke – SQL операторы
grant <priv> on <object> to <user>
Проблема
 Стандартная функциональность
grant/revoke недостаточна
 Прямое соединение с СУБД - опасно
Задача
 Расширить функциональность
grant/revoke
 Ограничить количество
непосредственных соединений с БД
 Создать единообразный способ
задания правил доступа
Решение
 Создать приложение со
следующими возможностями
 Работа между пользователем и СУБД
 Задание правил доступа к объектам БД
в стандартном виде grant/revoke
 Аутентификация пользователей
 Обработка правил доступа и
модификация запросов пользователя
 Выдача пользователю результата
запроса
Как это работает
 Администратор создает пользователей и
задает им привилегии с помощью
синтаксиса расширенного grant/revoke
 Правила распознаются системой, и
метаинформация о доступе заносится в
security DB.
 Пользователь, обращается к СУБД, но его
запрос перехватывается модулем
управления доступом и модифицируется
в соответствии с правилами хранящимися
в security DB.
 Модифицированный запрос отдается
СУБД, а его результат - пользователю
Структура приложения
Модуль
администрирования
Метаданные
Правила
Расширенный
grant/revoke
Модуль
управления
доступом
Модифицированный
SQL/данные
Запросы
SQL/данные
СУБД
Клиентское
приложение
Логический
уровень
Модуль администрирования
 Авторизация пользователя
 Задание и синтаксический разбор
правил
 Занесение полученной на основе
разбора метаинформации в БД
Формат инструкции grant
Grant <operation> on <object> to <user>
[when P1]
[where P2]
[with grant option]
[with check option]
[rule list position]
Клиентский модуль
 Авторизация пользователя
 Формирование запросов к СУБД
 Пересылка запросов модулю
управления
 Отображение результатов
выполнения запроса
Модуль управления доступом
Поступил SQL запрос пользователя
Определение текущего контекста
(Имя пользователя, время)
Выборка правил из базы метаданных в соответствии с
контекстом
Есть правила
Определение приоритета правил, выбор наиболее
актуального
Модификация пользовательского запроса и
передача его СУБД
завершение
Пример работы
Grant select(name, salary сonvet_euro(salary), date_birth null)
on employees to user where salary>100 when time()>10:20;
Name
Position
Salary
Date_birth
Smit
Manager
10000
14.10.1953
Gates
Top Manager
100 000
23.06.1962
Shekspeare
Writer
10
12.03.1786
Date_birth
Select * from employees
Name
Position
Salary
Smit
Manager
1660
Gates
Top Manager
16 660
Вопросы?
Спасибо за внимание
Download