Tworzenie bezpiecznych instalacji urządzeń

Podczas tworzenia pakietu sterowników należy upewnić się, że instalacja urządzenia będzie zawsze wykonywana w bezpieczny sposób. Bezpiecznie zainstalowane urządzenie to takie, które spełnia następujące wymagania:

  • ogranicza dostęp do urządzenia i jego klas interfejsu urządzenia

  • ogranicza dostęp do usług sterowników utworzonych dla urządzenia

  • chroni pliki sterowników przed modyfikacją lub usunięciem

  • ogranicza dostęp do wpisów rejestru urządzenia

  • ogranicza dostęp do klas WMI urządzenia

  • poprawnie używa funkcji SetupAPI

Zabezpieczenia instalacji urządzeń są kontrolowane przez deskryptory zabezpieczeń. Podstawowym medium do określania deskryptorów zabezpieczeń jest plik INF. System zapewnia domyślne deskryptory zabezpieczeń i w większości przypadków nie trzeba nadpisywać tych deskryptorów.

Ustawienia zabezpieczeń dla urządzeń i interfejsów

System dostarcza domyślne deskryptory zabezpieczeń dla wszystkich klas konfiguracji urządzeń dostarczanych przez system. Ogólnie rzecz biorąc, te deskryptory umożliwiają pełny dostęp administratorom systemu i dostęp do odczytu/zapisu/wykonywania dla użytkowników. (Deskryptory zabezpieczeń, które kontrolują dostęp do urządzenia, kontrolują również dostęp do klas interfejsów urządzenia, jeśli istnieją.)

Pliki INF sterowników WDM mogą określać ustawienia zabezpieczeń dla każdej klasy lub dla każdego urządzenia, które zastępują domyślne ustawienia systemu. Dostawcy tworzący nową klasę konfiguracji urządzeń powinni określić deskryptor zabezpieczeń dla klasy. Ogólnie rzecz biorąc, określenie deskryptora zabezpieczeń specyficznego dla urządzenia nie jest konieczne. Przydatne może być podanie deskryptora zabezpieczeń specyficznego dla urządzenia, jeśli różne typy urządzeń należących do tej samej klasy mają znacznie różne typy użytkowników.

Aby określić deskryptor zabezpieczeń dla wszystkich urządzeń należących do klasy konfiguracji urządzenia WDM, należy użyć dyrektywy INF AddReg w sekcji INF ClassInstall32 pliku INF instalatora klas. Dyrektywa AddReg musi wskazywać sekcję add-registry-section, która ustawia wartości dla wpisów rejestru DeviceType i Security. Te wartości rejestru określają deskryptor zabezpieczeń dla wszystkich urządzeń określonego typu urządzenia.

Aby określić deskryptor zabezpieczeń dla pojedynczego urządzenia należącego do klasy konfiguracji urządzenia WDM, należy użyć dyrektywy INF AddReg w sekcji INF DDInstall.HW pliku INF urządzenia. Dyrektywa AddReg musi wskazywać sekcję add-registry-section, która ustawia wartości dla wpisów rejestru DeviceType i Security. Te wartości rejestru określają deskryptor zabezpieczeń dla wszystkich urządzeń, które pasują do identyfikatora sprzętu lub zgodnych identyfikatorów określonych w skojarzonej sekcji Models pliku INF.

Domyślnie system stosuje deskryptor zabezpieczeń skonfigurowany dla urządzenia do żądania otwarcia obiektu urządzenia, który reprezentuje urządzenie (na przykład żądanie otwarcia urządzenia, którego nazwa urządzenia NT to \Device\DeviceName).

Jednak system domyślnie nie stosuje deskryptora zabezpieczeń ustawionego dla urządzenia do żądania otwarcia obiektu znajdującego się w przestrzeni nazw urządzenia, gdzie przestrzeń nazw urządzenia zawiera wszystkie obiekty, których nazwy mają postać \Device\DeviceName\ObjectName. Aby upewnić się, że te same ustawienia zabezpieczeń są stosowane do otwartych żądań dotyczących obiektów w przestrzeni nazw urządzenia, ustaw dla urządzenia flagę charakterystyki FILE_DEVICE_SECURE_OPEN. Aby uzyskać więcej informacji na temat bezpiecznego dostępu do urządzeń, zobacz Kontrolowanie dostępu do przestrzeni nazw urządzeń (sterowniki Windows). Aby uzyskać informacje na temat ustawiania flagi charakterystyki urządzenia FILE_DEVICE_SECURE_OPEN, zobacz Określanie charakterystyki urządzenia (sterowniki Windows).

