사용자 계정 컨트롤 작동 방법

UAC(사용자 계정 컨트롤)는 Windows 보안의 핵심 부분입니다. UAC는 관리자 권한으로 실행하는 악성 코드의 기능을 제한하여 맬웨어의 위험을 줄입니다. 이 문서에서는 UAC의 작동 방식과 UAC가 최종 사용자와 상호 작용하는 방법을 설명합니다.

UAC 프로세스 및 상호 작용

UAC를 사용하면 관리자 액세스 토큰 이 필요한 각 애플리케이션에서 최종 사용자에게 동의를 요청해야 합니다. 유일한 예외는 부모 프로세스와 자식 프로세스 간에 존재하는 관계입니다. 자식 프로세스는 부모 프로세스에서 사용자의 액세스 토큰을 상속합니다. 그러나 부모 프로세스와 자식 프로세스는 모두 동일한 무결성 수준을 가져야 합니다.

Windows는 무결성 수준을 표시하여 프로세스를 보호합니다. 무결성 수준은 신뢰의 측정값입니다.

  • 높은 무결성 애플리케이션은 디스크 분할 애플리케이션과 같은 시스템 데이터를 수정하는 작업을 수행하는 애플리케이션입니다.
  • 낮은 무결성 애플리케이션은 웹 브라우저와 같이 운영 체제를 손상시킬 수 있는 작업을 수행하는 애플리케이션입니다.

무결성 수준이 낮은 애플리케이션은 무결성 수준이 높은 애플리케이션의 데이터를 수정할 수 없습니다. 표준 사용자가 관리자 액세스 토큰이 필요한 앱을 실행하려고 하면 UAC에서 사용자에게 유효한 관리자 자격 증명을 제공하도록 요구합니다.

이 프로세스의 작동 방식을 더 잘 이해하려면 Windows 로그인 프로세스를 좀 더 자세히 살펴보겠습니다.

로그인 프로세스

다음 다이어그램에서는 관리자의 로그인 프로세스가 표준 사용자의 로그인 프로세스와 어떻게 다른지 보여 줍니다.

UAC Windows 로그인 프로세스를 설명하는 다이어그램

기본적으로 표준 사용자와 관리자 모두 리소스에 액세스하고 표준 사용자의 보안 컨텍스트에서 앱을 실행합니다.
사용자가 로그인하면 시스템에서 해당 사용자에 대한 액세스 토큰을 만듭니다. 액세스 토큰에는 특정 SID(보안 식별자) 및 Windows 권한을 포함하여 사용자에게 부여되는 액세스 수준에 대한 정보가 포함됩니다.

관리자가 로그온하면 사용자에 대해 표준 사용자 액세스 토큰과 관리자 액세스 토큰이라는 두 개의 별도 액세스 토큰이 만들어집니다. 표준 사용자 액세스 토큰:

  • 관리자 액세스 토큰과 동일한 사용자별 정보를 포함하지만 관리 Windows 권한 및 SID는 제거됩니다.
  • 관리 작업을 수행하지 않는 애플리케이션을 시작하는 데 사용됩니다(표준 사용자 앱).
  • explorer.exe 프로세스를 실행 하여 데스크톱을 표시하는 데 사용됩니다. Explorer.exe 다른 모든 사용자 시작 프로세스가 액세스 토큰을 상속하는 부모 프로세스입니다. 따라서 모든 앱은 사용자가 전체 관리 액세스 토큰을 사용하도록 앱을 승인하기 위한 동의 또는 자격 증명을 제공하지 않는 한 표준 사용자로 실행됩니다.

Administrators 그룹의 구성원인 사용자는 표준 사용자 액세스 토큰을 사용하는 동안 로그인, 웹 찾아보기 및 전자 메일을 읽을 수 있습니다. 관리자가 관리자 액세스 토큰이 필요한 작업을 수행해야 하는 경우 Windows는 사용자에게 승인을 요청하는 메시지를 자동으로 표시합니다. 이 프 롬프트를 권한 상승 프롬프트라고 하며 정책 또는 레지스트리를 통해 해당 동작을 구성할 수 있습니다.

