Call- и attr-политики

В 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;

}

}

В начало