Привязка методов моделей безопасности к событиям безопасности
Чтобы выполнить привязку методов моделей безопасности к событию безопасности, нужно использовать декларацию:
<вид события безопасности> [селекторы события безопасности] {
[профиль аудита безопасности]
<вызываемые правила моделей безопасности>
}
Вид события безопасности
Чтобы задать вид события безопасности, используются следующие спецификаторы:
request
– отправка IPC-запросов;response
– отправка IPC-ответов;error
– отправка IPC-ответов, содержащих сведения об ошибках;security
– попытки обращений сущностей к модулю безопасности Kaspersky Security Module через интерфейс безопасности;execute
– инициация запусков сущностей или запуск ядра KasperskyOS.
При взаимодействии сущностей с модулем безопасности применяется механизм, отличный от IPC. Но при разработке политики безопасности решения на обращения сущностей к модулю безопасности можно смотреть как на передачу IPC-сообщений, так как сущности действительно передают модулю безопасности сообщения (в этих сообщениях не указывается приемник).
Для запуска сущностей не используется механизм IPC. Но когда инициируется запуск сущности, ядро обращается к модулю безопасности, сообщая сведения об инициаторе запуска и запускаемой сущности. Поэтому с точки зрения автора политики безопасности решения можно считать, что запуск сущности – это передача IPC-сообщения от инициатора запуска к запускаемой сущности. Также при запуске ядра можно считать, что ядро отправляет IPC-сообщение самому себе.
Селекторы события безопасности
Селекторы события безопасности позволяют уточнить описание события безопасности заданного вида. Используются следующие селекторы:
src=
<имя класса сущностей/ядро
> – сущности заданного класса или ядро KasperskyOS являются источниками IPC-сообщений;dst=
<имя класса сущностей/ядро
> – сущности заданного класса или ядро являются приемниками IPC-сообщений;interface=
<имя интерфейса
>- клиенты пытаются обратиться к серверам или ядру через интерфейс с заданным именем;
- сущности обращаются к модулю безопасности Kaspersky Security Module через интерфейс безопасности с заданным именем;
- серверы или ядро отправляют клиентам результаты обработки обращений через интерфейс с заданным именем;
endpoint=
<квалифицированное имя службы
> – описывает следующие события безопасности:- клиенты пытаются использовать службу серверов или ядра с заданным именем;
- серверы или ядро отправляют клиентам результаты использования службы с заданным именем;
method=
<имя метода
> – описывает следующие события безопасности:- клиенты пытаются обратиться к серверам или ядру, вызывая метод службы с заданным именем;
- сущности обращаются к модулю безопасности, вызывая метод интерфейса безопасности с заданным именем;
- серверы или ядро отправляют клиентам результаты вызова метода службы с заданным именем;
- ядро сообщает о своем запуске модулю безопасности, вызывая метод execute-интерфейса с заданным именем;
- ядро инициирует запуски сущностей, вызывая метод execute-интерфейса с заданным именем;
- сущности инициируют запуски других сущностей, в результате чего ядро вызывает метод execute-интерфейса с заданным именем.
Квалифицированное имя службы является конструкцией вида <путь к службе.имя службы
>. Путь к службе представляет собой последовательность разделенных точкой имен экземпляров компонентов (из формальной спецификации компонента решения), среди которых каждый последующий экземпляр компонента вложен в предыдущий, а последний предоставляет службу с заданным именем.
Классы сущностей, интерфейсы, службы, методы должны называться так, как они называются в IDL-, CDL-, EDL-описаниях. Ядро должно называться kl.core.Core
.
Если селекторы не указаны, участниками события безопасности считаются все сущности и ядро (кроме событий вида security
, где ядро не участвует).
Можно использовать комбинации селекторов. При этом селекторы можно разделять запятыми.
На использование селекторов есть ограничения. Для событий безопасности вида execute
нельзя использовать селекторы interface
и endpoint
. Для событий безопасности вида security
нельзя использовать селекторы dst
и endpoint
.
Также есть ограничения на комбинации селекторов. Для событий безопасности видов request
, response
и error
селектор method
можно использовать только совместно с одним или обоими селекторами endpoint
и interface
. (Селекторы method
, endpoint
и interface
должны быть согласованы, то есть метод должен соответствовать службе или интерфейсу, служба должна соответствовать интерфейсу.) Для событий безопасности вида request
селектор endpoint
можно использовать только совместно с селектором dst
. Для событий безопасности видов response
и error
селектор endpoint
можно использовать только совместно с селектором src
.
Профиль аудита безопасности
Профиль аудита безопасности задается конструкцией audit
<имя профиля аудита безопасности
>. Если профиль аудита безопасности не задан, используется глобальный профиль аудита безопасности.
Вызываемые правила моделей безопасности
Вызываемые правила моделей безопасности задаются списком из конструкций следующего вида:
[имя объекта модели безопасности.]<имя правила модели безопасности> <параметр>
Входными данными для правил моделей безопасности могут быть значения, возвращаемые выражениями моделей безопасности. Для вызова выражения модели безопасности используется конструкция:
[имя объекта модели безопасности.]<имя выражения модели безопасности> <параметр>
Также в качестве входных данных для методов моделей безопасности (правил и выражений) могут использоваться параметры интерфейсных методов. (О получении доступа к параметрам интерфейсных методов см. "Модель безопасности Struct"). Кроме этого, входными данными для методов моделей безопасности могут быть значения SID сущностей и ядра KasperskyOS, которые задаются ключевыми словами src_sid
и dst_sid
. Первое означает SID сущности (или ядра), которая является источником IPC-сообщения. Второе означает SID сущности (или ядра), которая является приемником IPC-сообщения (при обращениях к модулю безопасности Kaspersky Security Module dst_sid
использовать нельзя).
Для вызовов некоторых правил и выражений моделей безопасности можно не указывать имя объекта модели безопасности или использовать операторы. Подробнее о методах моделей безопасности см. "Модели безопасности".
Вложенные конструкции для привязки методов моделей безопасности к событиям безопасности
В одной декларации можно выполнить привязку методов моделей безопасности к разным события безопасности одного вида. Для этого нужно использовать match-секции, которые представляют собой конструкции вида:
match <селекторы события безопасности> {
[профиль аудита безопасности]
<вызываемые правила моделей безопасности>
}
Match-секции могут быть вложены в другую match-секцию. Match-секция использует одновременно свои селекторы события безопасности и селекторы события безопасности уровня декларации и всех match-секций, которые "оборачивают" эту match-секцию. Также match-секция применяет по умолчанию профиль аудита безопасности своего контейнера (match-секции предыдущего уровня или уровня декларации), но можно задать отдельный профиль аудита безопасности для match-секции.
Также в одной декларации можно задать различные варианты обработки события безопасности в зависимости от условий, при которых это событие наступило (например, от состояния конечно автомата, ассоциированного с ресурсом). Для этого нужно использовать условные секции, которые являются элементами конструкции:
choice <вызов выражения модели безопасности, проверяющего выполнение условий> {
"<условие 1>" : [{] // Условная секция 1
[профиль аудита безопасности]
<вызываемые правила моделей безопасности>
[}]
"<условие 2>" : ... // Условная секция 2
...
_ : ... // Условная секция, если ни одно условие не выполняется.
}
Конструкцию choice
можно использовать внутри match-секции. Условная секция использует селекторы события безопасности и профиль аудита безопасности своего контейнера, но можно задать отдельный профиль аудита безопасности для условной секции.
Если при обработке события безопасности выполняется сразу несколько условий, описанных в конструкции choice
, то срабатывает только одна условная секция, соответствующая первому в списке подходящему условию.
В качестве выражения, проверяющего выполнение условий в конструкции choice
, можно использовать только те выражения, которые предназначены специально для этого. Некоторые модели безопасности содержат такие выражения (подробнее см. "Модели безопасности").