Identificatori di sicurezza
Un identificatore di sicurezza (SID) è un valore univoco di lunghezza variabile usato per identificare un trustee. Ogni account ha un SID univoco emesso da un'autorità, ad esempio un controller di dominio Windows, e archiviato in un database di sicurezza. Ogni volta che un utente accede, il sistema recupera il SID per tale utente dal database e lo inserisce nel token di accesso per tale utente. Il sistema usa il SID nel token di accesso per identificare l'utente in tutte le interazioni successive con la sicurezza di Windows. Quando un SID è stato usato come identificatore univoco per un utente o un gruppo, non può mai essere usato di nuovo per identificare un altro utente o gruppo.
La sicurezza di Windows usa i SID negli elementi di sicurezza seguenti:
- Nei descrittori di sicurezza per identificare il proprietario di un oggetto e di un gruppo primario
- Nelle voci di controllo di accesso, per identificare il trustee per il quale l'accesso è consentito, negato o controllato
- Nei token di accesso, per identificare l'utente e i gruppi a cui appartiene l'utente
Oltre ai SID specifici del dominio assegnati a utenti e gruppi specifici in modo univoco, esistono SID noti che identificano gruppi generici e utenti generici. Ad esempio, i SID noti, Everyone e World, identificano un gruppo che include tutti gli utenti.
La maggior parte delle applicazioni non deve mai usare i SID. Poiché i nomi dei SID noti possono variare, è necessario usare le funzioni per compilare il SID da costanti predefinite anziché usare il nome del SID noto. Ad esempio, la versione inglese degli Stati Uniti del sistema operativo Windows ha un SID noto denominato "BUILTIN\Administrators" che potrebbe avere un nome diverso nelle versioni internazionali del sistema. Per un esempio che compila un SID noto, vedere Ricerca di un SID in un token di accesso in C++.
Se è necessario usare i SID, non modificarli direttamente. Usare invece le funzioni seguenti.
Funzione | Descrizione |
---|---|
AllocateAndInitializeSid | Alloca e inizializza un SID con il numero specificato di sottoautorità. |
ConvertSidToStringSid | Converte un SID in un formato stringa adatto per la visualizzazione, l'archiviazione o il trasporto. |
ConvertStringSidToSid | Converte un SID in formato stringa in un SID funzionale valido. |
CopySid | Copia un SID di origine in un buffer. |
EqualPrefixSid | Verifica due valori di prefisso SID per verificarne l'uguaglianza. Un prefisso SID è l'intero SID, ad eccezione dell'ultimo valore di sottoautorità. |
EqualSid | Verifica due SID per verificarne l'uguaglianza. Devono corrispondere esattamente a essere considerati uguali. |
FreeSid | Libera un SID allocato in precedenza usando la funzione AllocateAndInitializeSid . |
GetLengthSid | Recupera la lunghezza di un SID. |
GetSidIdentifierAuthority | Recupera un puntatore all'autorità di identificatore per un SID. |
GetSidLengthRequired | Recupera le dimensioni del buffer necessarie per archiviare un SID con un numero specificato di sottoautorità. |
GetSidSubAuthority | Recupera un puntatore a una sottoautorità specificata in un SID. |
GetSidSubAuthorityCount | Recupera il numero di sottoautorità in un SID. |
InitializeSid | Inizializza una struttura SID . |
IsValidSid | Verifica la validità di un SID verificando che il numero di revisione si trova all'interno di un intervallo noto e che il numero di sottoautorità sia minore del valore massimo. |
Lookupaccountname | Recupera il SID corrispondente a un nome di account specificato. |
Lookupaccountsid | Recupera il nome dell'account corrispondente a un SID specificato. |