UAC 사용자 환경

UAC를 사용하도록 설정하면 표준 사용자에 대한 사용자 환경이 관리자 사용자와 다릅니다. Windows를 실행하는 권장되고 더 안전한 방법은 기본 사용자 계정이 표준 사용자인지 확인하는 것입니다. 표준 사용자로 실행하면 관리되는 환경에 대한 보안을 최대화하는 데 도움이 됩니다. 기본 제공 UAC 권한 상승 구성 요소를 사용하면 표준 사용자가 로컬 관리자 계정에 유효한 자격 증명을 입력하여 관리 작업을 쉽게 수행할 수 있습니다.

표준 사용자에 대한 기본 제공 UAC 권한 상승 구성 요소는 자격 증명 프롬프트입니다.

표준 사용자로 실행하는 대안은 관리 승인 모드에서 관리자 권한으로 실행하는 것입니다. 기본 제공 UAC 권한 상승 구성 요소를 사용하면 로컬 관리자 그룹의 구성원이 승인을 제공하여 관리 작업을 쉽게 수행할 수 있습니다.

관리 승인 모드의 관리자 계정에 대한 기본 제공 UAC 권한 상승 구성 요소를 동의 프롬프트라고 합니다.

자격 증명 프롬프트

자격 증명 프롬프트는 표준 사용자가 사용자의 관리 액세스 토큰이 필요한 작업을 수행하려고 할 때 표시됩니다. 또한 관리자는 사용자 계정 컨트롤: 관리 승인 모드 정책 설정 값의 관리자 권한 상승 프롬프트 동작자격 증명 확인으로 설정하여 자격 증명을 제공해야 할 수도 있습니다.

UAC 자격 증명 프롬프트를 보여 주는 스크린샷

동의 프롬프트는 사용자가 사용자의 관리 액세스 토큰이 필요한 작업을 수행하려고 할 때 표시됩니다.

UAC 동의 프롬프트를 보여 주는 스크린샷

UAC 권한 상승 프롬프트

UAC 권한 상승 프롬프트는 앱별로 색으로 구분되어 애플리케이션의 잠재적 보안 위험을 보다 쉽게 식별할 수 있도록 합니다. 앱이 관리자의 모든 액세스 토큰으로 실행하려고 하면 Windows는 먼저 실행 파일을 분석하여 게시자를 확인합니다. 앱은 먼저 파일의 게시자에 따라 세 가지 범주로 구분됩니다.

  • Windows
  • 게시자 확인됨(서명됨)
  • 게시자가 확인되지 않음(서명되지 않음)

권한 상승 프롬프트 색 코딩은 다음과 같습니다.

  • 회색 배경: 애플리케이션은 windows 관리 앱(예: 제어판 항목 또는 확인된 게시자가 서명한 애플리케이션)으로 서명된 실행 파일이 있는 UAC 자격 증명 프롬프트를 보여 주는 스크린샷입니다.
  • 노란색 배경: 애플리케이션이 서명되지 않았거나 서명되었지만 서명되지 않은 실행 파일이 있는 UAC 동의 프롬프트를 보여 주는 신뢰할 수 없는 스크린샷

방패 아이콘

날짜 및 시간과 같은 일부 제어판 항목에는 관리자와 표준 사용자 작업의 조합이 포함되어 있습니다. 표준 사용자는 시계를 보고 표준 시간대를 변경할 수 있지만 로컬 시스템 시간을 변경하려면 전체 관리자 액세스 토큰이 필요합니다. 다음은 날짜 및 시간 제어판 항목의 스크린샷입니다.

날짜 및 시간 속성의 UAC Shield 아이콘을 보여 주는 스크린샷

날짜 및 시간 변경... 단추의 방패 아이콘은 프로세스에 전체 관리자 액세스 토큰이 필요했음을 나타냅니다.

