Операции с мандатными ссылками

Держателям мандатной ссылки доступны следующие операции:

При передаче мандатной ссылки могут быть переданы не все права доступа к ресурсу. Например, если сущность 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.

Драйвер ресурса не может отречься от прав. Драйвер может потерять права только при финализации мандатной ссылки.

В начало