Udostępnij przez


SdDL dla obiektów urządzeń

Język SDDL (Security Descriptor Definition Language) służy do reprezentowania deskryptorów zabezpieczeń. Zabezpieczenia obiektów urządzeń można określić za pomocą ciągu SDDL umieszczonego w pliku INF lub przekazanego do IoCreateDeviceSecure. Język definicji deskryptora zabezpieczeń jest w pełni udokumentowany w dokumentacji zestawu Microsoft Windows SDK.

Chociaż pliki INF obsługują pełny zakres SDDL, tylko podzbiór języka jest wspierany przez procedurę IoCreateDeviceSecure. Ten podzestaw jest zdefiniowany tutaj.

Ciągi SDDL dla obiektów urządzeń mają postać "D:P", po której następuje co najmniej jedno wyrażenie formularza "(A;; Dostęp;;; SID)". Wartość identyfikatora SID określa identyfikator zabezpieczeń, który określa, do kogo ma zastosowanie wartość programu Access (na przykład użytkownik lub grupa). Wartość Access określa dozwolone prawa dostępu dla identyfikatora SID. Wartości Access i SID są następujące.

W przypadku używania języka SDDL dla obiektów urządzeń sterownik musi łączyć się z biblioteką Wdmsec.lib.

Dostęp
Określa wartość ACCESS_MASK , która określa dozwolony dostęp. Tę wartość można zapisać jako wartość szesnastkową w postaci "0xhex" lub jako sekwencję dwuliterowych kodów symbolicznych reprezentujących prawa dostępu.

Poniższe kody mogą służyć do określania ogólnych praw dostępu.

Code Prawo dostępu ogólnego

ogólna dostępność

Wszystko_Genericzne

GR

OGÓLNE_CZYTANIE

GW

GENERIC_WRITE (ogólne pisanie)

GX

OGÓLNE_WYKONANIE

Poniższe kody mogą służyć do określania określonych praw dostępu.

Code Prawo do określonego dostępu

RC

KontrolaOdczytu

SD

USUŃ

Biały karzeł

WRITE_DAC

WO

ZAPIS_WŁAŚCICIELA

GENERIC_ALL przyznaje pełnię praw wymienionych w powyższych dwóch tablicach, w tym możliwość zmiany ACL.

SID
Określa identyfikator SID, któremu udzielono określonego dostępu. Identyfikatory SID reprezentują konta, aliasy, grupy, użytkowników lub komputery.

Następujące identyfikatory SID reprezentują konta na maszynie.

SID Opis

SY

System

Reprezentuje sam system operacyjny, w tym jego składniki trybu użytkownika.

LS

Usługa lokalna

Wstępnie zdefiniowane konto dla usług lokalnych (które należy również do Uwierzytelnionych i Świata). Ten identyfikator SID jest dostępny od systemu Windows XP.

NS

Usługa sieciowa

Wstępnie zdefiniowane konto usług sieciowych (które również należy do uwierzytelnionych i światowych). Ten identyfikator SID jest dostępny od systemu Windows XP.

Następujące identyfikatory SID reprezentują grupy na maszynie.

SID Opis

BA

Administratorzy

Wbudowana grupa Administratorzy na maszynie.

BU

Wbudowana grupa użytkowników

Grupa obejmująca wszystkie konta użytkowników lokalnych i użytkowników w domenie.

BG

Wbudowana grupa gości

Grupa obejmująca użytkowników logując się przy użyciu konta gościa lokalnego lub domeny.

Następujące identyfikatory SID opisują zakres, w jakim użytkownik został uwierzytelniony.

SID Opis

jednostka administracyjna

Uwierzytelnieni użytkownicy

Każdy użytkownik rozpoznany przez komputer lokalny lub domenę. Użytkownicy zalogowani przy użyciu wbudowanego konta Gościa nie są uwierzytelniani. Jednak członkowie grupy Goście z indywidualnymi kontami na maszynie lub w domenie są uwierzytelniani.