권한 상승 프롬프트 보호

권한 상승 프로세스는 프롬프트를 보안 데스크톱으로 전달하여 더욱 보호됩니다. 동의 및 자격 증명 프롬프트는 기본적으로 보안 데스크톱에 표시됩니다. Windows 프로세스만 보안 데스크톱에 액세스할 수 있습니다. 높은 수준의 보안을 위해 권한 상승 정책 설정을 사용하도록 설정하라는 메시지가 표시될 때 사용자 계정 컨트롤: 보안 데스크톱으로 전환하는 것이 좋습니다.

실행 파일이 권한 상승을 요청하면 사용자 데스크톱이라고도 하는 대화형 데스크톱이 보안 데스크톱으로 전환됩니다. 보안 데스크톱은 사용자 데스크톱을 어둡게 하고 계속하기 전에 응답해야 하는 권한 상승 프롬프트를 표시합니다. 사용자가 또는 아니요를 선택하면 데스크톱이 사용자 데스크톱으로 다시 전환됩니다.

참고

Windows Server 2019부터는 클립보드의 콘텐츠를 보안 데스크톱에 붙여넣을 수 없습니다. 이는 현재 지원되는 Windows 클라이언트 OS 버전과 동일한 동작입니다.

맬웨어는 보안 데스크톱을 모방할 수 있지만 사용자 계정 컨트롤: 관리 승인 모드 정책 설정에서 관리자에 대한 권한 상승 프롬프트의 동작이동의 요청으로 설정된 경우 사용자가 모방에서 예를 선택하면 맬웨어가 상승되지 않습니다. 정책 설정이 자격 증명 확인으로 설정된 경우 자격 증명 프롬프트를 모방하는 맬웨어가 사용자로부터 자격 증명을 수집할 수 있습니다. 그러나 맬웨어는 상승된 권한을 얻지 못하며 시스템에는 수집된 암호로도 사용자 인터페이스를 제어하지 못하도록 맬웨어를 완화하는 다른 보호가 있습니다.

맬웨어는 보안 데스크톱을 모방할 수 있지만 사용자가 이전에 PC에 맬웨어를 설치하지 않으면 이 문제가 발생할 수 없습니다. UAC를 사용할 때 관리자 액세스 토큰이 필요한 프로세스는 자동으로 설치할 수 없으므로 사용자는 예를 선택하거나 관리자 자격 증명을 제공하여 명시적으로 동의를 제공해야 합니다. UAC 권한 상승 프롬프트의 특정 동작은 보안 정책에 따라 달라집니다.

UAC 아키텍처

다음 다이어그램에서는 UAC 아키텍처를 자세히 설명합니다.

UAC 아키텍처를 설명하는 다이어그램.

각 구성 요소를 더 잘 이해하려면 다음 테이블을 검토합니다.

사용자

구성 요소 설명
사용자가 권한이 필요한 작업을 수행합니다. 작업이 파일 시스템 또는 레지스트리를 변경하는 경우 가상화가 호출됩니다. 다른 모든 작업은 ShellExecute를 호출합니다.
ShellExecute ShellExecute는 CreateProcess를 호출합니다. ShellExecute는 CreateProcess에서 ERROR_ELEVATION_REQUIRED 오류를 찾습니다. 오류가 수신되면 ShellExecute는 애플리케이션 정보 서비스를 호출하여 관리자 권한 프롬프트를 사용하여 요청된 작업을 수행하려고 시도합니다.
Createprocess 애플리케이션에 상승이 필요한 경우 CreateProcess는 ERROR_ELEVATION_REQUIRED 호출을 거부합니다.

System

