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.
Rozhraní WMI obsahuje objekty a metody, které umožňují číst popisovače zabezpečení a manipulovat s nimi a určit, kdo má přístup k zabezpečitelným objektům.
- role popisovačů zabezpečení
- řízení přístupu a objektů zabezpečení rozhraní WMI
- objektu Win32_SecurityDescriptor
- DACL a SACL
- Win32_ACE, Win32_Trustee, Win32_SID
- Příklad : Kontrola, kdo má přístup k tiskárnám
- související témata
Role popisovačů zabezpečení
Popisovače zabezpečení definují atributy zabezpečení zabezpečitelných objektů, jako jsou soubory, klíče registru, obory názvů WMI, tiskárny, služby nebo sdílené složky. Popisovač zabezpečení obsahuje informace o vlastníkovi a primární skupině objektu. Zprostředkovatel může porovnat popisovač zabezpečení prostředků s identitou žádajícího uživatele a určit, jestli má uživatel právo získat přístup k prostředku, který uživatel požaduje. Další informace naleznete v tématu Přístup k zabezpečitelným objektům rozhraní WMI.
Některé metody rozhraní WMI, například GetSD, vrátí popisovač zabezpečení ve formátu binárního bajtového pole. Počínaje systémem Windows Vista použijte metody Win32_SecurityDescriptorHelper třídy k převodu binárního popisovače zabezpečení na instanci Win32_SecurityDescriptor, které lze snadněji manipulovat. Další informace naleznete v tématu Změna zabezpečení přístupu u zabezpečitelných objektů.
Řízení přístupu a objekty zabezpečení rozhraní WMI
Následuje seznam objektů zabezpečení rozhraní WMI:
Následující diagram znázorňuje vztahy mezi objekty zabezpečení rozhraní WMI.
Další informace o roli zabezpečení přístupu naleznete v tématu osvědčené postupy zabezpečení, udržovánízabezpečení rozhraní WMI a řízení přístupu.
objekt Win32_SecurityDescriptor
V následující tabulce jsou uvedeny vlastnosti třídy Win32_SecurityDescriptor.
| Vlastnost | Popis |
|---|---|
| ControlFlags | Sada řídicích bitů, které opravují význam SD nebo jeho jednotlivých členů. Další informace o nastavení ControlFlags bitových hodnot naleznete v tématu Win32_SecurityDescriptor. |
| DACL |
volitelného seznamu řízení přístupu (ACL) uživatelů a skupin a jejich přístupových práv k zabezpečenému objektu. Tato vlastnost obsahuje pole Win32_ACE instancí, které představují položky řízení přístupu. Další informace naleznete v tématu Vytvoření seznamu DACL. |
| skupiny | Seskupit, do které tento zabezpečený objekt patří. Tato vlastnost obsahuje instanci Win32_Trustee, která obsahuje název, doménu a identifikátor zabezpečení (SID) skupiny, do které vlastník patří. |
| vlastníka | Vlastník tohoto zabezpečeného objektu. Tato vlastnost obsahuje instanci Win32_Trustee, která obsahuje název, doménu a identifikátor zabezpečení (SID) vlastníka. |
| SACL |
seznam řízení přístupu systému (ACL) obsahuje pole Win32_ACE instancí, které představují typ pokusů o přístup, které generují záznamy auditu pro uživatele nebo skupiny. Další informace naleznete v tématu SACL pro nový objekt. |
DACL a SACL
Pole Win32_ACE objektů v volitelném seznamu řízení přístupu (DACL) a seznamu řízení přístupu systému {SACL) vytvářejí propojení mezi uživatelem nebo skupinou a jejich přístupovými právy.
Pokud vlastnost DACL neobsahuje položku řízení přístupu (ACE), přístupová práva nejsou udělena a přístup k objektu je odepřen.
Poznámka
Seznam DACL NULL poskytuje úplný přístup všem uživatelům, což je vážné bezpečnostní riziko. Další informace naleznete v tématu Vytvoření seznamu DACL.
Win32_ACE, Win32_Trustee, Win32_SID
Objekt Win32_ACE obsahuje instanci třídy Win32_Trustee, která identifikuje uživatele nebo skupinu, a vlastnost AccessMask, která je bitová maska, která určuje akce, které může uživatel nebo skupina provést. Uživateli nebo skupině může být například uděleno právo na čtení souboru, ale ne k zápisu do souboru. Objekt Win32_ACE obsahuje také ACE, který označuje, zda se jedná o povolení nebo odepření přístupu.
Poznámka
Pořadí Win32_ACE v seznamu DACL je důležité, protože položka řízení přístupu (ACE) je povolená v seznamu DACL jak povolit, tak odepřít. Další informace naleznete v tématu Pořadí řízení přístupu v jazyce DACL.
Každý uživatelský účet nebo skupina reprezentované Win32_Trustee má identifikátor zabezpečení (SID), který jednoznačně identifikuje účet a určuje přístupová oprávnění účtu. Způsob určení dat SID závisí na operačním systému. Další informace naleznete v tématu Změna zabezpečení přístupu u zabezpečitelných objektů.
Následující diagram znázorňuje obsah jedné instance Win32_ACE.
Příklad: Kontrola, kdo má přístup k tiskárnám
Následující příklad kódu VBScript ukazuje, jak používat popisovač zabezpečení tiskárny. Skript volá metodu GetSecurityDescriptor ve třídě Win32_Printer získat popisovač, pak určí, zda je v popisovači zabezpečení k dispozici volitelný seznam řízení přístupu (DACL). Pokud existuje seznam DACL, skript získá seznam položek řízení přístupu (ACE) z seznamu DACL. Každá funkce ACE je reprezentována instancí Win32_ACE. Skript zkontroluje každou ACE, aby získal jméno uživatele a určil, jestli má uživatel přístup k tiskárně. Uživatel je reprezentován instancí Win32_Trustee vloženou v instanci Win32_ACE.
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Security)}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
Wscript.Echo "Name: " & objPrinter.Name
' Get security descriptor for printer
Return = objPrinter.GetSecurityDescriptor( objSD )
If ( return <> 0 ) Then
WScript.Echo "Could not get security descriptor: " & Return
wscript.Quit Return
End If
' Extract the security descriptor flags
intControlFlags = objSD.ControlFlags
If intControlFlags AND SE_DACL_PRESENT Then
' Get the ACE entries from security descriptor
colACEs = objSD.DACL
For Each objACE in colACEs
' Get all the trustees and determine which have access to printer
WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
WScript.Echo vbTab & "User has access to printer"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
WScript.Echo vbTab & "User does not have access to the printer"
End If
Next
Else
WScript.Echo "No DACL found in security descriptor"
End If
Next