AN

Zalogowany anonimowy użytkownik

Każdy użytkownik zalogowany bez tożsamości, na przykład anonimowa sesja sieciowa. Użytkownicy logujący się przy użyciu konta wbudowanego gościa nie są uwierzytelniani ani anonimowi. Ten identyfikator SID jest dostępny od systemu Windows XP.

Poniższe identyfikatory SID opisują sposób logowania użytkownika do maszyny.

SID Opis

J.M.

Użytkownicy interakcyjny

Użytkownicy, którzy początkowo zalogowali się na maszynie interaktywnie, na przykład poprzez logowanie lokalne lub zdalne na pulpit.

NU

Użytkownik logowania do sieci

Użytkownicy, którzy uzyskują zdalny dostęp do maszyny bez dostępu do pulpitu interaktywnego (na przykład udostępnianie plików lub wywołania RPC).

Biały karzeł

Świat

Przed systemem Windows XP identyfikator SID obejmował każdą sesję, niezależnie od tego, czy były to sesje uwierzytelnionych użytkowników, użytkowników anonimowych, czy wbudowanego konta Gość.

Począwszy od systemu Windows XP, ten identyfikator SID nie obejmuje anonimowych sesji logowania; Obejmuje tylko uwierzytelnionych użytkowników i wbudowane konto gościa.

Niezaufany lub "ograniczony" kod nie jest również objęty światowym identyfikatorem SID. Aby uzyskać więcej informacji, zapoznaj się z opisem SID kodu ograniczonego (RC) w poniższej tabeli.

Następujące identyfikatory SID zasługują na szczególną wzmiankę.

SID Opis

RC

Kod ograniczony

Ten identyfikator SID służy do kontrolowania dostępu przez niezaufany kod. Walidacja listy ACL względem tokenów z RC składa się z dwóch kontroli: pierwsza względem normalnej listy identyfikatorów SID tokenu (na przykład zawierającej identyfikatory WD), a druga względem drugiej listy (zazwyczaj zawierającej RC i podzbiór oryginalnych identyfikatorów SID tokenu). Dostęp jest udzielany tylko wtedy, gdy token przejdzie oba testy. W związku z tym RC działa w połączeniu z innymi identyfikatorami SID.

Każda lista ACL, która określa RC, musi również określać WD. Gdy RC jest sparowany z usługą WD na liście ACL, opisywany jest nadzbiór obejmujący wszystkich, łącznie z niezaufanym kodem.

Niezaufany kod może zostać uruchomiony przy użyciu opcji Uruchom jako w Eksploratorze. Domyślnie środowisko World nie obejmuje niezaufanego kodu.

UD

sterowniki sprzętowe User-Mode

Ten identyfikator SID udziela dostępu do sterowników trybu użytkownika. Obecnie ten identyfikator SID obejmuje tylko sterowniki napisane dla User-Mode Driver Framework (UMDF). Ten identyfikator SID jest dostępny od systemu Windows 8.

We wcześniejszych wersjach systemu Windows, które nie rozpoznają skrótu "UD", należy określić w pełni kwalifikowaną formę tego identyfikatora SID (S-1-5-84-0-0-0-0-0), aby udzielić dostępu do sterowników UMDF. Aby uzyskać więcej informacji, zobacz Kontrolowanie dostępu do urządzeń w dokumentacji User-Mode Driver Framework.

Przykłady sdDL dla obiektów urządzeń

W tej sekcji opisano wstępnie zdefiniowane ciągi SDDL znalezione w pliku Wdmsec.h. Można również użyć ich jako szablonów, aby zdefiniować nowe ciągi SDDL dla obiektów urządzeń.

SDDL_DEVOBJ_KERNEL_ONLY

"D:P"

