12
Реализация разграничения Реализация разграничения доступа на уровне строк для доступа на уровне строк для некоммерческих СУБД с некоммерческих СУБД с открытым исходным кодом открытым исходным кодом Научный руководитель: д.ф.-м.н. Новиков Научный руководитель: д.ф.-м.н. Новиков Борис Асенович Борис Асенович Автор: Щербаков Константин Владимирович, Автор: Щербаков Константин Владимирович, 545 гр. 545 гр.

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

Embed Size (px)

DESCRIPTION

Научный руководитель: д.ф.-м.н. Новиков Борис Асенович Автор: Щербаков Константин Владимирович, 545 гр. Реализация разграничения доступа на уровне строк для некоммерческих СУБД с открытым исходным кодом. Постановка задачи. Требовалось: - PowerPoint PPT Presentation

Citation preview

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

Реализация разграничения Реализация разграничения доступа на уровне строк доступа на уровне строк

для некоммерческих СУБД с для некоммерческих СУБД с открытым исходным кодомоткрытым исходным кодом

Научный руководитель: д.ф.-м.н. Новиков Борис АсеновичНаучный руководитель: д.ф.-м.н. Новиков Борис Асенович

Автор: Щербаков Константин Владимирович, 545 гр.Автор: Щербаков Константин Владимирович, 545 гр.

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

Постановка задачиПостановка задачи

Требовалось:Требовалось: предложить механизм разграничения доступа предложить механизм разграничения доступа

пользователей к данным как на уровне полей, так пользователей к данным как на уровне полей, так и на уровне отдельных записей (FLS/RLS)и на уровне отдельных записей (FLS/RLS)

обеспечить производительность не менее 64 обеспечить производительность не менее 64 запросов в секунду (по sysbench на чтение/запись)запросов в секунду (по sysbench на чтение/запись)

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

предотвратить обход установленных для предотвратить обход установленных для пользователей ограничений (при условии пользователей ограничений (при условии отсутствия физического доступа к данным или отсутствия физического доступа к данным или серверу с СУБД)серверу с СУБД)

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

Цель разработкиЦель разработки

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

Внедрить реализованное средство обеспечения Внедрить реализованное средство обеспечения контроля доступа в ПК «Электронный деканат» контроля доступа в ПК «Электронный деканат» (разработка последнего ведется на факультете (разработка последнего ведется на факультете журналистики СПбГУ) в качестве независимого журналистики СПбГУ) в качестве независимого приложения/сервиса и опционально в ИС/АСУ приложения/сервиса и опционально в ИС/АСУ «Университет»«Университет»

Предоставить мировому open-source сообществу Предоставить мировому open-source сообществу инструмент разграничения доступа к данным, инструмент разграничения доступа к данным, легко адаптируемый под любые некоммерческие легко адаптируемый под любые некоммерческие СУБД с открытым кодом или полностью СУБД с открытым кодом или полностью доступными спецификациями (FireBird, Yaffil, доступными спецификациями (FireBird, Yaffil, PostgreSQL …)PostgreSQL …)

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

Известные подходыИзвестные подходы

реализация RLS на клиентереализация RLS на клиенте + гибкость, контроль действий до выполнения+ гибкость, контроль действий до выполнения - малая защищенность, низкая производительность при выборке- малая защищенность, низкая производительность при выборке

реализация RLS средствами СУБДреализация RLS средствами СУБД -> на основе существующих атрибутов-> на основе существующих атрибутов + высокая защищенность + высокая защищенность - ограниченность языка описания хранимых процедур,- ограниченность языка описания хранимых процедур, необходимость их модификациинеобходимость их модификации -> на основе дополнительных атрибутов-> на основе дополнительных атрибутов + высокая защищенность+ высокая защищенность - большой объем дополнительных данных, необходимость- большой объем дополнительных данных, необходимость установки дополнительных атрибутовустановки дополнительных атрибутов

реализация RLS с использованием сервера приложенийреализация RLS с использованием сервера приложений + сочетает преимущества предыдущих двух подходов+ сочетает преимущества предыдущих двух подходов - производительность и надежность всей системы зависит от - производительность и надежность всей системы зависит от

качества реализациикачества реализации

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

Общая схемаОбщая схема

сервер с СУБД+RLS/FLS модуль <-> клиенты или сервер с СУБД+RLS/FLS модуль <-> клиенты или сервер с СУБД <-> RLS/FLS (сервер приложений) <–> клиентысервер с СУБД <-> RLS/FLS (сервер приложений) <–> клиенты отсутствует прямой доступ клиентов к СУБДотсутствует прямой доступ клиентов к СУБД запросы клиентов перехватываются, анализируются, передаются в СУБДзапросы клиентов перехватываются, анализируются, передаются в СУБД при обнаружении попытки авторизации – загрузка правил политики при обнаружении попытки авторизации – загрузка правил политики

безопасности для данного клиента (из служебной базы mysql), если они безопасности для данного клиента (из служебной базы mysql), если они не загружены; 3х этапное разрешение правил (RLS); создание не загружены; 3х этапное разрешение правил (RLS); создание представлений (FLS), построение списка допустимых stored proceduresпредставлений (FLS), построение списка допустимых stored procedures

