백승주
• IT Pro Evangelist
• Microsoft Korea


UAC의 아키텍쳐에 대해서 알아보도록 하겠습니다.

이전 내용을 잘 처리해주는 그림입니다. 이해가 잘 안되시면, UAC 시리즈의 처음 이야기부터 차근히 읽어보시면 이해가 되실 겁니다.

관리자 승인 모드에서 이야기를 시작하려고 합니다. 관리자가 일반 사용자 보안 토큰을 가지고 작업을 합니다. 이러다가 관리자 권한이 필요한 경우, UAC 다이얼로그 창이 뜹니다. 기본적인 정책 설정은 ‘동의 확인’, 즉 확인을 받는 것입니다. 명시된 Administrator 계정 하나를 제외하고 모든 Administrators 그룹에 들어있는 사용자들은 관리자 승인 모드를 거쳐야지만 전체 관리자 보안 토큰을 소유하게 됩니다.

Windows Vista의 경우 프로세스에게 Integrity Level을 마킹하여, 이를 보호합니다. Integrity Level에는 시스템의 데이터를 수정하는(시스템의 설정, 하드웨어 설정 변경) 프로세스에 대해서는 "High" Integrity Level을 부여하며, 운영 체제에 대해서 잠재적으로 문제를 야기할 수 있는 웹 브라우저와 같은 프로세스에 대해서는 "Low" Integrity Level을 부여합니다. 이 뿐만 아니라, Windows Vista는 High Integrity Level 프로세스와 Low Integrity Level 프로세스간 상호 작용하는 것도 방지합니다.

그렇다면, Windows Vista의 경우, 해당 프로세스가 사용자보다 높은 권한(Elevated Privilege)가 필요한지 어떻게 판단할까요? 누가 알려줄까요? 바로 서비스에 그 답이 존재합니다.

<서비스 관리도구>

답은 바로 AIS(Application Information Service) 시스템 서비스입니다. 새로운 프로세스가 생성되어, 응용 프로그램이 실행되면, 해당 응용 프로그램이 실행시와 실행 도중, 상승된 권한이 필요한지를 판단하여 이를 사용자에게 알려주게 됩니다. (그럼 이 서비스를 중지하면 UAC이 작동하지 않겠다! 라고 생각하시는 분들이 계실 것으로 보여집니다. 그러나, AIS 서비스는 TrustedInstaller가 동작시킨 서비스로서 관리자는 중지할 수 없습니다.)

<AIS 서비스 속성>

AIS의 동작 원리를 정리하면 다음과 같습니다.

1. 응용 프로그램이 관리자 권한이 필요한 작업을 하려고 시도
2. AIS가 권한 상승을 알리는 대화 상자를 표시
3. 사용자에게 질문이 나감(관리자의 경우 동의 대화 상자, 일반 사용자의 경우, 관리자의 계정/암호를 묻는 대화상자) - 여기서 아니오나 계정/암호를 입력치 못하면, 종료
4. 계속을 선택할 경우, 전체 관리자 보안 토큰으로 프로그램이 실행됨
5. 프로그램 종료시, 전체 관리자 보안 토큰도 같이 소멸

<UAC 플로우차트>

AIS가 응용 프로그램을 실행할 때, 해당 프로그램이 전체 관리자 권한이 필요한지를 판단한후, 잠재적 보안 위험도에 따라 색깔을 달리하여, 사용자에게 대화 상자(정확하게는 권한 상승 알림)을 띄워줍니다. 가장 처음에 판단하는 것이 응용 프로그램에 전자 서명되어져 있는지 여부입니다. (응용 프로그램이나 셋업 프로그램에는 발행자의 전자 서명을 넣을 수 있습니다. 이는 프로그램이 발행자이외의 사람들이 수정했는지 여부를 판단할 수 있는 근거 자료가 되게 됩니다.)

<응용 프로그램 권한 상승>

빨간색 - 그룹 정책에 의해서 해당 발행자가 거부되었거나, 발행자에 대해 거부된 상태입니다.
녹색/파란색 - 응용 프로그램은 Windows Vista의 프로그램입니다.
회색 - 전자 서명이 된 프로그램입니다.
노란색 - 전자 서명을 확인할 수 없는 프로그램입니다.

이러한 색깔은 인터넷 익스플로어 7에서도 마찬가지로 적용됩니다.

마지막으로 UAC에 의해 권한 상승이 필요한지를 판단할 수 있는 기준이 있습니다. 바로 방패 아이콘입니다.

<UAC 방패 아이콘>

많은 방패 아이콘이 보이시나요? 저 방패의 의미가 바로 전체 관리자 보안 토큰이 필요하다는 뜻입니다.



PARTⅠ << PART Ⅱ << PART III >> PART Ⅳ

최종 수정일 : 2006년 12월 5일