액세스 토큰
액세스 토큰은 프로세스 또는 스레드의 보안 컨텍스트를 설명하는 개체입니다. 토큰의 정보에는 프로세스 또는 스레드와 연결된 사용자 계정의 ID 및 권한이 포함됩니다. 사용자가 로그온하면 시스템은 보안 데이터베이스에 저장된 정보와 비교하여 사용자의 암호를 확인합니다. 암호가 인증되면 시스템에서 액세스 토큰을 생성합니다. 이 사용자를 대신하여 실행되는 모든 프로세스에는 이 액세스 토큰의 복사본이 있습니다.
시스템은 액세스 토큰을 사용하여 스레드가 보안 개체 와 상호 작용하거나 권한이 필요한 시스템 작업을 수행하려고 할 때 사용자를 식별합니다. 액세스 토큰에는 다음 정보가 포함됩니다.
- 사용자 계정에 대한 SID( 보안 식별자 )
- 사용자가 멤버인 그룹의 SID
- 현재 로그온세션을 식별하는 로그온 SID
- 사용자 또는 사용자 그룹이 보유한 권한 목록
- 소유자 SID
- 기본 그룹의 SID
- 사용자가 보안 설명자를 지정하지 않고 보안 개체를 만들 때 시스템에서 사용하는 기본 DACL
- 액세스 토큰의 원본
- 토큰이 기본 토큰인지 가장 토큰인지 여부
- SID 제한의 선택적 목록
- 현재 가장 수준
- 기타 통계
모든 프로세스에는 프로세스와 연결된 사용자 계정의 보안 컨텍스트를 설명하는 기본 토큰이 있습니다. 기본적으로 프로세스의 스레드가 보안 개체와 상호 작용할 때 시스템은 기본 토큰을 사용합니다. 또한 스레드는 클라이언트 계정을 가장할 수 있습니다. 가장을 사용하면 스레드가 클라이언트의 보안 컨텍스트를 사용하여 보안 개체와 상호 작용할 수 있습니다. 클라이언트를 가장하는 스레드에는 기본 토큰과 가장 토큰이 모두 있습니다.
OpenProcessToken 함수를 사용하여 프로세스의 기본 토큰에 대한 핸들을 검색합니다. OpenThreadToken 함수를 사용하여 스레드의 가장 토큰에 대한 핸들을 검색합니다. 자세한 내용은 가장을 참조 하세요.
다음 함수를 사용하여 액세스 토큰을 조작할 수 있습니다.
함수 | Description |
---|---|
AdjustTokenGroups | 액세스 토큰의 그룹 정보를 변경합니다. |
AdjustTokenPrivileges | 액세스 토큰에서 권한을 사용하거나 사용하지 않도록 설정합니다. 새 권한을 부여하거나 기존 권한을 취소하지 않습니다. |
CheckTokenMembership | 지정된 액세스 토큰에서 지정된 SID를 사용할 수 있는지 여부를 결정합니다. |
CreateRestrictedToken | 기존 토큰의 제한된 버전인 새 토큰을 만듭니다. 제한된 토큰에는 비활성화된 SID, 삭제된 권한 및 제한된 SID 목록이 있을 수 있습니다. |
DuplicateToken | 기존 토큰을 복제하는 새 가장 토큰을 만듭니다. |
DuplicateTokenEx | 기존 토큰을 복제하는 새 기본 토큰 또는 가장 토큰을 만듭니다. |
GetTokenInformation | 토큰에 대한 정보를 검색합니다. |
IsTokenRestricted | 토큰에 제한 SID 목록이 있는지 여부를 확인합니다. |
OpenProcessToken | 프로세스에 대한 기본 액세스 토큰에 대한 핸들을 검색합니다. |
OpenThreadToken | 스레드에 대한 가장 액세스 토큰에 대한 핸들을 검색합니다. |
SetThreadToken | 스레드에 대한 가장 토큰을 할당하거나 제거합니다. |
SetTokenInformation | 토큰의 소유자, 기본 그룹 또는 기본 DACL을 변경합니다. |
액세스 토큰 함수는 다음 구조를 사용하여 액세스 토큰의 부분을 설명합니다.
구조체 | 설명 |
---|---|
TOKEN_CONTROL | 액세스 토큰을 식별하는 정보입니다. |
TOKEN_DEFAULT_DACL | 시스템이 스레드에서 만든 새 개체의 보안 설명자에 사용하는 기본 DACL입니다. |
TOKEN_GROUPS | 액세스 토큰에서 그룹 SID의 SID 및 특성을 지정합니다. |
TOKEN_OWNER | 새 개체의 보안 설명자에 대한 기본 소유자 SID입니다. |
TOKEN_PRIMARY_GROUP | 새 개체의 보안 설명자에 대한 기본 기본 그룹 SID입니다. |
TOKEN_PRIVILEGES | 액세스 토큰과 연결된 권한입니다. 또한 권한의 사용 여부도 결정합니다. |
TOKEN_SOURCE | 액세스 토큰의 원본입니다. |
TOKEN_STATISTICS | 액세스 토큰과 연결된 통계입니다. |
TOKEN_USER | 액세스 토큰과 연결된 사용자의 SID입니다. |
액세스 토큰 함수는 다음 열거형 형식을 사용합니다.
열거형 형식 | 설명 |
---|---|
TOKEN_INFORMATION_CLASS | 액세스 토큰에서 설정되거나 검색되는 정보의 유형을 식별합니다. |
TOKEN_TYPE | 액세스 토큰을 기본 또는 가장 토큰으로 식별합니다. |