Windows 컨테이너에 대한 바이러스 백신 최적화
이 페이지의 정보는 다음에 적용됩니다.
- Windows 10, 버전 1607 이상
- Windows Server 2016 이상 버전
- 호스트에서 실행되는 AV(바이러스 백신) 제품
이 항목에서는 AV 제품이 Windows 컨테이너 파일의 중복 검사를 방지하고 컨테이너 시작 시간을 개선하는 데 사용할 수 있는 최적화에 대해 설명합니다.
컨테이너 개요
Windows 컨테이너 기능은 애플리케이션 배포 및 배포를 간소화하도록 설계되었습니다. 자세한 내용은 Windows 컨테이너 소개를 참조하세요.
컨테이너는 여러 패키지 계층에서 생성됩니다. Windows 기본 OS 패키지는 첫 번째 계층을 형성합니다.
각 컨테이너에는 해당 컨테이너에 대한 시스템 볼륨을 나타내는 격리된 볼륨이 있습니다. 컨테이너 격리 필터(wcifs.sys)는 이 컨테이너 볼륨에 패키지 계층의 가상 오버레이를 제공합니다. 오버레이는 자리 표시자(재분석 지점)를 사용하여 달성됩니다. 컨테이너가 재정의 경로에 먼저 액세스하기 전에 볼륨이 자리 표시자로 시드됩니다. 자리 표시자 파일의 읽기는 지원 패키지 파일로 전달됩니다. 이러한 방식으로 여러 컨테이너 볼륨이 동일한 기본 패키지 파일 데이터 스트림에 액세스할 수 있습니다.
컨테이너가 파일을 수정하는 경우 격리 필터는 쓰기에 복사를 수행하고 자리 표시자를 패키지 파일의 내용으로 바꿉니다. 이렇게 하면 특정 컨테이너의 패키지 파일에 대한 "링크"가 중단됩니다.
읽기 리디렉션
자리 표시자 파일의 읽기는 격리 필터에 의해 적절한 패키지 계층으로 리디렉션됩니다. 리디렉션은 필터 수준에서 수행됩니다. 필터가 AV 범위 아래에 있으므로 AV 필터에는 읽기 리디렉션이 표시되지 않습니다. AV는 리디렉션을 설정하기 위해 수행된 패키지 파일의 열기도 볼 수 없습니다.
AV 필터에는 컨테이너 시스템 볼륨에 대한 모든 작업의 전체 보기가 있습니다. 자리 표시자 파일에 대한 작업과 파일 수정 또는 새 파일 추가가 표시됩니다.
중복 검사 문제
동일한 패키지 계층에 따라 많은 컨테이너가 있을 수 있습니다. 지정된 패키지 파일의 동일한 데이터 스트림은 여러 컨테이너 시스템 볼륨의 자리 표시자에 대한 데이터를 제공합니다. 따라서 모든 컨테이너에서 동일한 데이터의 중복 AV 검사가 발생할 수 있습니다. 이는 컨테이너 성능에 불필요한 부정적인 영향을 줍니다. 이는 컨테이너가 빠르게 시작될 것으로 예상되며 수명이 짧을 수 있다는 점을 감안할 때 나타내는 비용입니다.
권장 접근 방식
컨테이너에서 중복 검사를 방지하려면 아래 설명된 대로 AV 제품이 해당 동작을 수정하는 것이 좋습니다. 이 접근 방식에 대한 고객의 위험/보상 혜택을 결정하는 것은 AV 제품에 달려 있습니다. 이에 대한 자세한 내용은 이 페이지 아래쪽의 혜택 및 위험 섹션을 참조하세요.
1. 패키지 설치
패키지를 설치하는 동안 관리 도구는 계층 루트 아래에 패키지의 파일을 배치합니다. AV 필터는 패키지 루트에 배치되는 파일을 계속 검사해야 하며 일반적으로 검사해야 합니다. 이렇게 하면 계층의 모든 파일이 처음에 맬웨어와 관련하여 클린.
2. 컨테이너 시작 및 실행
컨테이너 볼륨의 실시간 검사를 위해 AV는 중복성을 방지하는 방식으로 검색해야 합니다. 자리 표시자 파일에는 특별한 고려 사항이 필요합니다. 컨테이너에서 수정한 파일 또는 컨테이너에서 만든 새 파일은 리디렉션되지 않으므로 중복 검사는 문제가 되지 않습니다.
중복 검사를 방지하기 위해 AV 필터는 먼저 해당 볼륨의 컨테이너 볼륨 및 자리 표시자를 식별해야 합니다. 여러 가지 이유로 볼륨이 컨테이너 볼륨인지 또는 지정된 파일이 자리 표시자 파일인지 여부를 AV 필터가 쿼리하는 직접적인 방법은 없습니다. 격리 필터는 애플리케이션 호환성 이유로 자리 표시자 재분석 지점을 숨깁니다(일부 애플리케이션은 재분석 지점에 액세스하는 것을 알고 있는 경우 올바르게 작동하지 않음). 또한 볼륨은 컨테이너가 실행되는 동안 컨테이너 볼륨일 뿐입니다. 컨테이너가 중지되고 볼륨이 다시 탑재된 상태로 유지될 수 있습니다. 대신 사전 만들기에서 AV 필터는 파일 개체를 쿼리하여 컨테이너의 컨텍스트에서 열리고 있는지 확인해야 합니다. 그런 다음 만들기에 연결하고 ECP를 만들고 만들기 완료 시 자리 표시자 상태를 받을 수 있습니다.
AV 제품에는 다음과 같은 변경이 필요합니다.
컨테이너 볼륨에서 미리 만드는 동안 자리 표시자 정보를 받을 Create CallbackData에 ECP를 연결합니다. 이러한 만들기는 IoGetSiloParameters를 사용하여 fileobject에서 SILO 매개 변수를 쿼리하여 식별할 수 있습니다. 필터는 WCIFS_REDIRECTION_ECP_CONTEXT 구조체의 크기를 지정해야 합니다. ECP가 승인되면 다른 모든 필드는 필드가 설정됩니다.
사후 만들기에서 ECP가 승인되면 ECP 리디렉션 플래그를 검사합니다. 플래그는 열기가 패키지 계층에서 또는 스크래치 루트(새 파일 또는 수정된 파일)에서 서비스되었는지 여부를 나타냅니다. 플래그는 패키지 계층이 등록되었는지 여부와 원격인지 여부도 나타냅니다.
원격 계층에서 서비스되는 열기의 경우 AV는 파일 검사를 건너뛰어야 합니다. 리디렉션 플래그로 표시됩니다.
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_LAYER && WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_REMOTE_LAYER
원격 계층은 원격 호스트에서 검사된 것으로 가정할 수 있습니다. Hyper-V 컨테이너 패키지는 컨테이너를 호스트하는 유틸리티 VM에 원격입니다. 이러한 패키지는 SMB 루프백을 통해 유틸리티 VM에서 액세스할 때 Hyper-V 호스트에서 정상적으로 검사됩니다.
VolumeGUID 및 FileId는 원격에 적용되지 않으므로 이러한 필드는 설정되지 않습니다.
등록된 계층에서 서비스되는 열기의 경우 AV는 파일 검사를 건너뛰어야 합니다. 리디렉션 플래그로 표시됩니다.
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_LAYER && WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_REGISTERED_LAYER
등록된 계층은 패키지 설치 중 및 서명 업데이트 후에 비동기적으로 검사해야 합니다.
참고
등록된 계층은 나중에 시스템에서 식별되지 않을 수 있습니다. 이 경우 로컬 계층 파일은 마지막 글머리 기호에 설명된 대로 개별적으로 식별되어야 합니다.
로컬 패키지 계층에서 서비스되는 열기의 경우 AV는 레이어 파일의 제공된 VolumeGUID 및 FileId를 사용하여 파일을 검사해야 하는지 확인해야 합니다. 이렇게 하려면 AV가 볼륨 GUID 및 FileId로 인덱싱된 스캔된 파일의 캐시를 빌드해야 할 수 있습니다. 리디렉션 플래그로 표시됩니다.
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_LAYER
스크래치 위치에서 새로 만들기/수정된 파일의 경우 AV 제품은 파일을 검사하고 정상적인 수정을 수행해야 합니다. 리디렉션 플래그로 표시됩니다.
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_SCRATCH
이 경우 레이어 파일이 없으므로 VolumeGUID 및 FileId가 설정되지 않습니다.
"이 파일은 계층에서 서비스됨"을 스트림 컨텍스트의 영구 마커로 저장하지 마세요. 계층 루트에서 처음 서비스되는 파일은 만들기 후에 수정할 수 있습니다. 이 경우 동일한 파일에 대한 후속 만들기는 컨테이너 볼륨에서 만들기가 서비스되고 있음을 나타낼 수 있습니다. AV 필터는 이러한 문제가 발생할 수 있음을 이해해야 합니다.
LayerRootLocations 레지스트리 키를 사용하지 마세요.
과거에는 레지스트리 키를 사용하여 LayerRootLocations
기본 이미지의 위치를 가져오는 것이 좋습니다. AV 제품은 이 레지스트리 키를 더 이상 사용하지 않아야 합니다. 대신 이 항목에서 권장되는 접근 방식을 사용하여 중복 검사를 방지합니다.
패키지 계층을 등록하는 데 사용된 레지스트리 위치:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\LayerRootLocations
이점 및 위험
AV 제품에 대한 이러한 새로운 최적화를 사용할 때 다음과 같은 이점과 위험을 고려합니다.
이점
- 컨테이너 시작 또는 실행 시간에 영향을 주지 않습니다(첫 번째 컨테이너의 경우에도).
- 여러 컨테이너에서 동일한 콘텐츠를 검사하지 않습니다.
- Windows Server 컨테이너에 대해 작동합니다. Hyper-V 컨테이너의 경우 패키지에 대해 작동하지만 컨테이너를 실행하려면 추가 작업이 필요합니다.
위험
서명 업데이트와 다음 예약된 자동 관리 맬웨어 방지 검사 사이에 컨테이너가 시작되는 경우 컨테이너에서 실행되는 파일은 최신 맬웨어 방지 서명과 관련하여 검사되지 않습니다. 이러한 위험을 완화하기 위해 AV 제품은 마지막 자동 관리 검사 이후 서명 업데이트가 없는 경우에만 리디렉션된 파일에 대한 검사를 건너뛸 수 있습니다. 이렇게 하면 최신 서명으로 자동 관리 검사가 완료될 때까지 컨테이너 성능 저하가 제한됩니다. 필요에 따라 AV 제품은 후속 컨테이너 실행의 효율성을 높일 수 있도록 이 상황에서 사전 검사를 트리거할 수 있습니다.