Как бы вы смоделировали систему, которая обрабатывает разрешения для выполнения определенных действий внутри приложения?
источник
Как бы вы смоделировали систему, которая обрабатывает разрешения для выполнения определенных действий внутри приложения?
Модели безопасности - это обширная (и открытая) область исследований. На выбор предлагается огромное количество моделей, начиная от самых простых:
В матрице контроля доступа Лэмпсона перечислены все объекты домена и каждого принципала в системе с действиями, которые принципал может выполнять с этим объектом. Он очень подробный и, если он действительно реализован таким образом, требует очень много памяти.
Списки контроля доступа - это упрощение матрицы Лэмпсона: считайте, что это что-то вроде реализации с разреженной матрицей, которая перечисляет объекты, участников и разрешенные действия и не кодирует все «нулевые» записи из матрицы Лэмпсона. Списки контроля доступа могут включать в себя «группу» в качестве удобства и списки могут быть сохранены с помощью объекта или через основные (иногда, с помощью программы, как и в AppArmor или Tomoyo или LIDS ).
Системы возможностей основаны на идее наличия ссылки или указателя на объекты; процесс имеет доступ к начальному набору возможностей и может получить больше возможностей, только получив их от других объектов в системе. Это звучит довольно странно, но подумайте о файловых дескрипторах Unix: они являются неотъемлемой ссылкой на конкретный открытый файл, и файловый дескриптор может быть передан другим процессам или нет. Если вы передадите дескриптор другому процессу, он получит доступ к этому файлу. Целые операционные системы были написаны вокруг этой идеи. (Самыми известными, вероятно, являются KeyKOS и EROS, но я уверен, что это спорный момент. :)
... к более сложным, у которых метки безопасности назначены объектам и принципалам:
Кольца безопасности , такие как реализованные в процессорах Multics и x86, среди прочего, и обеспечивают ловушки или шлюзы безопасности, позволяющие процессам переходить между кольцами; каждое кольцо имеет свой набор привилегий и объектов.
Решетка Деннинга - это модель, в которой участникам разрешено взаимодействовать с какими метками безопасности в очень иерархической манере.
Bell-LaPadula похожа на Решетку Деннинга и предоставляет правила для предотвращения утечки сверхсекретных данных на несекретные уровни, а общие расширения обеспечивают дальнейшее разделение и категоризацию, чтобы лучше обеспечивать поддержку в стиле милитари по принципу служебной необходимости.
Модель Biba похожа на Bell-LaPadula, но «перевернута с ног на голову»: Bell-LaPadula ориентирована на конфиденциальность, но ничего не делает для целостности, а Biba сосредоточена на целостности, но ничего не делает для конфиденциальности. (Белл-ЛаПадула запрещает кому-либо читать «Список всех шпионов», но с радостью разрешает кому угодно писать в нем что угодно. Биба с радостью разрешает кому угодно читать «Список всех шпионов», но запрещает почти всем писать в нем.)
Применение типа (и его родственный брат, принудительное применение типов домена) предоставляет метки для принципалов и объектов и определяет разрешенные таблицы объект-глагол-субъект (класс). Это знакомые SELinux и SMACK.
.. и есть некоторые, которые включают течение времени:
Китайская стена была разработана в бизнес-среде для разделения сотрудников внутри организации, которая предоставляет услуги конкурентам на определенном рынке: например, как только Джонсон начал работать над учетной записью Exxon-Mobil, ему не разрешили доступ к учетной записи BP. Если бы Джонсон сначала начал работать над BP, ему было бы отказано в доступе к данным Exxon-Mobil.
LOMAC и высокий водяной знак - это два динамических подхода: LOMAC изменяет привилегии процессов, поскольку они получают доступ к все более высоким уровням данных, и запрещает запись на более низкие уровни (процессы переходят в сторону «максимальной безопасности»), а высокий водяной знак изменяет метки на данные, когда к ним обращаются процессы более высокого уровня (данные перемещаются в сторону «максимальной безопасности»).
Модели Кларка-Уилсона очень открыты; они включают инварианты и правила, чтобы гарантировать, что каждый переход состояния не нарушает инварианты. (Это может быть как простой учет с двойной записью, так и сложный, как HIPPA .) Подумайте о транзакциях и ограничениях базы данных.
«Компьютерная безопасность: искусство и наука» Мэтта Бишопа определенно стоит прочитать, если вы хотите получить более подробную информацию об опубликованных моделях.
Я предпочитаю RBAC . Хотя вы можете найти его очень похожим на ACL , но они отличаются семантически .
источник
Пройдите по следующим ссылкам:
источник