Menedżer PnP ustawia wartości zabezpieczeń na obiektach urządzenia po wywołaniu przez niego procedury AddDevice sterownika. Niektóre sterowniki WDM mogą określać deskryptor zabezpieczeń specyficzny dla urządzenia podczas tworzenia obiektu urządzenia fizycznego (PDO), wywołując funkcję IoCreateDeviceSecure. Aby uzyskać więcej informacji, zobacz Zabezpieczanie obiektów urządzeń.

Ustawienia zabezpieczeń dla plików sterowników

Podczas kopiowania plików przy użyciu dyrektywy INF CopyFiles można określić sekcję file-list-section.security. W tej sekcji określono deskryptor zabezpieczeń dla wszystkich plików, które są kopiowane przez dyrektywę CopyFiles . Jednak dostawcy nigdy nie muszą określać deskryptora zabezpieczeń dla plików sterowników, jeśli miejsce docelowe instalacji jest jednym z podkatalogów systemowych katalogu %SystemRoot%. (Aby uzyskać więcej informacji na temat tych podkatalogów, zobacz Using Dirids (Używanie dirids). System udostępnia domyślne deskryptory zabezpieczeń dla tych podkatalogów, a domyślne deskryptory nie powinny być zastępowane.

Ustawienia zabezpieczeń dla usług sterowników

W sekcji service-install-section pliku INF sterownika (zobacz dyrektywę INF AddService) można dołączyć wpis Security. Ten wpis określa uprawnienia wymagane do wykonywania takich operacji jak uruchamianie, zatrzymywanie i konfigurowanie usług sterownika skojarzonych z urządzeniem. Jednak system zapewnia domyślny deskryptor zabezpieczeń dla usług sterowników, a ten domyślny deskryptor zazwyczaj nie musi być zastępowany.

Ustawienia zabezpieczeń dla wpisów rejestru urządzeń i sterowników

Podczas określania wpisów rejestru w plikach INF za pomocą dyrektyw INF AddReg można dołączyć sekcję add-registry-section.Security dla każdej sekcji add-registry-section. add-registry-section.Sekcja zabezpieczeń określa uprawnienia dostępu do utworzonych wpisów rejestru utworzonych przez skojarzoną sekcję add-registry-section. System udostępnia domyślny deskryptor zabezpieczeń dla wszystkich wpisów rejestru utworzonych pod względnym kluczem głównym HKR. W związku z tym nie trzeba określać deskryptora zabezpieczeń podczas tworzenia wpisów w rejestrze pod względnym kluczem głównym.

Ustawienia zabezpieczeń dla klas WMI

System przypisuje domyślne deskryptory zabezpieczeń do identyfikatorów GUID identyfikujących klasy WMI. W przypadku systemu Windows XP i starszych wersji systemu operacyjnego domyślny deskryptor zabezpieczeń dla identyfikatorów GUID usługi WMI zapewnia wszystkim użytkownikom pełny dostęp. Począwszy od Windows Server 2003, domyślny deskryptor zabezpieczeń zezwala na dostęp tylko administratorom.

Jeśli sterownik definiuje klasy WMI i nie chcesz używać domyślnych deskryptorów zabezpieczeń systemu dla tych klas, możesz podać deskryptory zabezpieczeń przy użyciu sekcji INF DDInstall.WMI w pliku INF urządzenia.

Prawidłowe używanie funkcji SetupAPI

Jeśli pakiet sterowników zawiera instalatory, współinstalatory lub inne aplikacje instalacyjne wywołujące funkcje SetupAPI, należy postępować zgodnie z wytycznymi dotyczącymi korzystania z interfejsu SetupAPI.

Testowanie ustawień zabezpieczeń instalacji

Użyj rejestrowania SetupAPI, aby sprawdzić, czy ustawienia zabezpieczeń skojarzone z instalowaniem urządzenia zostały prawidłowo określone. Ustaw poziom rejestrowania na pełne (0x0000FFFF), a następnie wypróbuj różne scenariusze instalacji.

Takie scenariusze powinny obejmować zarówno początkowe instalacje, jak i ponowne instalacje, zarówno z kont użytkowników, jak i kont administratorów systemu. Spróbuj podłączyć urządzenie przed zainstalowaniem oprogramowania i na odwrót.

Jeśli instalacja zakończy się pomyślnie, wyświetl dziennik, aby potwierdzić, że nie wystąpiły żadne błędy. Jeśli instalacja nie powiedzie się, wyświetl dziennik, aby określić przyczynę awarii.

Ponadto po zakończeniu instalacji można wykonać następujące czynności:

  • Użyj Edytora rejestru, aby wyświetlić ustawienia zabezpieczeń przypisane do wpisu rejestru.

  • Użyj pozycji Mój komputer , aby wyświetlić ustawienia zabezpieczeń przypisane do pliku.