SDDL_DEVOBJ_KERNEL_ONLY jest „pustym” ACL-em. Kod trybu użytkownika (w tym procesy uruchomione jako system) nie może otworzyć urządzenia.

Kierowca magistrali PnP może użyć tego deskryptora podczas tworzenia PDO. Plik INF może następnie określić luźniejsze ustawienia zabezpieczeń urządzenia. Określając ten deskryptor, sterownik magistrali zapewni, że żadna próba otwarcia urządzenia przed przetworzeniem INF nie zakończy się powodzeniem.

Podobnie, sterownik inny niż WDM może użyć tego deskryptora, aby jego obiekty urządzenia były niedostępne, dopóki odpowiedni program w trybie użytkownika (np. instalator) nie ustawi końcowego deskryptora zabezpieczeń w rejestrze.

We wszystkich tych przypadkach ustawienie domyślne to ścisłe zabezpieczenia, poluzowane w razie potrzeby.

SDDL_DEVOBJ_SYS_ALL

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

SDDL_DEVOBJ_SYS_ALL jest podobny do SDDL_DEVOBJ_KERNEL_ONLY, z tą różnicą, że oprócz kodu trybu jądra, kod trybu użytkownika uruchomiony jako System jest również uprawniony do otworzenia urządzenia do dowolnego dostępu.

Przestarzały sterownik może używać tej listy ACL, aby rozpocząć od surowych ustawień zabezpieczeń i umożliwiać swojej usłudze otwarcie urządzenia w czasie działania dla poszczególnych użytkowników przy użyciu funkcji SetFileSecurity w trybie użytkownika. W takim przypadku usługa musi być uruchomiona jako system.

SDDL_DEVOBJ_SYS_ALL_ADM_ALL

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

SDDL_DEVOBJ_SYS_ALL_ADM_ALL przyznaje jądru, systemowi i administratorowi pełną kontrolę nad urządzeniem. Żaden inny użytkownik nie może uzyskać dostępu do urządzenia.

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 umożliwia jądrze i systemowi pełną kontrolę nad urządzeniem. Domyślnie administrator może uzyskać dostęp do całego urządzenia, ale nie może zmienić listy ACL (administrator musi najpierw przejąć kontrolę nad urządzeniem).

Każdy (globalny identyfikator SID) ma dostęp do odczytu. Niezaufany kod nie może uzyskać dostępu do urządzenia (niezaufany kod może zostać uruchomiony przy użyciu opcji Uruchom jako w Eksploratorze. Domyślnie środowisko World nie obejmuje ograniczonego kodu).

Należy również pamiętać, że dostęp przechodzenia nie jest przyznawany normalnym użytkownikom. W związku z tym może to nie być odpowiedni deskryptor dla urządzenia z przestrzenią nazw.

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R

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

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R umożliwia jądru i systemowi pełną kontrolę nad urządzeniem. Domyślnie administrator może uzyskać dostęp do całego urządzenia, ale nie może zmienić listy ACL (administrator musi najpierw przejąć kontrolę nad urządzeniem).

Każdy (globalny identyfikator SID) ma dostęp do odczytu. Ponadto niezaufany kod może również uzyskiwać dostęp do kodu. Niezaufany kod może zostać uruchomiony przy użyciu opcji Uruchom jako w Eksploratorze. Domyślnie środowisko World nie obejmuje ograniczonego kodu.

Należy również pamiętać, że dostęp przechodzenia nie jest przyznawany normalnym użytkownikom. W związku z tym może to nie być odpowiedni deskryptor dla urządzenia z przestrzenią nazw.

Te ciągi SDDL nie zawierają żadnych modyfikatorów dziedziczenia. W związku z tym są one odpowiednie tylko dla obiektów urządzeń i nie powinny być używane w przypadku plików ani kluczy rejestru. Aby uzyskać więcej informacji na temat określania dziedziczenia przy użyciu języka SDDL, zobacz dokumentację zestawu Microsoft Windows SDK.