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"
}
}
}
В начало