Когда я должен использовать ACL в своем приложении - PullRequest
11 голосов
/ 02 июля 2010

Я в значительной степени смущен тем, когда мне следует внедрить систему ACL (список контроля доступа) в моем приложении , хотя я могу легко управлять разрешениями для групп, просто выбирая идентификатор группы сеансов и ограничивая доступиспользуя компонент Auth.

Как решение ACL лучше, чем подход, который я обсуждал выше (ограничение доступа группы на основе идентификатора группы)?

Как реализация решения ACL упрощает управление правами доступав вашем приложении?

До сих пор я узнал, что через ACL разрешения могут быть предоставлены и отозваны во время выполнения, но эта функциональность также достижима без использования ACL.

Я очень запуталсяоб этом, пожалуйста, помогите мне понять концепцию, когда использовать ACL, и преимущества использования ACL в вашем веб-приложении.

Я предпочитаю кодировать с cakePHP v1.3, поэтому было бы здорово, если бы дано объяснениев контексте cakephp, но любая помощь (независимо от языка / технологии), связанная с моим вопросом, очень ценится.

Ответы [ 2 ]

11 голосов
/ 02 июля 2010

Вы должны использовать списки ACL (или эквивалентный механизм полномочий пользователя, такой как буквальная таблица пользователей и таблицы разрешений), а не группы, если вам нужно управлять доступом к отдельным объектам , которые динамически изменяются .Файловые системы прикрепляют списки ACL к отдельным файлам, поскольку вы не хотите создавать отдельную группу для каждого файла.Менеджеры баз данных присоединяют ACL к базам данных, таблицам, представлениям, хранимым процедурам и тому подобному по той же причине.Веб-серверы обрабатывают веб-приложения таким же образом.

В бизнес-приложении, имеющем дело с бизнес-объектами, вы можете разделить доступ к таким объектам, как, например, различные заказы на продажу, клиенты, продукты или подразделения в вашей компании, где не всем разрешено создавать / обновлять или дажечитать те же сущности.Например, когда продавцы находятся в прямой конкуренции за бонусы, они не хотят, чтобы все остальные видели всю информацию о своих CRM-сохраненных перспективах.

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

1 голос
/ 19 августа 2015

Я думаю, что техника ACL для обеспечения доступа пользователей к ресурсам полезна только для типичного или среднего размера приложения.для больших приложений, таких как CRM или хранилища финансовых данных, списки ACL не смогут управлять очень сложным набором пар пользователь / ресурс, когда при увеличении размера, типа и объема данных таблицы ACL, созданные для этой цели, также увеличатся, чтодля меня нет смысла перегружать сервер базы данных таблицами ACL.Есть много других методов, используемых для установки безопасного доступа, а также разрешений и привилегий ... Использование файлов ACL вместо этого не звучит плохо, но это не очень хорошая идея, поскольку файлы могут время от времени повреждаться, поэтому сбой данных превышает риск для пользователя.не иметь доступа к файлу, содержащему правила ACL, или к несуществующему или утерянному файлу ... Единственный способ играть с разрешением - это использовать бизнес-таблицы, используемые в контексте или в целях вашего приложения с отношениями междуваши таблицы и некоторая логика для добавления в ваши служебные сценарии, если вы находитесь под архитектурой MVC или любой другой ... Так что избегайте использования ACL для приложений очень большого размера.

...