Поделиться через


Ограниченные маркеры

Ограниченный маркер — это основноймаркер доступа или маркер доступа для олицетворения, который был изменен функцией CreateRestrictedToken . Процесс или олицетворение потока, выполняющегося в контексте безопасности ограниченного маркера, ограничена возможностью доступа к защищаемым объектам или выполнения привилегированных операций. Функция CreateRestrictedToken может ограничить маркер следующими способами:

  • Удалите привилегии из маркера.
  • Примените атрибут deny-only к идентификаторам БЕЗОПАСНОСТИ в маркере, чтобы их нельзя было использовать для доступа к защищенным объектам. Дополнительные сведения об атрибуте "только запрет" см. в разделе Атрибуты SID в маркере доступа.
  • Укажите список ограничивающих идентификаторов безопасности, которые могут ограничить доступ к защищаемым объектам.

Система использует список ограничивающих идентификаторов безопасности при проверке доступа маркера к защищаемому объекту. Когда ограниченный процесс или поток пытается получить доступ к защищаемому объекту, система выполняет две проверки доступа: одну с помощью включенных идентификаторов безопасности маркера, а другую — с помощью списка ограничивающих идентификаторов безопасности. Доступ предоставляется только в том случае, если обе проверки доступа разрешают запрошенные права доступа. Дополнительные сведения о проверках доступа см. в разделе Управление доступом к объекту DACLs.

Ограниченный первичный маркер можно использовать в вызове функции CreateProcessAsUser . Как правило, процесс, вызывающий CreateProcessAsUser , должен иметь SE_ASSIGNPRIMARYTOKEN_NAME привилегию, которая обычно удерживается только системным кодом или службами, работающими в учетной записи LocalSystem. Однако если вызов CreateProcessAsUser указывает ограниченную версию основного маркера вызывающего объекта, эта привилегия не требуется. Это позволяет обычным приложениям создавать ограниченные процессы.

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

Чтобы определить, содержит ли маркер список ограничивающих идентификаторов безопасности, вызовите функцию IsTokenRestricted .

Примечание

Приложения, использующие ограниченные маркеры, должны запускать ограниченное приложение на рабочих столах, отличных от рабочего стола по умолчанию. Это необходимо для предотвращения атаки ограниченного приложения, использующее SendMessage или PostMessage, к неограниченным приложениям на рабочем столе по умолчанию. При необходимости переключайтесь между рабочими столами для целей приложения.