Моделирование системы разрешений

82

Как бы вы смоделировали систему, которая обрабатывает разрешения для выполнения определенных действий внутри приложения?

Джеймс П.
источник

Ответы:

156

Модели безопасности - это обширная (и открытая) область исследований. На выбор предлагается огромное количество моделей, начиная от самых простых:

  • В матрице контроля доступа Лэмпсона перечислены все объекты домена и каждого принципала в системе с действиями, которые принципал может выполнять с этим объектом. Он очень подробный и, если он действительно реализован таким образом, требует очень много памяти.

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

«Компьютерная безопасность: искусство и наука» Мэтта Бишопа определенно стоит прочитать, если вы хотите получить более подробную информацию об опубликованных моделях.

Сарнольд
источник
7
Отличный ответ. Интересно читать. Мне интересно, где эта излишне простая, но не такая уж необычная система вписывается в ваш список: «По умолчанию у гостей уровень 0, у зарегистрированных пользователей - уровень 5, у системных администраторов - уровень 9. Каждое действие имеет связанный с ним уровень, и может быть выполнен только кем-то на этом уровне или выше ".
Oddthinking 05
1
@Oddthinking, эта простая модель может быть в нескольких :) но самое простое «совпадение» - это модель Ring. Как реализовано в x86, он имеет четыре уровня, как в вашем примере, и каждый добавляет операции, которые могут быть выполнены только этим уровнем кода или выше. (Как вы их называете - это ортогональный вопрос.) Я легко могу представить ACL, Capability, Lattice, BLP и TE реализации этого примера. Не удивлюсь, если другие тоже смогут реализовать эту модель; но простота - хорошее достоинство. :)
sarnold 05
@Frank, спасибо! Мое правописание просто ужасно, спасибо за уловку.
sarnold 08