보안 식별자
SID( 보안 식별자 )는 트러스티를 식별하는 데 사용되는 가변 길이의 고유한 값입니다. 각 계정에는 Windows 도메인 컨트롤러와 같은 기관에서 발급하고 보안 데이터베이스에 저장된 고유한 SID가 있습니다. 사용자가 로그온할 때마다 시스템은 데이터베이스에서 해당 사용자의 SID를 검색하고 해당 사용자의 액세스 토큰 에 배치합니다. 시스템은 액세스 토큰의 SID를 사용하여 Windows 보안과의 모든 후속 상호 작용에서 사용자를 식별합니다. SID가 사용자 또는 그룹의 고유 식별자로 사용된 경우 다른 사용자 또는 그룹을 식별하는 데 다시 사용할 수 없습니다.
Windows 보안은 다음 보안 요소에서 SID를 사용합니다.
- 보안 설명자에서 개체 및 기본 그룹의 소유자를 식별합니다.
- 액세스 제어 항목에서 액세스가 허용, 거부 또는 감사되는 트러스티를 식별합니다.
- 액세스 토큰에서 사용자가 속한 사용자 및 그룹을 식별합니다.
특정 사용자 및 그룹에 할당된 고유하게 생성된 도메인별 SID 외에도 제네릭 그룹 및 일반 사용자를 식별하는 잘 알려진 SID 가 있습니다. 예를 들어 잘 알려진 SID인 Everyone and World는 모든 사용자를 포함하는 그룹을 식별합니다.
대부분의 애플리케이션은 SID로 작업할 필요가 없습니다. 잘 알려진 SID의 이름은 다를 수 있으므로 함수를 사용하여 잘 알려진 SID의 이름을 사용하는 대신 미리 정의된 상수에서 SID를 빌드해야 합니다. 예를 들어 미국 영어 버전의 Windows 운영 체제에는 "BUILTIN\Administrators"라는 잘 알려진 SID가 있으며, 이 SID는 국제 버전의 시스템에서 다른 이름을 가질 수 있습니다. 잘 알려진 SID를 빌드하는 예제는 C++의 액세스 토큰에서 SID 검색을 참조하세요.
SID를 사용해야 하는 경우 직접 조작하지 마세요. 대신 다음 함수를 사용합니다.
함수 | Description |
---|---|
AllocateAndInitializeSid | 지정된 수의 하위 권한이 있는 SID를 할당하고 초기화합니다. |
ConvertSidToStringSid | SID를 표시, 스토리지 또는 전송에 적합한 문자열 형식으로 변환합니다. |
ConvertStringSidToSid | 문자열 형식 SID를 유효한 기능 SID로 변환합니다. |
CopySid | 원본 SID를 버퍼에 복사합니다. |
EqualPrefixSid | 두 SID 접두사 값이 같은지 테스트합니다. SID 접두사는 마지막 하위 인증 값을 제외한 전체 SID입니다. |
EqualSid | 두 SID가 같은지 테스트합니다. 동일하게 간주되려면 정확히 일치해야 합니다. |
FreeSid | AllocateAndInitializeSid 함수를 사용하여 이전에 할당된 SID를 해제합니다. |
GetLengthSid | SID의 길이를 검색합니다. |
GetSidIdentifierAuthority | SID에 대한 식별자 권한에 대한 포인터를 검색합니다. |
GetSidLengthRequired | 지정된 수의 하위 권한이 있는 SID를 저장하는 데 필요한 버퍼의 크기를 검색합니다. |
GetSidSubAuthority | SID에서 지정된 하위 인증에 대한 포인터를 검색합니다. |
GetSidSubAuthorityCount | SID의 하위 인증 수를 검색합니다. |
InitializeSid | SID 구조를 초기화합니다. |
IsValidSid | 수정 번호가 알려진 범위 내에 있고 하위 인증 수가 최댓값보다 작은지 확인하여 SID의 유효성을 테스트합니다. |
LookupAccountName | 지정된 계정 이름에 해당하는 SID를 검색합니다. |
LookupAccountSid | 지정된 SID에 해당하는 계정 이름을 검색합니다. |