Windows Vista User Account Control (UAC)
이 글은 Microsoft Windows Vista UAC개발 정보에서 다운로드한 Top 10 Ways to Light Up Your Windows Vista Apps의 UAC(User Account Control)부분에 대해 살펴본 내용이다.
Windows Vista를 설치하고 처음에 접할때 가장 혼란을 주는 부분중의 하나가 UAC이다.
UAC로 인해서 국내의 ActiveX기반의 수많은 사이트들을 제대로 이용을 할 수 없기 때문이다.
Why User Account Control?
사용자 계정 컨트롤을 사용해야 하는 이유
어플리케이션 개발자는 과도한 유저권한과, 윈도우 권한이 필요한 윈도우 어플리케이션을 자주 만들었다. 이런 어플리케이션은 실행유저가 관리자여야 했습니다. 그 결과 일부 권한이 제한된 유저 계정이 필요했고, 많은 기업들은 쉬운 개발과 관리자로 배포하지만, 일반 유저로 쉽게 사용하게 하는것 사이에서의 조화를 고민해야 했다.
Vista이전의 컴퓨터에서 일반유저로 어플리케이션을 실행하기 어려운 이유는 다음과 같다.
1. 많은 윈도우 어플리케이션은 관리자로 로그인해야 한다.
하지만 사실은 관리자레벨의 접근이 필요 없다.
이런 Application은 실행허가 전에 아래와 같은 많은 관리자 접근 체크를 한다.
- 관리자 접근 토큰 확인
- 시스템 보호 영역에 "All Access" 권한 요청
- 보호된 영역에 데이터 기록 (%ProgramFIles%, %WinDir%, HKLM\Software)
2. 많은 윈도우 어플리케이션은 최소권한의 컨셉으로 디자인되지 않았고,
관리자 기능과, 사용자를 두개의 다른 프로세스로 구분하고 있지 않다.
3. Windows 2000과 XP는 기본적으로 새로운유저는 관리자로 생성된다.
그러므로, 날짜, 시간, 전원관리 제어판등 기본적인 윈도우 컴포넌트도
일반유저로는 작동하지 않았다.
4. Windows 2000과 XP는 두 가지로 분리된 유저 계정을 생성해야 했다.
관리 작업과, 일상적인 사용을 위한 작업이다.
그러므로, 유저는 일반 사용자 계정을 로그오프하고, 다시 관리자 계정으로 로그인하거나,
또는 관리작업을 Run As로 실행해야 했다.
UAC로 MS는 기업과 가정환경에서 사용자 데스크톱에 간단하게 배포할 수 있는 기술을 제공하게 되었다.
Windows NT 3.1에서 처음 디자인된 윈도우 보안 구조를 버리고, UAC팀은 유연하면서, 더 안전한 일반유저 모델(Standard User Model)을 구현하였다. 이전 버전의 윈도우는 관리자가 로그인하는 동안 한개의 액세스 토큰을 생성하였다. 관리자의 액세스 토큰은 대부분의 윈도우 권한과, 대부분의 관리자 보안 인증(SIDs)응 가지고 있다. 이 액세스 토큰은 관리자가 어플리케이션을 설치, OS설정, 모든 자원의 접근을 보장한다.
UAC팀은 Windows Vista에서 액세스 토큰을 생성하는 방식에 전혀 다르게 접근했다. 관리자가 Vista컴퓨터에 로그인할때 두개의 액세스 토큰을 생성한다.
제한된 일반유저 액세스토큰(a filtered standard user accress token)
전체 관리자 액세스토큰(a full administrator access token)
관리자의 액세스토큰으로 데스크톱(explorer.exe)를 실행하는 대신에 일반유저 엑세스 토큰이 사용된다. 이렇게 실행된 데스크톱(explorer,exe precess)의 모든 자식 프로세스는 Windows Vista's attack surface 제한을 돕는다. 기본적으로 관리자를 포함한 모든유저는 Windows Vista시스템에 일반유저로 로그인하게 된다.
[Note: 딱 한가지 예외가 있다. Geust는 일반유저보다 작은 역할과 권한으로 로그인한다.]
관리자가 어플리케이션 같은 관리업무를 수행하려고 하면, UAC는 사용자에게 그 작업을 수행할지를 물어본다. 유저가 동작을 승인하면, 관리자의 전체 관리자 액세스토큰으로 작업이 진행된다. 이것이 기본 관리자 승인 동작(default administrator prompt behavior)이다. 여기에 관한 설정은 Local Security Policy Manager Sanp-in (secpol.msc)와 Group Policy (gpedit.msc)에서 할 수 있다.
[Note: UAC가 활성화된 Windows Vista관리자 계정은 관리자승인모드의 관리자계정 (Administrator account in Admin Approval Mode)라고도 부른다. AAM은 기본유저가 Administrators인지 식별한다.]
각각의 관리상향은 또한 프로세스별로 구분되어, 유저에게 승인받지 않고, 다른프로세스들이 액세스토큰을 사용하는 것을 막는다. 그 결과 관리유저는 대단한 악성코드가 로그인한 유저가 전체관리자 엑세스토큰권한을 가지길 동안에도, 어떤 어플리케이션들을 설치할 것인지를 세세하게 조정할수 있다.
일반 유저또한 UAC인프라스트럭쳐에 의해서 실행중에 권한상향과 관리승인실행 기회를 가지게 된다. 일반유저가 관리작업을 실행하게 되면, UAC는 유저에게 관리자 계정의 정확한 인증을 요구하게 된다. 이것이 기본 일반유저 승인 동작(default standard user prompt behavior)이다. 이또한 Local Security Policy Manager Sanp-in (secpol.msc)와 Group Policy (gpedit.msc)에서 설정 할 수 있다.
Windows Vista Update
이 업데이트 기능은 Windows Vista에서 기능상의 누적 중요 업데이트를 반영한다.
- 기본적으로 UAC 사용
- 이후의 모든 사용자 계정은 표준 사용자로 생성됨
- 보안데스크톱에 권한 상승 요청이 표시됨
- 백그라운드 프로그램은 권한 상승 요청이 작업표시줄에 알림
- 사용자의 로그인 과정의 권한상승 차단
- 새 설치에서 기본제공 빌드인관리자 계정은 기본적으로 비활성화
- 사용자 계정 컨트롤 및 원격 시나리오
- 새 기본 ACL 설정
UAC is Enabled by Default
UAC는 기본적으로 활성화 되어 있다. 그러므로 Windows Vista UAC 컴포넌트를 위해 업데이트되지 않은 다른 어플리케이션에서는 호환성 문제를 격을 수 있다. 만약 어플리케이션이 관리자 액세스 토큰이 필요하면 (어플리케이션을 실행하려고 할때, "액세스 거부"라고 표시되는 경우를 나타낸다.), 프로그램을 컨텍스트 메뉴(오른쪽 클릭)의 Run As administrator 옵션을 사용해서 관리자로 프로그램을 실행할 수 있다. 이부분은 나중에 Running Programs as an Administrator section 부분에서 살펴보자.
All Subsequent User Accounts are Created as Standard Users
일반유저와 관리자유저 모두 UAC의 향상된 보안의 장점을 누릴 수 있다. 새로 인스톨하는 경우 기본적으로 첫 유저 계정은 관리승인모드(UAC enabled)에서 로컬 관리자 계정으로 생성된다. 모든 다음 계정은 일반 유저로 생성된다.
Elevation Prompts are Displayed on the Secure Desktop by Default
동의와 승낙에 대한 프롬프트는 Windows Vista의 보안데스크톱에 표시된다.
Elevation Prompts for Background Applications are Minimized to the Taskbar
백그라운드 어플리케이션은 자동으로 보안데스크톱으로 가지 않고, 자동으로 유저에게 관리상향을 작업표시줄에서 물어본다. 권리상향창은 작업표시줄에 최소화되어 나타나고 유저에게 어플리케이션에 권한상향이 필요하다는것을 알리기위해 깜박인다. 예를 들어, 유저가 웹사이트를 방문하고, 설치파일을 다운로드 할때 백그라운드 권한상향이 발생한다. 설치파일을 백그라운드로 다운로드할때 유저가 이메일을 체크하러 간 경우이다. 권한상향은 포그라운드 태스크 보다는 백그라운드 태스크로 우선적으로 인지(detected)한다. 한번 다운로드가 완료되면, 설치는 시작된다. 이 인지(detection)은 설치작업이 유저가 이메일을 읽는등의 다른작업을 하는동안 화면에서 포커스를 갑자기 뺏어가는 것을 방지한다. 이런 동작은 사용자가 권한상향을 할때 더 나은 경험을 제공한다. 어플리케이션 개발자가 그들의 어플리케이션이 권한상향을 요청받았을때 작업표시줄로 최소화하지 않을 수 있는지에 대한 정보는 나중에 다시 살펴보자.
Elevations are blocked in the User's Logon Path
사용자가 로그인했을때 시작되고, 권한상향이 필요한 어플리케이션은 로그인과정에서 현재
차단된다. 사용자 로그인 과정에서 권한상향때 어플리케이션을 차단하지 않으면, 일반유저와 관리자 모두 로그인하는 동안 매번 UAC대화상자를 보게된다. Windows Vista는 어플리케이션이 차단된경우 시스템트레이에 아이콘으로 표시한다. 사용자는 아이콘에서 오른쪽 마우스를 눌러서 로그인과정에 상향이 필요해 차단된 어플리케이션을 실행할 수 있다. 사용자는 이 트레이아이콘을 더블 클릭하여 시작어클리케이션을 비활성화 하거나, 삭제 할 수 있다.
Built-in Administrator Account is Disabled by Default on New Installations
윈도우트 XP에서 업그레이드 하는동안 Windows Vista에서 빌트인 관리자를 오직 로컬관리자계정으로만 활성화 하도록했다면, Windows Vista는 관리승인모드(Admin Approval Mode)에 계정을 활성화한채로 남겨둔다. 빌트인관리자계정은 기본적으로 안전모드에서 로그인 할수 없다. 자세한 정보는 다음섹션을 보자. 셋업하는 동안 빌트인 관리자 계정은 사용자 이름 관리자(user name Administrator)와 함께 생성된다.
Non-Domain Joined
적어도 하나의 로컬 관리자 계정이 있다면, 안전모드는 빌트인관리자로 로그인하는 것을 차단한다. 대신에 어떤 로컬관리자 계정도 로그인 할 수 있다. 마지막 로컬 관리자 계정이 의도하지 않게, 관리자 권한보다 낮아졌거나, 비활성화 되거나, 삭제된경우에는, 응급복구를 위해 안전모드는 비활성화된 빌트인 관리자로 로그인하는 것을 허용한다.
Domain Joined
비활성화된 빌트인 관리자 계정은 모든경우에 안전모드로 로그인 할 수 없다. 로컬관리자 계정이 없다면, 이를 생성하기 위해 도메인 관리자 그룹(Domain Admins groups)의 멤버인 사용자계정으로 컴퓨터에 로그인 할 수 있다.
[Note: 만약 도메인 관리 계정이 이전에 한번도 로그인 한적이 없다면, 자격증명이 캐쉬되어 있지 않기 때문에, 컴퓨터는 네트워크 지원 안전모드로 시작되어야 한다. ]
[Note: 머신이 도메인에서 탈퇴한경우에는, 앞에서 기술된 도메인에 참가하지 않은 경우의 동작으로 돌아간다.]
User Account Control and Remote Scenarios
원격으로 Windows Vista computer에 리모트데스크톱을 통해서 관리자가 로그인한 경우, 사용자는 컴퓨터에 기본적으로 일반유저로 로그인된다. 연결을 통한 원격관리는 제한되도록 변경되었다. 이는 사용자가 관리가능한 권한으로 실행되는 경우, 악성코드가 관리자 루프백 어플리케인셩을 실행하는 것을 막도록 도와준다.
Local User Accounts
사용자가 Windows Vista 컴퓨터의 로컬 보안 계정 관리자(Local Security Account Manager - SAM) 데이터베이스의 관리자 계정으로 Windows Vista 컴퓨터에 원격으로 연결간 경우, 사용자는 리모트 컴퓨터에서 권리상향을 할 수 없고, 관리 업무를 수행 할 수 없다. 만약 사용자가 SAM계정으로 워크스테이션을 관리하려면, 사용자는 컴퓨터에 대화식(interactively)으로 로그인하여 관리자가 될수 있다.
Domain User Accounts
도메인 유저 계정으로 사용자가 관리자그룹의 멤버에서 Windows Vista 컴퓨터에 원격으로 로그인 한경우, 도메인 유저는 전체 관리자 엑세스 토큰으로 원격 컴퓨터에서 실행되고, UAC는 영향을 미치지 않는다.
New Default Access Control List (ACL) Settings
특정 Windows 디렉토리에서의 ACLs는 데이타디렉토리와 사용자의 보호된 디렉토의 외부의 디렉토리에서 데이타 공유와 협업(collaboration)이 가능하게 변경되었다. 사용자의 보호된 디렉토리는 그들의 유저 프로파일이다. (예: C:\Users\Denise\Pictures) 예의 데이타 디렉토리는 데이타 드라이브의 OS파티션 외부에 위치한다. (예: D:\Puctures) 이 경우의 C루트디렉토리는 더 강력한 ACLs로 보호되어, 사용자는 WIndows Vista 이전 버전처럼 데이타 디렉토리를 사용할 수 없다.
이 ACL 변경은 UAC대화상자 동의 없이 사용자가 파일을 공유하고 수정할 수 있게 해준다. 그리고 사용자는 이제 개인 폴더를 만들 수 있다. 이 변경은 사용자가 여전히 쉽게 데이타 드라이브에 비밀성과 안정성을 유지할 수 있게 해준다. 이 개인폴더는 여전히 관리상향된 다른 관리자가 여전히 읽을 수 있고, 일반유저로부터 데이터를 사적으로 지켜준다.
다음은 Windows XP에서 %systemroot% 와 데이타 드라이브에서의 기본 ACL 설정이다.
Windows XP %systemroot% and data drive ACL setting
User or Group |
Access Control Entry |
---|---|
BUILTIN\Administrators |
Full control |
NT AUTHORITY\SYSTEM |
Full control |
CREATOR OWNER |
Full control |
BUILTIN\Users |
Read Special access: FILE_APPEND_DATA Special access: FILE_WRITE_DATA |
Everyone |
Read |
다음은 새로운 Windows Vista 데이타 드라이브 ACL 설정을 format.exe로 만들어지는 데이타 드라이브에 대한 설명이다.
Windows Vista data drive ACL settings
User or Group |
Access Control Entry |
---|---|
BUILTIN\Administrators |
Full control |
NT AUTHORITY\SYSTEM |
Full control |
NT AUTHORITY\Authenticated Users |
Modify |
BUILTIN\Users |
Read and execute Generic read, generic execute |
다음은 새로운 Windows Vista OS 루트 (%systemroot%) ACL 설정에 대한 설명이다.
Windows Vista data %systemroot% ACL settings
User or Group |
Access Control Entry |
---|---|
BUILTIN\Administrators |
Full control |
NT AUTHORITY\SYSTEM |
Full control |
BUILTIN\Users |
Read and execute |
NT AUTHORITY\Authenticated Users |
Modify Append data |
Mandatory Label\High Mandatory Level |
No write |
New UAC Security Settings and Security Setting Name Changes
새로운 보안 설정과 보안 설정 이름은 UAC 참고 섹션에 자세하게 나타나 있다.
--------------------------------------------------------------------------------
그냥 문서를 보다가 정리해 봤다.
출처에서 도움말(chm)파일을 받아서 살펴보자~
개인적으로 나머지 관심 섹션들도 시간이 되면 정리해 봐야겠다..
특히 UAC에 따라서 프로그램을 수정해 봐야겠당..
개인적으로는 전혀 간단하지 않아 졌다.
관리자 권한을 주지 않고 시스템을 보호하면서도 필요시에 유저 권한을 상향(Elevation)하여 설치나 관리를 수행하고,
일반적으로는 일반유저로 사용을 하게 된다는 것인데...
결국 지켜야할 개발 가이드 라인도 많고,
사용자에게 서비스 하기 어려워 졌다.
악성코드로 부터 OS안정성을 높히기 위한 극단의 처방같다.
아니면 한국에서 너무 ActiveX를 많이 써왔나 보다...
생각해보면 악성백도어나 게임사이트들의 웹상의 런쳐나 모두 같은일을 하는게 아닌가? --;
출처 : Windows Vista 정보:
사용자 계정 컨트롤을 위한 Windows Vista 응용 프로그램 개발 요구 사항
http://www.microsoft.com/korea/msdn/library/ko-kr/dnlong/html/wvduac.aspx
참고 : Windows Vista Developer Security Center
'Coding > Vista Issue' 카테고리의 다른 글
Windows Vista UAC(3) - How UAC Works(3) (0) | 2011.09.19 |
---|---|
Windows Vista UAC(2) - How UAC Works(1) (0) | 2011.09.19 |
Manifest 파일 추가시키는 방법 (2008.03 - 네이버 블로그 옮겨옴) (0) | 2011.09.19 |