create { source : <Sid>
, target : <Sid>
, container : <Sid | ()>
, driver : <Sid>
, level : <Level | ... | ()>
}
Назначает ресурсу target уровень целостности level в следующей ситуации:
source инициирует создание ресурса target.target управляет субъект driver, который является поставщиком ресурсов или ядром KasperskyOS.container является контейнером для ресурса target (например, директория является контейнером для файлов и/или других директорий).Если поле container имеет значение (), ресурс target рассматривается как корневой, то есть не имеющий контейнера.
Чтобы задать уровень целостности level, используются значения типа Level:
type Level = LevelFull | LevelNoCategory
type LevelFull =
{ degree : Text | ()
, categories : List<Text> | ()
}
type LevelNoCategory = Text
Правило возвращает результат "разрешено", если назначило ресурсу target уровень целостности level.
Правило возвращает результат "запрещено" в следующих случаях:
level превышает уровень целостности процесса source, субъекта driver или ресурса container.level несравнимо с уровнем целостности процесса source, субъекта driver или ресурса container.source, субъекту driver или ресурсу container не назначен уровень целостности.source, target, container или driver вне допустимого диапазона.Пример:
/* Серверу класса updater.Realmserv будет разрешено отвечать на
* обращения любого клиента в решении, вызывающего метод resolve
* службы realm.Reader, если ресурсу, создание которого запрашивает
* клиент, при инициации ответа будет назначен уровень целостности LOW.
* Иначе серверу класса updater.Realmserv будет запрещено отвечать на
* обращения любого клиента, вызывающего метод resolve службы realm.Reader. */
response src=updater.Realmserv,
endpoint=realm.Reader {
match method=resolve {
mic.create { source : dst_sid
, target : message.handle.handle
, container : ()
, driver : src_sid
, level : "LOW"
}
}
}
В начало