Создание безопасных установок устройств

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

  • ограничивает доступ к устройству и его классам интерфейса устройства

  • ограничивает доступ к службам драйверов, созданным для устройства

  • защищает файлы драйверов от изменения или удаления

  • ограничивает доступ к записям реестра устройства

  • ограничивает доступ к классам WMI устройства

  • правильно использует функции SetupAPI

Безопасность установки устройств контролируется дескрипторами безопасности. Основной средой для указания дескрипторов безопасности является INF-файл. Система предоставляет дескрипторы безопасности по умолчанию, и в большинстве случаев вам не нужно переопределять эти дескрипторы.

Параметры безопасности для устройств и интерфейсов

Система предоставляет дескрипторы безопасности по умолчанию для всех предоставляемых системой классов настройки устройств. Как правило, эти дескрипторы обеспечивают полный доступ для системных администраторов и доступ на чтение, запись и выполнение для пользователей. (Дескрипторы безопасности, управляющие доступом к устройству, также управляют доступом к классам интерфейса устройства, если таковые есть.)

INF-файлы для драйверов WDM могут указывать параметры безопасности для каждого класса или устройства, которые переопределяют параметры системы по умолчанию. Поставщики, создающие новый класс настройки устройства, должны указать дескриптор безопасности для класса . Как правило, указывать дескриптор безопасности для конкретного устройства не требуется. Может быть полезно предоставить дескриптор безопасности для конкретного устройства, если разные типы устройств, принадлежащих к одному классу, имеют значительно разные типы пользователей.

Чтобы указать дескриптор безопасности для всех устройств, принадлежащих к классу установки устройств WDM, используйте директиву INF AddReg в разделе INF ClassInstall32 INF-файла установщика класса. Директива AddReg должна указывать на раздел add-registry-section , который задает значения для записей реестра DeviceType и Security . Эти значения реестра задают дескриптор безопасности для всех устройств указанного типа устройства.

Чтобы указать дескриптор безопасности для одного устройства, которое принадлежит к классу установки устройств WDM, используйте директиву INF AddReg в разделе INF DDInstall.HW INF-файла устройства. Директива AddReg должна указывать на раздел add-registry-section , который задает значения для записей реестра DeviceType и Security . Эти значения реестра задают дескриптор безопасности для всех устройств, соответствующих идентификаторам оборудования или совместимым идентификаторам , указанным в соответствующем разделе моделей INF.

По умолчанию система применяет дескриптор безопасности, заданный для устройства, к запросу на открытие объекта устройства, представляющего устройство (например, к запросу на открытие устройства с именем устройства NT \Device\DeviceName).

Однако система по умолчанию не применяет дескриптор безопасности, заданный для устройства, к запросу на открытие объекта в пространстве имен устройства, где пространство имен устройства включает все объекты, имена которых имеют вид \Device\DeviceName\ObjectName. Чтобы обеспечить применение одинаковых параметров безопасности к открытым запросам объектов в пространстве имен устройства, установите для устройства флаг FILE_DEVICE_SECURE_OPEN характеристик устройства. Дополнительные сведения о безопасном доступе к устройствам см. в разделе Управление доступом к пространству имен устройств (драйверы Windows). Сведения о том, как задать флаг FILE_DEVICE_SECURE_OPEN характеристик устройства, см. в разделе Указание характеристик устройства (драйверы Windows).

Диспетчер PnP задает значения безопасности для объектов устройства после вызова процедуры AddDevice драйвера. Некоторые драйверы WDM могут указывать дескриптор безопасности для конкретного устройства при создании объекта физического устройства (PDO), вызывая IoCreateDeviceSecure. Дополнительные сведения см. в разделе Защита объектов устройств.

Параметры безопасности для файлов драйверов

При копировании файлов с помощью директивы INF CopyFiles можно указать раздел списка файлов. раздел безопасности . В этом разделе указан дескриптор безопасности для всех файлов, копируемых директивой CopyFiles . Однако поставщикам никогда не нужно указывать дескриптор безопасности для файлов драйверов, если назначением установки является один из системных подкаталогов %SystemRoot%. (Дополнительные сведения об этих подкаталогах см. в разделе Использование dirids.) Система предоставляет дескрипторы безопасности по умолчанию для этих подкаталогов, и дескрипторы по умолчанию не должны быть переопределены.

Параметры безопасности для служб драйверов

В раздел service-install-section INF-файла драйвера (см. директиву INF AddService) можно включить запись Безопасность . В этой записи указываются разрешения, необходимые для выполнения таких операций, как запуск, остановка и настройка служб драйверов, связанных с вашим устройством. Однако система предоставляет дескриптор безопасности по умолчанию для служб драйверов, и этот дескриптор по умолчанию обычно не требуется переопределять.

Параметры безопасности для записей реестра устройств и драйверов

При указании записей реестра в INF-файлах с помощью директив INF AddReg можно включить раздел add-registry-section. Раздел безопасности для каждого раздела add-registry-section. Раздел add-registry. В разделе "Безопасность " указываются разрешения на доступ к созданным записям реестра, созданным соответствующим разделом add-registry-section . Система предоставляет дескриптор безопасности по умолчанию для всех записей реестра, созданных в относительном корне HKR . Поэтому не нужно указывать дескриптор безопасности при создании записей реестра в относительном корневом каталоге.

Параметры безопасности для классов WMI

Система назначает дескрипторы безопасности по умолчанию идентификаторам GUID, которые идентифицируют классы WMI. Для Windows XP и более ранних версий операционной системы дескриптор безопасности по умолчанию для идентификаторов GUID WMI предоставляет полный доступ всем пользователям. Начиная с Windows Server 2003 дескриптор безопасности по умолчанию разрешает доступ только администраторам.

Если драйвер определяет классы WMI и вы не хотите использовать дескрипторы безопасности системы по умолчанию для этих классов, вы можете предоставить дескрипторы безопасности с помощью раздела INF DDInstall.WMI в INF-файле устройства.

Правильное использование функций SetupAPI

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

Тестирование параметров безопасности установки

Используйте ведение журнала SetupAPI , чтобы убедиться, что параметры безопасности, связанные с установкой устройства, указаны правильно. Задайте уровень ведения журнала подробным (0x0000FFFF), а затем попробуйте выполнить различные сценарии установки.

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

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

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

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

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