Přístupové tokeny
Přístupový token je objekt, který popisuje kontext zabezpečení procesu nebo vlákna. Informace v tokenu zahrnují identitu a oprávnění uživatelského účtu přidruženého k procesu nebo vláknu. Když se uživatel přihlásí, systém ověří heslo uživatele tím, že ho porovná s informacemi uloženými v databázi zabezpečení. Pokud je heslo ověřené, systém vytvoří přístupový token. Každý proces spuštěný jménem tohoto uživatele má kopii tohoto přístupového tokenu.
Systém používá přístupový token k identifikaci uživatele, když vlákno komunikuje s zabezpečitelným objektem nebo se pokusí provést systémovou úlohu, která vyžaduje oprávnění. Přístupové tokeny obsahují následující informace:
- Identifikátor zabezpečení (SID) pro účet uživatele
- IDENTIFIKÁTORY SID pro skupiny, jejichž je uživatel členem
- Identifikátor SID přihlášení, který identifikuje aktuální přihlašovací relaci
- Seznam oprávnění uchovávané uživatelem nebo skupinami uživatele
- Identifikátor SID vlastníka
- Identifikátor SID pro primární skupinu
- Výchozí seznam DACL, který systém používá, když uživatel vytvoří zabezpečitelný objekt bez zadání popisovače zabezpečení
- Zdroj přístupového tokenu
- Jestli je token primárním nebo tokenem zosobnění
- Volitelný seznam omezení identifikátorů SID
- Aktuální úrovně zosobnění
- Další statistiky
Každý proces má primární token, který popisuje kontext zabezpečení uživatelského účtu přidruženého k procesu. Ve výchozím nastavení systém používá primární token, když vlákno procesu komunikuje se zabezpečitelným objektem. Vlákno navíc může zosobnit klientský účet. Zosobnění umožňuje vláknu pracovat se zabezpečitelnými objekty pomocí kontextu zabezpečení klienta. Vlákno, které zosobní klienta, má primární token i token zosobnění.
Pomocí funkce OpenProcessToken načtěte popisovač primárního tokenu procesu. Pomocí funkce OpenThreadToken načtěte popisovač tokenu zosobnění vlákna. Další informace najdete v tématu zosobnění.
K manipulaci s přístupovými tokeny můžete použít následující funkce.
Funkce | Popis |
---|---|
AdjustTokenGroups | Změní informace o skupině v přístupovém tokenu. |
AdjustTokenPrivileges | Povolí nebo zakáže oprávnění v přístupovém tokenu. Neuděluje nová oprávnění ani neodvolá stávající oprávnění. |
CheckTokenMembership | Určuje, jestli je v zadaném přístupovém tokenu povolená zadaná identifikátor SID. |
CreateRestrictedToken | Vytvoří nový token, který je omezená verze existujícího tokenu. Omezený token může obsahovat zakázané IDENTIFIKÁTORy SID, odstraněná oprávnění a seznam omezených identifikátorů SID. |
duplicateToken | Vytvoří nový token zosobnění, který duplikuje existující token. |
DuplicateTokenEx | Vytvoří nový primární token nebo token zosobnění, který duplikuje existující token. |
GetTokenInformation | Načte informace o tokenu. |
IsTokenRestricted | Určuje, jestli má token seznam omezení identifikátorů SID. |
OpenProcessToken | Načte popisovač primárního přístupového tokenu procesu. |
OpenThreadToken | Načte popisovač přístupového tokenu zosobnění pro vlákno. |
SetThreadToken | Přiřadí nebo odebere token zosobnění pro vlákno. |
SetTokenInformation | Změní vlastníka tokenu, primární skupinu nebo výchozí seznam DACL. |
Funkce přístupového tokenu používají následující struktury k popisu částí přístupového tokenu.
Struktura | Popis |
---|---|
TOKEN_CONTROL | Informace, které identifikují přístupový token |
TOKEN_DEFAULT_DACL | Výchozí seznam DACL, který systém používá v popisovačích zabezpečení nových objektů vytvořených vláknem. |
TOKEN_GROUPS | Určuje identifikátory SID a atributy identifikátorů SID skupin v přístupovém tokenu. |
TOKEN_OWNER | Výchozí identifikátor SID vlastníka pro popisovače zabezpečení nových objektů. |
TOKEN_PRIMARY_GROUP | Výchozí identifikátor SID primární skupiny pro popisovače zabezpečení nových objektů. |
TOKEN_PRIVILEGES | Oprávnění přidružená k přístupovém tokenu. Určuje také, jestli jsou oprávnění povolená. |
TOKEN_SOURCE | Zdroj přístupového tokenu. |
TOKEN_STATISTICS | Statistiky přidružené k přístupovým tokenům |
TOKEN_USER | Identifikátor SID uživatele přidruženého k přístupovém tokenu. |
Funkce přístupového tokenu používají následující typy výčtu.
Typ výčtu | Specifikuje |
---|---|
TOKEN_INFORMATION_CLASS | Určuje typ informací, které se nastavují nebo načítají z přístupového tokenu. |
TOKEN_TYPE | Identifikuje přístupový token jako primární token nebo token zosobnění. |