Пример включения в решение системной программы KlogStorage, выполняющей запись данных аудита в файл
Исходный код программы
klog_storage/src/klog_storage_entity.c
#include <klog_storage/server.h>
#include <klog_storage/file_storage.h>
#include <ping/KlogStorageEntity.edl.h>
int main(int argc, char *argv[])
{
return klog_storage_file_storage_run(KLOG_STORAGE_SERVER_CONNECTION_ID,
"/etc/klog_storage.log",
ping_KlogStorageEntity_klogStorage_iidOffset,
ping_KlogStorageEntity_klogStorage_storage_iid,
100,
0);
}
Сборка программы
CMake
-команды для сборки программы KlogStorage
, выполняющей запись данных аудита в файл, отличаются от CMake
-команд для сборки версии этой программы, направляющей данные аудита в стандартный вывод ошибок, следующим изменением:
klog_storage/CMakeLists.txt
...
target_link_libraries (KlogStorageEntity ${klog_storage_FILE_STORAGE_LIB})
...
Словарь процесса программы в шаблоне init-описания
einit/src/init.yaml.in
...
- name: ping.KlogStorageEntity
connections:
- target: file_vfs.FileVfs
id: {var: _VFS_CONNECTION_ID, include: vfs/defs.h}
...
Описание политики безопасности для программы
Описание политики для программы KlogStorage
, выполняющей запись данных аудита в файл, отличается от описания политики для версии этой программы, направляющей данные аудита в стандартный вывод ошибок, следующим дополнением:
einit/src/security.psl.in
...
use EDL file_vfs.FileVfs
...
use vfs._
...
einit/src/vfs.psl
...
request dst=file_vfs.FileVfs {
match src=ping.KlogStorageEntity { grant () }
}
response src=file_vfs.FileVfs {
match dst=ping.KlogStorageEntity { grant () }
}
error src=file_vfs.FileVfs {
match dst=ping.KlogStorageEntity { grant () }
}
...
Передача данных аудита другим программам
Чтобы передавать через IPC данные аудита, записанные в файл, программа KlogStorage
предоставляет интерфейсные методы read
и readRange
, определенные в файле sysroot-*-kos/include/kl/KlogStorage.idl
из состава KasperskyOS SDK.
Исполняемый файл программы, которой требуется получать данные аудита, должен быть скомпонован с клиентской библиотекой программы KlogStorage
:
klog_reader/CMakeLists.txt
find_package (klog_storage REQUIRED)
include_directories (${klog_storage_INCLUDE})
...
add_executable (KlogReader "src/klog_reader.c")
target_link_libraries (KlogReader ${klog_storage_CLIENT_LIB})
...
Исходный код для получения данных аудита от программы KlogStorage
:
klog_reader/src/klog_reader.c
#include <klog_storage/client.h>
...
int main(int argc, char *argv[])
{
...
struct Klog_storage_ctx *storage =
klog_storage_init(KLOG_STORAGE_SERVER_CONNECTION_ID);
struct kl_KlogStorage_Entry first_entries[10], latest_entries [10];
int f_count = klog_storage_read_range(klog_storage_IKlog_storage(storage),
1,
10,
first_entries);
int l_count = klog_storage_read(klog_storage_IKlog_storage(storage),
10,
latest_entries);
...
}
Идентификатор статьи: klogstorage_usage_example_file, Последнее изменение: 21 мая 2024 г.