построение дерева запроса, поиск в нем защищаемых объектов, построение дерева запроса, поиск в нем защищаемых объектов, модификация и создание where предложений в рамках RLS, замена модификация и создание where предложений в рамках RLS, замена защищаемых объектов на их представления (для FLS), анализ защищаемых объектов на их представления (для FLS), анализ вызываемых stored procedures на наличие в списке допустимых вызываемых stored procedures на наличие в списке допустимых

выполнение запроса, пересылка ответа пользователю (либо выполнение запроса, пересылка ответа пользователю (либо информирование о проваленном запросе)информирование о проваленном запросе)

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

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

основной модуль работает в виде сервиса/демонаосновной модуль работает в виде сервиса/демона

правила RLS – предикаты безопасности – хранятся в правила RLS – предикаты безопасности – хранятся в отдельных таблицах (для пользователей и ролей) в базе отдельных таблицах (для пользователей и ролей) в базе mysqlmysql

для реализации FLS хранится информация, необходимая для реализации FLS хранится информация, необходимая для создания представлений на основе защищаемых для создания представлений на основе защищаемых объектовобъектов

в отдельных таблицах (для пользователей и ролей) в отдельных таблицах (для пользователей и ролей) содержится список допустимых для выполнения stored содержится список допустимых для выполнения stored procedures procedures

присутствует отдельная таблица для хранения шаблоновприсутствует отдельная таблица для хранения шаблонов

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

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

поддерживается хранение полностью разрешенных поддерживается хранение полностью разрешенных правил после отключения пользователя (настраиваемо)правил после отключения пользователя (настраиваемо)

присутствует набор таблиц для хранения частично присутствует набор таблиц для хранения частично разрешенных правил RLSразрешенных правил RLS

предусматривается прямое взаимодействие предусматривается прямое взаимодействие административного приложения и RLS/FLS модуля для административного приложения и RLS/FLS модуля для оперативного обновления правил политики оперативного обновления правил политики безопасностибезопасности

создание и модификация правил контроля доступа – создание и модификация правил контроля доступа – только через административное приложениетолько через административное приложение

назначение отдельным пользователям ролей в т.ч. назначение отдельным пользователям ролей в т.ч. самими клиентами (настраиваемо)самими клиентами (настраиваемо)

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

ПреимуществаПреимущества

поддержка RLS, FLS, контроль вызова хранимых поддержка RLS, FLS, контроль вызова хранимых процедурпроцедур

открытый исходный кодоткрытый исходный код бесплатностьбесплатность прозрачность для клиентов прозрачность для клиентов возможность компиляции и работы под win/*nix возможность компиляции и работы под win/*nix

(Delphi 7 / BDS 2006 / Kylix / Lazarus)(Delphi 7 / BDS 2006 / Kylix / Lazarus) возможность изменения правил политики возможность изменения правил политики

безопасности «на лету»безопасности «на лету» поддержка правил как для отдельных поддержка правил как для отдельных

пользователей, так и для пользовательских ролейпользователей, так и для пользовательских ролей поддержка шаблонов и ссылок в правилахподдержка шаблонов и ссылок в правилах нестрогая иерархия ролейнестрогая иерархия ролей многоуровневая схема полного разрешения правилмногоуровневая схема полного разрешения правил перехват специально составленных SQL запросов перехват специально составленных SQL запросов

для управления ролями со стороны клиентовдля управления ролями со стороны клиентов

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

НедостаткиНедостатки

снижение производительности всей снижение производительности всей системы при работе с СУБД достигает 50% системы при работе с СУБД достигает 50% (35%) (или до 100(70) запросов в секунду)(35%) (или до 100(70) запросов в секунду)

недостаточная поддержка контроля недостаточная поддержка контроля исполнения хранимых процедур исполнения хранимых процедур (отсутствует контроль параметров)(отсутствует контроль параметров)

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

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

Результаты тестов Результаты тестов

(сервис RLS отключен)(сервис RLS отключен)

Конфигурация: P4 531 3.0Ghz 1mb, Конфигурация: P4 531 3.0Ghz 1mb, 1536Mb, SATA 160Gb 7200rpm, Ubuntu 1536Mb, SATA 160Gb 7200rpm, Ubuntu 7.0.4+mysql 5.0.20+sysbench7.0.4+mysql 5.0.20+sysbench

db1, db2, db3 – базы из состава ПК db1, db2, db3 – базы из состава ПК “Факультет” без хранимых процедур“Факультет” без хранимых процедур

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

Результаты тестов Результаты тестов (сервис RLS включен)(сервис RLS включен)

Конфигурация: P4 531 3.0Ghz 1mb, Конфигурация: P4 531 3.0Ghz 1mb, 1536Mb, SATA 160Gb 7200rpm, Ubuntu 1536Mb, SATA 160Gb 7200rpm, Ubuntu 7.0.4+mysql 5.0.20+sysbench7.0.4+mysql 5.0.20+sysbench

db1, db2, db3 – базы из состава ПК db1, db2, db3 – базы из состава ПК “Факультет” без хранимых процедур“Факультет” без хранимых процедур

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

ВыводыВыводы

по функциональным возможностям по функциональным возможностям разработанный сервис способен разработанный сервис способен конкурировать с механизмами, конкурировать с механизмами, используемыми во многих коммерческих используемыми во многих коммерческих СУБДСУБД

производительность падает, но не производительность падает, но не настолько, чтобы исключить возможность настолько, чтобы исключить возможность использования в рамках проектов использования в рамках проектов «Электронный деканат» и «Университет» «Электронный деканат» и «Университет»

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