В KasperskyOS используются политики безопасности двух типов: call и attr.
Наиболее часто в конфигурации безопасности используются сall-политики: они возвращают решение "разрешено" или "запрещено". В отличие от них, attr-политики возвращают некоторое значение – например, текущее состояние экземпляра семейства, используемое для выбора тех политик, которые должны быть вызваны.
Call-политики
Call-политика возвращает решение "разрешено" или "запрещено". Событие разрешено, если все связанные с ним call-политики возвращают "разрешено". В противном случае событие запрещено.
Например:
/* Запуск сущности "server" разрешен только если экземпляры "flow_instance" и "era_instance" находятся в состоянии "ready_to_start". */
execute dst=server {
flow_instance.allow [ready_to_start];
era_instance.allow [ready_to_start];
}
Некоторые call-политики могут изменять состояние экземпляра семейства. Например, политика flow_instance.restart; переводит экземпляр flow_instance в начальное состояние.
Политика restart изменит состояние экземпляра семейства только если с событием не связаны другие политики или все связанные политики вернули решение "разрешено". Это правило действует для любых политик, меняющих состояние экземпляра.
Attr-политики
Attr-политика возвращает значение, которое используется в операторах множественного выбора choice (аналог оператора switch в языке C). Оператор choice позволяет связать событие с разными политиками политиками безопасности в зависимости от значения, которое вернула attr-политика.
Примером attr-политики является политика state, возвращающая текущее состояние экземпляра семейства:
/* При вызове сущностью "resource_driver" метода "is_working" интерфейса безопасности будет проверено состояние экземпляра "service".
Если "service" находится в состоянии "start" или "process", то метод "is_working" возвращает значение "разрешено", иначе – "запрещено". */
security src=resource_driver method=is_working {
choice (service.state) {
start : grant;
process : grant;
_ : deny;
}
}
В начало