Пример Secure Logger демонстрирует использование паттерна Distrustful Decomposition для решения задачи разделения функциональности чтения и записи в журнал событий.
Архитектура примера
Цель безопасности в примере Secure Logger заключается в том, чтобы предотвратить возможность искажения или удаления информации в журнале событий. В примере для достижения этой цели безопасности используются возможности, предоставляемые KasperskyOS.
При рассмотрении системы журналирования можно выделить следующие функциональные шаги:
Таким образом, подсистему журналирования можно разделить на четыре процесса в зависимости от необходимых функциональных возможностей каждого процесса.
Для этого пример Secure Logger содержит четыре сущности: Application, Logger, Reader и LogViewer.
IPC-интерфейс, который предоставляет сущность Logger, предназначен только для записи в хранилище. IPC-интерфейс сущности Reader предназначен только для чтения из хранилища. Архитектура примера выглядит следующим образом:
В общем случае сущность LogViewer имеет внешние каналы взаимодействия с пользователем (прием команд на чтение данных, предоставление данных пользователю). Очевидно, что эта сущность является недоверенным компонентом системы, через которую может проводиться атака. Однако даже в случае успешной атаки, вплоть до внедрения произвольно исполняемого кода в сущность LogViewer, информация в журнале не будет искажена, так как эта сущность может пользоваться только интерфейсом чтения данных, через который искажение или удаление невозможно. При этом LogViewer не имеет возможности получить доступ к другим IPC-интерфейсам, так как доступ контролируется модулем безопасности.
Политика безопасности в примере Secure Logger имеет следующие особенности:
Сборка примера
Сборка примера осуществляется с помощью системы сборки CMake
, входящей в состав KasperskyOS Community Edition.
Файлы, содержащие код примера и скрипты для сборки, находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<version>/examples/secure_logger
Для сборки и запуска примера необходимо выполнить следующий скрипт:
/opt/KasperskyOS-Community-Edition-<version>/examples/secure_logger/cross-build.sh