윈도우 보안 식별자 (SID Security identifiers)의 구조와, 잘 알려진 SID

윈도우 OS의 보안 식별자(SID : Security identifiers)의 용도와 구조, 흔히 사용되는 주요 SID의 목록 및, SID를 조회할 수 있는 whoami 에 대해 간단히 정리한 글

다중 사용자용 운영 체계 윈도우

윈도우에는 내 계정만 있는게 아니다.

윈도우는 기본적으로 다중 사용자 환경에서 동작하도록 설계된 OS이다. 나 혼자 쓰는 PC인데 무슨 말이냐고 반문하는 독자들 있겠으나 한번 생각해 보자. 정말 나 혼자 쓰는 PC라고 하면, 왜 컴퓨터를 켜고 나서 ID와 암호를 입력하는 로그온 절차를 진행해야 할까? 새로운 프로그램을 설치할때 가끔씩 나타나는 '사용자 계정 컨트롤'창과, 굳이 별도의 매뉴로 존재하는 '관리자 권한으로 실행'이라는 항목은 왜 존재하는 걸까? 단일 사용자용 OS라고 한다면, 이런 것들이 존재 할 이유가 없지 않은가?

윈도우 사용자 계정 컨트롤 화면 - 이 앱이 디바이스를 변경하도록 허용 하시겠습니까
굳이 권한 허용에 대해 묻는 이유는?
프로그램 실행 매뉴 열기, 파일 위치열기에 이어 관리자 모드로 실행 옵션이 있다.
관리자 권한으로 실행이 있는 이유는?

실제로, 제어판의 컴퓨터 관리창이나, 파워셀의 Get-LocalUser 명령을 통해 확인해 보면, 내가 생성하지 않은 사용자 계정(ID)들이 존재 하고 있음을 알 수 있다.

제어판 컴퓨터 관리에서 보이는 로컬 사용자 및 그룹에 여러 사용자 계정이 표시되고 있다
로컬 사용자 계정 목록

윈도우가 사용자를 구분하는 방법

윈도우를 설치하며 계정을 생성할 때, 사용자는 ID와 암호를 생성한다. 이때 윈도우는 생성된 계정에 '고유ID'를 할당해 준다. 이 고유ID는 순차적인 것이 아닌, 완전히 무작위로 생성된 일련의 문자 열이다.

만약 사용자가 antena라는 ID의 계정을 새로 생성했다고 하자. 그럼 윈도우는 이 계정에 대한 고유ID를 생성한다. 그리고 antena계정을 삭제 한 다음, 똑같이 antena라는 ID의 계정을 다시 생성했다고 하자. 그럼 윈도우는 새롭게 만들어진 antena계정에 대해 새로운 고유ID를 생성한다. 그리고 그 고유ID는 이전의 것과 다른 ID가 생성된다. 즉, 사용자가 사용하는 ID만 놓고 보면 같게 보여도, 실제로는 새롭게 생성된 다른 계정이 된다는 뜻이다.

반대의 경우로, 만약 ID를 변경했다고 하더라도 고유ID는 변경되지 않는다. 사용자에게는 다른 계정처럼 느껴지겠으나, 윈도우 입장에서는 여전히 동일한 계정인 것이다

컴퓨터 관리에 여러가지 사용자 그룹들이 표시 되고 있다
사용자 그룹 목록

이러한 고유ID는 사용자 계정에만 존재하는 것은 아니다. 사용자 그룹과 같이, 윈도우 내에서 보안에 관련된 주체에는 이러한 고유ID가 할당 된다. 이 고유ID를 보안 식별자 (SID : Security identifiers)라고 한다. 이 SID를 통해 컴퓨터는 어떤 사용자(또는 동작을 진행하는 서비스등)이 가지고 있는 권한을 구분한다.

SID의 구조

SID는 아래와 같이 S로 시작하는 숫자들로 구성되어 있다.

S-1-5-21-1004336348-1177238915-682003330-512

