MSIX는 컨테이너화 모델을 사용하여 시스템의 나머지 부분과 앱을 격리합니다. Docker와 같은 범용 컨테이너 기술과 달리 MSIX 컨테이너는 가상 머신이 아니며 별도의 OS 이미지가 필요하지 않습니다. 대신 Windows 런타임에 앱의 파일 시스템 및 레지스트리 작업을 리디렉션하여 앱을 자체 포함 상태로 유지하면서 나머지 Windows 정상적으로 상호 운용할 수 있도록 합니다.
이 문서에서는 격리 모델, 패키지된 앱에 사용할 수 있는 두 가지 신뢰 수준 및 이 방법이 제공하는 이점에 대해 설명합니다.
MSIX 컨테이너화란 무엇인지 (무엇이 아닌지)
MSIX 패키지를 설치할 때 Windows 앱 자체에서 수정할 수 없는 보호된 위치(C:\Program Files\WindowsApps\)에 앱의 파일을 배치합니다. 런타임에 Windows는 파일 시스템 및 레지스트리의 가상화된 보기를 앱에 제공합니다. 읽기는 패키지의 설치 위치로 이동하고, 쓰기는 Windows가 관리하는 사용자별 위치로 리디렉션됩니다.
즉, 다음을 의미합니다.
- 앱의 설치 파일은 런타임에 수정되지 않습니다.
- 앱 상태는 앱 이진 파일과 별도로 저장되어 업데이트, 복구 및 제거를 깨끗하고 안정적으로 만듭니다.
메모
MSIX 컨테이너는 별도의 운영 체제 환경이 아니라 Windows 런타임 기능입니다. 앱은 네이티브 Windows 프로세스로 실행되며 특정 시스템 리소스에 대한 가상화된 보기만 있습니다.
두 신뢰 수준
패키지된 앱은 격리 수준을 결정하는 두 가지 신뢰 수준 중 하나에서 실행됩니다.
완전 신뢰(중간 무결성)
완전 신뢰 앱은 표준 데스크톱 앱과 동일한 권한으로 실행됩니다. Windows 패키지 ID 및 일부 파일/레지스트리 가상화를 제공하지만 앱은 여전히 대부분의 시스템 리소스에 직접 액세스할 수 있습니다.
이는 MSIX 패키징 도구를 사용하여 Win32 설치 관리자에서 변환된 앱과 대부분의 WinUI 3 데스크톱 앱에 대한 기본값입니다.
AppContainer(부분 신뢰)
AppContainer 앱은 엄격하게 격리된 환경에서 실행됩니다. 프로세스와 해당 자식은 명시적으로 부여된 리소스에만 액세스할 수 있습니다. Windows 파일 시스템 및 레지스트리 가상화 및 AppContainer 보안 경계를 사용하여 격리를 적용합니다.
UWP 앱은 항상 AppContainer에서 실행됩니다. 데스크톱 앱은 앱 매니페스트에서 선언하여 AppContainer를 옵트인할 수도 있습니다.
팁 (조언)
AppContainer 앱은 가장 강력한 보안 보장을 제공하지만, 특히 광범위한 시스템 액세스를 사용하는 앱의 경우 올바르게 구성하려면 더 많은 작업이 필요합니다. 구성 단계는 MSIX AppContainer 앱을 참조하세요.
MSIX 컨테이너화 모델의 이점
| 이익 | 설명 |
|---|---|
| 제거 정리 | Windows 모든 앱 상태를 개별적으로 추적하므로 MSIX 패키지를 제거하면 남은 아티팩트 없이 모든 앱 파일, 레지스트리 항목 및 시스템 변경 내용이 제거됩니다. 사용자가 만든 파일은 유지됩니다. |
| 신뢰할 수 있는 업데이트 | 앱 이진 파일은 런타임에 읽기 전용입니다. 업데이트는 패키지를 원자성으로 대체하며 필요한 경우 앱을 롤백할 수 있습니다. |
| 레지스트리 오염 없음 | 앱의 레지스트리 쓰기는 HKEY_LOCAL_MACHINE가 아닌 사용자별 가상 하이브로 이동합니다. 이렇게 하면 기존 Win32 설치 관리자와 공통적인 레지스트리 확산을 방지할 수 있습니다. |
| 보안 격리 | AppContainer 앱은 명시적으로 부여된 리소스로 제한되어 손상된 프로세스의 영향을 줄입니다. |
| 무결성 적용 | Windows 런타임에 패키지 파일의 변조를 검색할 수 있습니다. 패키지가 변조되면 Windows가 실행을 차단하고 수리를 시작합니다. MSIX 패키지 서명 개요를 참조하세요. |
가상화 범위
모든 파일 시스템 및 레지스트리 위치가 가상화되지는 않습니다. Windows 액세스되는 위치에 따라 다른 동작을 적용합니다.
- 패키지 설치 파일에 대한 쓰기가 차단됩니다. 설치 위치는 읽기 전용입니다.
-
시스템 위치(예:
C:\Windows\)에 대한 쓰기는 AppContainer 앱에 대해 차단됩니다. -
사용자 프로필 위치(예:
AppData)으로의 쓰기 작업은 AppContainer 앱의 패키지별 위치로 리디렉션되거나, 완전 신뢰 앱의 경우 그대로 전달됩니다. -
패키지된 VFS 위치에서의 읽기는 패키지 자체에서 제공되므로 앱이 기존 위치(예:
C:\Program Files\)에 설치된 것처럼 동작합니다.
파일 시스템 및 레지스트리 가상화의 작동 방식에 대한 전체 기술 정보는
공유 컨테이너
기본적으로 각 MSIX 패키지는 자체 격리된 컨테이너에서 실행됩니다. 여러 패키지가 런타임 환경(예: 주 앱 및 사용자 지정 패키지)을 공유해야 하는 엔터프라이즈 시나리오의 경우 Windows 공유 패키지 컨테이너 지원합니다. 공유 컨테이너는 정의된 패키지 집합에 서로의 가상 파일 시스템 및 레지스트리에 대한 병합된 보기를 제공합니다.
관리 권한이 필요한 엔터프라이즈 전용 기능입니다. 공유 패키지 컨테이너를 참조하세요.
유연한 가상화
Windows 11부터 앱은 특정 파일 시스템 폴더 또는 레지스트리 키를 가상화에서 선택적으로 제외함으로써 그 위치를 다른 앱에서도 볼 수 있게 하고, 제거 후에도 지속적으로 유지됩니다. 이는 MSIX 패키징의 이점을 유지하면서 구성 또는 데이터를 다른 앱과 공유해야 하는 앱에 유용합니다.
유연한 가상화를 참조하세요.