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


SDDL для объектов устройств

Язык определения дескриптора безопасности (SDDL) используется для представления дескрипторов безопасности. Безопасность для объектов устройств может быть указана строкой SDDL, которая помещается в INF-файл или передается в IoCreateDeviceSecure. Язык определения дескриптора безопасности полностью документирован в документации по пакету SDK для Microsoft Windows.

Хотя INF-файлы поддерживают полный диапазон SDDL, в подпрограмме IoCreateDeviceSecure поддерживается только подмножество языка. Это подмножество определено здесь.

Строки SDDL для объектов устройства имеют форму "D:P", за которой следует одно или несколько выражений формы "(A;; Access;; SID)". Значение SID указывает идентификатор безопасности, определяющий, к кому применяется значение Access (например, пользователь или группа). Значение Access указывает права доступа, разрешенные для идентификатора безопасности. Значения Access и SID приведены следующим образом.

При использовании SDDL для объектов устройств драйвер должен связаться с Wdmsec.lib.

Доступ
Указывает значение ACCESS_MASK , определяющее разрешенный доступ. Это значение может быть записано либо в форме "0xhex", либо в виде последовательности двухбуквенных символических кодов, представляющих права доступа.

Следующие коды можно использовать для указания универсальных прав доступа.

Код Универсальное право доступа

Генеральная Ассамблея

ОБЩИЙ_ВСЕ

ГР

ОБЩЕЕ_ЧТЕНИЕ

ГВт

GENERIC_WRITE (общая запись)

GX

ОБЩЕЕ_ВЫПОЛНЕНИЕ

Следующие коды можно использовать для указания определенных прав доступа.

Код Право конкретного доступа

Ролевой центр

READ_CONTROL

стандартное разрешение (SD)

Удалить

WD

WRITE_DAC

WO

WRITE_OWNER

GENERIC_ALL предоставляет все права, перечисленные в приведенных выше двух таблицах, включая возможность изменения ACL.

идентификатор безопасности
Определяет SID, которому предоставлен указанный доступ. Идентификаторы SID представляют учетные записи, псевдонимы, группы, пользователи или компьютеры.

Следующие идентификаторы SID представляют учетные записи на компьютере.

идентификатор безопасности (SID) Описание

SY

Система

Представляет саму операционную систему, включая компоненты пользовательского режима.

LS

Локальная служба

Предопределенная учетная запись для локальных служб (которая также входит в группы Authenticated и World). Этот идентификатор безопасности доступен начиная с Windows XP.

НС

Сетевая служба

Предопределенная учетная запись для сетевых служб (которая также принадлежит проверке подлинности и миру). Этот идентификатор безопасности доступен начиная с Windows XP.

Следующие идентификаторы SID представляют группы на компьютере.

идентификатор безопасности (SID) Описание

БА

Администраторы

Встроенная группа администраторов на компьютере.

BU

Встроенная группа пользователей

Группа, охватывающая все локальные учетные записи пользователей и пользователей в домене.

BG

Встроенная гостевая группа

Группа, охватывающая пользователей, входящих в систему с использованием локальной учетной записи гостя или учетной записи гостя домена.

В следующих идентификаторах SID описывается степень аутентификации пользователя.

идентификатор безопасности (SID) Описание

АУ

Пользователи, прошедшие проверку подлинности

Любой пользователь, распознанный локальным компьютером или доменом. Пользователи, вошедшие в систему с помощью встроенной гостевой учетной записи, не идентифицируются. Однако участники группы гостей с отдельными учетными записями на компьютере или домене проходят проверку подлинности.

4 млн

Анонимный пользователь, вошедший в систему

Любой пользователь, вошедший в систему без идентификации, например, через анонимный сетевой сеанс. Пользователи, входящие в систему с помощью встроенной гостевой учетной записи, не проходят проверку подлинности и не являются анонимными. Этот идентификатор безопасности доступен начиная с Windows XP.

В следующих идентификаторах SID описывается, как пользователь вошел в систему на этом компьютере.

идентификатор безопасности (SID) Описание

МЕ

Интерактивные пользователи

Пользователи, которые первоначально вошли в систему на компьютере "интерактивно", например через локальные входы в систему или подключение к удаленному рабочему столу.

НЮ

Пользователь входа в сеть

Пользователи, обращающиеся к компьютеру удаленно, без интерактивного доступа к рабочему столу (например, общий доступ к файлам или вызовы RPC).

WD

Мир

До Windows XP этот SID охватывал каждый сеанс, независимо от того, были ли это проверенные пользователи, анонимные пользователи или учетная запись 'Гость'.

Начиная с Windows XP этот идентификатор безопасности не охватывает анонимные сеансы входа; он охватывает только прошедших проверку подлинности пользователей и учетную запись встроенного гостя.

Ненадежный или код с ограниченным доступом также не охватывается стандартом World SID. Для получения дополнительной информации см. описание SID ограниченного кода (RC) в следующей таблице.

Следующие SIDs заслуживают особого внимания.

идентификатор безопасности (SID) Описание

Ролевой центр

Ограниченный код