구성 요소 설명
애플리케이션 정보 서비스 로컬 관리 작업 및 더 높은 무결성 수준이 필요한 앱과 같이 하나 이상의 관리자 권한 또는 사용자 권한이 필요한 앱을 시작하는 데 도움이 되는 시스템 서비스입니다. 애플리케이션 정보 서비스는 권한 상승이 필요할 때 관리자의 모든 액세스 토큰을 사용하여 애플리케이션에 대한 새 프로세스를 만들어 이러한 앱을 시작하는 데 도움이 됩니다. 구성된 정책에 따라 사용자가 동의할 수 있습니다.
ActiveX 설치 권한 상승 ActiveX가 설치되지 않은 경우 시스템은 UAC 슬라이더 수준을 확인합니다. ActiveX가 설치된 경우 사용자 계정 컨트롤: 권한 상승 그룹 정책 설정을 확인할 때 보안 데스크톱으로 전환합니다.
UAC 슬라이더 수준 확인 UAC에는 4가지 알림 수준 중에서 선택할 수 있는 슬라이더가 있습니다.
  • 항상 알림 은 다음을 수행합니다.
    • 프로그램이 소프트웨어를 설치하거나 컴퓨터를 변경하려고 할 때 사용자에게 알립니다.
    • Windows 설정을 변경할 때 사용자에게 알립니다.
    • 응답할 때까지 다른 작업을 동결합니다.
    새 소프트웨어를 자주 설치하거나 익숙하지 않은 웹 사이트를 방문하는 경우 권장됩니다.
  • 프로그램이 내 컴퓨터를 변경하려고 할 때만 알림 은 다음과 같습니다.
    • 프로그램이 소프트웨어를 설치하거나 컴퓨터를 변경하려고 할 때 사용자에게 알립니다.
    • Windows 설정을 변경할 때 알리지 않습니다.
    • 응답할 때까지 다른 작업을 동결합니다.
    자주 앱을 설치하거나 익숙하지 않은 웹 사이트를 방문하지 않는 경우 권장됩니다.
  • 프로그램이 내 컴퓨터를 변경하려고 할 때만 알림(바탕 화면을 흐리게 하지 않음) 은 다음과 같습니다.
    • 프로그램이 소프트웨어를 설치하거나 컴퓨터를 변경하려고 할 때 사용자에게 알립니다.
    • Windows 설정을 변경할 때 알리지 않습니다.
    • 응답할 때까지 다른 작업을 중지하지 않습니다.
    권장되지 않습니다. 컴퓨터의 바탕 화면을 어둡게 하는 데 시간이 오래 걸리는 경우에만 선택합니다.
  • 알리지 않음(UAC 프롬프트 사용 안 함)은 다음을 수행합니다 .
    • 프로그램이 소프트웨어를 설치하거나 컴퓨터를 변경하려고 할 때 알리지 않습니다.
    • Windows 설정을 변경할 때 알리지 않습니다.
    • 응답할 때까지 다른 작업을 중지하지 않습니다.
    보안 문제로 인해 권장되지 않습니다.
보안 데스크톱 사용 사용자 계정 컨트롤: 권한 상승 정책 설정을 묻는 메시지가 표시되면 보안 데스크톱으로 전환합니다.
  • 보안 데스크톱을 사용하도록 설정하면 관리자 및 표준 사용자에 대한 프롬프트 동작 정책 설정에 관계없이 모든 권한 상승 요청이 보안 데스크톱으로 이동합니다.
  • 보안 데스크톱을 사용하도록 설정하지 않으면 모든 권한 상승 요청이 대화형 사용자의 데스크톱으로 이동하고 관리자 및 표준 사용자에 대한 사용자별 설정이 사용됩니다.
Createprocess CreateProcess는 AppCompat, Fusion 및 Installer 검색을 호출하여 앱에 상승이 필요한지 평가합니다. 그런 다음 파일의 애플리케이션 매니페스트에 저장된 요청된 실행 수준을 확인하기 위해 파일을 검사합니다. 매니페스트에 지정된 요청된 실행 수준이 액세스 토큰과 일치하지 않고 ShellExecute에 오류(ERROR_ELEVATION_REQUIRED)를 반환하면 CreateProcess가 실패합니다.
Appcompat AppCompat 데이터베이스는 애플리케이션에 대한 애플리케이션 호환성 수정 항목에 정보를 저장합니다.
퓨전 Fusion 데이터베이스는 애플리케이션을 설명하는 애플리케이션 매니페스트의 정보를 저장합니다. 매니페스트 스키마가 업데이트되어 요청된 새 실행 수준 필드를 추가합니다.
설치 관리자 검색 설치 관리자 검색은 설치 파일을 검색하여 사용자의 지식과 동의 없이 설치가 실행되지 않도록 방지합니다.

