Примеры привязок методов моделей безопасности к событиям безопасности

Перед тем как рассматривать примеры, нужно ознакомиться со сведениями о модели безопасности Base.

Обработка инициации запусков процессов

/* Ядру KasperskyOS и любому процессу

* в решении разрешено запускать любой

* процесс. */

execute { grant () }

/* Ядру разрешено запускать процесс

* класса Einit. */

execute src=kl.core.Core, dst=Einit { grant () }

/* Процессу класса Einit разрешено

* запускать любой процесс в решении. */

execute src=Einit { grant () }

Обработка запуска ядра KasperskyOS

/* Ядру KasperskyOS разрешено запускаться.

* (Эта привязка нужна, чтобы сообщить модулю

* безопасности SID ядра. Ядро запускается независимо

* от того, разрешено ли это политикой безопасности решения

* или нет. Если политика безопасности решения запрещает

* запуск ядра, после запуска ядро прекратит свое

* исполнение.) */

execute src=kl.core.Core, dst=kl.core.Core { grant () }

Обработка отправки IPC-запросов

/* Любому клиенту в решении разрешено обращаться к

* любому серверу и ядру KasperskyOS. */

request { grant () }

/* Клиенту класса Client разрешено обращаться

* к любому серверу в решении и ядру. */

request src=Client { grant () }

/* Любому клиенту в решении разрешено обращаться

* к серверу класса Server. */

request dst=Server { grant () }

/* Клиенту класса Client запрещено

* обращаться к серверу класса Server. */

request src=Client dst=Server { deny () }

/* Клиенту класса Client разрешено

* обращаться к серверу класса Server,

* вызывая метод Ping службы net.Net. */

request src=Client dst=Server endpoint=net.Net method=Ping {

grant ()

}

/* Любому клиенту в решении разрешено обращаться

* к серверу класса Server, вызывая метод Send

* службы с интерфейсом MessExch. */

request dst=Server interface=MessExch method=Send {

grant ()

}

Обработка отправки IPC-ответов

/* Серверу класса Server разрешено отвечать на

* обращения клиента класса Client, который

* вызывает метод Ping службы net.Net. */

response src=Server, dst=Client, endpoint=net.Net, method=Ping {

grant ()

}

/* Серверу, который содержит компонент kl.drivers.KIDF,

* предоставляющий службы с интерфейсом monitor, разрешено

* отвечать на обращения клиента класса DriverManager,

* который использует эти службы. */

response dst=DriverManager component=kl.drivers.KIDF interface=monitor {

grant ()

}

Обработка отправки IPC-ответов, содержащих сведения об ошибках

/* Серверу класса Server запрещено сообщать клиенту

* класса Client об ошибках, которые возникают,

* когда клиент обращается к серверу, вызывая метод

* Ping службы net.Net. */

error src=Server, dst=Client, endpoint=net.Net, method=Ping {

deny ()

}

Обработка обращений процессов к модулю безопасности Kaspersky Security Module

/* Процесс класса Sdcard получит решение

* "разрешено" от модуля безопасности Kaspersky Security Module,

* вызывая метод Register интерфейса безопасности.

* (Используется интерфейс безопасности, заданный

* в EDL-описании.) */

security src=Sdcard, method=Register {

grant ()

}

/* Процесс класса Sdcard получит решение "запрещено"

* от модуля безопасности, вызывая метод Comp.Register

* интерфейса безопасности. (Используется интерфейс

* безопасности, заданный в CDL-описании.) */

security src=Sdcard, method=Comp.Register {

deny ()

}

Использование match-секций

/* Клиенту класса Client разрешено обращаться к

* серверу класса Server, вызывая методы Send

* и Receive службы net. */

request src=Client, dst=Server, endpoint=net {

match method=Send { grant () }

match method=Receive { grant () }

}

/* Клиенту класса Client разрешено обращаться к

* серверу класса Server, вызывая методы Send

* и Receive службы sn.Net и методы Write и

* Read службы sn.Storage. */

request src=Client, dst=Server {

match endpoint=sn.Net {

match method=Send { grant () }

match method=Receive { grant () }

}

match endpoint=sn.Storage {

match method=Write { grant () }

match method=Read { grant () }

}

}

Задание профилей аудита

/* Задание глобального профиля аудита default

* и начального уровня аудита 0 */

audit default = global 0

request src=Client, dst=Server {

/* Задание профиля аудита parent на уровне

* привязки методов моделей безопасности к

* событиям безопасности */

audit parent

match endpoint=net.Net, method=Send {

/* Задание профиля аудита child на

* на уровне match-секции */

audit child

grant ()

}

/* В этой match-секции применяется профиль

* аудита parent. */

match endpoint=net.Net, method=Receive {

grant ()

}

}

/* В этой привязке метода модели безопасности

* к событию безопасности применяется профиль

* аудита global. */

response src=Client, dst=Server {

grant ()

}

В начало