보안 식별자

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에 해당하는 계정 이름을 검색합니다.