Пример ping
Пример ping демонстрирует использование политики безопасности решения для управления взаимодействиями между программами.
Пример ping включает в себя четыре программы: Client
, Server
, KlogEntity
и KlogStorageEntity
.
Программа Server
предоставляет два идентичных метода Ping
и Pong
, которые получают число и возвращают измененное число:
Программа Client
вызывает оба этих метода в различной последовательности. Если вызов метода запрещен политикой безопасности решения, выводится сообщение о неудачной попытке вызова.
Системные программы KlogEntity
, KlogStorageEntity
выполняют аудит безопасности.
Транспортная часть примера ping практически аналогична таковой для примера echo. Единственное отличие состоит в том, что в примере ping используется два метода (Ping
и Pong
), а не один.
Политика безопасности решения в примере ping
Политика безопасности решения в этом примере разрешает запуск ядра KasperskyOS и программы Einit, которой разрешено запускать все программы в решении. Обращениями к программе Server
управляют методы модели безопасности Flow.
Конечный автомат, описанный в конфигурации объекта request_state
модели безопасности Flow, имеет два состояния: not_sent
и sent
. Исходное состояние – not_sent
. Разрешены только переходы из not_sent
в sent
и обратно.
При вызове методов Ping
и Pong
проверяется текущее состояние объекта request_state
. В состоянии not_sent
разрешен только вызов Ping
, при этом состояние изменится на sent
. Аналогично, в состоянии sent
разрешен только вызов Pong
, при этом состояние изменится на not_sent
.
Таким образом, методы Ping
и Pong
разрешено вызывать только по очереди.
Фрагмент файла security.psl
Описание политики безопасности в примере ping также содержит секцию тестов политики безопасности решения.
Пример такой политики см. в секции "Пример 2" раздела "Примеры тестов политик безопасности решений на базе KasperskyOS".
Полное описание политики безопасности примера ping находится в файлах security.psl.in
и core.psl
по следующему пути: /opt/KasperskyOS-Community-Edition-<version>/examples/ping/einit/src
.
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
Сборка и запуск примера
См. "Сборка и запуск примеров".