Dela via


WMI-säkerhetsbeskrivningsobjekt

WMI har objekt och metoder som gör att du kan läsa och manipulera säkerhetsbeskrivningar för att avgöra vem som har åtkomst till skyddsbara objekt.

Rollen för säkerhetsbeskrivningar

Säkerhetsbeskrivningar definierar säkerhetsattributen för skyddsbara objekt, till exempel filer, registernycklar, WMI-namnområden, skrivare, tjänster eller resurser. En säkerhetsbeskrivning innehåller information om ägaren och den primära gruppen för ett objekt. En provider kan jämföra resurssäkerhetsbeskrivningen med identiteten för en begärande användare och avgöra om användaren har rätt att komma åt resursen som en användare begär. Mer information finns i Åtkomst till WMI-skyddsbara objekt.

Vissa WMI-metoder, till exempel GetSD, returnerar en säkerhetsbeskrivning i matrisformatet binär byte. Från och med Windows Vista använder du metoderna i klassen Win32_SecurityDescriptorHelper för att konvertera en binär säkerhetsbeskrivning till en instans av Win32_SecurityDescriptor, som kan manipuleras enklare. Mer information finns i Ändra åtkomstsäkerhet för skyddsbara objekt.

Åtkomstkontroll och WMI-säkerhetsobjekt

Följande är en lista över WMI-säkerhetsobjekt:

Följande diagram visar relationerna mellan WMI-säkerhetsobjekt.

relationer mellan wmi-säkerhetsobjekt

Mer information om åtkomstsäkerhetsrollen finns i Bästa praxis för säkerhet, Underhåll av WMI-säkerhetoch Åtkomstkontroll.

Win32_SecurityDescriptor objekt

I följande tabell visas de Win32_SecurityDescriptor klassegenskaperna.

Egenskap Beskrivning
ControlFlags Uppsättning kontrollbitar som kvalificerar innebörden av en SD eller dess enskilda medlemmar. Mer information om hur du anger ControlFlags bitvärden finns i Win32_SecurityDescriptor.
DACL- ACL(Discretionary Access Control List) användare och grupper samt deras åtkomsträttigheter till ett skyddat objekt. Den här egenskapen innehåller en matris med Win32_ACE instanser som representerar åtkomstkontrollposter. Mer information finns i Skapa en DACL-.
Grupp Grupp som det här skyddade objektet tillhör. Den här egenskapen innehåller en instans av Win32_Trustee som innehåller namn, domän och säkerhetsidentifierare (SID) för den grupp som ägaren tillhör.
ägare Ägare till det här skyddade objektet. Den här egenskapen innehåller en instans av Win32_Trustee som innehåller ägarens namn, domän och säkerhetsidentifierare (SID).
SACL- System Access Control List (ACL) innehåller en matris med Win32_ACE instanser som representerar den typ av åtkomstförsök som genererar granskningsposter för användare eller grupper. Mer information finns i SACL för ett nytt objekt.

DACL och SACL

Matriserna med Win32_ACE objekt i DACL (Discretionary Access Control List) och listan med systemåtkomstkontroll (SACL) skapar en länk mellan en användare eller grupp och deras åtkomsträttigheter.

När en DACL-egenskap inte innehåller en åtkomstkontrollpost (ACE) beviljas inte åtkomsträttigheter och åtkomst till objektet nekas.

Not

En NULL- DACL ger fullständig åtkomst till alla, vilket är en allvarlig säkerhetsrisk. Mer information finns i Skapa en DACL-.

Win32_ACE, Win32_Trustee, Win32_SID

Ett Win32_ACE-objekt innehåller en instans av klassen Win32_Trustee som identifierar en användare eller grupp och en AccessMask- egenskap som är en bitmask, som anger vilka åtgärder som en användare eller grupp kan vidta. En användare eller grupp kan till exempel beviljas behörighet att läsa en fil men inte skriva till filen. Ett Win32_ACE-objekt innehåller också ett ACE som anger om det är en tillåten eller nekad åtkomst.

Not

Den Win32_ACE ordningen i en DACL är viktig eftersom både tillåta och neka åtkomstkontrollinmatning (ACE) tillåts i en DACL. Mer information finns i Order of ACEs in a DACL.

Varje användarkonto eller grupp som representeras av en Win32_Trustee har en säkerhetsidentifierare (SID) som unikt identifierar ett konto och anger åtkomstbehörigheterna för kontot. Hur du anger SID-data beror på operativsystemet. Mer information finns i Ändra åtkomstsäkerhet för skyddsbara objekt.

Följande diagram visar innehållet i en Win32_ACE instans.

innehållet i en win32-ace-instans

Exempel: Kontrollera vem som har åtkomst till skrivare

Följande VBScript-kodexempel visar hur du använder skrivarsäkerhetsbeskrivningen. Skriptet anropar metoden GetSecurityDescriptor i klassen Win32_Printer för att hämta beskrivningen och avgör sedan om det finns en DACL (Discretionary Access Control List) i säkerhetsbeskrivningen. Om det finns en DACL hämtar skriptet listan över åtkomstkontrollposter (ACE) från DACL. Varje ACE representeras av en instans av Win32_ACE. Skriptet kontrollerar varje ACE för att hämta namnet på användaren och avgöra om användaren har åtkomst till skrivaren. Användaren representeras av en instans av Win32_Trustee inbäddad i den Win32_ACE instansen.

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

Ändra åtkomstsäkerhet för skyddsbara objekt

hjälpklass för säkerhetsbeskrivning

Bästa praxis för säkerhet

upprätthålla WMI-säkerhet

Åtkomstkontroll

åtkomst till WMI-namnområden