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:
- In descrittori di sicurezza identificare il proprietario di un oggetto e di un gruppo primario
- In voci di controllo di accesso, per identificare il trustee per cui l'accesso è consentito, negato o controllato
- In token di accessoper 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 di sid noti possono variare, è consigliabile 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 lavorare con 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 verificare l'uguaglianza. Un prefisso SID è l'intero SID ad eccezione dell'ultimo valore di sottoautorità. |
EqualSid | Verifica due SID per verificare l'uguaglianza. Devono corrispondere esattamente per essere considerati uguali. |
FreeSid | Libera un SID allocato in precedenza usando la funzioneallocateAndInitializeSid. |
GetLengthSid | Recupera la lunghezza di un SID. |
GetSidIdentifierAuthority | Recupera un puntatore all'autorità di identificatore per un SID. |
GetSidLengthRequired | Recupera le dimensioni del buffer necessario 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 diSID. |
IsValidSid | Verifica la validità di un SID verificando che il numero di revisione sia compreso in un intervallo noto e che il numero di sottoautorità sia minore del valore massimo. |
LookupAccountName | Recupera il SID che corrisponde a un nome di account specificato. |
LookupAccountSid | Recupera il nome dell'account corrispondente a un SID specificato. |