커널

구성 요소 설명
가상화 가상화 기술은 비규격 앱이 원인을 확인할 수 없는 방식으로 자동으로 실행되거나 실패하지 않도록 합니다. UAC는 또한 보호된 영역에 쓰는 애플리케이션에 대한 파일 및 레지스트리 가상화 및 로깅을 제공합니다.
파일 시스템 및 레지스트리 사용자별 파일 및 레지스트리 가상화는 컴퓨터별 레지스트리 및 파일 쓰기 요청을 동일한 사용자별 위치로 리디렉션합니다. 읽기 요청은 먼저 가상화된 사용자별 위치와 컴퓨터별 위치(초)로 리디렉션됩니다.

슬라이더는 UAC를 완전히 해제하지 않습니다. 알림 안 됨으로 설정하면 다음이 수행됩니다.

  • UAC 서비스 실행 유지
  • 관리자가 시작한 모든 권한 상승 요청이 UAC 프롬프트를 표시하지 않고 자동 승인되도록 합니다.
  • 표준 사용자에 대한 모든 권한 상승 요청을 자동으로 거부

중요

UAC를 완전히 사용하지 않도록 설정하려면 사용자 계정 제어: 모든 관리자를 관리 승인 모드에서 실행 정책을 사용하지 않도록 설정해야 합니다.

Warning

UAC를 사용하지 않도록 설정한 경우 일부 유니버설 Windows 플랫폼 앱이 작동하지 않을 수 있습니다.

가상화

엔터프라이즈 환경의 시스템 관리자는 시스템을 보호하려고 하기 때문에 많은 LOB(기간 업무) 애플리케이션은 표준 사용자 액세스 토큰만 사용하도록 설계되었습니다. 따라서 UAC가 켜져 있을 때 대부분의 앱을 바꿀 필요가 없습니다.

Windows에는 UAC 규격이 아니며 관리자의 액세스 토큰이 올바르게 실행되어야 하는 앱에 대한 파일 및 레지스트리 가상화 기술이 포함되어 있습니다. UAC 규격이 아닌 관리 앱이 프로그램 파일과 같은 보호된 폴더에 쓰려고 하면 UAC는 앱에 변경하려는 리소스에 대한 자체 가상화된 보기를 제공합니다. 가상화된 복사본은 사용자의 프로필에서 유지 관리됩니다. 이 전략은 비준수 앱을 실행하는 각 사용자에 대해 가상화된 파일의 별도 복사본을 만듭니다.

대부분의 앱 작업은 가상화 기능을 사용하여 제대로 작동합니다. 가상화를 사용하면 대부분의 애플리케이션을 실행할 수 있지만 장기 솔루션이 아닌 단기 수정입니다. 앱 개발자는 파일, 폴더 및 레지스트리 가상화에 의존하지 않고 앱을 가능한 한 빨리 준수하도록 수정해야 합니다.

가상화는 다음 시나리오에서 옵션이 아닙니다.

  • 가상화는 관리자 권한 상승 및 전체 관리 액세스 토큰으로 실행되는 앱에는 적용되지 않습니다.
  • 가상화는 32비트 앱만 지원합니다. 해제되지 않은 64비트 앱은 Windows 개체에 대한 핸들(고유 식별자)을 획득하려고 할 때 액세스 거부 메시지를 받습니다. 네이티브 Windows 64비트 앱은 UAC와 호환되고 올바른 위치에 데이터를 기록해야 합니다.
  • 앱에 요청된 실행 수준 특성이 있는 앱 매니페스트가 포함된 경우 가상화가 비활성화됩니다.

