SDDL per oggetti dispositivo
Il linguaggio di definizione del descrittore di sicurezza (SDDL) viene usato per rappresentare i descrittori di sicurezza. La sicurezza per gli oggetti dispositivo può essere specificata da una stringa SDDL posizionata in un file INF o passata a IoCreateDeviceSecure. Il linguaggio di definizione del descrittore di sicurezza è completamente documentato nella documentazione di Microsoft Windows SDK.
Anche se i file INF supportano la gamma completa di SDDL, solo un subset della lingua è supportato dalla routine IoCreateDeviceSecure . Questo subset è definito qui.
Le stringhe SDDL per gli oggetti dispositivo sono del formato "D:P" seguite da una o più espressioni del modulo "(A;; Access;;; SID)". Il valore SID specifica un identificatore di sicurezza che determina a chi si applica il valore di Access , ad esempio un utente o un gruppo. Il valore Access specifica i diritti di accesso consentiti per il SID. I valori Access e SID sono i seguenti.
Nota Quando si usa SDDL per gli oggetti dispositivo, il driver deve collegarsi a Wdmsec.lib.
Accesso
Specifica un valore ACCESS_MASK che determina l'accesso consentito. Questo valore può essere scritto come valore esadecimale nel formato "esadecimale" o come sequenza di codici simbolici a due lettere che rappresentano i diritti di accesso.
I codici seguenti possono essere usati per specificare diritti di accesso generici.
Codice | Diritto di accesso generico |
---|---|
GA |
GENERIC_ALL |
GR |
GENERIC_READ |
GW |
GENERIC_WRITE |
GX |
GENERIC_EXECUTE |
I codici seguenti possono essere usati per specificare diritti di accesso specifici.
Codice | Diritto di accesso specifico |
---|---|
RC |
READ_CONTROL |
DS |
DELETE |
WD |
WRITE_DAC |
WO |
WRITE_OWNER |
Si noti che GENERIC_ALL concede tutti i diritti elencati nelle due tabelle precedenti, inclusa la possibilità di modificare l'ACL.
SID
Specifica il SID concesso all'accesso specificato. I SID rappresentano account, alias, gruppi, utenti o computer.
I SID seguenti rappresentano gli account nel computer.
SID | Descrizione |
---|---|
SY |
Sistema Rappresenta il sistema operativo stesso, inclusi i componenti in modalità utente. |
LS |
Servizio locale Un account predefinito per i servizi locali (che appartiene anche a Authenticationd and World). Questo SID è disponibile a partire da Windows XP. |
NS |
Servizio di rete Un account predefinito per i servizi di rete (che appartiene anche a Authenticationd and World). Questo SID è disponibile a partire da Windows XP. |
I SID seguenti rappresentano i gruppi nel computer.
SID | Descrizione |
---|---|
BA |
Administrators Gruppo Administrators predefinito nel computer. |
BU |
Gruppo utenti predefinito Gruppo che copre tutti gli account utente locali e gli utenti nel dominio. |
BG |
Gruppo guest predefinito Gruppo che copre l'accesso degli utenti usando l'account guest locale o di dominio. |
I SID seguenti descrivono l'entità in cui è stato autenticato un utente.
SID | Descrizione |
---|---|
AU |
Utenti autenticati Qualsiasi utente riconosciuto dal computer locale o da un dominio. Si noti che gli utenti hanno eseguito l'accesso usando l'account Guest Builtin non sono autenticati. Tuttavia, i membri del gruppo Guest con singoli account nel computer o il dominio vengono autenticati. |
AN |
Utente connesso anonimo Qualsiasi utente connesso senza identità, ad esempio una sessione di rete anonima. Si noti che gli utenti che accedono con l'account Builtin Guest non sono autenticati né anonimi. Questo SID è disponibile a partire da Windows XP. |
I SID seguenti descrivono come l'utente ha eseguito l'accesso al computer.
SID | Descrizione |
---|---|
UI |
Utenti interattivi Gli utenti che inizialmente hanno eseguito l'accesso al computer "interattivamente", ad esempio i logon locali e i logon desktop remoti. |
NU |
Utente di accesso alla rete Gli utenti che accedono al computer in remoto, senza accesso desktop interattivo (ad esempio, condivisione file o chiamate RPC). |
WD |
World Prima di Windows XP, questo SID ha coperto ogni sessione, sia che gli utenti autenticati, gli utenti anonimi o l'account Guest Builtin. A partire da Windows XP, questo SID non copre sessioni di accesso anonime; copre solo gli utenti autenticati e l'account Builtin Guest. Si noti che il codice non attendibile o "limitato" non è coperto anche dal SID mondiale. Per altre informazioni, vedere la descrizione del SID (RC) Restricted Code (RC) nella tabella seguente. |
I SID seguenti meritano una menzione speciale.
SID | Descrizione |
---|---|
RC |
Codice con restrizioni Questo SID viene usato per controllare l'accesso tramite codice non attendibile. La convalida ACL rispetto ai token con RC è costituita da due controlli, uno rispetto all'elenco normale di SID (contenente WD per esempio) e uno rispetto a un secondo elenco (in genere contenente RC e un subset dei SID del token originale). L'accesso viene concesso solo se un token supera entrambi i test. Di conseguenza, RC funziona effettivamente in combinazione con altri SID. Qualsiasi ACL che specifica RC deve specificare anche WD. Quando RC è associato a WD in un ACL, viene descritto un superset di Tutti, incluso il codice non attendibile. Il codice non attendibile potrebbe essere avviato usando l'opzione RunAs in Esplora risorse. Per impostazione predefinita, World non copre il codice non attendibile. |
UD |
driver User-Mode Questo SID concede l'accesso ai driver in modalità utente. Attualmente, questo SID copre solo i driver scritti per User-Mode Driver Framework (UMDF). Questo SID è disponibile a partire da Windows 8. Nelle versioni precedenti di Windows, che non riconoscono l'abbreviazione "UD", è necessario specificare la forma completa di questo SID (S-1-5-84-0-0-0-0-0) per concedere l'accesso ai driver UMDF. Per altre informazioni, vedere Controllo dell'accesso ai dispositivi nella documentazione User-Mode Driver Framework. |
Esempi DI SDDL per oggetti dispositivo
Questa sezione descrive le stringhe SDDL predefinite trovate in Wdmsec.h. È anche possibile usare questi modelli come modelli per definire nuove stringhe SDDL per gli oggetti dispositivo.
SDDL_DEVOBJ_KERNEL_ONLY
"D:P"
SDDL_DEVOBJ_KERNEL_ONLY è l'ACL "vuoto". Il codice in modalità utente (inclusi i processi in esecuzione come sistema) non può aprire il dispositivo.
Un driver del bus PnP può usare questo descrittore durante la creazione di un oggetto PDO. Il file INF potrebbe quindi specificare impostazioni di sicurezza più sicure per il dispositivo. Specificando questo descrittore, il driver del bus garantisce che non venga eseguito alcun tentativo di aprire il dispositivo prima dell'elaborazione di INF.
Analogamente, un driver non WDM potrebbe usare questo descrittore per rendere inaccessibili i relativi oggetti dispositivo fino a quando il programma in modalità utente appropriato (ad esempio un programma di installazione) imposta il descrittore di sicurezza finale nel Registro di sistema.
In tutti questi casi, l'impostazione predefinita è stretta sicurezza, liberata in base alle esigenze.
SDDL_DEVOBJ_SYS_ALL
"D:P(A;; GA;;; SY)"
SDDL_DEVOBJ_SYS_ALL è simile a SDDL_DEVOBJ_KERNEL_ONLY, ad eccezione del fatto che, oltre al codice in modalità kernel, il codice in modalità utente in esecuzione come System è anche consentito aprire il dispositivo per qualsiasi accesso.
Un driver legacy può usare questo elenco di controllo di accesso per iniziare con impostazioni di sicurezza strette e consentire al suo servizio di aprire il dispositivo in fase di esecuzione a singoli utenti usando la funzione Modalità utente SetFileSecurity . In questo caso, il servizio deve essere in esecuzione come Sistema.
SDDL_DEVOBJ_SYS_ALL_ADM_ALL
"D:P(A;; GA;;; SY)(A;; GA;;; BA)"
SDDL_DEVOBJ_SYS_ALL_ADM_ALL consente al kernel, al sistema e all'amministratore di completare il controllo sul dispositivo. Nessun altro utente può accedere al dispositivo.
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 consente al kernel e al sistema di controllare completamente il dispositivo. Per impostazione predefinita, l'amministratore può accedere all'intero dispositivo, ma non può modificare l'ACL (l'amministratore deve controllare prima il dispositivo).
Tutti (il SID mondiale) hanno accesso in lettura. Il codice non attendibile non può accedere al dispositivo (il codice non attendibile potrebbe essere avviato usando l'opzione RunAs in Explorer. Per impostazione predefinita, World non copre il codice con restrizioni.
Si noti anche che l'accesso incrociato non viene concesso agli utenti normali. Di conseguenza, potrebbe non essere un descrittore appropriato per un dispositivo con uno spazio dei nomi.
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 consente al kernel e al sistema di controllare completamente il dispositivo. Per impostazione predefinita, l'amministratore può accedere all'intero dispositivo, ma non può modificare l'ACL (l'amministratore deve controllare prima il dispositivo).
Tutti (il SID mondiale) hanno accesso in lettura. Inoltre, il codice non attendibile è anche consentito per accedere al codice. Il codice non attendibile potrebbe essere avviato usando l'opzione RunAs in Esplora risorse. Per impostazione predefinita, World non copre il codice con restrizioni.
Si noti anche che l'accesso incrociato non viene concesso agli utenti normali. Di conseguenza, potrebbe non essere un descrittore appropriato per un dispositivo con uno spazio dei nomi.
Si noti che le stringhe SDDL precedenti non includono alcun modificatori di ereditarietà. Di conseguenza, sono appropriati solo per gli oggetti del dispositivo e non devono essere usati per i file o le chiavi del Registro di sistema. Per altre informazioni sulla specifica dell'ereditarietà tramite SDDL, vedere la documentazione di Microsoft Windows SDK.