Держателям мандатной ссылки доступны следующие операции:
При передаче мандатной ссылки могут быть переданы не все права доступа к ресурсу. Например, если сущность Bob имеет права на чтение и запись, то она может передать сущности Carol только права на чтение.
Также вы можете использовать операции transfer capability и derive capability, указав в качестве мандатной ссылки значение INVALID_HANDLE. Тогда мандатная ссылка не будет передана, но вызванная политика безопасности вернет решение "разрешено" (KSS_GRANT).
Драйвер ресурса может инициализировать новую мандатную ссылку (initialize capability) с указанным SID ресурса. Для того чтобы финализировать мандатную ссылку и лишить всех держателей прав доступа, достаточно финализировать саму ссылку на ресурс.
Initialize capability
Инициализация мандатной ссылки позволяет ассоциировать SID ресурса с объектом мандатной ссылки. Инициализированная мандатная ссылка может передаваться другим сущностям с помощью операций transfer capability и derive capability.
В семействе ocap инициализация мандатной ссылки производится с помощью политик init и initR.
Transfer capability
Это способ передачи мандатной ссылки, при котором исходная сущность не получает права отозвать ее у получателя. Отозвать переданную мандатную ссылку сможет только сущность, которая в дереве отзыва CDT является родителем исходной сущности.
Например, если доступ на чтение и запись к файлу foo.txt от Dave получит только Bob, то Bob сможет передать Carol эти права, но отозвать эти права Bob уже не сможет. Отозвать эти права у Carol сможет только Dave.
В этом примере CDT будет выглядеть так:
Dave // driver
|
+--+--+
| |
Bob Carol
В семействе ocap передача без возможности отзыва производится с помощью политик transfer и transferR. Эта операция требует наличия встроенного права Transfer.
Драйвер ресурса не может передать мандатную ссылку таким образом, поскольку тогда их будет некому отозвать у получателя.
Derive capability
Это способ передачи мандатной ссылки, при котором исходная сущность оставляет за собой возможность отозвать ее.
В семействе ocap передача с возможностью отзыва производится с помощью политик derive и deriveR. Эта операция требует наличия встроенного права Derive.
В реализации семейства ocap передачу с возможностью отзыва может выполнить только драйвер ресурса.
Revoke capability
Отзыв мандатной ссылки – удаление сущности из списка держателей, а также всего поддерева производных от этой сущности. При отзыве мандатной ссылки будут отозваны все права.
В семействе ocap операция отзыва производится с помощью политики revoke. Эта операция требует наличия встроенного права Revoke.
Сущность может отозвать мандатную ссылку у самой себя (отречься от прав) или у непосредственного потомка в CDT.
Драйвер ресурса не может отречься от прав. Драйвер может потерять права только при финализации мандатной ссылки.