요청 실행 수준

앱 매니페스트는 런타임에 앱이 바인딩해야 하는 공유 및 프라이빗 병렬 어셈블리를 설명하고 식별하는 XML 파일입니다. 앱 매니페스트에는 UAC 앱 호환성을 위한 항목이 포함됩니다. 앱 매니페스트에 항목을 포함하는 관리 앱은 사용자에게 사용자의 액세스 토큰에 액세스할 수 있는 권한을 묻는 메시지를 표시합니다. 앱 매니페스트에 항목이 없지만 대부분의 관리 앱은 앱 호환성 수정을 사용하여 수정 없이 실행할 수 있습니다. 앱 호환성 수정은 UAC 규격이 아닌 애플리케이션이 제대로 작동할 수 있도록 하는 데이터베이스 항목입니다.

모든 UAC 규격 앱에는 요청된 실행 수준이 애플리케이션 매니페스트에 추가되어야 합니다. 애플리케이션에서 시스템에 대한 관리 액세스 권한이 필요한 경우 요청된 실행 수준으로 앱을 관리자가 표시하면 시스템에서 이 프로그램을 관리 앱으로 식별하고 필요한 권한 상승 단계를 수행합니다. 요청된 실행 수준은 앱에 필요한 권한을 지정합니다.

설치 관리자 검색 기술

설치 프로그램은 소프트웨어를 배포하도록 설계된 앱입니다. 대부분의 설치 프로그램은 시스템 디렉터리 및 레지스트리 키에 씁니다. 이러한 보호된 시스템 위치는 일반적으로 Installer 검색 기술의 관리자만 쓸 수 있으므로 표준 사용자는 프로그램을 설치할 수 있는 충분한 액세스 권한이 없습니다. Windows는 액세스 권한으로 실행하기 위해 설치 프로그램을 추론적으로 검색하고 관리자 자격 증명 또는 관리자 사용자의 승인을 요청합니다. 또한 Windows는 애플리케이션을 제거하는 업데이트 및 프로그램을 추론적으로 검색합니다. UAC의 디자인 목표 중 하나는 설치 프로그램이 파일 시스템 및 레지스트리의 보호된 영역에 쓰기 때문에 사용자의 지식과 동의 없이 설치가 실행되지 않도록 하는 것입니다.

설치 관리자 검색은 다음에만 적용됩니다.

  • 32비트 실행 파일
  • 요청된 실행 수준 특성이 없는 애플리케이션
  • UAC를 사용하도록 설정된 표준 사용자로 실행되는 대화형 프로세스

32비트 프로세스를 만들기 전에 다음 특성을 확인하여 설치 관리자인지 확인합니다.

  • 파일 이름에는 "install", "setup" 또는 "update"와 같은 키워드가 포함됩니다.
  • 버전 관리 리소스 필드에는 공급업체, 회사 이름, 제품 이름, 파일 설명, 원본 파일 이름, 내부 이름 및 내보내기 이름 키워드가 포함됩니다.
  • 병렬 매니페스트의 키워드는 실행 파일에 포함됩니다.
  • 특정 StringTable 항목의 키워드는 실행 파일에 연결됩니다.
  • 리소스 스크립트 데이터의 주요 특성은 실행 파일에 연결됩니다.
  • 실행 파일 내에는 대상 바이트 시퀀스가 있습니다.

참고

키워드 및 바이트 시퀀스는 다양한 설치 관리자 기술에서 관찰된 일반적인 특성에서 파생되었습니다.

참고

사용자 계정 컨트롤: 애플리케이션 설치 검색 및 설치 프로그램을 검색하려면 설치 관리자 검색을 위해 권한 상승 정책을 사용하도록 설정해야 합니다. 자세한 내용은 사용자 계정 컨트롤 설정 목록을 참조하세요.

다음 단계

사용자 계정 컨트롤 설정 및 구성에 대해 자세히 알아봅니다.