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