어? 이거 어디선가 본건데? 하는 독자 제위들 있을것이다. 맞다. 보안관련 정책 문제가 발생하면 이벤트 뷰어에서 허구헌날 보이는 이상한 문자열이 바로 이것이다. 각각의 자리는 다음과 같은 의미를 가진다

SID의 구성
S 문자열이 SID임을 표시
1 SID 버전
5 SID의 식별자 기관
21-1004336348-1177238915-682003330 도메인 식별자
512 상대 식별자(RID : Relative Identifier)

SID의 제일 앞에 위치하는 S는, 이 문자열이 SID인 것을 나타낸다. 그 다음으로는 SID의 버전이 표시된다. 여기까지는 대부분 바뀔 일이 없이 공통으로 사용 된다.

식별자 기관(Identifier Authority)

SID 식별자 기관 목록
S-1-0 NULL_SID_AUTHORITY (NULL)
S-1-1 WORLD_SID_AUTHORITY (모든 사용자)
S-1-2 LOCAL_SID_AUTHORITYSID (로컬 시스템)
S-1-3 CREATOR_SID_AUTHORITY (개체 생성자)
S-1-5 SECURITY_NT_AUTHORITY (NT 권한)
S-1-15 SECURITY_APP_PACKAGE_AUTHORITY (어플리케이션 권한)
S-1-16 SECURITY_MANDATORY_LABEL_AUTHORITY (무결성)
S-1-17 SCOPED_POLICY_ID_AUTHORITY (특정 보안 정책)
S-1-18 SECURITY_AUTHENTICATION_AUTHORITY (인증)

SID 버전에 이어, 식별자 기관(Identifier Authority)이 이어진다. 식별자 기관이란, 각 SID가 속해있는 가장 최상위 보안 제공자를 의미한다. SID를 만든 주체라고 생각해도 되겠다. 우리는 윈도우를 사용하고 있기 때문에, 볼 수 있는 대부분의 식별자 기관은 5 (SECURITY_NT_AUTHORITY)일 것이다.

NT_AUTHORITY의 주요 SID

윈도우 시스템 (NT)은, 자신의 아래에 필요한 여러 권한들을 구성한다. 이른바, '잘 알려진 그룹 (well-known SIDs)'이라 불리며, 종종 보게 되는 SID들을 보자면,

NT_AUTHORITY SID 예
S-1-5-2 대화형 로그인 접근을 제외한 네트워크로 접근해 로그인한 모든 사용자
S-1-5-4 대화형 UI를 통해 로그인하는 모든 사용자
S-1-5-5 로그온 되어있는 사용자
S-1-5-6 서비스
S-1-5-11 인증된 ID를 가진 사용자
S-1-5-13 원격 데스크탑
S-1-5-14 원격 데스크탑을 이용해 접속한 사용자
S-1-5-18 운영체제 (System 계정)
S-1-5-19 로컬 서비스
S-1-5-20 네트워크 서비스
S-1-5-도메인 식별자-500 시스템 관리자 계정
S-1-5-도메인 식별자-501 게스트 계정
등이 있다. SID들 중에 도메인 식별자가 들어있는 SID들이 있는데, 이 형식은 사용자 계정에 대한 SID들이다.

지금 내 계정의 SID 확인하기

도스창에서 아래의 명령을 치면, 현 접속중인 계정 명과 SID를 알 수 있다.

whoami /user

파워셀에서 whoami /user를 실행한결과로 사용자 계정 명과 SID가 표시되고 있다.
whoami 실행 결과

기타, 함께 쓸 수 있는 옵션으로는,

  • /GROUPS : 현 사용자가 등록된 그룹, 계정 유형을 표시
  • /PRIV : 현 사용자의 보안 권한 표시
  • /ALL : 뭐든 보여줄 수 있는건 죄다 표시
정도가 있다.

마무리

보안 식별자에 대해 더 상세한 내용을 알고 싶다면, MS에서 제공하는 보안식별자 문서를 참고하기 바란다.