Аутентифицация и разграничение прав
Аутентифицация и разграничение прав
Есть список
https://identitymanagementinstitute.org/identity-and-acces...
Кто-то с чем-то из этого работал? Какие впечатления?
Задача - разграничить доступ к исходникам и исполняемому коду.
Детализация разграничений будет производится позднее, но уже сейчас знаю что читать/писать/исполнять будет мало.
Какая-то реализация у меня есть в системе управления документооборотом, но там громоздко и медленно. Хочется шустро и малоразмерно.
вы похоже вообще не в ту сторону смотрите.
во-первых, то, что вы хотите не аутентификация, а авторизация.
во-вторых, для исходников авторизация интегрирована в саму систему управления версиями (Git, SVN, etc). Указываете на сервере пользователей и их права на исходники, остальное RBAC за вас сделает.
исполняемый код обычно хранится в виде пакетов в системе управления пакетами типа ProGet или в сборочных системах типа TeamCity, Jenkins, etc. Там же есть настройка авторизации для пользователей. если ваш исполняемый код тупо валяется в файлопомойке, то тогда ограничивайте доступ к папкам и файлам на уровне ОС.
интегрирована в саму систему управления версиями
-----
Эээ... А кто сказалм что там где это нужно есть СУП?
если ваш исполняемый код тупо валяется в файлопомойке, то тогда ограничивайте доступ к папкам и файлам на уровне ОС
-----
Опять таки - кто говорит что средств ОС достаточно?
Исполняемый код - да, валяется в файлопомойке.
Больший файлопомойке. Очень большой.
С кучей пользователей. Которым нужно дать инструмент для управления своей частью помойки - кому-то что-то разрешать, кому-то что-то разрешать... где-то вообще нужно будет что-то такое об чем еще неподумали.
Давать допуск к средствам ОС? Нее, это смертельно - и так ломать будут регулярно...
Задача - разграничить доступ к исходникам и исполняемому коду.
Я работаю с bitbucket. Это система контроля версий, клон GITа. Первый уровень - сервер вообще доступен (у нас свой сервер). Потом доступ к репозиториям. Открытые видны всем. Таких сейчас нет. Остальные видны только зарегестрированным пользователям с правами на просмотр. Регистрация привязана к доменному контроллеру Винды, но несомненно можно привязать к любой системе управления пользовательскими аккаунтами. Поддерживаются группы пользователей. То есть 20 проектов, делаем 20 групп и группе разрешаем просмотр репозитория проекта. Внутри репозитория даются права на коммит, пулл без пуллреквеста, удаление ветки (конкретной и по маске) и еще пара прав. Всегда можно отследить, кто что делал, включая не только код, но и манипуляции в настройках репозитория. Можно делать автоматические бэкаппы
Исполняемый код - да, валяется в файлопомойке.
Код должен быть только в системе управления версиями. Защищать помойку бессмысленно. имхо
Которым нужно дать инструмент для управления своей частью помойки
ну ты бы вначале задачу нормально описал.
Где именно валяется?
Что именно валяется? (ехе с возможностью запуска+ исходники проектов)
Как сейчас осуществляется доступ?
Какое идеальное решение хочется?
...
bitbucket
------
Насколько Я знаю - там все размазано по коду тонким слоем.
еще пара прав
-----
Меня интересует можно ли, скажем, вместо "коммит" определить две другие операции "хвостик с коммитом", "коммит с хвостиком" и определить для них права как группы, так и админов, владельцев и т.п. Разумеется, без переделки использующего это дело кода.
Защищать помойку бессмысленно
-----
Не совсем.
При отсутствии прямого доступа к файлопомойке - задача вполне решаемая.
Например, описывается возможность "видеть" содержимое файлопомойки только владельцу и никто другой это не видит...
Где именно валяется?
-----
Где-то в системе. Где именно Я еще не решил.
Что именно валяется? (ехе с возможностью запуска+ исходники проектов)
------
Т4, XSD и полученный из них исполняемый код в длл.
Исходники, скорее всего, лягут в ГИТ.
А куда ложить компиляцию - надо думать.
Как сейчас осуществляется доступ?
-----
Без ограничений. Простое хранение в файловой системе.
Какое идеальное решение хочется?
------
Сложно.
Нужно чтобы любой из пользователей мог загрузить свои Т4 и определить как их использовать.
Ну а система позволила всем остальным использовать их как определено.
Вот сейчас думаю - если сделать группу Паблик и дать ей доступ по-умолчанию ко всему публичному - будет ли это нормально, если юзер в паблике получается так же по умолчанию... вроде как будет не так как нужно...
Как обычно, всё нужно вырывать пытками
Где-то в системе.
То бишь есть сетевая файловая система и в ней всё накидано? Это как есть, а не как должно быть.
чтобы любой из пользователей мог ... определить как их использовать.
Вероятно здесь и зарыта собака. Пользователь должен раздавать права на свои файлы, а не админ.
Тогда получается хочется иметь прослойку - файл менеджер с правами
А как быть с поиском нужного файла?
Пользователи устроят полный бардак, если им всё разрешить.
Можно правда обойтись более простой системой, что ОС даёт: есть папки личные, общие, служебные и секретные.
В личные никто не может залезть кроме пользователя и админа.
В общие все.
В служебные и секретные каждый может записать файл и просмотреть список своих файлов( удалить). Чтение всего по разрешению.
Это как есть, а не как должно быть.
-----
Почему?
Мне как раз это видится правильным - где-то на писюке что-то хранится.
Доступ к этому идет через шлюз разрабатываемой системы - что можно - видит, что нельзя - просто не видит.
Прямого доступа к месту хранения - нету. Если мне не понравится - поменяю шлюз.
Вроде так можно.
хочется иметь прослойку - файл менеджер с правами
------
Ну так Я вроде как это и спрашиваю...
Правда понятие "Прав" должно определяться позднее - Я пока не знаю какие нужны.
Пользователи устроят полный бардак, если им всё разрешить.
-----
Разумеется.
В служебные и секретные каждый может записать файл и просмотреть список
------
Я не хочу чтобы они знали как оно работает.
Мне хочется чтобы могли использовать, не зная деталей реализации... и, в принципе, не могли получить эту информацию.
Выглядит примерно так:
- юзер хочет использовать шаблон "Форма:Строчный редактор,Автор:Алех,версия=1.2.3.4"
- указанный шаблон использует 20(00) субшаблонов разных пользователей - часть из них общая, часть - частная.
- один из используемых субшаблонов "Форма:Строчный редактор,Имплементация:.Нет2.0,Автор:Мурр,версия=2.4.5.6"
- другой субшаблон "Форма:Строчный редактор,Имплементация:Телерик,Автор:Немо,версия=2.4.5.22"
Указанная пара субшаблонов - заменяемая, но:
- первая версия субшаблона - публична, может пользовать кто хочет.
- для использования второй нужны пермишены от автора "Немо".
Юзер получил от "Немо" права на пользование, посмотрел что получилось и ему что-то не понравилось - ему нужны другие права чтобы поправить что ему не нравится. Опять вопросы к "Немо" и дальше уже как получится - либо он сам отредактирует, либо даст исходники,
Вот всем этим надо как-то управлять.
Примено так.
Ага, еще каталог файлов хочешь.
А кто его будет вести?
Откуда появятся зависимости и как переписываться с автором?
А как быть с секретными модулями? Ведь о них не должны ничего знать все, в том числе и автора.
И если мне придёт запрос на открытия права откуда мне знать что этому пользователю их можно дать?
Нельзя подобную вещь отдавать на откуп пользователям.
Ну и нужно знать примерное количество пользователей и файлов.
А если нет текущего решения, значит пытаешься угадать, что может быть полезно пользователю.
Вот как микрософт сделал: логин провайдер - фейсбук,... claim
А кто его будет вести?
-----
Юзера.
Будут описывать свои поделия и предлагать улучшения для существующих.
Откуда появятся зависимости и как переписываться с автором?
-----
Из практики использования.
Автору до этого нет дела - написал, работает как надо - все Ок - Осталось описалово на форум скинуть.
А как быть с секретными модулями?
-----
Что есть секретный модуль?
И если мне придёт запрос на открытия права откуда мне знать что этому пользователю их можно дать?
-----
А откуда Я могу знать можно ли к твоему поделию дать доступ какому-то юзеру?
При этом Я не знаю ни что за поделие, ни что хочет юзер...
Нельзя подобную вещь отдавать на откуп пользователям.
-----
Нельзя это менеджерить самому - не останется времени ни на что другое.
Об АД Я думал.
Пока останавливает то, что нужно юзверей регать в АД текущей оси.
Не хочется этого. Хочется иметь их отдельно от оси. Совсем отдельно.
Ну либо нужен отдельный домен, который будет заниматься только этими юзерами. Такое Я еще не делал.
Будут описывать свои поделия и предлагать улучшения для существующих.
И что об этом говорит существующий опыт?
Что есть секретный модуль?
Есть приватные и публичные на концах, а что посередине?
Ну либо нужен отдельный домен, который будет заниматься только этими юзерами.
За тебя это всё уже сделали. При создании проекта просто выбираешь "с идентификацией". (Не помню уж как точно называется)
А после регистрируй юзверей и создавай им роли.
И что об этом говорит существующий опыт?
-----
Что надо быть фриком с семью пядями во лбу чтобы этим заниматься.
Таковые - есть, но весьма немного.
а что посередине?
-----
И в привате, и в паблике, и посредине - то, что юзвери слепят.
Ближайший аналог - ИИС - обеспечивает обработку запросов и отсылку результатов, а генерация результатов - на юзверях...
При создании проекта просто выбираешь "с идентификацией".
-----
А поточнее никак не получится? Хотя бы версию Студии и группу визардов...
Что надо быть фриком с семью пядями во лбу чтобы этим заниматься.
Ну так на что и намекаю - никто не будет этим заниматься, да и еще на запросы отвечать.
А поточнее никак не получится?
22 студия еще официально не вышла, значит остаётся 2019. Вот для веба
Хотя вероятно тебе не пойдет, там юсер не может сам себя админом назначить.
Ааа... знаю такую байду...
Это проверка при вызове метода сервиса. И только, не перестраиваемая.
Мне ее мало.
Мне надо оценивать доступ к... хммм... инстансам классов... ну или к одному методу инстанса класса.
Загрузка класса - поздняя, ручная - вот между загрузкой и вызовом и надо оценивать разрешение на использованиe...
никто не будет этим заниматься, да и еще на запросы отвечать
-----
Тут ты слегка ошибаешься.
Во первых фриков довольно много - результаты их работы Я вижу довольно регулярно.
Во-вторых, всегда можно дать права на пользование и избавится от лишних вопросоv.
Скорее не понимаю что точно тебе хочется
------
Хостить Т4.
Т,е, делать то, что сейчас делается локально, на удаленном хосте.
Ну и на нем собирать нужный набор шаблонов.
Пусть каждый берет что ему нужно
------
Это хорошо.
А кто будет оплачивать этот банкет?
Вот посидишь ты с годик вырисовывая нужный комплект Т4.
Может даже кого-то в помощь наймешь за малую денежку.
Теперь просто выложись в общее пользование?
Или все же попробуешь отбить затраты?
Это то как ты посчитал нужным прочитать
А как это еще можно прочитать?
Задача - разграничить доступ к исходникам и исполняемому коду. Детализация разграничений будет производится позднее, но уже сейчас знаю что читать/писать/исполнять будет мало.
В магазине ты то имеешь минимум 3 роли: администратор, покупатель, продавец. Исполнять вообще ничего не надо. Каждая роль имеет четкие разграничения.
Пока хочется именно то что указано - иметь разграничение доступа.
Как разграничивать - пока не ясно.
Чтобы по-проще объяснить...
Допустим, есть интерфейс IMyCoolInterface.
И есть 10 вариантов его имплементации - 1 публичный и 9 частных.
Разница - бесплатный стыкуется исключительно с базовым .Нет 4.0, 9 частных - с наборами контролов от разных фирм.
То что мне надо - в момент когда собирается пакет шаблонов для генерации определить и "сказать":
этот - на .НЕТ 4.0 - можно использовать как есть,
а на эти - надо получить разрешение от владельцев.
Ну и соответственно дальше проверка разрешений.
Проблема - на шаблонах нет никаких маркеров.
Ни аттрибутов, ни пропертей.
Может просто вкатить какую-нибудь константу из директив? Ну так это надо компилятор переписать... а там - мелкомягкий код.
Пока хочется именно то что указано
Пока я вижу полный бардак и одни непонятки.
Попробую опять описать как понял.
- Хочется сделать веб магазин.
- Продавцы выставляют готовые Т4 шаблоны с описанием.
- Покупатели каким то образом выбирают шаблоны и с их помощью конвертируют свои данные из одного представления в другое. Оплата именно за конвертацию. Продавцам оплата за использованные шаблоны при конвертации.
Все остальное лежит уровнями ниже.
Осталось еще выяснить как
-----
Укажет в конфиге что примерно он хочет... типа хочу в формах ДевЕкспрес и хочу Оракла через РЕСТ...
либо без детализации - система сама скомпонует пакет из того что доступно, либо с указанием из каких вариантов системе компоновать пакет.
Укажет в конфиге что примерно он хочет
Одни фиг непонятно как это всё будет работать, но ладно, считаем что есть какой то визард.
То бишь, покупатель вводит какие-то данные и система генерирует некую последовательность вызова готовых плагинов.
Получит ли он в итоге то что ему нужно - неясно.
Но в таком случае система сама знает какие плагины нужно выбирать, причем здесь еще какие то дополнительные права?
Но в таком случае система сама знает какие плагины нужно выбирать, причем здесь еще какие то дополнительные права?
-----
Ну так пользователю доступен не весь наличный набор "плагинов", а только то на что у него есть права.
Как описано выше - есть 10 имплементаций, одна - публичная, 9 - приватных. На приватные нужны пермиты.
Просто задачка для программерских мозгов непривyчная - в системе есть исполняемый код, а исполнение еще нужно разрешать...
Почему?
-----
Потому как владелец не предоставил на это прав. А хостер - не владелец.
А вообще-то вопрос - Почему? - некорректен, Корректный вопрос - Как?
Ты на ебае или у китайцев на Али что-нибудь покупаешь?
У самого ебая/Али товар требуешь?
Или все же покупаешь у конкретного продавца?
Так и тут - владелец/продавец определяет что и как.
А мне, как хостеру, надо лишь проверить что конкретному пользователю это можно юзать.
Ну а поскольку Я "не знаю" - это зависит от конфигов пользователя - что именно будет использовано, нужно делать это в ран-тайме как часть работы по генерации.
Или все же покупаешь у конкретного продавца?
Ну так это же полный идиотизм выставлять всё на продажу и дополнительно давать всем разрешение по запросу на отдельные товары.
Типа я вижу 10 товаров, но сразу купить могу только один. На остальные нужно посылать запрос и приходить опять через какое то время, когда будет ответ.
А что могут не разрешить? А как мне это знать заранее?
А что могут не разрешить?
-----
А почему нет?
У нас тут как-то английского принца в пабе обслуживать отказались...
это же полный идиотизм
-----
Ну расскажи мне как ты обычно покупаешь.
Чтобы было по-проще - пусть будет только в инете и исключительно без кредитной карты, папала и т.п.
Я внимательно слушаю...
У нас тут как-то английского принца в пабе обслуживать отказались...
Если только представляет какую-то опасность для окружающих или паба
Если мне из онлайн магазина какое Г. придёт так я туда больше ни ногой.
Ну или если в этом магазине доставка стоит Х, а в этом Y, то возьмем где доставка поменьше или ждать товар меньше.
А если что хочется, так заказываю "прямо сейчас", где не получается, не нравится - те в пролете.
Какие тогда критерии "да или нет"?
представляет какую-то опасность
-----
Ну какую опасность может представлять английский принц в ирландском пабе?!!
Такую же, как и в любом другом месте, включая Букингемский Дворец...
возьмем где доставка поменьше или ждать товар меньше
-----
Я, вообще-то, спрашивал как ты это сделаешь без варанта онлайн платежки.
А так - да, походи по рынку - поищи по дешевле...
И опять таки - меня не интересует надо или не надо и где именно это надо или не надо.
Меня интересует какая из подсистем построена так, чтобы мне было удобно позднее ее настроить так как мне надо. И при этом она оставалась легковесной и быстрой.
нужно хотя-бы понимать как система должна работать
-----
Ты никогда не писал код не имея ни малейшего представления где и когда он будет использоваться?
у меня нет никакого понимания
-----
Так это, вообще-то, не требуется.
Требуется иметь софт, который позволяет настроить какое-то управление ресурсами - юсерами, админами, авторами, шаблонами, дллками и т.п. - голая система, которая позволит описать используемые элементы и их "взаимодействие".
Например, нужно следующее "правило" - чтобы шаблончик лег в публичные нужно 5 компетентных мнений об его пригодности для публичности.
Для чего нужно данное правило - не важно. Важно чтобы его можно было добавить и оно работало... без доработки кода.
Ты никогда не писал код не имея ни малейшего представления где и когда он будет использоваться?
Не было и не будет
Например, нужно следующее "правило"
Ну а какие будут правила никто и не знает и не хочет знать.
Хотя для этого правило нужна какая то оценка компетентности. Через User Claim можно сделать, но это же нужно знать и сделать.
юсерами, админами, авторами, шаблонами, дллками
Ну вот и роли появились.
но это же нужно знать и сделать.
-----
Не нужно знать - нужна подсистема которая умеет это делать.
Видимо придется смотреть МСБУИЛД - там вроде есть подсистема подобного вывода. Правда она не отдельная, а вписана в тамошнее спагетти...
нужна какая то оценка компетентности
-----
Возможно, возможно... но не сейчас... сейчас нужно всего лишь получить возмозножность написать подобное правило и подсистему которая его вычислит...
Ну вот и роли появились.
------
И какая же роль у дллки? В ней, кстати, классы... и не обязтельно шаблонов...
И какая же роль у дллки
она не может быть ни покупателем ни продавцом и ее нельзя исполнить, только кинуть в папку проекта.
получается даже что твои объекты должны иметь ограничения по ролям.
Видимо придется смотреть МСБУИЛД
Зачем? СИ вроде никуда особо не смотрят, да и проектах сейчас нет списка файлов.