2008-09-16 2 views
-1

Я проектирую архитектуру безопасности портала. На сайте есть страницы, видео, картинки, пользователи, базы данных, объекты файловой системы и т. Д. Каков наилучший способ контролировать доступ ко всем этим объектам? Как вы будете хранить разрешения? Является ли 64-битная переменная базы данных достаточной для хранения разрешений?Каков наилучший способ создания архитектуры безопасности?

E.g. В Windows работают ACLs и SIDs. У вас есть более современное решение?

ответ

1

Мне не нравится идея хранения разрешений в виде флагов в одной переменной. Я бы предпочел сделать роли объектами в отношении многих-ко-многим с пользователями.

Для редактирования прав конкретного объекта я использую метод объекта или внешнюю функцию в зависимости от того, как я могу обобщить политики безопасности.

Для порталов среднего размера этот подход работает очень хорошо.

0

Большинство общих веб-инфраструктур имеют встроенные системы безопасности. Например, ASP.NET имеет подсистему безопасности, которая достаточно надежна. Безопасность очень сложна, так что почти всегда бывает, что вы захотите использовать систему, которая регулярно тестируется.

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

0

Что бы вы ни делали, сделайте это просто. Проще сделать, проще доказать, проще провести аудит. Легче адаптироваться.

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

Если этого не достаточно для вас (убедитесь, что это на самом деле не достаточно), использование какая-то система ACL, предпочтительно интегрированная с вашим решением exisitng, и желательно как можно проще.

0

Я планирую следовать за Роль-контроль безопасности для проектирования контроля доступа (Security Patterns: Integrating Security and Systems Engineering, p249). Роль имеет связь с ProtectionObject. Имя ассоциации IsAuthorized. Существует класс ассоциации Right, который имеет член accessType и метод checkRights. Роль во многом зависит от пользователя. Название ассоциации - MemberOf. Эта структура может представлять роли, пользователей и проверку доступа.

Главный вопрос для меня: Как хранить разрешения на объект. Предположим, у нас есть страницы, веб-сайты, объекты файловой системы. Я могу хранить разрешения для этих объектов в базе данных. Этот метод позволяет также управлять объектами системы и объектами файловой системы. Для меня большой вопрос как хранить и кэшировать эти наборы разрешений в памяти и как эффективно проверять доступ.

+0

Я думаю, вы должны включить это в свой вопрос ... – KovBal 2008-09-30 16:00:53