사용자 계정 컨트롤
(♥ 0)
분류
1. 개요[편집]
User Account Control, UAC[1]
Windows의 관리자 계정과 사용자 계정 분리 시스템으로 Windows Vista부터 추가되었다.
2. 윈도우 버전별 이미지[편집]
3. 상세[편집]
유닉스 계열의 su[5] , sudo[6][7] , gksudo[8] 와 비슷하게 필요할 때만 총괄관리자 권한을 부여하는 시스템이다. XP까지 시스템 권한이 항상 개방된 바람에 보안에 문제가 생기자 만든 시스템으로 에어로 테마와 함께 비스타의 주요 세일즈 포인트가 되었다.
혹시 이 기능을 끄기 위해서 이 곳으로 오게 되었다면 특별한 경우가 아니라면 끄지 않는 것을 권장한다.[9] 정 귀찮거나 저사양 컴퓨터의 성능에 직결된다면 2단계라도 유지할 것. 그만큼 시스템 보안 면에서는 매우 중요한 역할을 한다.
4. 원리[편집]
시스템에 영향을 줄 수 있는 프로그램이 실행될 때마다 일단 중지시키고 정말로 실행할 것인지 물어본다. 사람에 따라서 은근 귀찮은 까닭에 UAC를 해제하는 사람들도 많다.
그러나 보안 측면에서는 켜두는 것이 좋다. Windows에서 UAC를 완전히 꺼버리는 것은 무조건 관리자 권한을 승인한다랑 다를 게 없다.[10]
따라서 검증되지 않은, 혹은 낯선 웹사이트에 방문하는 것은 되도록 삼가며 윈도우 최신 보안 패치를 꼬박꼬박 받아서 빨리빨리 설치하고[11] 많은 사람들이 신뢰하는 백신 소프트웨어를 깔고 바이러스 정의 및 엔진은 꾸준히 업데이트하는 등 말이다. 물론 다른 사람이 썼거나 다른 컴퓨터에서 썼던 USB 메모리 및 하드디스크를 사용할 때에도 조심해야 한다.
UAC가 나올 때 화면이 어두워지는데 이는 보안 데스크톱이라고 하며 다른 프로그램이 "예" 버튼을 누르는 것을 방지하기 위해 설계되었다.[12] . 일종의 캡챠 역할을 한다고 보면 된다.
해커들은 UAC를 파훼할 방안을 생각해 내고 있으며 실제로 한 번 해킹된 적이 있었다. 바로 Windows 7 베타 버전에서 오토 마우스처럼 커서를 조작해서 수동으로 UAC를 끌 수 있다는 것이다.[13] 이 때문인지 포인트한 지점을 가리키게 설정되어 있는(펜 모드) 일부 태블릿 컴퓨터는 UAC 창이 뜨면 먹통이 된다. 터치 스크린을 탑재한 태블릿 PC의 경우 버튼을 손가락으로 눌러주면 된다.
원래 이 보안된 데스크탑은 화면이 UAC가 뜨기 직전 상황으로 멈추는 걸로 구현됐는데, Windows 8부터는 OCR 판독이 가능한 등의 취약점을 해결하기 위해 아예 바탕화면만 표시되게 만들어 UAC가 뜨기 전 어떤 작업을 하고 있었는지 알 수 없게 바뀌었다.
사실 XP까지의 '관리자 권한이 무제한으로 개방되는' 시스템이 비정상이다. 이전까지 많이 쓰였던 Windows 9x[14] 의 다크사이드라고 해도 무방할 정도. 안드로이드에서는 아예 이 root 권한이 기본적으로 막혀 있기 때문에 뚫으려면 루팅을 해야 한다는 점을 생각해 보자. 마치 UNIX 계열 운영체제에서 일일이 sudo 입력하기 귀찮다고 root를 항시 사용하는 것과 다를 게 없다. 관리자 권한이 항시 개방되어 있으니 멀쩡히 돌아가던 컴퓨터에 각종 악성코드가 쥐도새도 모르게 설치되고(심지어 드라이버까지) 결국 시스템의 안정성과 퍼포먼스, 보안을 모두 밑바닥으로 끌어내리게 되는 현상은 윈도우를 사용하는 사람이라면 누구나 체험하는 것이다. 최악의 경우 악성코드로 인해 컴퓨터가 한 방에 영영 돌아올 수 없는 길로 떠날 수도 있다. 예전부터 macOS나 Linux 등 유닉스 계열 OS 사용자들이 윈도우를 깔 때 주로 쓰던 레퍼토리 중 하나가 바로 이것이었다.
UAC를 사용하면 시스템이 변경되기 전에 물어보기 때문에 원하지 않게 시스템이 변경되기 전에 차단하고 꺼버릴 수 있는 것이다. 이는 악성 소프트웨어도 시스템을 변경하려면 UAC를 거쳐야 하기 때문에 랜섬웨어등이 시스템 복구 지점을 삭제하거나 파일 히스토리를 삭제하는걸 막아주는 등 최후의 방어막 역할도 한다.
인터넷 뱅킹을 사용하거나 쇼핑몰에서 결제를 하거나 관공서 업무를 볼 때 실행되는 각종 보안 모듈 등은 UAC 권한을 과도하게 요구해서 문제가 되기도 한다. 이런 물건은 윈도우의 중요 시스템을 건드리는 경우가 많은 데다 사용자가 직접 실행시키는 것이 아니기 때문에 UAC가 여러 번 뜬다. 이유는 유저가 웹 페이지의 버튼을 눌러 실행시키더라도 웹 브라우저에서 플러그인을 이용해 한 단계 거쳐서 실행되는 것이라 OS 입장에서는 사용자가 직접 실행한 것이 아닌 웹 브라우저가 실행시킨 것으로 인식하기 때문이다. 현재는 Windows 7 이후 버전이 널리 보급되고 Windows XP도 지원이 중단되었기 때문에 UAC를 끄지 않아도 권한 상승만 동의해 주면 정상적으로 실행된다.
또한 여러 사람이 사용하는 공용 컴퓨터의 경우 또 다른 문제점이 생긴다. 보안 프로그램을 사용하거나 이용하려고 해도 관리자 권한을 요구해 사실상 관리자 권한 없이는 정상적으로 이용이 불가해 여러 사람이 사용하는 컴퓨터의 경우 모든 사용자가 다 관리자 권한을 가지고 있거나 UAC를 해제해야 정상적으로 이용할 수 있다. 물론 은행이나 공공기관에서나 그렇지 일반 회사나 학교 등에서는 계정 보안을 철저하게 하는 경우가 대부분이다.
그 외에도 일부 오래된 프로그램들은 UAC가 켜져 있으면 제대로 실행조차 되지 않는 경우도 많으며 반대로 코딩을 발로 했는지 불필요하게 UAC 권한을 요구하는 프로그램들도 많기 때문에 좀 억울하게 UAC가 악명을 얻은 감도 있다.
일부 프로그램은 설치시 UAC를 요구하지 않는데 이는 사용자 계정 폴더(C:\\Users\\(사용자 이름)\\AppData\\)에다가 파일을 설치하기 때문이다. 물론 이 경우 해당 사용자 말고는 사용이 불가능해진다. 다만 사용자 계정 폴더에 설치하는 프로그램이라도 UAC를 요구하는 경우도 있기는 한데 이 경우에는 대부분 InstallShield나 NSIS와 같은 설치 프로그램을 제작하는 프로그램들이 컴파일 시 자동적으로 UAC 권한을 집어넣기 때문이다.
UAC가 켜져 있는 상태에서 프로그램이 Windows나 Program Files 등의 시스템 폴더에 접근하려고 하면 바로 저장이 되지는 않고 C:\\Users\\(계정명)\\AppData\\Local\\VirtualStore라는 폴더에 저장이 된다. 프로그램이 시스템을 함부로 수정하는 것을 방지하기 위함인데 이 때문에 일부 프로그램은 오류가 발생하거나 다른 방식으로 동작하기도 한다.[15] 레지스트리도 마찬가지로 HKEY_LOCAL_MACHINE 폴더를 건드리는 프로그램은 일단 HKEY_CURRENT_USER\\Classes\\VirtualStore라는 폴더에 저장이 된다. 만약 해당 프로그램에서 사용하는 항목이 이미 존재할 경우 해당 파일을 '읽기'만 하면 VirtualStore 폴더에 저장이 되지 않지만 만약 '수정'이나 '쓰기'를 한다면 원본이 VirtualStore 폴더에 복사된 다음 해당 폴더에 있는 파일이 수정된다. 당연히 다른 사용자에게는 영향을 미치지 않게 된다.
Process Explorer에서 Integrity Level 열을 켤 경우 각 프로세스별 권한이 어떻게 할당되어 있는지 볼 수 있다. Medium은 일반 권한으로 승격된 프로세스, High는 관리자 권한으로 승격된 프로세스를 의미한다. 구글 크롬을 비롯한 웹 브라우저에선 일부러 프로세스 권한을 일반 권한인 Medium보다도 낮은 Untrusted 또는 Low를 부여하는데 악성코드가 웹 브라우저를 뚫고 나온 경우라도 Untrusted 권한인 상태에선 사실상 악성코드가 할 수 있는 일이 전무하기 때문에 컴퓨터를 보호하기 위해 일부러 이렇게 하는 것이다.[16] 일단 이상한 사이트를 접속만 했다고 감염되는 경우가 현재로써는 사실상 없는 이유. 안타깝지만 한국에서는 nProtect 같은
5. 종류[편집]
UAC는 다음과 같은 종류가 있다.
프로그램이 관리자 권한으로 실행될 때 순서대로 2가지를 검사한다.
- 게시자가 차단되어 있지 않는가?
해당 프로그램의 게시자가 시스템 정책이나 Windows Defender, Smart Screen 등으로 차단되어 있을 경우 상단이 빨간색으로 된 창이 뜨면서 실행 자체가 불가능하게 된다.[19]
- 게시자가 서명되어 있는가?
유효한 디지털 서명이 있을 경우 첫 번째 사진과 같이 뜬다. 디지털 서명이 없거나 유효하지 않을 경우에는 두 번째 사진과 같이 뜬다. 공식 기관에서 발급된 인증서가 아니거나 파일이 변조되었을 때 주로 발생한다. 다만 공식 기관에서 인증서를 발급받으려면 비용이 들기에[20] 보통 개인 제작 프로그램을 무료로 배포할 때는 이 경고를 무시하라고 한다. 물론 사용자 입장에서는 본인 책임으로 판단해야하는 부분이다.
UAC 보안 단계의 기본값은 3단계이지만 최고단계인 4단계로 올려놨을 경우 이것말고 다른 형태의 창이 뜨기도 하는데 대충 윈도우 설정을 변경하겠냐는 내용으로 첫 번째 창과 유사하다.
구형 삼성 프린터 무선설정 프로그램의 경우 3번째 창이 떠 실행이 불가한 경우가 발생하였다.
6. 적용[편집]
Vista에서는 On/Off만 있으며 관리자 권한이 필요할 시 항상 물어본다. 다만 레지스트리를 편집해서 UAC 창이 뜰 때 바탕화면이 흐려지지 않게 설정할 수는 있는데 이는 7에서 정식 옵션으로 추가된다.
7부터는 UAC가 불편하다는 지적을 받아들여 4단계의 옵션이 적용됐다. 4단계에서는 Vista와 같이 항상 물어보며 기본값인 3단계에서는 상당수의 MMC 응용 프로그램 및 설정 변경에서 사용자가 직접 실행할 경우에는 권한상승을 묻지 않지만 악성 소프트웨어에서 관리자 권한으로 몰래 실행시키는 것을 막기 위해 간접 실행이나 설정 변경시에는 물어본다. 2단계는 3단계와 표시되는 상황은 같으나 UAC 창이 뜰 때 바탕화면이 흐려지지 않게 하는 옵션[21] 으로 저사양 컴퓨터를 위한 옵션이며 창이 뜨는 경우는 3단계와 동일하다. 마지막으로 1단계는 UAC를 해제한다.[22]
서버 계열, 얼티밋/프로페셔널 및 WinTPC는 로컬 보안 정책에서 항상 UAC를 띄우면서 화면이 흐려지지 않게 변경할 수 있다.
8부터는 정상적인 방법으로는 UAC를 완전히 해제할 수 없도록 변경되었다. UAC를 꺼도 시스템의 중요 부분[23] 은 UAC로 보호하며 관리자 권한이 요구되지 않은 상태에서는 경고창만 띄워지지 않을 뿐 관리자 권한이 필요한 작업은 권한 상승을 승인하기 전까지는 무시된다. UAC를 완전히 끄려면 특수 계정(Administrator 계정)을 생성[24] 하거나 레지스트리를 조정[25] 해야 한다.
Windows 8에서 Administrator 계정으로 로그인했거나 강제로 레지스트리를 통해 UAC를 무력화한 경우 메트로 앱을 사용할 수 없다.
Windows 10 1703까지는 관리자 계정을 사용하면 설정 앱을 제외한 다른 앱들은 실행이 되지 않는데 방법이 있기는 하다.[26] 하지만 이 방법은 관리자 계정의 권한을 일반 사용자 계정과 동일하게 만들어주는 방법으로 Administrator 계정을 사용하더라도 UAC가 동작하도록 변경된다. 바꿔 말하자면 원천적으로 관리자 계정에서의 앱 실행은 무슨 수를 쓰더라도 불가능했다.
그런데 Windows 10 1709 이후 관리자 계정으로도 메트로 앱을 사용할 수 있게 변경되었다. 이유는 불명. 하지만 사용자 계정 설정에서는 여전히 UAC를 완전히 끌 수 없기 때문에 레지스트리를 조작하거나 Administrator 계정을 사용해야 한다. 물론 마이크로소프트 측에서는 UAC를 끄는 것을 절대로 권장하지 않기 때문에 가급적이면 켜놓는 것을 권장한다.
7. 기타[편집]
Windows XP에서는 UAC가 없이 '제한된 사용자 계정'을 사용하여 시스템의 무단 변경을 막을 수 있지만 이걸 쓰면 sudo 명령어가 차단된 유닉스 이상으로 극심한 제약이 걸려 아무것도 할 수 없다. 제한된 사용자 계정으로 시작해서 필요할 때 관리자 권한으로 실행시킬수는 있지만 계정도 달라지고 쓸 때마다 관리자 계정 암호도 입력해야 해서 공용 PC가 아닌 이상 이렇게 쓰는 경우가 거의 없다.
Windows에서는 Administrator 계정보다 높은 계정인 SYSTEM이라는 것이 있다. 윈도우 부팅과정에서 SYSTEM 계정으로 로그인되고 로그온에서 계정을 선택하면 해당 계정으로 전환하게된다. 그래서 로그온 화면에서 탐색기를 강제로 실행하고 메뉴를 보면 프로필 이름이 SYSTEM으로 되어 있다는 것을 알 수 있다.[27]
Windows 7까지는 Windows Aero를 켠 상태에서 UAC가 뜰 때 화면이 깜빡거린다. 이유는 UAC 창은 Windows Basic 테마이기 때문이다. 따라서 어두운 밤에 컴퓨터를 하다가 화면이 깜빡거려서 눈뽕이 생기기도 한다. Windows 8부터는 UAC 창도 Aero를 사용하게 되었다.
직업기초능력평가 자가진단 프로그램은 실행 시 UAC를 강제로 꺼버린다. 따라서 자가진단 이후 UAC를 다시 켜야 한다.
현관문을 열쇠로 매번 여는게 귀찮다고 현관문을 열어놓고 다니지 않듯이 보안을 생각해서라면 UAC는 반드시 켜둬야 한다. 일찍부터 보안 체계를 제대로 구축한 리눅스 계통에서는 저걸 끌 방법이 없다. root 계정으로 재접속을 하는 무리수를 두지 않는 이상 root 권한이 필요하면 su 명령어와 root 암호를 요구한다.
가장 많이 사용되는 데스크톱 리눅스인 Ubuntu는 아예 root 암호가 없다. 이 경우 암호 없이도 root 계정을 사용할 수 있는 것이 아니라 아예 root로 접속할 수 없다. 이만큼 관리자 계정에 그냥 접속하는게 위험하다는 것. 대신 sudo 명령어로 명령어 하나하나에 root급 권한을 부여시키는 편법을 쓴다. 이때 관리자급 사용자와 사용자의 암호를 요구한다[28] .
Arch Linux는 archinstall 명령어에서 root 암호를 설정할 수 있다. 설정하지 않으면 root로 접속할 수 없다. 게다가 sudo까지 안먹히면 답이 없다. 이렇게 해야 한다.
어떤 작업을 할 때 UAC가 뜨는지 구체적으로 알고 싶다면 여기를 참조하자. 대충 관리자 권한에서만 가능한 모든 작업에 뜬다.
보안을 중요하게 생각한다면 UAC를 3단계보다 높은 4단계로 설정하는 것을 권장한다. 4단계로 설정하면 시스템 기능에도 UAC를 띄워서 귀찮겠지만 그만큼 UAC가 무력화될 확률도 낮아지기 때문이다. 다만 이 경우 무의식적으로 '예'를 클릭하는 나쁜 버릇이 들 수도 있으니 UAC 창에 표시된 내용을 신중히 살펴보는 습관을 들이도록 하자.
UAC뿐만 아니라 사용자 계정 비밀번호도 반드시 설정하도록 하자. 혼자 쓰는 컴퓨터라도 취약점을 이용해서 악성코드가 들어오거나 개인정보가 유출되는 경우가 있으니 반드시 설정하도록 하자. 그리고 Windows 업데이트와 백신 업데이트도 꾸준히 해야 한다.[29]
마이크로소프트 오피스 97을 설치하면 UAC 설정이 안 된다! 레지스트리로 해당 부분을 다시 패치해야 한다.
권한 상승이 안 된 프로그램[30] 이 UAC를 통해 실행된 프로그램을 건드릴 수 없다.[31] 종료도 불가능.[32]
윈도우의 버전 업마다 문구가 약간씩 변경되는데, 여기서 그 OS가 출시되었을 때의 시대상을 엿볼 수 있다. 7에서는 "컴퓨터"[33] , 10에서는 PC[34] 로 부르며, 10 후기형부터는 기기의 다양성을 따름으로서 "디바이스"라고 부르기 시작했다.
Windows 12부터 방화벽 차단 대화창도 UAC로 통합될 예정이다.
[1] Vista 베타 버전(Longhorn)에서는 UAP(User Account Protection)이라는 이름을 달고 나왔었으나 후에 UAC로 이름이 바뀌었다고 한다.[2] 아이콘 모양이 일부 변경된 것 외에는 8.1까지와 거의 차이가 없다.[3] "~하시겠습니까?"에서 "~하시겠어요?"로 말투가 부드럽게 바뀌었다.[4] Windows 11 디자인에 맞게 모서리와 버튼 디자인이 둥글게 변경되었다.[5] su는 Switch user의 약자로 일반 사용자 ↔ root 계정(또는 다른 계정)간의 전환을 할 수 있는 명령어이다.[6] 관리자 권한으로 명령어를 실행하는 명령어이다. 사용법은 sudo 명령어[7] 윈도우의 명령 프롬프트에는 runas라는 비슷한 명령어가 있다. 사용법은 runas /user:계정명 명령어. Windows 11 Insider Preview 빌드 26052 부터는 sudo도 도입되었다.[8] GTK+ sudo, 이쪽이 제일 가깝다.[9] 한때 은행이나 공공기관에서 사용하는 보안 프로그램이 UAC 때문에 정상 작동되지 않는 경우가 있었으나 현재는 UAC가 켜져 있다고 크게 문제가 되지는 않는다.[10] 그만큼 Windows가 안드로이드에 비해 사용자의 권한과 자유도가 높다는 뜻도 되지만 큰 힘에는 큰 책임이 따른다는 말이 있듯이 사용자에게 주어진 권한과 자유도가 높을수록 사용자에게 부여되는 책임도 커지기 마련이다. 그만큼 UAC를 완전히 끄면 켰을 때보다도 보안에 더 많은 신경을 써야 할 것이다.[11] 윈도우의 경우 Windows 10부터는 필수 업데이트 설치가 사실상 강제되어서 일반 사용자들은 인터넷만 연결되어 있으면 윈도우가 시스템 종료 중에 업데이트가 자동으로 진행하며 문제 발생 시 롤백까지 자동으로 수행한다.[12] 실제로 녹화 프로그램 등으로 녹화 중에 UAC 창을 띄우면 검은 화면만 녹화된다. Ctrl+Alt+Del 메뉴 또한 마찬가지. 물론 캡쳐보드 같은 물건을 사용하여 녹화하면 그대로 다 녹화된다.[13] 그 이후 화면이 어두워지는 보안 데스크톱이 추가되는 원인이 되었다.[14] '사용자 분리'라는 개념 자체가 없었다.[15] 예로 에디트플러스의 경우에는 관리자 권한에서는 C:\\Program Files\\EditPlus 폴더에 INI 파일이 저장되지만, 일반 사용자 권한에서는 C:\\Users\\(계정명)\\AppData\\Roaming\\EditPlus 폴더에 저장이 된다.[16] 물론 이것조차도 뚫기도 하는 경우도 있지만 웹 브라우저뿐만 아니라 윈도우도 뚫어야만 하기 때문에 난이도가 급상승하게 된다.[17] Windows 11에서는 흰색이다. 나머지는 거의 동일.[18] 이 경우 cmd로 실행시키거나 특수 계정으로 로그인 후 실행해야 한다.[19] Windows 10 1607 이전에는 실행(권장하지 않음)버튼을 눌러 실행할 수 있었다. 지금은 귀찮게 Windows Defender나 Smart Screen의 제외 목록에 추가해야 한다.[20] 2년마다 갱신하는데 수십만원을 요구한다.[21] 보안 데스크톱으로 진입하지 않는다. 이는 관계없는 다른 창들을 모두 가려버리고 UAC 창만 돋보이게 하는 기능이며, UAC 창이 뜬 상태에서 다른 프로그램이 실행되지 않도록 차단하는 기능을 한다. 이는 악성 프로그램이 UAC로 위장하거나 자동으로 '예'를 클릭해서 권한 상승을 하는 것을 막기 위한 것이라고 한다.[22] 1,2단계는 설정페이지에서도 권장하지 않는다고 단도직입적으로 말하고 있다.[23] 시스템 드라이브의 최상위 경로, Program Files 폴더, Windows 폴더 등.[24] cmd를 관리자 권한으로 실행시키고 net user administrator /active:yes를 입력하면 된다.[25] HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System 폴더에서 EnableLUA를 0으로 변경한 다음 재부팅하면 된다.[26] Home 버전의 경우 로컬 보안 정책이 기본적으로 없기 때문에 이 방법이 먹히지 않지만, 레지스트리를 조정하는 방법이 있다. HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System 폴더에서 FilterAdministratorToken 값을 1로 바꾸면 된다.[27] 아 깜짝이야[28] 편법으로 sudo passwd root의 명령어를 사용해서 root 계정의 비밀번호를 바꾸고 Unity 설정을 건드려 root 계정으로 로그인할 수 있다. 물론 보안상 권장되지 않는다.[29] 이와 비슷하게 인터넷 공유기 역시 접속 암호화와 관리자 계정 암호화, 그리고 주기적인 펌웨어 업데이트가 요구된다. 인터넷 공유기의 취약점을 악용해서 DNS를 변조, 악성 프로그램을 사용자 PC나 스마트폰에 설치하는 사례가 상당히 흔하다.[30] UAC가 나오지 않은 프로그램[31] 건드린다는 것은, 읽기/쓰기/액세스는 물론이고 프로세스 후킹 등의 정보 참조도 불가능하다.[32] Windows XP에서는 제한된 계정에서 다음 사용자로 실행 기능을 통해 관리자 권한으로 실행한 프로그램이다.[33] XP에서도 사용된 "내 컴퓨터" 폴더에서도 컴퓨터 명칭을 찾을 수 있다.[34] 8에서부터 "내 PC" 폴더를 사용하는 등의 과도기가 있었다.
이 문서의 내용 중 전체 또는 일부는 2024-08-05 00:55:18에 나무위키 사용자 계정 컨트롤 문서에서 가져왔습니다.