KasperskyOS Community Edition 1.0

Пример Secure Logger

Пример Secure Logger демонстрирует использование паттерна Distrustful Decomposition для решения задачи разделения функциональности чтения и записи в журнал событий.

Архитектура примера

Цель безопасности в примере Secure Logger заключается в том, чтобы предотвратить возможность искажения или удаления информации в журнале событий. В примере для достижения этой цели безопасности используются возможности, предоставляемые KasperskyOS.

При рассмотрении системы журналирования можно выделить следующие функциональные шаги:

  • генерация информации для записи в журнал;
  • сохранение информации в журнал;
  • чтение записей из журнала;
  • предоставление записей в удобном для потребителя виде.

Таким образом, подсистему журналирования можно разделить на четыре процесса в зависимости от необходимых функциональных возможностей каждого процесса.

Для этого пример Secure Logger содержит четыре сущности: Application, Logger, Reader и LogViewer.

  • Сущность Application инициирует создание записей в журнале событий, поддерживаемом сущностью Logger.
  • Сущность Logger создает записи в журнале и записывает их на диск.
  • Сущность Reader читает записи с диска для передачи сущности LogViewer.
  • Сущность LogViewer передает записи пользователю.

IPC-интерфейс, который предоставляет сущность Logger, предназначен только для записи в хранилище. IPC-интерфейс сущности Reader предназначен только для чтения из хранилища. Архитектура примера выглядит следующим образом:

secure_logger_uml

  • Сущность Application использует интерфейс сущности Logger для сохранения записей.
  • Сущность LogViewer использует интерфейс сущности Reader для чтения записей и предоставления их пользователю.

В общем случае сущность LogViewer имеет внешние каналы взаимодействия с пользователем (прием команд на чтение данных, предоставление данных пользователю). Очевидно, что эта сущность является недоверенным компонентом системы, через которую может проводиться атака. Однако даже в случае успешной атаки, вплоть до внедрения произвольно исполняемого кода в сущность LogViewer, информация в журнале не будет искажена, так как эта сущность может пользоваться только интерфейсом чтения данных, через который искажение или удаление невозможно. При этом LogViewer не имеет возможности получить доступ к другим IPC-интерфейсам, так как доступ контролируется модулем безопасности.

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

  • Сущность Application имеет возможность обращаться к сущности Logger для создания новой записи в журнале событий.
  • Сущность LogViewer имеет возможность обращаться к сущности Reader для чтения записей из журнала событий.
  • Сущность Application не имеет возможности обращаться к сущности Reader для чтения записей из журнала событий.
  • Сущность LogViewer не имеет возможности обращаться к сущности Logger для создания новой записи в журнале событий.

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

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

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

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

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