Здравствуйте, Константин Л., Вы писали:
КЛ>задача ограничения доступа это и есть по сути то, что решают пермиссии. то есть ответ да, просто ты не понимаешь уже что пишешь
Нет, но я не совсем понимаю, что мне пишете вы. Да, теперь понятно — ответ "да".
КЛ>ла-ла-ла
КЛ>ты сам себе противоречишь. невозможно говорить про апи без того, зачем он такой нужен.
Ну так мы про это и говорим, а вы вдруг начинаете "при чём тут АПИ"
КЛ>ну, люди много лет умудряются делать всякую фигню, это не показатель.
Отож.
КЛ>всю жизнь? да твой код будет переписан через пару лет. сколько стоит индийский саппорт? представляю. но не надо мне зубы заговаривать — тейк про баги
Не было никакого тейка про баги. Я, наверное, плохо объяснил сценарий.
Вот у нас есть какая-нибудь экзотическая пермиссия на атрибут "НДС". Зачем? Да низачем. Просто пришёл в своё время суперуверенный в себе архитект, и набросал "универсальное RBAC-решение на все времена".
На практике следуюшие 10 лет никто не задурялся настройкой этой пермиссии, потому что нафиг никому не упёрлись инвойсы без атрибута НДС. Нет такого бизнес-сценария.
Внешние разработчики, которые писали интеграцию с этим АПИ, всегда видели этот атрибут в JSON. Да и в OpenAPI спецификации этот атрибут приведён. Где-то, в какой-то доке,
наверное, кто-то упомянул, что этот атрибут требует пермиссию Invoice.VAT.Read для конкретного инвойса. Но поскольку доки никто не читает, а в тестах интеграция работало в 100% случаев, этот сторонний сервис выкачен в эксплуатацию.
И вот ещё через несколько лет какой-нибудь шибко активный админ решает поубирать у какого-нибудь пользователя "лишние" пермиссии на какие-то отдельные объекты.
Пользователь выполняет свой привычный workflow, и внезапно обнаруживает 500 internal error. Потому что сервису вдруг попался экземпляр инвойса с атрибутом НДС=null, а на это никто не рассчитывал.
КЛ>ну у тебя там есть юзер, у которого явно есть роль или зачем там была написана вся та бесполезная портянка
Я вроде три раза объяснил, в четвёртый уже не буду.
КЛ>в контроллере? ты серьезно? вот это ты гений проектирования безопасных приложений — поля отрезаем декларативно через поля в объекте (твой факторинг), пермиссии проверяем в контроллерах (кстати как?). такое где-то работает да — в очень простых системах.
Ну, научите же меня, как всё это правильно делать. А то по моей практике, простые решения — они самые надёжные.
КЛ>это читерство. у тебя одна таблица, а не две. зачем сюда писать какой-то детский сад?
Да, у меня одна таблица. Читерство-то в чём? Детский сад — это ваша манера общаться. Я что-то начал от неё уставать.
КЛ>какая разница как называется топик, когда эта ветка давно уже про rest levels?
Прекрасно.
КЛ>у тебя windows головного мозга
Windows тут ни при чём. Row-level security в каком-нибудь Постгрес устроены ровно так же.
Пример, который я привёл, про этот сайт — поэтому упомянут Windows и SQL Server.
КЛ>да да, а твои проверки row-level секьюрити в контроллере стоят ноль да? и ты поташищь весь резалтсет для всех юзеров из базы да?
Вот зачем вы пишете бред. Я же показал вам тремя абзацами выше код запросов — где там "весь резалтсет для всех юзеров из базы"?
КЛ>и пейджинг от этого у тебя не будет работать
Прекрасно он будет работать.
КЛ>да ты тут уже нарассказывал
Я как-то не рассчитывал встретить в архитектурной дискуссии незнание основ RDBMS. Поэтому надеюсь на то, что я просто вас не так понял. Но, на всякий случай выражаю готовность поделиться всем, что знаю сам.
КЛ>ну спроектируй тут, только без хаков с db.OutboundInvoices, db.InboundInvoices — одна таблица, row-level security и тп.
Непонятно, что такое "хаки".
КЛ>я тебе набросал _примерную_ схему, ты
КЛ>же мне ответил "недостаточно вводных данных".
Вы жульничаете. Схему вы набросали про фильтрацию строк, а задачу, про которую я ответил "недостаточно данных" — про какую-то (непонятно какую) обрезку атрибутов.
И ни в одном из случаев нет ничего про
постановку задачи. Выглядит так, что вы стараетесь сначала придумать
решение, а уже потом любой ценой его защитить, вообще не задумываясь, а
зачем такое решение нужно.
КЛ>ну смейся
А то.
КЛ>какая чушь
Не, беру свои слова по поводу "поделиться всем, чем знаю" обратно.