|
|
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109 И уж тем более, постараться избежать доп. джойнов с таблицами прав Зачем их избегать? Я бы еще понял "избежать хранения таблиц прав". Но "избежать джойнов".... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 16:32 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, чем проще - тем лучше. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 16:35 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
NoSQL базы данных прям придуманы для того, чтобы избежать джоинов ( тынц ). :) Мы например accessLevel к документу храним в MongoDB, в самом документе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 16:57 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
skyANA, пасибки за ссыль, особенно интересны комменты (прямо как тут в другом разделе однажды було) :) С NoSQL базами общался только с mumps, да и то давно и поверхностно... скажем так: "на сегодня" меня интересуют реляционные решения. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 17:12 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109skyANA, пасибки за ссыль, особенно интересны комменты (прямо как тут в другом разделе однажды було) :) С NoSQL базами общался только с mumps, да и то давно и поверхностно... скажем так: "на сегодня" меня интересуют реляционные решения. :)Хм. А почему не хотите хранить настройки безопасности в сторонке от БД? Мы например храним accessLevel вместе с документом, потому как клиенты его сами редактируют. А доступность того, или иного функционала определяется так: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 17:24 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109нормально отдает. И ваще, пашет с приемлемой скоростью. Значит у Вас не должно быть проблем чтобы подождать пять секунд пока меняется ключ доступа на 200 тысячах записей. Так в чём же проблема с вашими ключами тогда? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 17:26 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, да, вы конечно правы. Можно и подождать 5 секунд... в общем, спасибо за помощь и участие в обсуждении. (Что тут ничего и ни с кем толком нельзя обсуждать - я понял ещё со времен полемики с ЧАЛом) В общем, спасибо и давайте закроем тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 17:32 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
skyANA, Настройки плоскости "юзверь - действие" по большому счету пофиг где хранить, возможно это и будет не СУБД решение ... как уже писал, вопрос с точки зрения проектирования - давно решен, и как раз в стиле ABAC, судя по тому что нагуглил сегодня. Меня интересует плоскость "действие-данные", особенно в части организации RLS "на стороне данные"... и, поскольку данные - это РСУБД, то работа с ними - нижний уровень ПО (ядро), которое или находится в самой БД в виде ХП или это слой адаптера к БД ... самый нижний слой приложения. И ему должно быть "пофиг" хто запросил, чагой-т запросил... Задача организовать перехват из верхних уровней так, чтобы его наличие было максимально прозрачно для верхнего уровня. В этой части разные джойны к таблицам прав - есть зло, поскольку в ряде случаев потребуется создание сложных, составных запросов, где "джойнить" надо будет к внутреннему телу подзапроса, и не первой свежести, пардон вложенности. Прикажете "парсить", чтобы приджойнить в нижнем уровне? (одно такое чудо в ХП - уже видел: парсер запроса силами Скуля, чтобы найти куда прилепить свою часть - нечто) :) То есть, все эти решения - по сути крест на производительности. (призывы "обождать" - они все отсюдова. А нет другого способа. Пока нет.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 17:48 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109, Особенности в том, что часто к БД обращается по сути ровно один пользователь - apache. А, соответственно, система управления пользователями, вшитая в БД - неприменима. Можно, конечно создавать отдельного юзверя к БД на каждого посетителя сайта ... но таких решений как-то не довелось видеть пока что. Никаких особенностей web тут нет. Почти все системы на базе СУБД строятся по таким же принципам - с точки зрения СУБД все пользователи системы представлены одним пользователем СУБД. и для того, чтобы все это сделать и делают внутри системы свою подсистему безопасности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 17:56 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109skyANA, Настройки плоскости "юзверь - действие" по большому счету пофиг где хранить, возможно это и будет не СУБД решение ... как уже писал, вопрос с точки зрения проектирования - давно решен, и как раз в стиле ABAC, судя по тому что нагуглил сегодня. Меня интересует плоскость "действие-данные", особенно в части организации RLS "на стороне данные"... и, поскольку данные - это РСУБД, то работа с ними - нижний уровень ПО (ядро), которое или находится в самой БД в виде ХП или это слой адаптера к БД ... самый нижний слой приложения. И ему должно быть "пофиг" хто запросил, чагой-т запросил... Задача организовать перехват из верхних уровней так, чтобы его наличие было максимально прозрачно для верхнего уровня. В этой части разные джойны к таблицам прав - есть зло, поскольку в ряде случаев потребуется создание сложных, составных запросов, где "джойнить" надо будет к внутреннему телу подзапроса, и не первой свежести, пардон вложенности. Прикажете "парсить", чтобы приджойнить в нижнем уровне? (одно такое чудо в ХП - уже видел: парсер запроса силами Скуля, чтобы найти куда прилепить свою часть - нечто) :) То есть, все эти решения - по сути крест на производительности. (призывы "обождать" - они все отсюдова. А нет другого способа. Пока нет.)Сделайте для своего адаптера к БД декаратор или прокси, что будут в запросы к БД добавлять ограничения безопасности. Тогда для верхнего уровня по сути вообще всё будет прозрачно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 18:01 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109и опять в ответ тишина... вопрос "слишком сложен" или "секретен"? Или я его изложил "слишком длинно" или "непонятно"? или все спецы "уже отдыхают"? никто не откликнется? :) во первых я нифига не понял из твоего опуса . во вторых я и не хочу особенно ничего понимать, поскольку подсистема безопасности жестко завязана на общее устройство и правила функционирования всей твоей системы, и чтобы это проектировать, надо все это знать, и хорошо, т.е. кроме тебя самого это никто не сделает, а если сделает, то это будет вместо тебя, т.е. за твою зарплату. так что я считаю абсолютно бессмысленным любой разговор на эту тему. ты можешь найти в сети описания других систем и поняв как это сделано у них взять и сделать похоже но по своему. в первом приближении сделай так: -перечисли все действия пользователей в системе. - перечисли всех пользователей -перечисли все объекты системы. пользователь может совершать действие над объектом. строка из тех полей, так и хранишь. далее думаешь, какие улучшения еще можно сделать относительно этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 18:19 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
MasterZivво первых я нифига не понял из твоего опуса ... во вторых я и не хочу особенно ничего понимать ... далее думаешь, какие улучшения еще можно сделать относительно этого. Вот и думаю далее старых, добрых списков доступа ... :) Впрочем, спасибо всем, первая часть вашего ответа (не понял И не хочу) объясняет почему тут обсуждать бессмысленно. Тока потеря времени. Спасибо, ещё раз всем, тему можно закрыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 19:01 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
> Переформулирую проблему, ибо она относится к большому классу решений: Почти правильно сформулировано. Готовых решений не существует, насколько мне известно, но вы достаточно близко подошли к хорошему варианту реализации. Совет: потратьте немного времени на изучение SELinux. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 20:05 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109, а так не пойдет? В ВИПРОС тоже с БД работает только ВИПРОС (если есть такая настройка (кроме dbowner), или все со своими правами в БД) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 23:02 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109, а так не пойдет? В ВИПРОС тоже с БД работает только ВИПРОС (если есть такая настройка (кроме dbowner), или все со своими правами в БД) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 23:02 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
извиняюсь,как это удалось одним нажатием не знаю :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 23:04 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
ViPRos, Пойдет и так, пойдет и как в SELinux ... это, скажем так, "верхний уровень" систем доступа, развитие "списков доступа" в сторону ролевых моделей. Меня, сейчас, интересует НИЖНИЙ уровень, то что называют Row Level Security (пасибо Диме, не знал что оно ТАК называется) ... то есть атрибутирование каждой записи и формат такого атрибутирования, который позволил бы пользовать его "малой кровью", то есть без отдельных дополнительных выборок, джойнов и апдейтов ... идеально только дописывая свою часть WHERE в каждый запрос на выборку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 05:14 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Похоже совет Димы Сибирякова до меня таки дошел. Да, если бы в том случае присутствовало поле owner одновременно с ключами доступа - задача рашалась бы значительно проще... ну, тогда пока так и оставим. Пасибки, не сразу "въехал" (старею). :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 06:40 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109ViPRos, Пойдет и так, пойдет и как в SELinux ... это, скажем так, "верхний уровень" систем доступа, развитие "списков доступа" в сторону ролевых моделей. Меня, сейчас, интересует НИЖНИЙ уровень, то что называют Row Level Security (пасибо Диме, не знал что оно ТАК называется) ... то есть атрибутирование каждой записи и формат такого атрибутирования, который позволил бы пользовать его "малой кровью", то есть без отдельных дополнительных выборок, джойнов и апдейтов ... идеально только дописывая свою часть WHERE в каждый запрос на выборку. я тебе там аж 2 типа фильтров показал (линейный и структурный (хотя можно все делать только через структурный)) :), которые автоматически дописываются к селекту в зависимости от роли и контекста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 06:46 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109, owner - фигня, после него начнутся гранты, гранты грантов и т.д. ерунда по части делегации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 06:48 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
ViPRosя тебе там аж 2 типа фильтров показал (линейный и структурный (хотя можно все делать только через структурный)) :), которые автоматически дописываются к селекту в зависимости от роли и контекста Фильтра заметил, а вот то что они "дописываются" - нет. :) Вот, примерно из этой оперы что-то и ищу... Дело в том, что моё старое изменение классической ролевой модели (дополнение ролей и действий политикой и контекстом исполнения: ТЗ от 2010г., реализация в 2011-2012г для sso.mediam.ru - студентом под моим надзором) вполне позволяет построить систему защиты так, чтобы принимать решения на уровне стороннего сервера ещё ДО начала обработки запроса. Примерно как в SELinux или других местах: есть отдельный сервер юзверей, доменов, политик, действий, контекста... который принимает запрос от базового сервера на исполнение действия и отдает ему контекст юзверя и политику запроса и подчиненных сразу, для кеширования и решение "можно или нельзя". Пока у базового сервера контекст и политика кешированы он, далее, сам принимает решения ... как только вышли за рамки кеша (переход на некешированный урл) - спрашивает заново (это чтобы часто не лазить). В базовом сервере до начала исполнения запроса (действия) работает "хелпер", который принимает решение по принципу пересечения контекста юзверя из кеша и запроса с параметрами... совпадает? можно, нет? "пошел нафик, с новым годом". Дабы кеш не раздувался непомерно (всего политиками для mediam.ru описано около 3500 урлов и контекстами около 5000 юзверей было на 2012год), есть его прокисание со временем. Сам хелпер минимизирован, там команд 30 на PHP "от силы"... То есть там нет ваще никакого вмешательства в само исполнение запроса и тем более его обращений к БД. Защита полностью прозрачна для главного сервера. Но, поскольку я не могу математически доказать полноту такой защиты ... хочется построить "дополнительный слой" ... и вот в качестве него, я и хочу сделать DAC или его разновидность. За неимением лучшего, пока остановился на традиционных ключах доступа и владельце записи. Помнится у Вас был разработан собственный framework для работы с БД ... встраивание фильтров идет в процессе конструирования запросов (есть какой-то конструктор ... типа Zend_Db_Select или по типу Yii) или обеспечивается "перехват" готового запроса и его дополнение в едином месте (адаптер к БД) или это происходит на уровне логики в ХП, а все обращения только через АПИ этого набора ХП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 07:35 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Дополню. Чем мне НЕ нравится решение с ключами доступа - это его "статичность". Процесс переназначения ключей - проблематичен. Это как раз вопрос "делегирований", который хочется решать полностью автоматически. Потому что в данном проекте "делегирование" - нормальное действие юзверя. Например, я - администратор фирмы ХХХ. У меня пришел новый продажник, а стало быть заявки по части товаров теперь стали "его", а не того, другого продажника. Или мне надо открыть доступ к "спец товарам" для группы "мои покупатели" ... или известить только их о начале акции ... или и таких моментов - море! (и все они НЕ реализованы на большинстве товарно-ценовых порталов ... как раз в силу ущербности моделей данных в их основе) То есть, делегирование прав - нормальное динамическое действие системы. Решением расширенной ролевой модели - мне достаточно изменить группы, роли, контексты, политики ... то есть всё то, что НЕ относится к самим данным. Это - легко. А вот КАК потом перенастроить DAC оперативно для заданной пачки записей ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 07:46 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109... встраивание фильтров идет в процессе конструирования запросов (есть какой-то конструктор ... типа Zend_Db_Select или по типу Yii) или обеспечивается "перехват" готового запроса и его дополнение в едином месте (адаптер к БД) или это происходит на уровне логики в ХП, а все обращения только через АПИ этого набора ХП? 1. Запросы конструируются и хранятся в составе метаданных до следующих изменений в метаданных. 2. При обращении в БД происходит динамическое изменение запроса с учетом прав. (Запросить воще то можно толко те типы, к которым есть права, а вот сужение прав по фильтрам происходит в самый последний момент). 3. Этот механизм может быть встроен в клиент или явяляться промежуточным звеном каким-то - вопрос технический. 4. Фильтры двух типов - список или лес. Первый обычный фильтр. Второй учитывает вложенности (т.е. можно задать - Предприятие1, Цех1, Участо1, Участок И Предприятие1,Цех2 - тогда все записи ссылающиеся на нижестоящие от Участок1, участок2 и Цех2 включая будт доступны). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 07:54 |
|
||
|
База сайта. Обеспечение контроля доступа к данным.
|
|||
|---|---|---|---|
|
#18+
Arhat109Дополню. Чем мне НЕ нравится решение с ключами доступа - это его "статичность". Процесс переназначения ключей - проблематичен. Это как раз вопрос "делегирований", который хочется решать полностью автоматически. Потому что в данном проекте "делегирование" - нормальное действие юзверя. Например, я - администратор фирмы ХХХ. У меня пришел новый продажник, а стало быть заявки по части товаров теперь стали "его", а не того, другого продажника. Или мне надо открыть доступ к "спец товарам" для группы "мои покупатели" ... или известить только их о начале акции ... или и таких моментов - море! (и все они НЕ реализованы на большинстве товарно-ценовых порталов ... как раз в силу ущербности моделей данных в их основе) То есть, делегирование прав - нормальное динамическое действие системы. Решением расширенной ролевой модели - мне достаточно изменить группы, роли, контексты, политики ... то есть всё то, что НЕ относится к самим данным. Это - легко. А вот КАК потом перенастроить DAC оперативно для заданной пачки записей ... Есть 3 возможности. 1. Клонирование Ролей и замена фильтра (с дополнительным вводом классифицирующего признака в запись - вплоть до "Запись для Роли". 2. Создание нового типа со сылкой 1:1 к основному и стаскивание всех нужных записей во второю а в Роли права только на новый тип (Всегда джойнится с основной при выборке автоматом). 3. Изначальное создание (разбиение) типов (никуда не ссылаются, имеют некоторое множество одинкаовых свойств) под роли и введение в агрегриующий классификатор. При запросе такого классификатора автомтически запускается юнион для совпадающих свойств. можно еще поизгаляться, а эти встроены в ВИПРОС и пока на все вопросы отвечают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 08:02 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38833542&tid=1540707]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 540ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...