Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Většina ovladačů používá přístupové kontroly, které jsou aplikovány správcem vstupně-výstupních operací na jejich objekty zařízení, aby se chránily před nevhodným přístupem. Nejjednodušším přístupem pro většinu ovladačů je použití explicitního popisovače zabezpečení při instalaci ovladače. V souboru INF jsou takové popisovače zabezpečení popsány položkou Zabezpečení v části AddReg. Další informace o celém jazyce používaném k popisu popisovačů zabezpečení naleznete v tématu Jazyk definice popisovače zabezpečení v dokumentaci k sadě Microsoft Windows SDK.
Základní formát popisovače zabezpečení pomocí jazyka SDDL (Security Descriptor Definition Language) zahrnuje následující odlišné části standardního popisovače zabezpečení:
IDENTIFIKÁTOR SID vlastníka.
SID skupiny.
Volitelný seznam řízení přístupu (DACL).
Seznam řízení přístupu systému (SACL).
Popis skriptu INF pro popisovač zabezpečení je tedy následující:
O:owner-sidG:group-sidD:dacl-flags(ace)(ace)S:sacl-flags(ace)(ace)
Jednotlivé položky řízení přístupu popisují přístup, který má být udělen nebo odepřen konkrétní skupině nebo uživateli, jak je specifikováno identifikátorem zabezpečení nebo identifikátorem SID. Soubor INF může například obsahovat řádek, například:
"D:P(A;CI;GR;;;BU)(A;CI;GR;;;PU)(A;CI;GA;;;BA)(A;CI;GA;;;SY)(A;CI;GA;;;NS)(A;CI;GA;;;LS)(A;CI;CCDCLCSWRPSDRC;;;S-1-5-32-556)"
Výše uvedený příklad pochází z NETTCPIP. INF soubor ze systému Microsoft Windows XP Service Pack 1 (SP1).
V tomto případě není zadán žádný vlastník ani skupina, takže jsou ve výchozím nastavení použity předdefinované hodnoty. D označuje, že se jedná o DACL. P označuje, že se jedná o chráněný seznam řízení přístupu (ACL) a nezdědí žádná práva z popisovače zabezpečení obsahujícího objektu. Chráněný seznam ACL zabraňuje předání mírnějšího zabezpečení od předka. Výraz v závorkách označuje jedinou položku řízení přístupu (ACE). Položka řízení přístupu, která používá SDDL, se skládá z několika různých komponent oddělených středníkem. V pořadí jsou následující:
Indikátor typu pro ACE. Existují čtyři jedinečné typy pro DACL a čtyři různé typy pro SACL.
Pole označuje pole sloužící k popisu dědičnosti této ACE pro podřízené objekty nebo auditování a zásady alarmů pro seznamy SACLs.
Pole práv označuje, která práva jsou udělena nebo odepřena službou ACE. Toto pole může buď zadat konkrétní číselnou hodnotu označující obecná, standardní a specifická práva platná pro tuto ACE, nebo použít řetězcový popis běžných přístupových práv.
Identifikátor GUID objektu, pokud je DACL struktura ACE specifická pro objekt.
Identifikátor GUID zděděného objektu, pokud je DACL (seznam řízení přístupu) strukturou ACE specifickou pro objekt
Identifikátor SID označující entitu zabezpečení, na kterou se tento ACE vztahuje.
Interpretace bezpečnostního popisovače ve vzorku znamená, že "A" na začátku ACE označuje položku "povolený přístup". Alternativou je položka odepření přístupu, která se používá jen zřídka a označuje se úvodním znakem "D". Pole s příznakem specifikuje vlastnost Container Inherit (CI), která označuje, že tento ACE je zděděn podobjekty.
Hodnoty polí kódují určitá práva, která zahrnují jak obecná, tak standardní práva. Například "GR" označuje "obecný přístup pro čtení" a "GA" označuje "obecný veškerý" přístup, z nichž obě jsou obecná práva. Řada zvláštních práv se řídí těmito obecnými právy. V ukázce výše označuje "CC" vytvoření podřízeného přístupu, který je specifický pro práva k souborům a adresářům. Výše uvedená ukázka také obsahuje další standardní práva za řetězcem CC, včetně DC pro odstranění přístupu k podřízeným, LC pro výčet podřízených, SW pro přístup k vlastním právům, RP pro přístup ke čtení vlastností, SD pro standardní přístup k odstranění a RC pro přístup k řízení čtení.
Vstupní řetězce SID v ukázce výše zahrnují "PU" pro power users, "BU" pro předdefinované uživatele, "BA" pro "integrované správce, "LS" pro účet místní služby, "SY" pro místní systém a "NS" pro účet síťové služby. V předchozím příkladu mají uživatelé obecný přístup ke čtení objektu. Naproti tomu předdefinovaní správci, účet místní služby, místní systém a síťová služba mají obecný přístup (čtení, zápis a spuštění). Kompletní sada všech možných práv a standardních řetězců SID jsou zdokumentované v sadě Windows SDK.
Tyto seznamy ACL se použijí pro všechny objekty zařízení vytvořené daným ovladačem. Ovladač může také řídit nastavení zabezpečení konkrétních objektů pomocí nové funkce, IoCreateDeviceSecure, při vytváření pojmenovaného objektu zařízení. Funkce IoCreateDeviceSecure je k dispozici v systémech Windows XP Service Pack 1 a Windows Server 2003 a novějších. Použití IoCreateDeviceSecure, popisovač zabezpečení, který se má použít na objekt zařízení, je popsán pomocí podmnožina celého jazyka definice popisovače zabezpečení, který je vhodný pro objekty zařízení.
Účelem použití konkrétních popisovačů zabezpečení na objekty zařízení je zajistit, aby se na zařízení prováděly odpovídající kontroly zabezpečení, kdykoli se aplikace pokusí o přístup k samotnému zařízení. U objektů zařízení, které obsahují strukturu názvů (například obor názvů systému souborů), patří podrobnosti o správě přístupu k tomuto oboru názvů zařízení ovladači, nikoli správci vstupně-výstupních operací.
Zajímavým problémem v těchto případech je řešení zabezpečení na rozhraní V/V manažera zodpovědného za kontrolu přístupu k objektu zařízení ovladače a ovladačem zařízení, které implementuje jakékoli zásady zabezpečení vhodné pro ovladač. Tradičně platí, že pokud je otevřený objekt názvem samotného zařízení, správce vstupně-výstupních operací provede úplnou kontrolu přístupu vůči objektu zařízení přímo pomocí popisovače zabezpečení. Pokud však objekt, který je otevřen, označuje cestu uvnitř samotného ovladače, správce vstupně-výstupních operací zkontroluje pouze to, že objektu zařízení udělí přístup k procházení. Práva procházení jsou obvykle udělena, protože většina vláken má uděleno SeChangeNotifyPrivilege, což odpovídá udělení práva procházení k adresáři. Zařízení, které nepodporuje strukturu názvů, by normálně požadovalo, aby správce vstupně-výstupních operací provedl úplnou kontrolu zabezpečení. To se provádí nastavením FILE_DEVICE_SECURE_OPEN bitu v poli charakteristiky zařízení. Ovladač, který obsahuje kombinaci takových objektů zařízení, by měl nastavit tuto vlastnost pro zařízení, která nepodporují strukturu názvů. Například systém souborů by tuto možnost nastavil na pojmenovaný objekt zařízení (který nepodporuje strukturu pojmenování), ale nenastavil tuto možnost u nepojmenovaných objektů zařízení (například svazku), které podporují strukturu pojmenování. Pokud tento bit nenastavíte správně, jedná se o běžnou chybu v ovladačích a může umožnit nevhodný přístup k zařízení. Pro ovladače, které používají rozhraní přílohy (IoAttachDeviceToDeviceStackSafe, například), je bit FILE_DEVICE_SECURE_OPEN nastaven, pokud je toto pole nastaveno v zařízení, ke kterému se ovladač připojuje. Ovladače filtru se proto nemusí starat o tento konkrétní aspekt kontroly zabezpečení.