Этот идентификатор безопасности используется для управления доступом ненадежным кодом. Проверка ACL для токенов с помощью RC состоит из двух проверок: одна против обычного списка SID токена (например, содержащего WD), и другая против второго списка (обычно содержащего RC и подмножество исходных SID токена). Доступ предоставляется только в том случае, если маркер проходит оба теста. Таким образом, RC фактически работает в сочетании с другими идентификаторами SID.

Любой ACL, указывающий RC, также должен указывать WD. При сочетании RC с WD в ACL описывается надмножество всех, включая ненадежный код.

Ненадежный код может быть кодом, запущенным с помощью параметра "Запуск от имени" в Проводнике. По умолчанию World не охватывает недоверенный код.

UD

Драйверы User-Mode

Этот идентификатор безопасности предоставляет доступ к драйверам пользовательского режима. В настоящее время этот идентификатор безопасности охватывает только драйверы, написанные для платформы драйверов User-Mode (UMDF). Этот идентификатор безопасности доступен начиная с Windows 8.

В более ранних версиях Windows, которые не распознают сокращение "UD", необходимо указать полную форму этого идентификатора безопасности (S-1-5-84-0-0-0-0-0-0) для предоставления доступа к драйверам UMDF. Дополнительные сведения см. в разделе "Управление доступом к устройствам " в документации по User-Mode Driver Framework.

Примеры SDDL для объектов устройств

В этом разделе описываются предопределенные строки SDDL, найденные в Wdmsec.h. Они также можно использовать в качестве шаблонов для определения новых строк SDDL для объектов устройств.

SDDL_DEVOBJ_KERNEL_ONLY

"D:P"

SDDL_DEVOBJ_KERNEL_ONLY — это "пустой" ACL. Код пользовательского режима (включая процессы, выполняемые как система), не может открыть устройство.

Драйвер PnP шины может использовать этот дескриптор при создании PDO. Затем INF-файл может указать более свободные параметры безопасности для устройства. Указав этот дескриптор, драйвер шины гарантирует, что попытка открыть устройство до обработки INF не будет выполнена.

Аналогичным образом драйвер, отличный от WDM, может использовать этот дескриптор, чтобы сделать его объекты устройства недоступными, пока соответствующая программа пользовательского режима (например, установщик) не задает окончательный дескриптор безопасности в реестре.

Во всех этих случаях по умолчанию принимаются жесткие меры безопасности, которые могут ослабляться по мере необходимости.

SDDL_DEVOBJ_SYS_ALL

"D:P(A;;GA;;;SY)"

SDDL_DEVOBJ_SYS_ALL аналогичен SDDL_DEVOBJ_KERNEL_ONLY, за исключением того, что помимо кода в режиме ядра, код пользовательского режима, запущенный как система, также может открывать устройство для любого доступа.

Устаревший драйвер может использовать этот ACL для первоначальной установки строгих параметров безопасности, а его служба может в процессе выполнения открывать доступ к устройству индивидуальным пользователям, используя функцию в пользовательском режиме SetFileSecurity. В этом случае службе придется работать под учетной записью System.

SDDL_DEVOBJ_SYS_ALL_ADM_ALL

"D:P(A;;GA;;;SY)(A;;GA;;;BA)"

SDDL_DEVOBJ_SYS_ALL_ADM_ALL позволяет ядру, системе и администратору полностью контролировать устройство. Другие пользователи не могут получить доступ к устройству.

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R

"D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GR;;;WD)"

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R позволяет ядру и системе полностью управлять устройством. По умолчанию администратор может получить доступ ко всему устройству, но не может изменить ACL (администратор должен сначала контролировать устройство).

Доступ на чтение предоставляется всем пользователям (World SID). Ненадежный код не может получить доступ к устройству (ненадежный код может быть запущен с помощью параметра запуска от имени в обозревателе. По умолчанию World не охватывает ограниченный код.)

Кроме того, обратите внимание, что обходный доступ не предоставляется обычным пользователям. Таким образом, это может быть не подходящий дескриптор для устройства с пространством имен.

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R

"D:P(A;; ГА;;; SY)(A;; GRGWGX;; BA)(A;; ГР;;; WD)(A;; ГР;;; RC)"

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R позволяет ядру и системе полностью управлять устройством. По умолчанию администратор может получить доступ ко всему устройству, но не может изменить ACL (администратор должен сначала контролировать устройство).

Доступ на чтение предоставляется всем пользователям (World SID). Кроме того, ненадежный код также разрешен для доступа к коду. Ненадежный код может быть кодом, запущенным с помощью параметра "Запуск от имени" в Проводнике. По умолчанию World не охватывает ограниченный код.

Кроме того, обратите внимание, что обходный доступ не предоставляется обычным пользователям. Таким образом, это может быть не подходящий дескриптор для устройства с пространством имен.

Эти строки SDDL не включают модификаторы наследования. Таким образом, они подходят только для устройств и не должны использоваться для файлов или ключей реестра. Дополнительные сведения об указании наследования с помощью SDDL см. в документации по пакету SDK для Microsoft Windows.