Разделение информационных потоков с помощью VFS-бэкендов

В этом примере применяется паттерн безопасной разработки, предусматривающий отделение информационных потоков, связанных с использованием файловых систем, от информационных потоков, связанных с использованием сетевого стека.

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

Схема взаимодействия процессов

Init-описание примера:

init.yaml

entities:

- name: Client

connections:

- target: VfsFirst

id: VFS1

- target: VfsSecond

id: VFS2

env:

_VFS_FILESYSTEM_BACKEND: client:VFS1

_VFS_NETWORK_BACKEND: client:VFS2

- name: VfsFirst

env:

_VFS_FILESYSTEM_BACKEND: server:VFS1

- name: VfsSecond

env:

_VFS_NETWORK_BACKEND: server:VFS2

В начало