NOTICE


 사용자 계정 컨트롤(User Account Contorl)에 대해 알아보겠습니다. 기존 블로그에 게시된 내용을 이해하기 쉽게 정리한 것 입니다. 원문에 대한 내용은 아래 링크를 참고하시기 바랍니다.


 - 사용자 계정 컨트롤(UAC)이란?: http://cappleblog.co.kr/241



1. UAC 정의


 사용자 계정 컨트롤(User Account Contorl)이란 프로그램에서 관리자 수준의 권한이 필요한 작업을 수행할 때 사용자에게 알려서 제어할 수 있도록 도와주는 기능입니다.

 Vista 이전 버전의 Windows에서는 잘못된 작업으로 인해 많은 문제가 발생하고 악성코드 프로그램이 사용자 모르게 마음대로 설치되어 피해가 발생하는 일이 많았습니다. 그리하여 윈도우는 사용자의 권한을 좀 더 강력하게 제어해야 할 필요성을 느끼게 되었습니다.

 그리하여 Vista 이후의 Windows에서는 사용자의 권한에 개입하여 작업들을 간섭하기 시작했습니다. 이렇게 사용자의 작업을 감시하고 적절히 제한하고 확인하는 작업을 담당하는 것이 사용자 계정 컨트롤입니다.



2. 표준 사용자와 관리자


 Vista 이상의 Windows에는 두 가지 사용자 수준(표준 사용자/관리자)이 있습니다. 표준 사용자는 Users 그룹의 구성원이고 관리자는 Administrators 그룹의 구성원입니다.

 기본적으로 표준 사용자와 관리자 모두 표준 사용자 권한 수준으로 응용 프로그램이 실행됩니다. 단 프로그램에서 관리자 권한이 필요한 작업이 수행될 경우, Windows는 사용자에게 권한 상승을 요구합니다.(표준 사용자의 경우 먼저 권한 수준을 관리자로 변경해야 합니다.) 이때 사용자가 승인을 하게 되면 관리자 권한 수준으로 응용 프로그램이 실행됩니다. 이러한 기본 관리자 환경을 관리자 승인 모드라고 합니다. 그리고 이러한 정책이 바로 사용자 계정 컨트롤의 핵심입니다.



3. 액세스 토큰


 사용자가 로그온할 때 Windows는 해당 사용자의 Access Token을 만듭니다. Access Token에는 SID(보안 식별자)와 윈도우 권한 등 해당 사용자에게 부여된 액세스 수준에 대한 정보가 있습니다.


1. 표준 사용자로 로그온을 하는 경우 Windows는 표준 사용자 액세스 토큰(Standard User Access Token)을 만든   다.

2. 관리자로 로그온을 하는 경우 Windows는 액세스 토큰을 두 개 즉, 표준 사용자 액세스 토큰(Filtered Standard   User Token)과 관리자 액세스 토큰(Full Administrator Access Token)을 만든다.


 표준 사용자 액세스 토큰에는 관리자 액세스 토큰과 동일한 사용자 특정 정보가 있지만 윈도우 관리 권한 및 SID 는 제거되어 있습니다.



 Windows는 표준 사용자 액세스 토큰을 사용하여 Explorer.exe를 실행합니다. Windows의 응용 프로그램들은 초기에 실행된 Explorer.exe의 하위 프로세스로 동작하기 때문에 부모 프로세스인 Explorer.exe의 권한을 상속받게 됩니다. 그래서 표준 사용자는 물론 관리자 모드에서 실행하는 프로그램들도 표준 사용자 권한으로 동작하게 되는 것입니다.



4. 권한 상승(Elevation)


 앞서 언급한 바와 같이 사용자가 관리자라 할지라도 일반적인 응용 프로그램들은 표준 사용자 권한 수준으로 실행하게 됩니다. 사실 대다수의 응용 프로그램들은 표준 사용자 권한 수준에서도 아무런 문제없이 돌아갑니다. 그러니 굳이 위험하게 관리자 권한 수준으로 모든 응용 프로그램을 실행시킬 필요가 없는 것입니다.

 그러다가 관리자가 관리 작업이 필요한 응용 프로그램을 실행하면 사용자 계정 컨트롤은 사용자에게 작업을 승인할 것인지 묻는 메시지를 표시합니다. 사용자가 작업을 승인하면 관리자 액세스 토큰(Full Administrator Access Token)을 사용해 해당 프로세스를 관리자 권한 수준으로 권한을 상승시키고 작업을 시작합니다.

 표준 사용자 또한 사용자 계정 컨트롤을 사용해 권한을 높이고 관리 작업을 수행할 수 있습니다. 표준 사용자 모드에서 실행된 프로그램이 관리 작업을 수행하려고 시도하면 사용자 계정 컨트롤은 사용자에게 관리자 계정을 위한 자격 증명을 입력하도록 요구합니다. 표준 사용자가 관리자 그룹 사용자의 계정과 암호를 알고 있다면 이를 입력해주면 됩니다.


 이상으로 '[개념 이해] 사용자 계정 컨트롤(User Account Contorl)'에 대한 포스팅을 마치겠습니다.


  1. no picture 2015.04.26 15:04

    비밀댓글입니다