개요
사용자 계정 컨트롤(User Account Control, UAC)은 마이크로소프트가 윈도우 비스타와 윈도우 서버 2008에서 처음 도입한 강제 접근 제어 보안 기능이다[1][2][3]. 응용 프로그램을 표준 사용자 권한으로 제한하고, 관리자가 명시적으로 권한 상승을 승인할 때만 관리자 권한을 부여함으로써 운영 체제의 보안을 강화하는 것을 목적으로 한다[2][3]. 사용자 계정에 관리자 권한이 할당되어 있더라도, 사용자가 실행하는 응용 프로그램은 사전 승인이나 명시적 동의 없이는 해당 권한을 상속받지 못한다[3]. UAC는 필수 무결성 제어(Mandatory Integrity Control)를 사용하여 서로 다른 권한 수준에서 실행되는 프로세스를 격리하며, 사용자 인터페이스 권한 분리(User Interface Privilege Isolation) 기술을 함께 적용해 하위 권한 프로세스가 상위 권한 프로세스와 통신하거나 조작하는 것을 방지한다[3]. 이 기술의 대표적인 적용 사례가 인터넷 익스플로러 7의 "보호 모드"이다[2][3].
역사
도입 이전의 배경
마이크로소프트의 초기 가정용 운영 체제(MS-DOS, 윈도우 95, 98, Me 등)는 동일 컴퓨터에서 다중 사용자 계정 개념이 없었으며, 모든 작업이 슈퍼유저 권한으로 수행되었다[2][3]. 윈도우 NT 계열에서는 다중 사용자 계정과 권한 분리가 도입되었으나, 실제로는 대다수 사용자가 일상 작업에서도 관리자 계정을 사용했고, 수많은 응용 프로그램이 관리자 권한을 전제로 작성되어 표준 사용자 환경에서는 정상 동작하지 않는 문제가 있었다[2][3]. 마이크로소프트는 이후 버전에서 비관리자 로그온을 권장했으나 현장의 변화는 느렸고, 기존 응용 프로그램과의 호환성을 깨지 않으면서 새로운 보안 기능을 도입하기 위한 방안으로 UAC가 윈도우 비스타에 탑재되었다[2].
윈도우 비스타 및 윈도우 서버 2008: 최초 구현
윈도우 비스타에서 마이크로소프트는 제한된 사용자 계정(Limited User Account, LUA) 개념에서 출발해 사용자 계정 보호(User Account Protection, UAP)라는 명칭을 거쳐 최종적으로 사용자 계정 컨트롤(UAC)이라는 이름으로 출시했다[3]. 핵심 원리는 "필요할 때만 슈퍼유저" 접근을 가능하게 하되, 사용자 컨텍스트(사용자 "Bob"은 여전히 사용자 "Bob")를 변경하지 않고 권한만 상승시키는 것이다[3].
표준 사용자로 로그온하면 시스템은 기본적인 권한만 포함된 접근 토큰을 할당해, 해당 세션이 시스템 전체에 영향을 미치는 변경을 할 수 없게 한다[2][3]. 관리자 그룹 소속 사용자로 로그온하면 두 개의 별도 토큰이 발급된다. 첫 번째 토큰은 관리자의 모든 권한을 담고, 두 번째 토큰은 표준 사용자와 유사한 제한된 권한을 가진다[2][3]. 윈도우 셸을 비롯한 사용자 응용 프로그램은 제한된 토큰으로 시작하므로, 관리자 계정을 사용하더라도 기본적으로는 제한된 권한 환경에서 동작한다[2][3]. 응용 프로그램이 더 높은 권한을 요청하거나 사용자가 "관리자 권한으로 실행"을 선택하면 UAC가 확인 대화상자를 띄우고, 사용자가 동의할 경우 제한되지 않은 토큰을 사용해 프로세스를 시작한다[2][3].
윈도우 7 및 윈도우 서버 2008 R2: 설정 인터페이스 추가 및 기본 동작 변경
윈도우 7에서는 UAC 설정 변경용 사용자 인터페이스가 제어판에 추가되었고, 새로운 알림 모드인 "기본 설정"이 도입되었다[3]. 기본 설정에서는 사용자가 윈도우 설정을 변경할 때(%SystemRoot%에 저장되고 마이크로소프트 디지털 서명이 된 프로그램을 통해 권한 상승이 필요한 경우) UAC 확인 창을 띄우지 않는다[2][3]. 관리자 권한이 필요한 프로그램 실행은 여전히 프롬프트를 발생시킨다[2][3]. 비스타에서는 레지스트리 편집으로만 가능했던 여러 UAC 설정을 그래픽 인터페이스에서 조정할 수 있게 되었다[3].
윈도우 8/8.1 및 윈도우 서버 2012/R2: 보안 데스크톱 시각 변경
UAC가 트리거되면 모든 응용 프로그램과 작업 표시줄이 숨겨진 상태에서 바탕 화면이 어두워지는 방식으로 디자인이 변경되었다[3].
윈도우 10 및 윈도우 서버 2016~2022: 최신화 및 윈도우 헬로 지원
초기 버전은 윈도우 8/8.1과 동일한 레이아웃을 유지했으나, 애니버서리 업데이트(윈도우 서버 2016 기반)부터 더 현대적인 외관과 다크 모드 지원이 추가되었다[3]. 또한 UAC 대화상자에서 윈도우 헬로(Windows Hello) 인증을 지원하기 시작했다[3].
윈도우 11 및 윈도우 서버 2025: 시각적 일관성 개선
후기 윈도우 10 버전과 거의 동일한 레이아웃을 유지하되, 운영 체제 전반의 새로운 디자인 언어에 맞춰 시각적 요소가 조정되었다[3].
기능과 사용법 개요
권한 상승 메커니즘
UAC는 관리자 그룹 소속 사용자가 로그온할 때 전체 권한 토큰과 제한된 토큰 두 개를 생성하고, 기본적으로 제한된 토큰으로 셸과 응용 프로그램을 구동한다[2][3]. 권한 상승이 필요할 때는 다음과 같은 경로로 이루어진다.
* 사용자가 프로그램 아이콘을 마우스 오른쪽 버튼으로 클릭해 "관리자 권한으로 실행"을 선택하는 경우[2][3].
* 응용 프로그램 매니페스트에 `requestedExecutionLevel`을 `requireAdministrator` 또는 `highestAvailable`로 지정해 권한 상승을 요청하는 경우[2][3].
* 설치 프로그램 등 휴리스틱 탐지에 의해 설치자로 판단되는 실행 파일(파일명에 setup, install 등이 포함된 경우 등)을 실행하는 경우[2][3].
표준 사용자가 권한 상승을 시도하면 관리자 자격 증명(사용자 이름/암호) 입력을 요구하고, 관리자 계정에서는 동의(동의/취소)만 묻는다[2][3]. 동의가 주어지면 제한되지 않은 토큰으로 프로세스가 생성된다[2][3].
보안 데스크톱(Secure Desktop)
권한 상승 확인 대화상자는 보안 데스크톱 모드에서 표시된다. 전체 화면이 일시적으로 어두워지고(윈도우 에어로 비활성화), 인증 창만 최대 밝기로 강조된다[2][3]. 일반 응용 프로그램은 보안 데스크톱과 상호작용할 수 없으므로, 오버레이로 텍스트나 그래픽을 덮어씌우거나 마우스 포인터를 조작해 사용자 의도와 다르게 확인 버튼을 누르게 하는 스푸핑 공격을 방지한다[2][3]. 관리자 활동이 최소화된 응용 프로그램에서 시작된 경우 보안 데스크톱 요청도 최소화되어 포커스 손실을 막는다[2][3]. 보안 데스크톱은 정책으로 비활성화할 수 있으나 보안상 권장되지 않는다[2][3].
파일 및 레지스트리 가상화(File and Registry Virtualization)
관리자 권한을 전제로 작성된 구형 응용 프로그램이 제한된 권한 환경에서 실행될 때, 시스템 전역 디렉터리(%ProgramFiles% 등)나 레지스트리(HKLM 등)에 쓰기를 시도하면 UAC가 이를 사용자 프로필 내의 사용자별 위치로 리디렉션한다[3]. 예를 들어 `C:\Program Files\appname\settings.ini` 쓰기 시도가 `C:\Users\username\AppData\Local\VirtualStore\Program Files\appname\settings.ini`로 우회된다[3]. 이 기능은 매니페스트로 특정 권한을 요청하지 않는 비상승 32비트 응용 프로그램에만 제공된다[3].
무결성 수준(Integrity Level)과 인터넷 익스플로러 보호 모드
UAC는 프로세스에 무결성 수준(Low, Medium, High)을 부여해 격리한다[3]. 표준 사용자 토큰은 Medium, 상승된 관리자 토큰은 High, 인터넷 익스플로러 7 보호 모드는 Low 무결성 수준으로 실행된다[2][3]. Low 무결성 프로세스는 임시 인터넷 파일 폴더를 제외한 시스템 대부분에 파일·디렉터리·속성 쓰기가 불가능하며, 툴바와 액티브엑스 컨트롤도 IE 프로세스 내에서 동일하게 Low 권한으로 실행되어 시스템 피해 가능성을 줄인다[2][3].
관리자 명령 프롬프트 식별
관리자 권한으로 상승된 명령 프롬프트 창은 제목 표시줄 맨 앞에 "관리자" 접두사가 붙어, 사용자가 어느 인스턴스가 상승된 권한인지 식별할 수 있게 돕는다[2][3].
디지털 서명 여부에 따른 프롬프트 차별화
실행 파일의 디지털 서명 상태(서명됨/미서명, 서명자가 윈도우인지 여부)에 따라 UAC 프롬프트의 색상, 아이콘, 문구가 다르게 표시되어, 미서명 실행 파일일 때 더 강한 경고감을 주도록 설계되었다[3].
생태계·커뮤니티
개발자 도구 및 매니페스트 임베드
응용 프로그램 개발자는 XML 매니페스트 파일에 `requestedPrivileges` 섹션을 추가하고 이를 실행 파일에 임베드함으로써 권한 상승 요청 수준(`asInvoker`, `highestAvailable`, `requireAdministrator`)을 선언한다[2][3]. 매니페스트 작성을 돕는 유틸리티가 배포되어 있으며, 파코즈 하드웨어 등 커뮤니티에서 관련 도구와 가이드를 공유해 왔다[2].
프로그래밍 방식의 권한 상승 요청
* .NET 응용 프로그램에서는 `ProcessStartInfo.Verb = "runas"`를 설정해 상승된 프로세스를 생성할 수 있다[2][3].
* 네이티브 Win32 응용 프로그램에서는 `ShellExecute()` 또는 `ShellExecuteEx()` 호출에 `runas` 동사를 추가한다[2][3].
* `CreateProcess()`로 `requireAdministrator` 매니페스트가 있는 실행 파일을 비상승 프로세스에서 실행하려 하면 `ERROR_ELEVATION_REQUIRED`가 반환되므로, 반드시 `ShellExecute` 계열 함수를 사용해야 한다[2][3].
설치 프로그램 휴리스틱
매니페스트가 없는 실행 파일이라도 파일명, 버전 리소스, 실행 파일 내 특정 바이트 시퀀스 등 단서를 통해 설치 프로그램으로 판단되면 UAC가 자동으로 권한 상승을 요구한다[3].
구성 및 정책(secpol.msc)
UAC 동작은 로컬 보안 정책(`secpol.msc`)에서 "사용자 계정 컨트롤" 접두사가 붙은 항목들로 제어한다[2]. 주요 설정은 다음과 같다[2].
* 관리자 승인 모드 동작: 권한 상승 시 동의 확인(기본값), 자격 증명 확인, UAC 끄기(묻지 않음) 중 선택.
* 표준 사용자 권한 상승 동작: 확인하지 않음, 자격 증명 묻기.
* 내장 관리자 계정의 관리자 승인 모드: 사용(기본값)/사용 안 함.
* 응용 프로그램 설치 감지 시 권한 상승 확인: 사용(기본값)/사용 안 함.
* 권한 상승 확인 시 보안 데스크톱으로 전환: 사용(기본값)/사용 안 함.
* 서명된 실행 파일만 실행: 사용/사용 안 함(기본값).
* 사용자별 파일·레지스트리 쓰기 실패 가상화: 사용(기본값)/사용 안 함.
* 모든 관리자를 관리자 승인 모드에서 실행: 사용(기본값)/사용 안 함.
관리자 승인 모드를 완전히 비활성화해도 윈도우 내장 LUA(제한된 사용자 계정) 기능 자체가 꺼지는 것은 아니며, 관리자 그룹 사용자도 여전히 진정한 관리자 접근 권한 없이 제한된 사용자로 동작한다[3].
사용 사례·작품
UAC 프롬프트를 유발하는 대표적 작업
자료에 나열된 관리자 권한 필요 작업은 다음과 같다[2][3].
* 프로그램 아이콘 우클릭 → "관리자 권한으로 실행"
* %SystemRoot% 파일을 %ProgramFiles%로 이동
* 응용 프로그램 설치/제거(단, %USERPROFILE%/%APPDATA% 폴더, 마이크로소프트 스토어, 설치 프로그램 자체 폴더, 스팀 게임 폴더(`/steamapps/`) 등은 예외)
* 장치 드라이버 설치
* 액티브엑스 컨트롤 설치
* 윈도우 방화벽 설정 변경
* UAC 설정 변경
* 윈도우 업데이트 구성
* 사용자 계정 추가/제거/종류 변경
* 게스트 계정 켜기(윈도우 7~8.1)
* 네트워크 검색, 파일·프린터 공유, 공용 폴더 공유, 암호 보호 공유 끄기, 미디어 스트리밍 켜기
* 부모 제어(윈도우 7) / 가족 안전(윈도우 8.1) 구성
* 작업 스케줄러 실행
* 폴더·파일 백업 및 복원
* 네트워크 위치 병합/삭제
* 원격 액세스 로깅 켜기/정리
* 색 보정 실행
* 원격/시스템 보호/고급 시스템 설정 변경
* 시스템 파일 복원
* 다른 사용자의 폴더·파일 보기/변경
* 디스크 조각 모음, 시스템 복원, 윈도우 간편 전송 실행(윈도우 7~8.1)
* 레지스트리 편집기 실행
* 윈도우 체험 지수 평가 실행
* 오디오 녹음/재생, 하드웨어/장치, 전원 사용 문제 해결
* 전원 설정 변경, 윈도우 기능 켜기/끄기, 프로그램 제거/변경/복구
* 날짜/시간 변경 및 인터넷 시간 서버와 동기화(표준 시간대 변경은 관리자 권한 불필요)
* 표시 언어 설치/제거
* 접근성 관리 설정 변경
반면 시간대 변경 등 일반 작업은 관리자 권한을 요구하지 않으며, 초기 윈도우 버전에서 관리자 권한이 필요했던 중요 윈도우 업데이트 설치 등은 비스타부터 권한 불필요로 변경되었다[2]. MSI/MSU 패키지는 우클릭 "관리자 권한으로 실행"이 통하지 않을 수 있으며, 이때는 관리자 명령 프롬프트에서 직접 실행하는 우회 방법이 쓰인다[3].
크롬·파이어폭스 설치 사례
크롬과 파이어폭스 설치 프로그램은 설치 시 관리자 권한을 요청한다. 권한을 주면 `%ProgramFiles%`에 설치되어 모든 사용자가 사용 가능하고, 거부하면 `%APPDATA%`에 설치되어 현재 사용자만 사용 가능해진다[3].
평가
보안 강화 효과
* 최소 권한 원칙(Least Privilege)을 강제해, 악성 코드가 사용자 모르게 시스템 전역을 변조하거나 관리자 권한을 탈취하는 것을 어렵게 만든다[3].
* 보안 데스크톱과 UI 권한 분리로 스푸핑·클릭재킹 등 사용자 인터페이스 조작 공격을 완화한다[2][3].
* 파일·레지스트리 가상화로 구형 응용 프로그램이 제한된 계정에서도 동작할 수 있게 해 호환성과 보안을 동시에 잡으려 했다[3].
* 인터넷 익스플로러 보호 모드(Low 무결성)는 브라우저 기반 익스플로잇의 시스템 파급을 샌드박스 수준으로 제한했다[2][3].
호환성 및 사용성 이슈
* 도입 초기(비스타)에는 기존 응용 프로그램이 관리자 권한을 당연시해 작성되어 있어, UAC 프롬프트가 빈번히 뜨고 가상화로 인한 데이터 분리로 사용자 혼란이 컸다[2].
* 관리자 승인 모드를 끄더라도 진정한 관리자 권한이 복원되는 것이 아니라 LUA 제한이 그대로 남아 있어, 일부 관리 작업이 오히려 불가능해지는 역설적 상황이 발생할 수 있다[3].
* 윈도우 7에서 기본 설정을 완화(윈도우 서명 설정 변경 시 프롬프트 생략)해 사용자 불편을 줄였으나, 이로 인해 악성 코드가 서명된 시스템 바이너리를 악용해 무음 권한 상승을 시도하는 우회 기법(DLL 하이재킹 등)이 연구되기도 했다[3].
* 보안 데스크톱 전환 시 화면 깜빡임, 전체 화면 게임/응용 프로그램에서의 포커스 손실, 원격 데스크톱 환경에서의 인증 창 표시 문제 등 사용자 경험 저하 보고가 지속되었다[2][3].
후속 버전의 개선 방향
* 윈도우 7: 설정 UI 제공, 프롬프트 빈도 조절 가능.
* 윈도우 8/8.1: 보안 데스크톱 전환 시 전체 UI 숨김으로 스푸핑 표면 추가 축소.
* 윈도우 10: 최신 UI, 다크 모드, 윈도우 헬로 생체 인증 지원으로 인증 편의성·보안성 동시 향상.
* 윈도우 11: 시스템 전반의 디자인 언어와 시각적 일관성 확보.
자료에 나타난 평가는 위와 같은 기술적 특성과 버전별 변화에 기초하며, 별도의 제3자 벤치마크나 정량적 통계는 인용되지 않았다[2][3].
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.