Примеры в составе SDK
В дополнение к руководству разработчика в составе KasperskyOS Community Edition SDK поставляются примеры решений на базе KasperskyOS. Примеры находятся в директории /opt/KasperskyOS-Community-Edition-<platform>-<version>/examples. Каждый пример помещен в отдельную директорию, в которой содержатся:
- Директории с исходным кодом программ.
- Директория
resources, которая содержит формальную спецификацию компонента решения. Опционально эта директория может содержать файлы, необходимые для работы примера. Например, файлы конфигурации сети:hosts,dhcpcd.confиntp.conf. - Сценарии сборки решения в виде файлов
CMakeLists.txt. - Файлы
README.md. Эти файлы имеют однотипное содержание и ссылаются на это руководство.
Примеры простейших решений
В таблице ниже приведено описание примеров по разработке простейших решений.
Простейшие решения
Директория примера в SDK | Краткое описание примера | Запуск на QEMU | Запуск на Raspberry Pi 4 B | Запуск на OrangePi RV2 |
|---|---|---|---|---|
hello | Демонстрирует самое простое решение. Программа | Да | Да | Да |
echo | Демонстрирует взаимодействие программ через IPC. Программа | Да | Да | Да |
ping | Демонстрирует использование политики безопасности решения для управления IPC-взаимодействием между программами. Программа | Да | Да | Да |
hello_from_rust | Демонстрирует, как включить в решение простую программу, разработанную на языке Rust и собранную с использованием системы сборки и менеджера пакетов Cargo. Программа | Да | Да | Да |
hello_corrosion | Демонстрирует, как включить в решение простую программу, разработанную на языке Rust, с использованием Corrosion – набора библиотек для интеграции Rust в CMake-проекты. Программа | Да | Да | Да |
Примеры использования файловых систем и сетевого стека
В таблице ниже приведено описание примеров, демонстрирующих использование файловых систем и сетевого стека.
Использование файловых систем и сетевого стека в решениях
Директория примера в SDK | Краткое описание примера | Запуск на QEMU | Запуск на Raspberry Pi 4 B | Запуск на OrangePi RV2 |
|---|---|---|---|---|
embedded_vfs | Демонстрирует, как включить в решение системную программу, реализующую поддержку файловых систем. Программа | Да | Да | Да |
net_with_separate_vfs | Демонстрирует установку соединения между запущенными в KasperskyOS программами через TCP-сокеты с использованием loopback-интерфейса. Программа | Да | Да | Да |
net2_with_separate_vfs | Демонстрирует установку соединения через TCP-сокеты между программой-клиентом, запущенной в KasperskyOS, и программой-сервером, запущенной в хостовой операционной системе. Программа | Да | Да | Да |
vfs_extfs | Демонстрирует, как монтировать файловые системы (ext2, ext3, ext4) блочного устройства. Программа | Да | Да | Да |
vfs_relay | Демонстрирует использование механизма VFS relay для разделения информационных потоков между несколькими системными программами VFS. Программа Client создает и использует файлы, расположенные в разных директориях. В зависимости от директории для работы с файлами выбирается соответствующая программа VFS. Подробнее см. "Пример vfs_relay". | Да | Да | Да |
multi_vfs_ntpd | Демонстрирует поддержку сетевого протокола NTP (Network Time Protocol). Программа | Да | Да | Да |
multi_vfs_dns_client | Демонстрирует использование системы разрешения доменных имен DNS (Domain Name System) в KasperskyOS. Программа | Да | Да | Да |
multi_vfs_dhcpcd | Демонстрирует поддержку сетевого протокола DHCP (Dynamic Host Configuration Protocol) в KasperskyOS. Программа | Да | Да | Да |
mqtt_publisher | Демонстрирует поддержку протокола обмена сообщениями MQTT (Message Queue Telemetry Transport) в KasperskyOS. Программа | Да | Да | Да |
mqtt_subscriber | Демонстрирует поддержку протокола обмена сообщениями MQTT (Message Queue Telemetry Transport) в KasperskyOS. Программа | Да | Да | Да |
virtiofs | Пример демонстрирует поддержку высокопроизводительной виртуальной файловой системы Virtiofs. Подробнее см. "Пример virtiofs". | Да | Нет | Нет |
Примеры использования драйверов
В таблице ниже приведено описание примеров использования драйверов, поставляемых в составе KasperskyOS Community Edition SDK, для работы с аппаратными интерфейсами GPIO, I2C, UART, SPI, USB и PWM.
Использование драйверов в решениях на базе KasperskyOS
Директория примера в SDK | Краткое описание примера | Запуск на QEMU | Запуск на Raspberry Pi 4 B | Запуск на OrangePi RV2 |
|---|---|---|---|---|
gpio_input | Демонстрирует использование драйвера GPIO (General-Purpose Input/Output) для ввода через GPIO-пины. Программа | Нет | Да | Да |
gpio_output | Демонстрирует использование драйвера GPIO для вывода через GPIO-пины. Программа | Нет | Да | Да |
gpio_interrupt | Демонстрирует использование драйвера GPIO для проверки работы прерываний для GPIO-пинов. Программа | Нет | Да | Да |
gpio_echo | Демонстрирует использование драйвера GPIO для проверки функциональности ввода/вывода GPIO-пинов, а также работу прерываний для GPIO пинов. Программа | Нет | Да | Да |
i2c_ds1307_rtc | Демонстрирует использование драйвера I2C (Inter-Integrated Circuit) на аппаратных платформах. Программа | Нет | Да | Да |
uart | Демонстрирует использование драйвера UART (Universal Asynchronous Receiver-Transmitter). Программа | Да | Да | Да |
spi_check_regs | Демонстрирует использование драйвера SPI (Serial Peripheral Interface). Программа | Нет | Да | Да |
barcode_scanner | Демонстрирует использование драйвера USB (Universal Serial Bus) с помощью библиотеки | Нет | Да | Да |
watchdog_system_reset | Демонстрирует использование драйвера Watchdog для мониторинга состояния KasperskyOS и автоматического перезапуска Raspberry Pi 4 B. Программа | Нет | Да | Нет |
mass_storage | Демонстрирует использование драйвера UsbMassStorage для работы с внешними USB-накопителем, подключенным к USB-порту аппаратной платформы. Программа | Нет | Да | Да |
Примеры использования библиотек
В таблице ниже представлены примеры использования поставляемых в составе KasperskyOS Community Edition SDK библиотек и компонентов для выполнения различных функций, таких как журналирование, применение регулярных выражений, обмен сообщениями через IPC, тестирование производительности.
Использование библиотек в решениях
Директория примера в SDK | Краткое описание примера | Запуск на QEMU | Запуск на Raspberry Pi 4 B | Запуск на OrangePi RV2 |
|---|---|---|---|---|
shared_libs | Демонстрирует использование динамических и статических библиотек в KasperskyOS. Программа | Да | Да | Да |
logrr | Демонстрирует использование компонента LogRR для журналирования работы программ в KasperskyOS. Программа | Да | Да | Да |
pcre | Демонстрирует использование библиотеки | Да | Да | Да |
iperf_separate_vfs | Демонстрирует использование библиотеки | Да | Да | Да |
pal_tests | Демонстрирует использование PAL (Policy Assertion Language) при написании тестов политики безопасности решения на базе KasperskyOS. Тесты проверяют политику безопасности решения до начала разработки программного кода, основываясь на формальных спецификациях компонентов решения. Подробнее см. "Пример pal_tests". | Да | Нет | Нет |
framebuffer_qr_writer | Демонстрирует организацию графического интерфейса пользователя в решении на базе KasperskyOS с использованием набора кроссплатформенных библиотек: SDL2 для управления окном программы и обработки ввода данных от пользователя, Nuklear для построения графического интерфейса, Skia в качестве механизма отрисовки графики, а также ZXing для генерации QR-кодов. Подробнее см. "Пример framebuffer_qr_writer". | Нет | Да | Нет |
dump_collector | Демонстрирует механизм создания аварийного дампа в решении на базе KasperskyOS. Подробнее см. "Пример dump_collector". | Да | Да | Да |
kpa_example | Демонстрирует работу с KPA-пакетами и процессами с использованием компонентов PackageManager и ExecutionManager. Подробнее см. "Пример kpa_example". | Да | Да | Да |
uart_toybox | Демонстрирует работу с компонентом Terminal в решении на базе KasperskyOS. Подробнее см. "Пример uart_toybox". | Да | Да | Да |
perfcnt | Демонстрирует использование счетчиков производительности в решении на базе KasperskyOS. Программа | Да | Да | Да |
kcfm_echo_server | Демонстрирует интеграцию компонента KCFM в веб-сервер на базе KasperskyOS, где сигнатура поведения приложения формируется, упаковывается в KPA-пакет вместе с ELF-файлом и при запуске сравнивается с реальным поведением для обнаружения аномалий. Процесс включает разворачивание пакета, запуск приложения через KCFM и мониторинг его работы для выявления отклонений от заданной сигнатуры. Подробнее см. "Пример kcfm_echo_server". | Да | Да | Нет |
Примеры использования паттернов безопасности
В таблице ниже представлены примеры использования паттернов безопасности в KasperskyOS.
Использование паттернов безопасности в решениях
Директория примера в SDK | Краткое описание примера | Запуск на QEMU | Запуск на Raspberry Pi 4 B | Запуск на OrangePi RV2 |
|---|---|---|---|---|
secure_logger | Демонстрирует использование паттерна Distrustful Decomposition для решения задачи разделения чтения и записи в журнал событий. Программа | Да | Да | Да |
separate_storage | Демонстрирует использование паттерна Distrustful Decomposition для решения задачи раздельного хранения данных для доверенных и недоверенных программ. Пример содержит две программы: | Да | Да | Да |
defer_to_kernel | Демонстрирует использование паттернов Defer to Kernel и Policy Decision Point: гарантия изоляции запущенных программ (процессов) ядром KasperskyOS. В этом примере программы | Да | Да | Да |
device_access | Демонстрирует использование паттерна Privilege Separation, при котором авторизация и доступ к данным обеспечиваются разными программами. Программа | Да | Да | Да |
secure_login | Демонстрирует использование паттерна Information Obscurity: возможность передачи критической для системы информации через недоверенную среду. Веб-сервер | Да | Да | Да |