Как бы вы смоделировали систему, которая обрабатывает разрешения для выполнения определенных действий внутри приложения?
Ответы:
Модели безопасности - это обширная (и открытая) область исследований. На выбор предлагается огромное количество моделей, начиная от самых простых:
В матрице контроля доступа Лэмпсона перечислены все объекты домена и каждого принципала в системе с действиями, которые принципал может выполнять с этим объектом. Он очень подробный и, если он действительно реализован таким образом, требует очень много памяти.
Списки контроля доступа - это упрощение матрицы Лэмпсона: считайте, что это что-то вроде реализации с разреженной матрицей, которая перечисляет объекты, участников и разрешенные действия и не кодирует все «нулевые» записи из матрицы Лэмпсона. Списки контроля доступа могут включать в себя «группу» в качестве удобства и списки могут быть сохранены с помощью объекта или через основные (иногда, с помощью программы, как и в 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 , но они отличаются семантически .