Oggetti descrittori di sicurezza WMI

WMI include oggetti e metodi che consentono di leggere e modificare i descrittori di sicurezza per determinare chi può accedere a oggetti a protezione diretta.

Ruolo dei descrittori di sicurezza

I descrittori di sicurezza definiscono gli attributi di sicurezza di oggetti a protezione diretta, ad esempio file, chiavi del Registro di sistema, spazi dei nomi WMI, stampanti, servizi o condivisioni. Un descrittore di sicurezza contiene informazioni sul proprietario e sul gruppo primario di un oggetto. Un provider può confrontare il descrittore di sicurezza delle risorse all'identità di un utente richiedente e determinare se l'utente ha il diritto di accedere alla risorsa richiesta da parte di un utente. Per altre informazioni, vedere Accesso agli oggetti a protezione diretta WMI.

Alcuni metodi WMI, ad esempio GetSD, restituiscono un descrittore di sicurezza nel formato matrice di byte binari. A partire da Windows Vista, usare i metodi della classe Win32_SecurityDescriptorHelper per convertire un descrittore di sicurezza binaria in un'istanza di Win32_SecurityDescriptor, che può essere modificata più facilmente. Per altre informazioni, vedere Modifica della sicurezza di accesso in oggetti a protezione diretta.

Controllo di accesso e oggetti di sicurezza WMI

Di seguito è riportato un elenco di oggetti di sicurezza WMI:

Il diagramma seguente illustra le relazioni tra gli oggetti di sicurezza WMI.

relazioni tra gli oggetti di sicurezza wmi

Per altre informazioni sul ruolo della sicurezza di accesso, vedere Procedure consigliate per la sicurezza, Gestione della sicurezza WMI e Controllo di accesso.

oggetto Win32_SecurityDescriptor

Nella tabella seguente sono elencate le proprietà della classe Win32_SecurityDescriptor .

Proprietà Descrizione
ControlFlags Set di bit di controllo che qualificano il significato di un sd o dei singoli membri. Per altre informazioni sull'impostazione dei valori di bit ControlFlags , vedere Win32_SecurityDescriptor.
DACL Facoltativo Controllo di accesso Elenco di utenti e gruppi e diritti di accesso a un oggetto protetto. Questa proprietà contiene una matrice di istanze di Win32_ACE che rappresentano Controllo di accesso voci. Per altre informazioni, vedere Creazione di un elenco dati.
Gruppo Gruppo a cui appartiene questo oggetto protetto. Questa proprietà contiene un'istanza di Win32_Trustee contenente il nome, il dominio e l'identificatore di sicurezza del gruppo a cui appartiene il proprietario.
Proprietario Proprietario di questo oggetto protetto. Questa proprietà contiene un'istanza di Win32_Trustee contenente il nome, il dominio e l'identificatore di sicurezza del proprietario.
SACL System Controllo di accesso List (ACL) contiene una matrice di istanze Win32_ACE che rappresentano il tipo di tentativi di accesso che generano record di controllo per utenti o gruppi. Per altre informazioni, vedere SACL per un nuovo oggetto.

DACL e SACL

Le matrici di oggetti Win32_ACE nell'elenco di controllo di accesso discrezionale (DACL) e nell'elenco di controllo di accesso del sistema {SACL) creano un collegamento tra un utente o un gruppo e i diritti di accesso.

Quando una proprietà DACL non contiene una voce di controllo di accesso (ACE), i diritti di accesso non vengono concessi e l'accesso all'oggetto viene negato.

Nota

Un DACL NULL consente l'accesso completo a tutti, ovvero un rischio di sicurezza grave. Per altre informazioni, vedere Creazione di un elenco dati.

Win32_ACE, Win32_Trustee, Win32_SID

Un oggetto Win32_ACE contiene un'istanza della classe Win32_Trustee che identifica un utente o un gruppo e una proprietà AccessMask che è una maschera bit, che specifica le azioni che un utente o un gruppo possono eseguire. Ad esempio, un utente o un gruppo può essere concesso il diritto di leggere un file ma non scrivere nel file. Un oggetto Win32_ACE contiene anche un ACE che indica se è un accesso consentito o negato.

Nota

L'ordine di Win32_ACE in un daCL è importante perché sia consenti che negano la voce di controllo di accesso (ACE) sono consentiti in un'interfaccia di controllo dati. Per altre informazioni, vedere Order of ACEs in a DACL.For more information, see Order of ACEs in a DACL.

Ogni account utente o gruppo rappresentato da un Win32_Trustee ha un identificatore di sicurezza (SID) che identifica in modo univoco un account e specifica i privilegi di accesso dell'account. Il modo in cui si specificano i dati SID dipende dal sistema operativo. Per altre informazioni, vedere Modifica della sicurezza di accesso in oggetti a protezione diretta.

Il diagramma seguente mostra il contenuto di un'istanza di Win32_ACE .

contenuto di un'istanza win32-ace

Esempio: Verifica dell'accesso alle stampanti

Nell'esempio di codice VBScript seguente viene illustrato come usare il descrittore di sicurezza della stampante. Lo script chiama il metodo GetSecurityDescriptor nella classe Win32_Printer per ottenere il descrittore, quindi determina se nel descrittore di sicurezza è presente un Controllo di accesso Discrezionale Controllo di accesso List (DACL). Se è presente un'interfaccia di controllo livello dati, lo script ottiene l'elenco di voci Controllo di accesso (ACE) dall'elenco di controllo dei dati. Ogni ACE è rappresentato da un'istanza di Win32_ACE. Lo script controlla ogni ACE per ottenere il nome dell'utente e determinare se l'utente ha accesso alla stampante. L'utente è rappresentato da un'istanza di Win32_Trustee incorporata nell'istanza di 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

Modifica della sicurezza di accesso in oggetti a protezione diretta

Classe helper del descrittore di sicurezza

Procedure consigliate per la sicurezza

Gestione della sicurezza WMI

Controllo dell’accesso

Accesso agli spazi dei nomi WMI