KasperskyOS Community Edition 1.0

Пример Defer to Kernel

Пример Defer to Kernel демонстрирует использование паттернов Defer to Kernel и Policy Decision Point.

Пример Defer to Kernel содержит три пользовательские сущности: PictureManager, ValidPictureClient и NonValidPictureClient.

В этом примере сущности ValidPictureClient и NonValidPictureClient обращаются к сущности PictureManager для получения информации.

Только сущности ValidPictureClient разрешено взаимодействие с сущностью PictureManager.

Ядро KasperskyOS гарантирует изоляцию сущностей.

Контроль взаимодействия сущностей в KasperskyOS вынесен в модуль безопасности Kaspersky Security Module. Эта подсистема анализирует каждый отправляемый запрос и ответ и на основе заданной политики безопасности выносит решение: разрешить или запретить его доставку.

Политика безопасности в примере Defer to Kernel имеет следующие особенности:

  • Сущности ValidPictureClient явно разрешено взаимодействие с сущностью PictureManager.
  • Сущности NonValidPictureClient взаимодействие с сущностью PictureManager не разрешено явно. Таким образом, это взаимодействие запрещено (принцип Default Deny).

Динамическое создание IPC-каналов

Пример также демонстрирует возможность динамического создания IPC-каналов между сущностями. Динамическое создание IPC-каналов осуществляется с помощью сервера имен – специального сервиса ядра, представленного сущностью NameServer. Возможность динамического создания IPC-каналов позволяет изменять топологию взаимодействия сущностей "на лету".

Любая сущность, которой разрешено взаимодействие с NameServer по IPC, может зарегистрировать в сервере имен свои интерфейсы. Другая сущность может запросить у сервера имен зарегистрированные интерфейсы, после чего осуществить подключение к нужному интерфейсу.

При этом все взаимодействия по IPC (даже созданные динамически) контролируются с помощью модуля безопасности.

Файлы примера

Код примера и скрипты для сборки находятся по следующему пути:

/opt/KasperskyOS-Community-Edition-<version>/examples/defer_to_kernel

Сборка и запуск примера

См. "Сборка и запуск примеров".