В связи с изменениями в компонентах SDK в версии 1.2, вам необходимо внести изменения в прикладной код, разработанный с использованием версии KasperskyOS Community Edition 1.1.1, перед тем как использовать его с версией KasperskyOS Community Edition 1.2.
Список необходимых изменений:
kl.drivers.Bcm2711MboxArmToVc
, доступ к которому необходим драйверам kl.drivers.DNetSrv
и kl.drivers.USB
.init.yaml
) используется шаблон init.yaml.in
и для процессов kl.drivers.DNetSrv
и kl.drivers.USB
использованы макросы @INIT_ProgramName_ENTITY_CONNECTIONS+@
или @INIT_ProgramName_ENTITY_CONNECTIONS@
, то изменений в init-описании не требуется.Иначе, если IPC-каналы для процессов kl.drivers.DNetSrv
и kl.drivers.USB
указаны вручную, то необходимо добавить процесс kl.drivers.Bcm2711MboxArmToVc
в init-описание и определить IPC-каналы между ним и процессами kl.drivers.DNetSrv
и kl.drivers.USB
:
- name: kl.drivers.Bcm2711MboxArmToVc
path: bcm2711_mbox_arm2vc_h
- name: kl.drivers.USB
path: usb
connections:
...
- target: kl.drivers.Bcm2711MboxArmToVc
id: kl.drivers.Bcm2711MboxArmToVc
- name: kl.drivers.DNetSrv
path: dnet_entity
connections:
...
- target: kl.drivers.Bcm2711MboxArmToVc
id: kl.drivers.Bcm2711MboxArmToVc
kl.drivers.Bcm2711MboxArmToVc
в файл security.psl
и разрешить процессам kl.drivers.DNetSrv
и kl.drivers.USB
и ядру взаимодействовать с ним:...
use kl.drivers.Bcm2711MboxArmToVc._
...
execute src = Einit dst = kl.drivers.Bcm2711MboxArmToVc { grant () }
request src = kl.drivers.Bcm2711MboxArmToVc dst = kl.core.Core { grant () }
response src = kl.core.Core dst = kl.drivers.Bcm2711MboxArmToVc { grant () }
request src = kl.drivers.DNetSrv dst = kl.drivers.Bcm2711MboxArmToVc { grant () }
response src = kl.drivers.Bcm2711MboxArmToVc dst = kl.drivers.DNetSrv { grant () }
request src = kl.drivers.USB dst = kl.drivers.Bcm2711MboxArmToVc { grant () }
response src = kl.drivers.Bcm2711MboxArmToVc dst = kl.drivers.USB{ grant () }
kl.EntropyEntity
.init.yaml
) используется шаблон init.yaml.in
и для процессов, использующих компонент VFS (как поставляемых в составе SDK kl.VfsNet
, kl.VfsRamFs
, kl.VfsSdCardFs
, так и включающих в себя VFS статически), использованы макросы @INIT_ProgramName_ENTITY_CONNECTIONS+@
или @INIT_ProgramName_ENTITY_CONNECTIONS@
, то изменений в init-описании не требуется.Иначе, если IPC-каналы для процессов, использующих компонент VFS, указаны вручную, то необходимо добавить процесс kl.EntropyEntity
в init-описание и определить IPC-каналы между ним и процессами, использующими компонент VFS:
- name: kl.VfsSdCardFs
path: VfsSdCardFs
connections:
...
- target: kl.EntropyEntity
id: kl.EntropyEntity
- name: kl.VfsNet
path: VfsNet
connections:
...
- target: kl.EntropyEntity
id: kl.EntropyEntity
- name: kl.ProgramWithEmbeddedVfs
path: ProgramWithEmbedVfs
connections:
...
- target: kl.EntropyEntity
id: kl.EntropyEntity
- name: kl.EntropyEntity
path: Entropy
kl.EntropyEntity
в файл security.psl
и разрешить процессам, использующим компонент VFS, и ядру взаимодействовать с ним:...
use kl.EntropyEntity._
...
execute src = Einit dst = kl.drivers.EntropyEntity { grant () }
...
request src = kl.EntropyEntity dst = kl.core.Core { grant () }
response src = kl.core.Core dst = kl.EntropyEntity { grant () }
request src = kl.VfsNet dst = kl.EntropyEntity { grant () }
response src = kl.EntropyEntity dst = kl.VfsNet { grant () }
request src = kl.VfsSdCardFs dst = kl.EntropyEntity { grant () }
response src = kl.EntropyEntity dst = kl.VfsSdCardFs { grant () }
request src = kl.ProgramWithEmbeddedVfs dst = kl.EntropyEntity { grant () }
response src = kl.EntropyEntity dst = kl.ProgramWithEmbeddedVfs { grant () }
kl.drivers.USB
теперь необходим доступ к программе kl.core.NameServer
.init.yaml
) используется шаблон init.yaml.in
и для процесса kl.drivers.USB
использованы макросы @INIT_ProgramName_ENTITY_CONNECTIONS+@
или @INIT_ProgramName_ENTITY_CONNECTIONS@
, то изменений в init-описании не требуется.Иначе, если IPC-каналы для процесса kl.drivers.USB
указаны вручную, то необходимо добавить процесс kl.core.NameServer
в init-описание и определить IPC-каналы между ним и процессом kl.drivers.USB
:
- name: kl.core.NameServer
path: ns
- name: kl.drivers.USB
path: usb
connections:
...
- target: kl.core.NameServer
id: kl.core.NameServer
kl.core.NameServer
в файл security.psl
и разрешить процессу kl.drivers.USB
и ядру взаимодействовать с ним:...
use kl.core.NameServer
...
execute src = Einit dst = kl.core.NameServer { grant () }
...
request src = kl.core.NameServer dst = kl.core.Core { grant () }
response src = kl.core.Core dst = kl.core.NameServer { grant () }
request src = kl.drivers.USB dst = kl.core.NameServer { grant () }
response src = core.NameServer dst = kl.drivers.USB { grant () }
initialize_platform()
на initialize_platform (FORCE_STATIC)
.kl.bc.BlobContainer
в файл security.psl
и разрешить процессам, использующим динамические библиотеки, взаимодействовать с ним:...
use kl.bc.BlobContainer
...
execute src = Einit dst = kl.bc.BlobContainer { grant () }
request
{
/* Allows tasks with the kl.bc.BlobContainer class to send requests to specified tasks. */
match src = kl.bc.BlobContainer
{
match dst = kl.core.Core { grant () }
match dst = kl.VfsSdCardFs { grant () }
}
/* Allows task with the kl.bc.BlobContainer class to recive request from any task. */
match dst = kl.bc.BlobContainer { grant () }
}
response
{
/* Allows tasks with the kl.bc.BlobContainer class to get responses from specified tasks. */
match dst = kl.bc.BlobContainer
{
match src = kl.core.Core { grant () }
match src = kl.VfsSdCardFs { grant () }
}
/* Allows task with the kl.bc.BlobContainer class to send response to any task. */
match src = kl.bc.BlobContainer { grant () }
}
Можно вынести разрешения для работы kl.bc.BlobContainer
в отдельный .psl файл и подключать его. (см. пример secure_logger в составе SDK).
mount()
нужно передавать флаг MS_RDONLY
.Пример монтирования файловой системы romfs в файле init.yaml:
- name: kl.VfsSdCardFs
path: VfsSdCardFs
connections:
- target: kl.drivers.SDCard
id: kl.drivers.SDCard
- target: kl.EntropyEntity
id: kl.EntropyEntity
args:
- -l
- nodev /tmp ramfs 0
- -l
- romfs /etc romfs ro
env:
ROOTFS: mmc0,0 / fat32 0
VFS_FILESYSTEM_BACKEND: server:kl.VfsSdCardFs
Пример монтирования файловой системы romfs в файле CMakeLists.txt:
set (VFS_NET_ARGS "
- -l
- devfs /dev devfs 0
- -l
- romfs /etc romfs ro")
set_target_properties (${precompiled_vfsVfsNet} PROPERTIES
EXTRA_ARGS ${VFS_NET_ARGS})