Реализация разграничения доступа на уровне строк для некоммерческих СУБД с открытым исходным кодом

advertisement
Реализация разграничения
доступа на уровне строк для
некоммерческих СУБД с
открытым исходным кодом
Научный руководитель: д.ф.-м.н. Новиков Борис Асенович
Автор: Щербаков Константин Владимирович, 545 гр.
Постановка задачи
Требовалось:
 предложить механизм разграничения доступа
пользователей к данным как на уровне полей, так и на
уровне отдельных записей (FLS/RLS)

обеспечить производительность не менее 64 запросов в
секунду (по sysbench на чтение/запись)

предложить гибко настраиваемую систему, которая легко
адаптируется под различные политики безопасности

предотвратить обход установленных для пользователей
ограничений (при условии отсутствия физического
доступа к данным или серверу с СУБД)
Цель разработки



Реализовать систему контроля и разграничения доступа
для СУБД MySQL 5
Внедрить реализованное средство обеспечения контроля
доступа в ПК «Электронный деканат» (разработка
последнего ведется на факультете журналистики СПбГУ)
в качестве независимого приложения/сервиса и
опционально в ИС/АСУ «Университет»
Предоставить мировому open-source сообществу
инструмент разграничения доступа к данным, легко
адаптируемый под любые некоммерческие СУБД с
открытым кодом или полностью доступными
спецификациями (FireBird, Yaffil, PostgreSQL …)
Известные подходы



реализация RLS на клиенте
+ гибкость, контроль действий до выполнения
- малая защищенность, низкая производительность при выборке
реализация RLS средствами СУБД
-> на основе существующих атрибутов
+ высокая защищенность
- ограниченность языка описания хранимых процедур,
необходимость их модификации
-> на основе дополнительных атрибутов
+ высокая защищенность
- большой объем дополнительных данных, необходимость
установки дополнительных атрибутов
реализация RLS с использованием сервера приложений
+ сочетает преимущества предыдущих двух подходов
- производительность и надежность всей системы зависит от качества
реализации
Общая схема






сервер с СУБД+RLS/FLS модуль <-> клиенты или
сервер с СУБД <-> RLS/FLS (сервер приложений) <–> клиенты
отсутствует прямой доступ клиентов к СУБД
запросы клиентов перехватываются, анализируются, передаются в СУБД
при обнаружении попытки авторизации – загрузка правил политики безопасности
для данного клиента (из служебной базы mysql), если они не загружены; 3х
этапное разрешение правил (RLS); создание представлений (FLS), построение
списка допустимых stored procedures
построение дерева запроса, поиск в нем защищаемых объектов, модификация и
создание where предложений в рамках RLS, замена защищаемых объектов на их
представления (для FLS), анализ вызываемых stored procedures на наличие в списке
допустимых
выполнение запроса, пересылка ответа пользователю (либо информирование о
проваленном запросе)
Особенности реализации 1





основной модуль работает в виде сервиса/демона
правила RLS – предикаты безопасности – хранятся в отдельных
таблицах (для пользователей и ролей) в базе mysql
для реализации FLS хранится информация, необходимая для
создания представлений на основе защищаемых объектов
в отдельных таблицах (для пользователей и ролей) содержится
список допустимых для выполнения stored procedures
присутствует отдельная таблица для хранения шаблонов
Особенности реализации 2



поддерживается хранение полностью разрешенных правил после
отключения пользователя (настраиваемо)
присутствует набор таблиц для хранения частично разрешенных
правил RLS
предусматривается прямое взаимодействие административного
приложения и RLS/FLS модуля для оперативного обновления
правил политики безопасности

создание и модификация правил контроля доступа – только
через административное приложение

назначение отдельным пользователям ролей в т.ч. самими
клиентами (настраиваемо)
Преимущества











поддержка RLS, FLS, контроль вызова хранимых процедур
открытый исходный код
бесплатность
прозрачность для клиентов
возможность компиляции и работы под win/*nix (Delphi 7 /
BDS 2006 / Kylix / Lazarus)
возможность изменения правил политики безопасности
«на лету»
поддержка правил как для отдельных пользователей, так
и для пользовательских ролей
поддержка шаблонов и ссылок в правилах
нестрогая иерархия ролей
многоуровневая схема полного разрешения правил
перехват специально составленных SQL запросов для
управления ролями со стороны клиентов
Недостатки



снижение производительности всей системы при
работе с СУБД достигает 50% (35%) (или до
100(70) запросов в секунду)
недостаточная поддержка контроля исполнения
хранимых процедур (отсутствует контроль
параметров)
ограниченная поддержка функциональности по
изменению политики безопасности со стороны
пользователей
Результаты тестов
(сервис RLS отключен)


Конфигурация: P4 531 3.0Ghz 1mb, 1536Mb, SATA
160Gb 7200rpm, Ubuntu 7.0.4+mysql
5.0.20+sysbench
db1, db2, db3 – базы из состава ПК “Факультет”
без хранимых процедур
Результаты тестов
(сервис RLS включен)


Конфигурация: P4 531 3.0Ghz 1mb, 1536Mb, SATA
160Gb 7200rpm, Ubuntu 7.0.4+mysql
5.0.20+sysbench
db1, db2, db3 – базы из состава ПК “Факультет”
без хранимых процедур
Выводы



по функциональным возможностям
разработанный сервис способен конкурировать с
механизмами, используемыми во многих
коммерческих СУБД
производительность падает, но не настолько,
чтобы исключить возможность использования в
рамках проектов «Электронный деканат» и
«Университет»
открытость исходного кода, бесплатность,
поддержка основных ОС позволяют надеяться на
дальнейшее развитие и широкое применение в
различных областях
Download