Пример Device Access
Пример Device Access демонстрирует использование паттерна Privilege Separation.
Архитектура примера
Пример содержит три программы: Device, LoginManager и Storage.
В этом примере программа Device обращается к программе Storage для получения информации и к программе LoginManager для авторизации.
Программа Device получает доступ к программе Storage только после успешной авторизации.

Пример демонстрирует возможность разделения логики авторизации и логики доступа к данным на независимые компоненты. Такое разделение гарантирует, что доступ к данным может быть открыт только после успешной авторизации. При этом контроль за тем, что авторизация была проведена и закончилась успешно, осуществляется модулем безопасности. Кроме этого, такая архитектура позволяет производить независимую разработку и тестирование логики авторизации и логики предоставления доступа к данным.
Политика безопасности в примере Device Access имеет следующие особенности:
- Программа
Deviceимеет возможность обращаться к программеLoginManagerдля авторизации. - Вызовами метода
GetInfo()программыStorageуправляют методы модели безопасности Flow:- Конечный автомат, описанный в конфигурации объекта
session, имеет два состояния:unauthenticatedиauthenticated. - Исходное состояние –
unauthenticated. - Разрешены переходы из
unauthenticatedвauthenticatedи обратно. - Объект
sessionсоздается при запуске программыDevice. - При успешном вызове программой
DeviceметодаLogin()программыLoginManagerсостояние объектаsessionизменяется наauthenticated. - При успешном вызове программой
DeviceметодаLogout()программыLoginManagerсостояние объектаsessionизменяется наunauthenticated. - При вызове программой
DeviceметодаGetInfo()программыStorageпроверяется текущее состояние объектаsession. Вызов разрешается, только если текущее состояние объекта –authenticated.
- Конечный автомат, описанный в конфигурации объекта
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/device_access
Сборка и запуск примера
См. "Сборка и запуск примеров".