KR102386560B1 - 하드웨어 기반의 가상화된 보안 격리 기법 - Google Patents

하드웨어 기반의 가상화된 보안 격리 기법 Download PDF

Info

Publication number
KR102386560B1
KR102386560B1 KR1020187034872A KR20187034872A KR102386560B1 KR 102386560 B1 KR102386560 B1 KR 102386560B1 KR 1020187034872 A KR1020187034872 A KR 1020187034872A KR 20187034872 A KR20187034872 A KR 20187034872A KR 102386560 B1 KR102386560 B1 KR 102386560B1
Authority
KR
South Korea
Prior art keywords
container
operating system
network resource
host operating
network
Prior art date
Application number
KR1020187034872A
Other languages
English (en)
Other versions
KR20190015273A (ko
Inventor
나빈 나라얀 파이
찰스 지 제프리즈
기리드하르 비스와나탄
벤자민 엠 슐츠
프레더릭 제이 스미스
라르스 레우터
마이클 비 에베르솔
쿠엘라르 제라르도 디아즈
아이반 디미트로브 파쇼브
푸르나난다 알 가데호수르
하리 알 풀라파카
비크람 망갈로어 라오
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20190015273A publication Critical patent/KR20190015273A/ko
Application granted granted Critical
Publication of KR102386560B1 publication Critical patent/KR102386560B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

컴퓨팅 디바이스 상에서 실행되는 호스트 오퍼레이팅 시스템은 컴퓨팅 디바이스에 의해 요청된 네트워크 리소스를 식별하기 위해 컴퓨팅 디바이스를 위한 네트워크 통신을 모니터링한다. 호스트 오퍼레이팅 시스템은 요청된 네트워크 리소스를 보안 정책과 비교하여 그 요청된 네트워크 리소스가 신뢰되는지를 판정한다. 비신뢰형 네트워크 리소스가 식별되는 경우, 호스트 오퍼레이팅 시스템은 본 명세서에서 논의되는 기법을 사용하여 호스트 오퍼레이팅 시스템 커널로부터 격리된 컨테이너 내의 비신뢰형 네트워크 리소스를 액세스한다. 비신뢰형 네트워크 리소스에 대한 액세스를 격리된 컨테이너로 제약함으로써, 비신뢰형 네트워크 리소스로부터 기인할 수 있는 커널 레벨 공격 또는 감염으로부터도 호스트 오퍼레이팅 시스템이 보호된다.

Description

하드웨어 기반의 가상화된 보안 격리 기법
컴퓨팅 디바이스 감염은 사용자가 비신뢰형(untrusted) 웹 사이트에 대해 인터넷을 브라우징하는(browse) 경우 또는 애플리케이션 및 문서와 같은 비신뢰형 네트워크 리소스를 다운로드하거나 여는 경우 종종 일어난다. 이러한 감염은 공격자가 사용자의 크리덴셜(credential)을 도용할 수 있게 하거나 심지어는 컴퓨팅 디바이스를 통제하여 그것을 공격자 자신의 수단을 위해 용도변경할 수 있게 한다. 이러한 커널 레벨(kernel level) 공격에 대항하는 한 가지 해결책은 컴퓨팅 디바이스에 대한 네트워크 액세스(network access)를 차단하는 것이지만, 이는 많은 최신 컴퓨팅 디바이스의 기능성을 심하게 제한한다. 추가적으로, 직장 환경에서, 네트워크 액세스를 불능화하는 것(disabling)은 직원 생산성과 직무 만족도를 저해한다. 절충안으로서, 많은 고용주는 직원이 비신뢰형 네트워크 리소스를 액세스하는 것을 방지함으로써, 제한된 네트워크 액세스를 가능하게 한다. 그러나, 이 제한된 네트워크 액세스는, 어느 네트워크 리소스가 신뢰되지 않는지를 정의하는 정책(policy)을 고용주가 지속적으로 업데이트해야 하므로, 고용주에게 있어서 증가된 운영관리(administration) 비용을 초래한다. 이는 사용자와 고용주 양방 모두에 의한 컴퓨팅 디바이스의 사용에 있어서 불만으로 이어질 수 있다.
이 개요는 상세한 설명에서 추가로 후술되는 개념들 중 선별된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 주제(claimed subject matter)의 중요 특징 또는 필수적 특징을 식별하도록 의도된 것이 아니며, 청구된 주제의 범주를 한정하는 데 사용되도록 의도된 것도 아니다.
하나 이상의 양상에 따라, 애플리케이션(application)이 호스트 오퍼레이팅 시스템(host operating system)에서 실행된다. 애플리케이션이 네트워크 리소스(network resource)를 액세스하려고 시도하고 있음을 검출하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 네트워크 리소스가 신뢰형(trusted) 네트워크 리소스인지 또는 비신뢰형 네트워크 리소스인지를 판정한다. 네트워크 리소스가 비신뢰형 네트워크 리소스라고 판정하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 호스트 오퍼레이팅 시스템으로부터 격리되고 컨테이너 내에서 애플리케이션의 버전(version)을 실행하도록 구성된 컨테이너(container)를 활성화한다(activate). 이후, 호스트 오퍼레이팅 시스템은 컨테이너에서 실행 중인 애플리케이션의 버전이 비신뢰형 네트워크 리소스를 액세스하는 것을 허용한다.
하나 이상의 양상에 따라, 호스트 오퍼레이팅 시스템의 기동(startup)이 검출된다. 호스트 오퍼레이팅 시스템의 기동을 검출하는 것에 응답하여, 호스트 오퍼레이팅 시스템이 컨테이너 기본 이미지(container base image)를 포함하는지의 여부가 판정된다. 본 명세서에서 논의되는 바와 같이, 컨테이너 기본 이미지는 호스트 오퍼레이팅 시스템의 버전, 패치 레벨(patch level) 및 구성(configuration)의 근사 사본(proximate copy)을 지칭한다. 호스트 오퍼레이팅 시스템이 컨테이너 기본 이미지를 포함하지 않는다고 판정하는 것에 응답하여, 컨테이너 기본 이미지가 생성된다. 컨테이너 기본 이미지를 생성한 후, 호스트 오퍼레이팅 시스템에 대한 사용자 로그인(user login)이 검출된다. 호스트 오퍼레이팅 시스템에 대한 사용자 로그인을 검출하는 것에 응답하여, 컨테이너 기본 이미지에 대응하는 컨테이너가 활성화되고 활성화된 컨테이너는 일시중단된다(suspended). 비신뢰형 네트워크 리소스에 대한 액세스를 검출하는 것에 응답하여, 일시 중단된 컨테이너가 재개되고(resumed) 재개된 컨테이너는 비신뢰형 네트워크 리소스를 액세스하도록 허용된다.
하나 이상의 양상에 따라, 웹 애플리케이션이 디바이스의 호스트 오퍼레이팅 시스템 상에서 실행된다. 본 명세서에서 논의되는 바와 같이, 웹 애플리케이션은 호스트 오퍼레이팅 시스템을 실행하는 디바이스로부터 원격으로 저장된 하나 이상의 네트워크 리소스를 액세스하도록 구성된다. 웹 애플리케이션이 네트워크 리소스를 액세스하고 있음을 검출하는 것에 응답하여, 네트워크 리소스를 디바이스로부터 원격으로 위치된 관리 및 모니터링 서비스(management and monitoring service)로부터 수신된 정책과 비교함으로써 네트워크 리소스는 비신뢰형 리소스라고 판정된다. 네트워크 리소스가 비신뢰형 네트워크 리소스라고 판정하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 웹 애플리케이션의 버전을 실행하도록 구성되고 호스트 오퍼레이팅 시스템으로부터 격리된 컨테이너를 활성화한다. 컨테이너가 활성화된 후, 호스트 오퍼레이팅 시스템은 컨테이너에서 실행 중인 웹 애플리케이션의 버전이 비신뢰형 네트워크 리소스를 액세스하는 것을 허용한다. 호스트 오퍼레이팅 시스템은, 컨테이너에서 실행 중인 웹 애플리케이션의 버전이 추가적인 비신뢰형 네트워크 리소스를 액세스하는 것을 허용하고, 컨테이너에서 실행 중인 웹 애플리케이션의 버전이 신뢰형 네트워크 리소스를 액세스하는 것을 방지한다.
상세한 설명은 첨부된 도면을 참조하여 기술된다. 도면에서, 참조 번호의 가장 왼쪽 숫자(들)는 참조 번호가 처음 나타나는 도면을 식별한다. 설명 및 도면에서의 상이한 사례에서의 동일한 참조 번호의 사용은 유사하거나 동일한 항목을 나타낼(indicate) 수 있다. 도면에 표현된 개체는 하나 이상의 개체를 나타낼 수 있고, 따라서 논의에서 개체의 단일 또는 복수 형태에 대한 참조가 교환가능하게 행해질 수 있다.
도 1은 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리(hardware-based virtualized security isolation)를 구현하는 예시적인 시스템을 도시한다.
도 2는 하나 이상의 실시예에 따른 하드웨어 기반의 가상화된 보안 격리를 위한 예시적인 시스템 아키텍처를 도시한다.
도 3은 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 구현하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 4는 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 활성화하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 5는 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 관리하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 6은 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 구현하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 7은 본 명세서에 기술된 다양한 기법을 구현할 수 있는 하나 이상의 시스템 및/또는 디바이스를 나타내는 예시적인 컴퓨팅 디바이스를 포함하는 예시적인 시스템을 도시한다.
하드웨어 기반의 가상화된 보안 격리가 본 명세서에서 논의된다. 호스트 디바이스 상에서 실행하는 호스트 오퍼레이팅 시스템으로서 본 명세서에서 지칭되기도 하는 컴퓨팅 디바이스 상에서 실행되는 오퍼레이팅 시스템은, 하드웨어 리소스 파티셔닝(hardware resource partitioning)을 위해 컨테이너를 사용한다. 많은 가상 머신 기반(virtual machine-based) 또는 샌드박스(sandbox) 접근법과는 대조적으로, 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법과 함께 컨테이너를 사용하는 것은, 웹 브라우저, 관련 애플리케이션 및 오퍼레이팅 시스템 컴포넌트, 예를 들면 커널, 파일 시스템 및 네트워크를 비신뢰형 네트워크 리소스로부터 격리시킴으로써 공격으로부터 컴퓨팅 디바이스를 보호한다. 비신뢰형 네트워크 리소스의 격리는 하나 이상의 오퍼레이팅 시스템 필터 및 정책 관리자를 통해 시행되고 모니터링된다. 이러한 방식으로, 호스트 디바이스가 비신뢰형 네트워크 리소스에 대한 액세스를 요청하는 경우, 호스트 디바이스는 호스트 오퍼레이팅 시스템으로부터의 완전 커널 격리(full kernel isolation)를 제공하는 하나 이상의 컨테이너 내에 비신뢰형 네트워크 리소스를 포함한다. 본 명세서에서 논의되는 바와 같이, 네트워크 리소스는, 호스트 디바이스가 네트워크를 통해 액세스할 수 있는 (예컨대, 디바이스의 또는 데이터가 상주하는(reside)) 위치를, 또 그 위치 중 하나 이상에 의해 제공되는 데이터, 실행가능한 것(executables), 또는 네트워크 연결 중 하나 이상을 지칭한다. 예를 들어, 네트워크 리소스는 파일, 애플리케이션, 이메일, 문서, 일률적 리소스 위치자(Uniform Resource Locator: URL), 인터넷 프로토콜(Internet Protocol: IP) 주소, 송신 제어 프로토콜(Transmission Control Protocol: TCP) 포트, 도메인 네임 시스템(Domain Name System: DNS) 명칭, 데이터 스토어(data store), 하드웨어 디바이스, 또는 이들의 조합일 수 있다. 신뢰형 네트워크 리소스는 멀웨어(malware)를 갖거나 악의적인(malicious) 사용자에 의해 사용되지 않을 것으로 신뢰되는 네트워크 리소스를 지칭하며, 호스트 디바이스를 위한 하나 이상의 정책에 의해 식별된다. 비신뢰형 네트워크 리소스는 신뢰되지 않는 (예컨대, 멀웨어를 갖거나 악의적인 사용자에 의해 사용될 수 있는) 네트워크 리소스를 지칭한다.
호스트 디바이스를 악의적 공격으로부터 보호하기 위해서, 신뢰형 네트워크 리소스의 열거형 리스트를 정의하는 데에 정책이 사용된다. 기업의 여러 사용자가 연결되어 공통의 기업 데이터 및/또는 네트워크에 대한 액세스를 공유하는 기업 환경에서, 이 정책은 개별 사용자뿐만 아니라 기업의 공유된 데이터 및 네트워크가 보호된 채로 유지되는 것을 보장하도록 기업의 운영관리자에 의해 정의될 수 있다. 호스트 디바이스의 사용자가 네트워크 리소스에 대한 액세스를 요청하는 경우, 요청된 네트워크 리소스가 정책과 대비되어, 요청된 네트워크 리소스가 신뢰형 네트워크 리소스인지를 판정한다. 요청된 네트워크 리소스가 신뢰형 네트워크 리소스임을 정책이 나타내는 경우에, 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 신뢰형 네트워크 리소스가 호스트 오퍼레이팅 시스템에 의해 액세스되는 것을 허가한다. 정책은 비신뢰형 네트워크 리소스를 위한 호스트 디바이스의 하나 이상의 네트워크 통신에 대한 액세스를 제약함으로써, 본 명세서에 설명된 가상화된 보안 격리 기법을 구현하는 컴퓨팅 디바이스의 네트워크 인터페이스를 격리하는 데에 더 활용될 수 있다. 예를 들어, 호스트 디바이스가 무선 로컬 영역 네트워크(Wireless Local Area Network: WLAN) 통신, 모바일 광대역 통신, 다이얼업 연결(dial-up connection), 가상 사설 네트워크(Virtual Private Network: VPN) 연결, 그리고 직접 연결(direct connection), 예를 들면 직렬 케이블링(serial cabling), 직접 케이블링(direct cabling) 또는 적외선 링크(infrared link)를 지원하는 경우에, 비신뢰형 네트워크 리소스와 관련된 네트워크 통신은 WLAN 통신으로 제약될 수 있다.
요청된 네트워크 리소스가 정책에 의해 신뢰형 네트워크 리소스로서 정의되지 않은 경우, 요청된 네트워크 리소스는 신뢰되지 않는 것으로 판정된다. 네트워크 리소스가 신뢰되지 않는다고 판정하는 것에 응답하여, 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 호스트 오퍼레이팅 시스템으로부터 격리된 컨테이너를 활성화한다. 이후, 비신뢰형 네트워크 리소스와 연관된 임의의 위험한 활동을 격리하도록 컨테이너로부터 비신뢰형 네트워크 리소스가 액세스된다. 격리 때문에, 비신뢰형 네트워크 리소스로부터 기인하는 어떠한 악의적인 콘텐트(content) 또는 공격도 호스트 오퍼레이팅 시스템을 감염시키기 위해 컨테이너에서 벗어날 수가 없을 것이다. 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 컨테이너가 어떠한 신뢰형 네트워크 리소스에 대한 액세스도 얻지 않음을 보장하기 위해 컨테이너 내에서의 활동을 모니터링하도록 더 구성된다.
따라서, 비신뢰형 네트워크 리소스를 액세스하기 위해 컨테이너를 활성화함으로써, 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은, 각각이 네트워크 연결성(network connectivity)을 갖는, 오퍼레이팅 시스템 또는 포함된 런타임 환경(contained runtime environment)의 두 개 이상의 별개의 인스턴스를 생성한다. 이러한 포함된 런타임 환경 내에서 수행되는 데이터 및 동작을 모니터링함으로써, 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 임의의 비신뢰형 네트워크 리소스가 호스트 오퍼레이팅 시스템에 의해 액세스되는 것을 방지하도록 구성된다. 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 호스트 시스템이 보안 호스트 오퍼레이팅 시스템으로부터 DNS 및 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol: HTTP) 정보를 스캔 및 공유하는 것을 추가적으로 가능하게 하여, 격리된 컨테이너 중 하나 이상 내에서의 웹 브라우징 성능 또는 다른 네트워크 활동을 개선한다.
본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 추가적으로 호스트 오퍼레이팅 시스템이 격리 내에서, 예를 들면 호스트 오퍼레이팅 시스템의 커널과는 별개인 하나 이상의 컨테이너 내에서, 파일을 다운로드하고 액세스할 수 있도록 한다. 이것은 호스트 오퍼레이팅 시스템으로 하여금 파일, 애플리케이션, 웹 사이트 등등과 같은 개별 네트워크 리소스를 스캔하여 스캔된 네트워크 리소스 중의 개별 리소스와 연관된 위험 레벨을 판정할 수 있도록 한다.
본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 또한 호스트 디바이스의 시스템 리소스를 보전하도록 구성된다. 예를 들어, 컨테이너 내의 하나 이상의 비신뢰형 네트워크 리소스가 비활성(inactive)인 경우, 컨테이너는 여전히 시스템 리소스(예컨대, 메모리)에 압박을 가할 수 있고, 이러한 리소스에 대해 경쟁하고 있는, 호스트 디바이스 상에서 실행되는 임의의 다른 컨테이너 또는 프로세스의 성능에 영향을 줄 수 있다. 따라서, 개별 컨테이너 내의 활동을 모니터링함으로써, 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 컨테이너 내의 비신뢰형 네트워크 리소스가 비활성인 경우 컨테이너가 호스트 디바이스 리소스에 가하는 압박을 감소시키기 위해 개별 컨테이너를 일시 중단하거나 재설정하도록 구성된다. 일시 중단된 컨테이너 내의 임의의 하나 이상의 네트워크 리소스의 상태는 사용자가 일시 중단된 컨테이너 내의 하나 이상의 비신뢰형 네트워크 리소스와 상호작용하는 것을 신속히 다시 할 수 있도록 보존될 수 있다.
호스트 디바이스의 사용자가 로그오프하는 경우와 같은, 트리거된 이벤트(triggered event)에 응답하여, 본 명세서에 기술된 하드웨어 기반의 가상화된 보안 격리 기법은 컨테이너 및 그것과 연관된 모든 데이터를 폐기한다. 이러한 방식으로, 호스트 디바이스의 오퍼레이팅 시스템에 대한 어떠한 부정적인 영향도 없이 컨테이너가 하나 이상의 비신뢰형 네트워크 리소스에 의해 손상될(corrupted) 수 있다.
하드웨어 기반의 가상화된 보안 격리 시스템
도 1은 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 구현하는 예시적인 시스템(100)을 도시한다. 시스템(100)은 적어도 부분적으로 호스트 디바이스에 의해 구현된다. 서버 컴퓨터(server computer), 데스크톱 컴퓨터(desktop computer), 랩톱(laptop) 또는 넷북(netbook) 컴퓨터, 모바일 디바이스(mobile device)(예컨대, 태블릿(tablet) 또는 패블릿(phablet) 디바이스, 셀룰러(cellular) 또는 다른 무선 전화기(예컨대, 스마트폰(smartphone)), 노트패드 컴퓨터(notepad computer), 모바일 스테이션(mobile station)), 웨어러블 디바이스(wearable device)(예컨대, 안경, 머리-장착형 디스플레이(head-mounted display), 시계, 팔찌, 가상 현실 안경 또는 헤드셋, 증강 현실 헤드셋 또는 안경), 엔터테인먼트 디바이스(entertainment device)(예컨대, 엔터테인먼트 기기(entertainment appliance), 디스플레이 디바이스에 통신가능하게 커플링된 셋톱 박스(set-top box), 게임 콘솔(game console)), 사물인터넷(Internet of Things: IoT) 디바이스(예컨대, 다른 디바이스와의 통신을 가능케 하는 소프트웨어, 펌웨어 및/또는 하드웨어를 갖는 물체 또는 사물), 텔레비전 또는 다른 디스플레이 디바이스, 자동차용 컴퓨터(automotive computer) 및 기타 등등과 같은 시스템(100)을 구현하기 위해 다양한 상이한 유형의 컴퓨팅 디바이스 중 임의의 것이 사용될 수 있다. 따라서, 컴퓨팅 디바이스 구현 시스템(100)은 상당한 메모리 및 프로세서 리소스를 갖는 풀 리소스 디바이스(full resource device)(예컨대, 개인용 컴퓨터, 게임 콘솔)로부터, 제한된 메모리 및/또는 처리 리소스를 갖는 저 리소스 디바이스(low-resource device)(예컨대, 전통적인 셋톱 박스, 핸드-헬드(hand-held) 게임 콘솔)까지의 범위일 수 있다.
시스템(100)은 호스트 오퍼레이팅 시스템(102)과, 관리 및 모니터링 서비스(104)와, 웹 프록시(web proxy)(106)를 포함한다. 관리 및 모니터링 서비스(104)는, 본 명세서에서 논의되는 바와 같이, 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스를 위해 하나 이상의 운영관리 정책(administrative policy)을 제공하는 서비스를 나타낸다. 웹 프록시(106)는 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스로부터 원격으로 액세스되는 하나 이상의 네트워크 리소스(122(1), ... , 122(m))에 대한 액세스를 제어하는 기능성을 나타낸다. 예를 들어, 하나 이상의 실시예에서 웹 프록시(106)는 이하에서 더욱 상세히 논의되는 바와 같이, 호스트 오퍼레이팅 시스템(102)으로부터의 인증(authentication)을 요구함으로써 네트워크(108)로부터 액세스되는 하나 이상의 리소스에 대한 액세스를 제어한다. 대안적으로, 하나 이상의 실시예에서, 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스는 웹 프록시와는 독립적으로 네트워크(108)를 통해 네트워크 리소스를 액세스한다. 네트워크(108)는 인터넷(Internet), 로컬 영역 네트워크(Local Area Network: LAN), 공중 전화 네트워크(public telephoine network), 인트라넷(intranet), 다른 공중 및/또는 전용(proprietary) 네트워크, 이들의 조합 및 기타 등등과 같은 데이터 네트워크의 기능성을 나타낸다. 이와 같이, 네트워크(108)를 통해 액세스되는 네트워크 리소스(122(1), ... , 122(m))는 웹 사이트, 웹 애플리케이션, 이메일, 문서 등등을 포함할 수 있다.
하나 이상의 실시예에서, 호스트 오퍼레이팅 시스템(102)과, 관리 및 모니터링 서비스(104)와, 웹 프록시(106)는 동일한 컴퓨팅 디바이스의 일부로서 구현된다. 대안적으로, 관리 및 모니터링 서비스(104) 및/또는 웹 프록시(106)의 적어도 일부는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스로부터 분리되고 원격인 디바이스 상에 구현될 수 있다. 예를 들어, 하나 이상의 실시예에서 관리 및 모니터링 서비스(104)는 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스로부터 원격으로 위치된 모바일 디바이스 관리(Mobile Device Management: MDM) 서비스로서 구현된다. 대안적으로 또는 추가적으로, 관리 및 모니터링 서비스(104)는 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스로부터 원격으로 위치된 경량 디렉토리 액세스 프로토콜(Lightweight Directory Access Protocol: LDAP) 서버로서 구현될 수 있다. 유사하게, 웹 프록시(106)는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스로부터 원격으로 구현될 수 있다.
관리 및 모니터링 서비스(104)는 호스트 오퍼레이팅 시스템(102)에 정책을 제공(예컨대, 푸시(push))하도록 구성된다. 하나 이상의 실시예에서, 관리 및 모니터링 서비스(104)는 규칙적인 간격으로(예를 들어, 시스템 기동 시에, 매일 등등) 호스트 오퍼레이팅 시스템(102)에 정책을 푸시하도록 구성된다. 대안적으로, 관리 및 모니터링 서비스(104)는 호스트 오퍼레이팅 시스템을 위한 정책에 대한 업데이트가 있을 때마다 호스트 오퍼레이팅 시스템(102)에 정책을 푸시하도록 구성될 수 있다. 본 명세서에서는 정책이 호스트 오퍼레이팅 시스템(102)에 푸시되는 것에 대한 참조가 행해지지만, 관리 및 모니터링 서비스(104)는 임의의 적합한 데이터 송신 방법(예컨대, 스트리밍(streaming))을 통해 호스트 오퍼레이팅 시스템에 정책을 제공하도록 구성된다. 대안적으로, 하나 이상의 실시예에서 호스트 오퍼레이팅 시스템(102)은 관리 및 모니터링 서비스(104)로부터 정책을 획득(예컨대, 풀링(pull))하도록 구성된다. 관리 및 모니터링 서비스(104)는 두 가지 역할을 한다. 첫째, 관리 및 모니터링 서비스(104)는 일반적으로 호스트 오퍼레이팅 시스템(102)의 사용자가 액세스할 수 있는 개별 네트워크 리소스(122(1), ... , 122(m))에 대한 운영관리 구성(administrative configuration)을 수신한다. 하나 이상의 실시예에서, 이들 네트워크 리소스는 개별적인 신뢰 레벨과 연관된다. 예를 들어, 고용주는 고용주의 웹 사이트와 연관된 임의의 네트워크 리소스를 높은 신뢰 레벨을 갖는 것으로 정의할 수 있다. 따라서, 호스트 오퍼레이팅 시스템(102)을 위한 정책은 고용주의 웹 사이트와 연관된 임의의 네트워크 리소스가 신뢰형 네트워크 리소스임을 나타낸다. 관리 및 모니터링 서비스(104)의 제2 역할은 개별 네트워크 리소스와 연관된 모니터링된 활동에 관한 피드백을 호스트 오퍼레이팅 시스템(102)으로부터 수신하는 것, 그리고 그 모니터링된 정보를 운영관리자를 위한 보고(report)로 컴파일하는 것이다. 이 컴파일된 보고는 운영관리자에 의해 호스트 오퍼레이팅 시스템(102)을 위해 신뢰형 네트워크 리소스에 관한 정책을 업데이트하는 데 사용될 수 있다.
관리 및 모니터링 서비스(104)는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스의 운영관리자로부터 정책 구성 데이터를 수신하도록 구성될 수 있다. 본 명세서에서 논의되는 바와 같이, 정책은 신뢰형 웹 사이트, 신뢰형 네트워크 위치, 신뢰형 네트워크 등등과 같은 신뢰형 네트워크 리소스에 관한 정보를 기술한다. 관리 및 모니터링 서비스(104)가 운영관리자로부터 정책을 수신하는 경우, 관리 및 모니터링 서비스(104)는 컴퓨팅 디바이스의 타겟 세트(target set)에 정책 업데이트를 발신하도록 구성된다. 관리 및 모니터링 서비스(104)가 정책 업데이트를 발신하는 컴퓨팅 디바이스의 타겟 세트는 하나 이상의 실시예에 따라 운영관리자에 의해 정의된다. 예를 들어, 위에서 논의된 바와 같은 기업 환경에서, 관리 및 모니터링 서비스(104)는 기업과 연관된 각각의 컴퓨팅 디바이스에 정책 업데이트를 발신하도록 구성된다. 정책 업데이트를 수신하는 각 컴퓨팅 디바이스는 네트워크 리소스를 액세스하려고 시도하는 경우의 사용을 위한 정책을 국부적으로(locally) 저장하도록 구성된다.
이하에서 더욱 상세히 논의되는 바와 같이, 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스는 액세스된 네트워크 리소스(122(1), ... , 122(m))와 연관된 활동을 동적으로 모니터링하도록 구성된다. 네트워크 리소스와 연관된 모니터링된 활동은 호스트 오퍼레이팅 시스템(102)에서 국부적으로 업데이트되고 관리 및 모니터링 서비스(104)에 도로 통신된다. 이러한 방식으로, 관리 및 모니터링 서비스(104)는 호스트 오퍼레이팅 시스템(102)의 사용자에게 신뢰형 네트워크 리소스의 정확한 리스트를 제공하도록 연속적으로 업데이트될 수 있다.
호스트 오퍼레이팅 시스템(102)은 또한 하드웨어 기반의 가상화된 보안 격리(Hardware-based Virtualized Security Isolation: HVSI) 서브시스템(110), 정책 관리자(112), 하나 이상의 애플리케이션(114), 네트워크 필터(116), 컨테이너 관리자(118) 및 보안 서브시스템(120)을 포함한다. 호스트 오퍼레이팅 시스템(102)은 또한 다수(n)의 컨테이너(130(1), ... ,130(n))로서 도시된 하나 이상의 컨테이너를 관리한다.
HVSI 서브시스템(110)은, 요청된 네트워크 리소스가 신뢰되는지를 판정하기 위해 네트워크 격리 질의(query) 애플리케이션 프로그래밍 인터페이스(Application Programming Interfaces: APIs)를 호출하기 위한 기능성을 나타낸다. 이러한 네트워크 격리 질의 API는 예를 들어 정책 관리자(112)에 의해 노출된다. HVSI 서브시스템(110)이 요청된 네트워크 리소스가 신뢰된다고 판정하는 경우에, HVSI 서브시스템(110)은 요청된 네트워크 리소스가 호스트 오퍼레이팅 시스템(102)에 의해 액세스되는 것을 허용한다. 대안적으로, HVSI 서브시스템(110)이 요청된 네트워크 리소스가 신뢰되지 않는다고 판정하는 경우에, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102)으로 하여금 컨테이너(130(1), ... , 130(n)) 중 하나 이상을 활성화하게 하며, 하나 이상의 활성화된 컨테이너로 하여금 비신뢰형 네트워크 리소스를 액세스할 수 있도록 한다. HVSI 서브시스템(110)의 기능성은 이하에서 더욱 상세히 논의될 것이다. 하나 이상의 실시예에 따르면, HVSI 서브시스템(110)은 요청된 네트워크 리소스가 신뢰되는지를 정책 관리자(112)와 통신함으로써 판정한다.
정책 관리자(112)는 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스를 위한 하나 이상의 정책을 획득하고 저장하기 위한 기능성을 나타낸다. 예를 들어, 하나 이상의 실시예에서 정책 관리자(112)는 호스트 오퍼레이팅 시스템(102)을 위한 하나 이상의 신뢰형 네트워크 리소스를 정의하는 하나 이상의 운영관리 정책을 획득하고 저장한다. 하나 이상의 구현에 따르면, 정책 관리자(112)는 관리 및 모니터링 서비스(104)로부터 운영관리 정책을 획득하고 저장한다. 대안적으로 또는 추가적으로, 정책 관리자(112)는 네트워크(108)와 같은 원격 소스(remote source)로부터 하나 이상의 운영관리 정책을 획득하고 저장한다. 추가적으로 또는 대안적으로, 정책 관리자(112)는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스의 사용자로부터 하나 이상의 운영관리 정책을 수신하고 저장한다.
애플리케이션(114)은 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스의 하나 이상의 프로세서에 의해 실행가능한 하나 이상의 애플리케이션을 포함한다. 예를 들어, 애플리케이션(114)은 웹 브라우저 애플리케이션을 포함할 수 있다. 대안적으로 또는 추가적으로, 애플리케이션(114)은 이메일 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 비주얼 프리젠테이션 애플리케이션 및 유사한 것과 같은 애플리케이션을 포함할 수도 있다.
네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스를 네트워크(108)와 같은 네트워크에 연결하기 위한 기능성을 나타낸다. 네트워크 필터(116)는 적어도 하나의 물리적 네트워크 인터페이스 카드 및 적어도 하나의 호스트 가상 네트워크 인터페이스 카드를 포함한다. 네트워크 필터(116)는 요청된 네트워크 리소스를 그것이 네트워크(108)로부터 호스트 오퍼레이팅 시스템(102)으로 송신될 때 인터셉트하도록(intercept) 구성된 필터 드라이버(filter driver)를 추가적으로 포함한다. 이러한 인터셉트된 네트워크 리소스는 이후에 HVSI 서브시스템(110)에 의해 정책 관리자(112)에 저장된 하나 이상의 정책과 비교된다. 이러한 방식으로, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102)이 어떠한 비신뢰형 네트워크 리소스도 액세스하지 못하도록 됨을 보장한다. 유사하게, 네트워크 필터(116)는 컨테이너(130(1), ... ,130(n)) 중 하나 이상이 어떠한 신뢰형 네트워크 리소스도 액세스할 수 없음을 보장한다. 예를 들어, 하나 이상의 실시예에서 네트워크 필터(116)는 신뢰형 네트워크 리소스가 호스트 오퍼레이팅 시스템(102)에 의해서만 액세스되고 컨테이너(130(1), ... ,130(n)) 중 하나 이상 중 어떠한 것에 의해서도 액세스되지 못하게 됨을 보장하기 위해 신뢰형 네트워크 리소스의 개별 패킷과 연관된 데이터를 변경하도록 구성된다.
호스트 오퍼레이팅 시스템(102)은 컨테이너 관리자(118)를 추가적으로 포함한다. 컨테이너 관리자(118)는 시스템(100)에서 컨테이너(130(1), ... ,130(n))의 스케줄링(scheduling)을 관리하고 어느 컨테이너(130(1), ... ,130(n))가 호스트 오퍼레이팅 시스템(102) 상에서 몇 번 실행되는지를 판정한다. 컨테이너 관리자(118)는 또한 시스템(100)의 개별 사용자를 위해 하나 이상의 컨테이너(130(1), ... ,130(n))를 활성화하는 것과, 개별 사용자를 위해 생성된 하나 이상의 컨테이너(130(1), ... ,130(n))를 시스템(100)의 다른 사용자가 액세스할 수 없음을 보장하는 것을 담당한다. 컨테이너 관리자(118)는 또한 원격측정(telemetry) 및 보안 표시자(indicator)에 대해 임의의 하나 이상의 생성된 컨테이너(130(1), ... ,130(n))로부터 로그(log) 및 트레이스(trace)를 수집하도록 구성된다. 예를 들어, 하나 이상의 실시예에서, 컨테이너 관리자(118)는 수집된 정보를 해석하기 위해 호스트 오퍼레이팅 시스템(102) 상에 설치된 안티-바이러스(anti-virus) 애플리케이션을 참고하고, HVSI 서브시스템(110)에 모니터링된 데이터를 제공한다. 호스트 오퍼레이팅 시스템(102)을 실행하는 컴퓨팅 디바이스 내의 물리적 프로세서 및/또는 프로세서 코어의 수에 따라, (예컨대, 단일 코어를 갖는 단일 프로세서의 경우에) 한 번에 단일 컨테이너(130(1), ... ,130(n))가 실행될 수 있거나 대안적으로 (예를 들어, 여러 프로세서 및/또는 여러 프로세서 코어의 경우에) 동시에 여러 컨테이너(130(1), ... ,130(n))가 실행될 수 있다. 추가적으로, 하나 이상의 실시예에서 컨테이너 관리자(118)는 컨테이너(130(1), ... ,130(n)) 중 하나 이상 내에서 수행되는 사용자 구성 변경을 모니터링하도록 구성된다. 예를 들어, 컨테이너 관리자(118)는 컨테이너(130(1), ... ,130(n)) 중 하나에서 액세스되는 웹 사이트와 연관된 사용자 선호에 대한 변경을 검출하도록 구성된다. 호스트 오퍼레이팅 시스템(102)은 컨테이너에서 이러한 검출된 변경을 사용하고 그것을 호스트 오퍼레이팅 시스템에서 액세스되는 하나 이상의 관련 웹 사이트에 적용하도록 구성된다.
보안 서브시스템(120)은 호스트 오퍼레이팅 시스템(102) 상에서 보안 정책을 시행하기 위한 기능성을 나타낸다. 보안 서브시스템(120)은 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스에 로그온하는 사용자를 검증하고, 로그온된 사용자를 위한 패스워드 변경을 처리하며, 로그온된 사용자를 위한 액세스 토큰(access token)을 생성하는 등등을 하도록 구성된다.
각각의 컨테이너(130(1), ... ,130(n))는 상이한 방식으로 구현될 수 있다. 하나의 유형의 컨테이너(컨테이너(130)가 그것으로서 구현될 수 있음)는 프로세스 컨테이너(process container)로 지칭된다. 프로세스 컨테이너에 있어서, 컨테이너 내의 애플리케이션 프로세스는 그것이 자신의 개별 시스템(예컨대, 컴퓨팅 디바이스) 상에서 동작하고 있었던 것처럼 실행되는데, 이는 네임스페이스(namespace) 격리를 사용하여 달성된다. 호스트 오퍼레이션 시스템(102)은 네임스페이스 격리를 구현한다. 네임스페이스 격리는, 호스트 오퍼레이팅 시스템(102)의 공유된 부분과, 각 컨테이너에 특정적인, 오퍼레이팅 시스템의 격리된 부분, 예를 들면 파일시스템, 구성, 네트워크 및 기타 등등으로 이루어진 조성된 뷰(composed view)를 컨테이너 내의 프로세스에 제공한다.
컨테이너(130)가 구현될 수 있는 다른 유형의 컨테이너는 가상화된 컨테이너(virtualized container)로 지칭된다. 가상화된 컨테이너에 있어서, 가상화된 컨테이너는, 가상 머신에 할당된 특정 호스트 물리적 메모리를 갖기보다는, 가상 주소 뒷받침형 메모리 페이지(virtual address backed memory page)를 갖는 경량 가상 머신(lightweight virtual machine)에서 실행된다. 따라서, 가상 머신에 할당된 메모리 페이지는 페이지 파일로 스왑 아웃될(swapped out) 수 있다. 경량 가상 머신의 사용은 컨테이너에서 실행되는 프로세스 간의 추가적인 보안 및 격리를 제공한다. 따라서, 프로세스 컨테이너는 프로세스 격리 또는 사일로(silo) 기반의 프로세스 격리를 사용하여 그것의 격리를 달성하는 반면, 가상화된 컨테이너는 가상 머신 기반의 보호를 사용하여 보통의 프로세스 경계가 제공할 수 있는 것을 초과하는 더 높은 레벨의 격리를 달성한다. 컨테이너는 또한 물리적 메모리를 사용하여 가상 머신 내에서 실행될 수 있다.
하나 이상의 실시예에서, 각각의 컨테이너(130(1), ... ,130(n))는 하나 이상의 가상 애플리케이션(132(1), ... ,132(n))을 포함한다. 하나 이상의 가상 애플리케이션(132(1), ... ,132(n)) 중의 개별 가상 애플리케이션은 호스트 오퍼레이팅 시스템(102) 상의 애플리케이션(114) 중의 개별 애플리케이션의 인스턴스에 대응한다. 따라서, 가상 애플리케이션(132(1), ... ,132(n))은 애플리케이션(114) 중 하나가 호스트 오퍼레이팅 시스템(102) 상의 신뢰형 네트워크 리소스를 액세스할 방식과 유사한 방식으로 컨테이너(130(1), ... ,130(n)) 중 하나 이상에서 비신뢰형 네트워크 리소스를 액세스하는 데에 사용가능하다.
하드웨어 기반의 가상화된 보안 격리를 구현하기 위한 예시적인 시스템을 고려한바, 이제 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 구현하는 시스템을 위한 예시적인 아키텍처를 고려한다.
시스템 아키텍처
도 2는 하나 이상의 실시예에 따른 하드웨어 기반의 가상화된 보안 격리를 위한 예시적인 시스템 아키텍처(200)를 도시한다. 본 명세서에서 하드웨어 기반의 가상화된 보안 격리로서 논의되지만, 본 명세서에서 논의되는 기법은 또한 가상화 기반의 격리(Virtualization Based Isolation: VBI)로 지칭될 수 있음이 인식되고 이해될 것이다. 시스템 아키텍처(200)는 적어도 부분적으로 컴퓨팅 디바이스에 의해 구현된다. 도 1의 시스템(100)을 구현하는 데 사용될 수 있는 유형에 관한 위의 논의와 유사하게, 다양한 상이한 유형의 컴퓨팅 디바이스 중 임의의 것이 시스템 아키텍처(200)를 구현하는 데 사용될 수 있다.
도시된 예에서, 시스템 아키텍처(200)를 구현하는 컴퓨팅 디바이스는 2개의 별개의 격리된 부분, 즉 호스트 오퍼레이팅 시스템(102) 및 컨테이너(130)를 포함한다. 호스트 오퍼레이팅 시스템(102)은 임의의 하나 이상의 컨테이너(130)로부터 격리되어, 도 2에서 점선으로 도시된 바와 같이, 비신뢰형 네트워크 리소스로부터 기인할 수 있는 공격 또는 감염으로부터 호스트 오퍼레이팅 시스템을 보호한다.
호스트 오퍼레이팅 시스템(102)은 HVSI 서브시스템(110), 정책 관리자(112), 네트워크 필터(116), 컨테이너 관리자(118) 및 보안 서브시스템(120)을 포함하는 것으로 도시되어 있다. 추가적으로, 호스트 오퍼레이팅 시스템(102)은 도 1에 도시된 애플리케이션(114) 중 하나일 수 있는 애플리케이션(202)을 포함한다. 애플리케이션(202)은 HVSI 라이브러리(204)를 포함하는데, 이의 기능성은 이하에서 더욱 상세히 논의될 것이다.
컨테이너(130)는 호스트 오퍼레이팅 시스템(102)에 포함된 애플리케이션(202)의 인스턴스를 나타내는 가상 애플리케이션(206)을 포함한다. 컨테이너(130)는 가상 보안 서브시스템(210)을 추가적으로 포함하는데, 이의 기능성은 이하에서 더욱 상세히 논의된다. 추가적으로, 컨테이너(130)는 시스템 아키텍처(200)를 구현하는 디바이스에 의해 활성화된 하나 이상의 컨테이너(130) 내의 네트워크 리소스 활동을 관리하고 모니터링하기 위한 컨텐츠 관리자(118)의 기능성을 나타내는 로깅(logging) 시스템(214)을 포함한다.
호스트 오퍼레이팅 시스템(102) 및 컨테이너(130)는, 비록 서로 격리되어 있지만, 가상 머신 버스(virtual machine bus)(216)를 통해 통신가능하게 연결된다. 가상 머신 버스(216)는 호스트 및 컨테이너 부분이 서로 통신할 수 있도록 하는 통신 채널이다. 추가적으로 또는 대안적으로, 호스트 오퍼레이팅 시스템(102) 및 컨테이너(130)는 물리적 네트워크, 가상 네트워크, 단순 메시지 블록(Simple Message Block: SMB) 프로토콜, 또는 원격 프로시저 호출(Remote Procedure Call: RPC) 상호연결과 같은 다른 수단을 통해 통신가능하게 연결된다.
하드웨어 기반의 가상화된 보안 격리를 구현하는 시스템을 위한 시스템 아키텍처를 고려한바, 이제 시스템 아키텍처(200)의 호스트 부분과 컨테이너 부분에 도시된 개별 컴포넌트의 기능성을 고려한다.
HVSI 서브시스템
HVSI 서브시스템(110)은 시스템 아키텍처(200)를 구현하는 컴퓨팅 디바이스에서 하드웨어 기반의 가상화된 보안 격리를 구현하기 위한 기능성을 나타낸다. 하드웨어 기반의 가상화된 보안 격리를 구현하기 위해서, HVSI 서브시스템(110)은 정책 관리자(112), 네트워크 필터(116), 컨테이너 관리자(118), 보안 서브시스템(120), 애플리케이션(202) 및 임의의 하나 이상의 컨테이너(130)와 통신하도록 구성된다. 하나 이상의 실시예에서, HVSI 서브시스템(110)은 시스템 아키텍처(200)를 구현하는 컴퓨팅 디바이스의 기동 시에 자동으로 개시된다(launched). 대안적으로, HVSI 서브시스템(110)은 다른 때에, 예를 들면 애플리케이션(202)이 호스트 오퍼레이팅 시스템에 의해 개시되는 경우 애플리케이션(202)의 HVSI 라이브러리(204)에 의해, 개시된다.
HVSI 서브시스템(110)이 개시되는 경우, 그것은 컨테이너 관리자(118)를 호출하여, 시스템 아키텍처(200)를 구현하는 컴퓨팅 디바이스에 로그온된 사용자를 위한 컨테이너를, 사용자를 위한 컨테이너가 아직 존재하지 않는 경우에 생성한다. 컨테이너 관리자(118)는 컨테이너에 연결하는 데 사용할 랜덤(random) 또는 의사-랜덤(pseudo-random) 고유 로컬 계정 크리덴셜을 생성할 것이다. 이 로컬 계정 크리덴셜은 호스트 오퍼레이팅 시스템(102)에만 알려지고, 호스트 오퍼레이팅 시스템(102)을 컨테이너에 연결하는 데 사용된다. 호스트 오퍼레이팅 시스템(102)과 컨테이너 사이의 로컬 계정 크리덴셜의 트랜잭션(transaction)은 호스트 오퍼레이팅 시스템(102)의 사용자에게 투명하며(transparent) 악의적인 공격 또는 감염이 호스트 오퍼레이팅 시스템(102)의 물리적인 네트워크 인터넷 연결을 통하여 컨테이너에 연결되는 것을 방지한다. 호스트 오퍼레이팅 시스템(102)이 다수의 사용자를 갖는 실시예에서, 컨테이너 관리자(118)는 개별 사용자를 위한 별개의 컨테이너를 생성하도록 구성된다. 각각의 별개의 컨테이너는 호스트 오퍼레이팅 시스템(102)이 로그온된 사용자에 대해 생성되지 않았던 임의의 컨테이너를 액세스하는 것이 제약되도록 상이한 랜덤 또는 의사-랜덤 고유 로컬 계정 크리덴셜을 갖는다. 컨테이너 관리자(118)는 하나 이상의 컨테이너에 대한 액세스를 허가하기 전에, 연관된 사용자 크리덴셜을 인증함으로써 이 컨테이너 분리를 보장한다.
HVSI 서브시스템(110)은 이후, 시스템 아키텍처(200)를 구현하는 컴퓨팅 디바이스 상에서 실행되는 애플리케이션이 하나 이상의 비신뢰형 네트워크 리소스를 액세스하려고 시도하고 있음을 HVSI 서브시스템(110)이 검출할 때까지 컨테이너를 일시 중단하도록 컨테이너 관리자(118)에 명령한다. HVSI 서브시스템(110)은 네트워크 필터(116)에 의해 HVSI 서브시스템(110)에 제공된 정보에 기반하여 호스트 오퍼레이팅 시스템과 하나 이상의 원격 리소스 위치 간의 통신을 모니터링하도록 구성된다.
호스트 오퍼레이팅 시스템(102)이 네트워크 리소스를 액세스하려고 시도하는 경우, HVSI 서브시스템(110)은 요청된 네트워크 리소스가 신뢰형 네트워크 리소스인지를 판정하기 위해 정책 관리자(112)와 통신한다. 요청된 네트워크 리소스가 신뢰형 네트워크 리소스임을 HVSI 서브시스템(110)이 판정하는 경우에, HVSI 서브시스템(110)은 신뢰형 네트워크 리소스가 호스트 오퍼레이팅 시스템(102) 내의 애플리케이션, 예를 들면 애플리케이션(202)에 의해 액세스되는 것을 허가한다. 네트워크 리소스가 신뢰되는지를 판정하기 위해 HVSI 서브시스템(110)이 사용할 수 있는 네트워크 리소스와 연관된 정보는, 파일 유형, 애플리케이션 유형, 네트워크 리소스의 안티-바이러스 스캔의 결과, 바이러스 시그니처(virus signature), 이메일 소스 정보(email source information), 문서 메타데이터(document metadat) , URL, IP 주소, TCP 포트, DNS 명칭, 하드웨어 디바이스 식별자, 또는 이들의 조합을 포함한다. 예를 들어, 애플리케이션(202)이 특정 웹 페이지로 내비게이트하기(navigate)를 요청하고 있음을 HVSI 서브시스템(110)이 인지하는 경우에, HVSI 서브시스템(110)은 특정 웹 페이지와 연관된 정보를 정책 관리자(112)로부터의 하나 이상의 정책과 비교하고, 특정 웹 페이지가 신뢰된다고 판정하는 것에 응답하여 애플리케이션(202)이 특정 웹 페이지를 액세스하는 것을 허가한다. HVSI 서브시스템(110)은, 예를 들어, 특정 웹 페이지의 완전 규정된 도메인 네임(Fully Qualified Domain Name: FQDN), 도메인 네임 서버(Domain Name Server: DNS)를 활용하는 루트 사이트 도메인 네임(root site domain name), 인터넷 프로토콜(Internet Protocol: IP) 주소, 또는 유사한 일률적 리소스 위치자(Uniform Resource Locator: URL) 주소지정(addressing) 방법 중 하나 이상에 기반하여, 특정 웹 페이지가 신뢰된다고 판정한다. 하나 이상의 실시예에 따르면, HVSI 서브시스템(110)은 악의적인 네트워크 리소스의 리스트를 유지하는 컴퓨팅 디바이스(102)로부터 원격으로 구현된 클라우드 기반 서비스로부터 정보를 수신함으로써 네트워크 리소스가 신뢰되는지를 판정하도록 추가적으로 구성된다. 예를 들어, 애플리케이션(202)이 특정 웹 페이지로 내비게이트하기를 요청하고 있음을 HVSI 서브시스템(110)이 인지하는 경우에, HVSI 서브시스템(110)은 네트워크(108)를 통해 클라우드 기반 서비스를 참고하여 특정 웹 페이지를 클라우드 기반 서비스에 저장된 잠재적으로 악의적인 네트워크 리소스의 리스트와 비교한다. 특정 웹 사이트가 잠재적으로 악의적인 네트워크 리소스의 리스트에 포함되어 있음을 클라우드 기반 서비스가 나타내는 경우에, 특정 웹 페이지는 신뢰되지 않는 것으로 판정된다.
대안적으로, 요청된 네트워크 리소스가 신뢰형 네트워크 리소스가 아님을 HVSI 서브시스템(110)이 판정하는 경우에, HVSI 서브시스템(110)은 컨테이너 관리자(118)로 하여금 컨테이너(130)를 활성화하여 비신뢰형 네트워크 리소스를 처리하게 한다. 호스트 시스템에서 비신뢰형 네트워크 리소스를 요청하고 있는 애플리케이션의 유형에 기반하여, HVSI 서브시스템(110)은 컨테이너(130) 내의 애플리케이션의 가상 버전(virtual version)을 개시하도록 컨테이너 관리자(118)에 명령한다. 예를 들어, 애플리케이션(202)이 비신뢰형 네트워크 리소스에 대한 액세스를 요청하고 있다고 HVSI 서브시스템(110)이 판정하는 경우에, HVSI 서브시스템(110)은 컨테이너(130) 내에 가상 애플리케이션(206)을 생성하도록 컨테이너 관리자(118)에 명령한다. 이러한 방식으로, 컨테이너(130)는 호스트 오퍼레이팅 시스템(102)이 하나 이상의 신뢰형 네트워크 리소스와 상호작용할 것과 같이 하나 이상의 비신뢰형 네트워크 리소스와 상호작용하도록 구성된다. 하나 이상의 실시예에서, 컨테이너(130)는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스에 의해 활성화되고 그 디바이스 상에서 구현된다. 대안적으로, 컨테이너(130)는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스와는 상이한 디바이스에 의해 활성화되고 그 디바이스 상에서 구현된다. 대안적으로, 컨테이너(130)는 오퍼레이팅 시스템(102)을 구현하는 디바이스와는 상이한 디바이스에 의해 구현되나, 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스에 의해 활성화된다.
호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스의 사용자가 컨테이너(130) 내의 가상 애플리케이션에 의해 액세스되는 임의의 하나 이상의 비신뢰형 네트워크 리소스를 열람하고(view) 그렇지 않으면 상호작용하기 위해서, HVSI 서브시스템(110)은 가상 애플리케이션(206)을 위한 인터페이스의 디스플레이를 야기하기 위해 컨테이너(130)와 통신하도록 구성된다. 예를 들어, 하나 이상의 실시예에서 HVSI 서브시스템(110)은 가상 머신 버스(216)를 사용하여 원격 데스크톱 프로토콜(Remote Desktop Protocol: RDP)의 원격 애플리케이션 국부적 통합(Remote Applications Integrated Locally: RAIL) 모드를 사용한다. 이러한 방식으로, 호스트 오퍼레이팅 시스템(102)은 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스의 디스플레이 디바이스에 가상 애플리케이션(206)의 인터페이스를 디스플레이할 수도 있다. 하나 이상의 실시예에서, 인터페이스는 호스트 오퍼레이팅 시스템(102)의 사용자가 인터페이스를 호스트 오퍼레이팅 시스템 자체의 일부라고 인식하도록 구성된다. 대안적으로, HVSI 서브시스템(110)은 가상 애플리케이션(206)에 대응하는 인터페이스를 디스플레이하되, 디스플레이되는 인터페이스가 하나 이상의 비신뢰형 네트워크 리소스에 대응한다는 시각적 표시(visual indication)와 함께 디스플레이하도록 구성된다. 다른 실시예에서, HVSI 서브시스템(110)은 가상 애플리케이션(206)에 대응하는 인터페이스를 디스플레이하기 위해 X 윈도우 시스템(X Window System) 또는 대안적인 원격 데스크톱 구현을 사용한다.
컨테이너(130)가 컨테이너 관리자(118)에 의해 활성화된 후, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102) 및 컨테이너(130)로부터의 모든 네트워크 리소스 호출을 필터링한다. 예를 들어, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102)으로부터의 비신뢰형 네트워크 리소스에 대한 모든 호출을 차단하고 호스트 오퍼레이팅 시스템(102)으로부터의 신뢰형 네트워크 리소스 호출만을 허용하도록 네트워크 필터(116)에 명령한다. 유사하게, HVSI 서브시스템(110)은 컨테이너(130)로부터의 비신뢰형 네트워크 리소스에 대한 모든 호출을 허용하고 컨테이너(130)로부터의 신뢰형 네트워크 리소스에 대한 모든 호출을 차단하도록 네트워크 필터(116)에 명령한다.
HVSI 서브시스템(110)은 컨테이너(130)에 의해 액세스되는 비신뢰형 네트워크 리소스와 연관된 모든 활동을 모니터링하도록 컨테이너 관리자(118)에 명령하도록 구성된다. 컨테이너(130)에서 실행되는 가상 애플리케이션(206)의 모든 인스턴스가 종료되었다는 표시(indication)를 컨테이너 관리자(118)로부터 HVSI 서브시스템(110)이 수신하는 경우, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102) 및 호스트 오퍼레이팅 시스템(102)에 의해 액세스되는 임의의 컨테이너(130) 사이의 임의의 연결을 종료시킨다. 이후, HVSI 서브시스템(110)은 하나 이상의 컨테이너(130)를 일시 중단하거나 아니면 종료시킬 것이다. 예를 들어, 하나 이상의 실시예에서, 가상 애플리케이션(206)의 처리가 끝났음을 HVSI 서브시스템(110)이 인지하는 경우, HVSI 서브시스템(110)은 컨테이너(130)와의 연결을 종료시키고 컨테이너를 일시 중단하여 비신뢰형 네트워크 리소스에 대한 추가 요청을 기다린다. 대안적으로, 사용자가 시스템 아키텍처(200)를 구현하는 디바이스로부터 로그오프했다고 HVSI 서브시스템(110)이 판정하는 경우에, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102)에 의해 활성화되었던 임의의 하나 이상의 컨테이너(130)를 종료시킨다.
HVSI 서브시스템(110)은, 정책 관리자(112), 네트워크 필터(116), 컨테이너 관리자(118) 및 보안 서브시스템(120)과 같은 호스트 오퍼레이팅 시스템(102)의 컴포넌트와 통신함으로써, 요청된 네트워크 리소스가 신뢰되는지를 판정하고, 비신뢰형 네트워크 리소스의 열기(opening)를 격리된 컨테이너로 제약하며, 격리된 컨테이너 내에서 실행되는 하나 이상의 프로세스를 관리하도록 구성된다. 이것은 HVSI 서브시스템(110)이 비신뢰형 네트워크 리소스에 의해 야기될 수 있는 커널 레벨 공격 또는 감염으로부터 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스를 보호하기 위해서 하드웨어 기반의 가상화된 보안 격리 기법을 수행할 수 있도록 한다.
하드웨어 기반의 가상화된 보안 격리를 수행하는 호스트 오퍼레이팅 시스템의 예시적인 시스템 아키텍처를 고려한바, 이제 하나 이상의 실시예에 따라 호스트 오퍼레이팅 시스템의 개별 컴포넌트를 고려한다.
정책 관리자
정책 관리자(112)는 호스트 오퍼레이팅 시스템을 구현하는 컴퓨팅 디바이스를 위한 하나 이상의 정책을 획득하고 저장하기 위한 호스트 오퍼레이팅 시스템(102)의 기능성을 나타낸다. 예를 들어, 정책 관리자(112)는 도 1에 도시된 관리 및 모니터링 서비스(104)로부터 하나 이상의 정책을 획득하고 저장하도록 구성된다. 하나 이상의 정책 각각은 오퍼레이팅 시스템(102)이 액세스하도록 허용되는 하나 이상의 신뢰형 네트워크 리소스를 지정한다. 추가적으로, 정책은 하나 이상의 정책 객체(policy object)와 정책 객체를 위한 하나 이상의 대응하는 보안 파라미터를 지정할 수 있다. 이러한 정책 객체 및 대응 보안 파라미터는 호스트 오퍼레이팅 시스템이 하나 이상의 비신뢰형 네트워크 리소스와 어떻게 상호작용할 수 있는지를 정의하는 제약사항을 제공한다.
예를 들어, 정책 객체는 호스트 오퍼레이팅 시스템(102)이 컨테이너(130)와 같은 격리된 컨테이너 내에 가상 애플리케이션을 구현하도록 허용되는지를 식별할 수 있다. 호스트 오퍼레이팅 시스템(102)이 가상 애플리케이션 및 격리된 컨테이너를 구현하도록 허용된다고 이 정책 객체를 위한 대응하는 보안 파라미터가 나타내면, 호스트 오퍼레이팅 시스템은 격리된 컨테이너(130)의 가상 애플리케이션(206)에서 하나 이상의 비신뢰형 네트워크 리소스를 열 수 있다. 대안적으로 또는 추가적으로, 정책 객체는 격리된 컨테이너에서 열도록 허용되는 어떤 가상 애플리케이션을 나타낸다. 이 정책 객체를 위한 대응 보안 파라미터는 격리된 컨테이너에서 가상으로 열리도록 허용되는 하나 이상의 특정 애플리케이션을 식별할 수 있다. 대안적으로 또는 추가적으로, 정책 객체는 호스트 오퍼레이팅 시스템(102)이 격리된 컨테이너(130)와 호스트 오퍼레이팅 시스템(102) 자체 사이에서 복사할(copy) 수 있는 것을 나타낸다. 대응 보안 파라미터는 격리된 컨테이너(130)와 호스트 오퍼레이팅 시스템(102) 사이에서 복사될 수 있는 하나 이상의 파일 유형을 지정한다. 대안적으로 또는 추가적으로, 정책 객체는 격리된 컨테이너(130)에서 열린 가상 애플리케이션을 위한 프린트 설정을 나타낸다. 이 정책 객체를 위한 대응 보안 파라미터는 격리된 컨테이너(130)에서 실행되는 가상 애플리케이션(206)이 프린트할 수 있는지를, 그리고 만일 그렇다면, 가상 애플리케이션(206)이 프린트하도록 허용되는 하나 이상의 프린터, 애플리케이션, 또는 파일 유형을 나타낸다. 대안적으로 또는 추가적으로, 정책 객체는 가상 애플리케이션(206)을 위한 네트워크 트래픽이 허용되는지를 나타낸다. 이 정책 객체를 위한 대응 보안 파라미터는 격리된 컨테이너 내에서 네트워크 트래픽이 허용되는 하나 이상의 가상 애플리케이션을 지정할 수 있다. 대안적으로 또는 추가적으로, 정책 객체는 가상 애플리케이션(206)을 위한 백그라운드(background) 작업이 허용되는지를 나타낸다. 대응 보안 파라미터는 격리된 컨테이너(130) 내에서 백그라운드 작업이 허용되는 하나 이상의 가상 애플리케이션을 지정한다. 대안적으로 또는 추가적으로, 정책 객체는 컨테이너에서 실행되는 가상 애플리케이션(206)이 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스의 하나 이상의 하드웨어 리소스, 예를 들면 그래픽 가속을 위한 컴퓨팅 디바이스의 GPU를 활용하도록 허용되는지를 나타낸다.
다음의 표는 위에서 논의된 것과 같은, 정책 객체 및 대응 보안 파라미터의 예시적인 세트를 제공한다. 표준 보안 절차에 따르면, 이 예시적인 정책에는 설명되지 않은 디폴트 거부 규칙(default deny rule)이 암시되어 있다. 그러나, 논의되는 정책 객체 및 대응 보안 파라미터는 예시적인 것이며 범위를 총망라하는 것이 아님이 인식되고 이해될 것이다.
Figure 112018120165356-pct00001
호스트 오퍼레이팅 시스템(102)이 기동되는 경우, HVSI 서브시스템(110)은 정책 관리자(112)와 접촉하여 임의의 정책 객체 및 대응 보안 파라미터와 함께 호스트 오퍼레이팅 시스템을 위한 신뢰형 네트워크 리소스의 리스트를 획득한다. HVSI 서브시스템(110)은 이러한 신뢰형 네트워크 리소스, 정책 객체 및 대응 보안 파라미터를 집성하고(aggregate) 이 집성된 정책을 호스트 오퍼레이팅 시스템(102)에 적용한다. 하나 이상의 실시예에서, 이 집성된 정책은 호스트 오퍼레이팅 시스템(102)이 작동(action)을 수행하도록 요청하거나 네트워크 리소스를 액세스하려고 시도할 때마다 질의된다. 예를 들어, 호스트 오퍼레이팅 시스템(102)이 정책 객체 "컨테이너 격리를 위한 가상 애플리케이션"(Virtual Applications for Container Isolation)에 대응하는 보안 파라미터에 포함된 애플리케이션(202)을 열 것을 요청하는 경우, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102)으로 하여금 격리된 컨테이너(130)에서 그 애플리케이션(206)의 가상 버전을 열게 한다.HVSI 서브시스템(110)은 격리된 컨테이너(들)(130) 중 하나 이상 내의 활동을 모니터링하여 컨테이너(들)가 어떠한 신뢰형 네트워크 리소스에 대한 액세스도 얻지 않음을 보장하도록 추가적으로 구성된다. 예를 들어, 웹 브라우저의 가상 버전이 격리된 컨테이너(130)에서 실행되고 있고, HVSI 서브시스템(110)이 가상 웹 브라우저가 신뢰형 네트워크 리소스로서 정책 관리자(112)에 의해 나타내어진 네트워크 리소스를 액세스하려고 시도하고 있음을 검출하는 경우에, HVSI 서브시스템(110)은 가상 웹 브라우저가 이 신뢰형 네트워크 리소스를 열거나 그렇지 않으면 액세스하는 것을 방지하고 대신에 신뢰형 네트워크 리소스로 하여금 호스트 오퍼레이팅 시스템(102) 상의 대응하는 웹 브라우저 내에서 열리게 할 수 있다. HVSI 서브시스템(110)은, 호스트 오퍼레이팅 시스템 (102)에 대한 신뢰형 네트워크 리소스의 액세스 및 개방을 제약함으로써, 그리고 하나 이상의 격리된 컨테이너(130)에 대한 비신뢰형 네트워크 리소스의 액세스 및 개방을 제약함으로써, 신뢰형 네트워크 리소스가 임의의 비신뢰형 네트워크 리소스에 의해 손상되지 않는 것을 보장한다.
호스트 오퍼레이팅 시스템(102)은, 정책 관리자(112)로부터 신뢰형 네트워크 리소스, 정책 객체 및 대응 보안 파라미터의 리스트를 수신하는 것에 더하여, 호스트 오퍼레이팅 시스템을 위한 정책에 영향을 줄 수 있는 하나 이상의 로컬 이벤트를 관측하도록 구성된다. 예를 들어, 격리된 컨테이너(130) 내에서 가상 웹 브라우저가 실행되고 있는 시나리오를 고려한다. HVSI 서브시스템(110)은 격리된 컨테이너(130) 내에서 가상 웹 브라우저에 의해 액세스되는 각각의 네트워크 리소스의 거동을 모니터링한다. 가상 웹 애플리케이션이 비신뢰형 네트워크 리소스로 내비게이트하는 경우, 비신뢰형 네트워크 리소스를 다운로드하는 것은 예기치 않은 방식으로 컨테이너(130)의 레지스트리(registry)에 기록이 되게 할 수 있다. 이하에서 더욱 상세히 논의되는 컨테이너 관리자(118)를 사용하여, HVSI 서브시스템(110)은 컨테이너(130)로부터 데이터를 획득하고 비신뢰형 네트워크 리소스를 위한 업데이트된 로컬 정책을 계산한다. 예를 들어, 하나 이상의 실시예에서 HVSI 서브시스템(110)은 비신뢰형 네트워크 리소스와 연관된 프린팅 및 복사 설정을 불능화함으로써 비신뢰형 네트워크 리소스를 위한 로컬 정책을 업데이트한다. 이후, HVSI 서브시스템(110)은 이 획득된 데이터를 집성하고 그 획득된 데이터를 도 1에 도시된 관리 및 모니터링 서비스(104)와 같은 원격 서비스에 보고하도록 구성된다. 하나 이상의 실시예에 따르면, HVSI 서브시스템(110)은 이 로컬 정책을 업데이트하는 데에서의 추가적인 정보를 위해 안티바이러스 애플리케이션과 같은, 호스트 오퍼레이팅 시스템(102)의 국부적으로 설치된 애플리케이션을 참고한다. 예를 들어, HVSI 서브시스템(110)은 하나 이상의 안티바이러스 애플리케이션을 사용하여 컨테이너(130) 내의 비신뢰형 네트워크 리소스를 스캔하고 비신뢰형 네트워크 리소스에 보안 레벨을 할당한다. 이러한 방식으로, HVSI 서브시스템(110)은 정책을 계속적으로 업데이트하고 비신뢰형 네트워크 리소스로부터 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스를 더 보호하도록 구성된다.
하나 이상의 실시예에서, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102) 및 컨테이너(130)에서 로컬 활동에 응답하는 독립적인 호스트 기반 정책 엔진을 구현한다. 이 독립적인 호스트 기반 정책 엔진은 관리 및 모니터링 서비스(104)로의 라운드 트립(round trip)을 감소시키는바, 관리 및 모니터링 서비스가 많은 클라이언트를 관리하는 것을 가능하게 한다. 하나 이상의 실시예에서, 정책 관리자(112)는 관리 및 모니터링 서비스(104)로부터 템플릿(template) 또는 시그니처(signature)를 획득한다. 정책 관리자(112)는 HVSI 서브시스템(110)에 이 템플릿 또는 시그니처를 제공한다. 컨테이너(130)가 활성화되는 경우, HVSI 서브시스템(110)은 요구되는 정책을, 그것이 컨테이너(130)에서 관측된 활동에 매칭시키는 정책 템플릿 또는 시그니처로부터의 패턴에 기반하여 컴퓨팅한다. 예를 들어, 가상 웹 애플리케이션이 컨테이너(130)에서 실행되고 있고, 가상 웹 애플리케이션을 URL로서 액세스하려고 하고 있는 네트워크 리소스가 정책 템플릿에서의 패턴과 매칭되는 경우에, HVSI 서브시스템(110)은 위험 레벨을 계산하고 정책을 업데이트한다. 이는 컨테이너(130) 내의 가상 애플리케이션에 적용되는 특정 동작, 예를 들면 허용 작동(allow action), 차단 작동(block action), 또는 재지향 작동(redirect action)을 동적으로 초래한다. 이 실시예에서, 정책은 동적인바, 로컬 평가 및 정책을 관리 및 모니터링 서비스(104)로부터 HVSI 서브시스템(110)으로 분담시킨다(offloading).
대안적인 예로서, 사용자가 컨테이너(130) 내에서 비신뢰형 웹 사이트로부터 새로운 애플리케이션을 다운로드하고 설치하는 시나리오를 고려한다. 이 예에서, HVSI 서브시스템(110)은 다운로드된 애플리케이션을 기존의 정책에 대해 평가하고, 격리된 컨테이너(130)에서의 다운로드된 애플리케이션에 적용되는 정책을 계산한다. 하나 이상의 실시예에서, 이 계산된 정책은 유사한 애플리케이션의 하나 이상의 정책 객체 및 대응 보안 파라미터에 기반한다. 예를 들어, 다운로드된 애플리케이션이 이메일 애플리케이션인 경우에, HVSI 서브시스템(110)은 다른 이메일 애플리케이션에 관련된 하나 이상의 정책 객체 및 대응 보안 파라미터를 식별하고, 다운로드된 이메일 애플리케이션에 대해 유사한 정책 설정을 적용한다. HVSI 서브시스템(110)은 컨테이너(130) 내의 다운로드된 애플리케이션과 연관된 활동을 모니터링하도록 구성되며, 이 관측된 활동에 기반하여 로컬 정책을 재계산하도록 구성된다. 추가적으로 또는 대안적으로, 컨테이너(130) 내의 임의의 하나 이상의 다운로드된 애플리케이션 또는 액세스된 네트워크 리소스의 관측된 활동을 기술하는 정보가 집성되고 원격 서비스, 예를 들면 도 1에 도시된 관리 및 모니터링 서비스(104)로 통신된다. 몇몇 실시예에서, 호스트 오퍼레이팅 시스템(102)은 컨테이너(130) 내의 관측된 활동을 기술하는 정보에 대한 로컬 분석을 수행하고 추가적인 보안 정책을 계산한다. 예를 들어, 다운로드된 애플리케이션이 이례적인(anomalous) 거동을 보이고 있는 경우에, 다운로드된 애플리케이션은 종료되고 컨테이너는 애플리케이션을 다운로드하기에 앞선 그것의 이전 동작 상태로 재설정될 수 있다. 본 명세서에서 논의되는 바와 같이, 컨테이너에서의 이례적인 거동은, 예를 들어, 컨테이너(130)의 커널 또는 오퍼레이팅 시스템을 위태롭게 하려는 시도로서 HVSI 서브시스템(110)에 의해 해석되는 표시자를 지칭한다.
호스트 오퍼레이팅 시스템(102)을 위한 정책을 시행하기 위해서, HVSI 서브시스템(110)은 네트워크 필터(116)와 같은 하나 이상의 네트워크 필터를 채용한다.
네트워크 필터
네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102)을 위한 인입 및 인출 네트워크 트래픽을 인터셉트하고 검사하는 기능성을 나타낸다. 네트워크 필터(116)는 다른 능력 중에서도, 네트워크 트래픽을 포워딩하는 것, 차단하는 것 및/또는 수정하는 것을 포함하는 네트워크 트래픽을 위한 시행 기능성을 갖는다. 예를 들어, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102)과 임의의 하나 이상의 격리된 컨테이너(130) 사이에서의 모든 네트워크 트래픽 및 데이터 통신을 인터셉트하고 검사하도록 구성된다. 유사하게, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102) 및 도 1에 도시된 네트워크(108)와 같은 네트워크를 통해 액세스되는 임의의 원격 리소스 위치 사이에서의 모든 네트워크 트래픽 및 데이터 통신을 인터셉트하고 검사하도록 구성된다. 하나 이상의 실시예에서, 호스트 오퍼레이팅 시스템(102)을 임의의 하나 이상의 격리된 컨테이너(130)와 인터페이스시키기 위해서, 네트워크 필터(116)는 가상 스위치(virtual switch), 호스트 오퍼레이팅 시스템을 위한 적어도 하나의 네트워크 인터페이스 카드, 그리고 하나 이상의 격리된 컨테이너를 위한 하나 이상의 가상 네트워크 인터페이스 카드를 포함한다.
정책 관리자(112)로부터 수신된 정책을 사용하여, HVSI 서브시스템(110)은 컨테이너(130)가 신뢰형 네트워크 리소스를 액세스할 수가 없음을 보장하기 위해 네트워크 필터(116)와 인터페이스된다. 유사하게, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102)이 임의의 하나 이상의 비신뢰형 네트워크 리소스를 액세스하거나 그렇지 않으면 여는 것이 불가능함을 보장하기 위해 네트워크 필터(116)와 인터페이스된다. 하나 이상의 실시예에서, 네트워크 필터(116)는 신뢰형 데이터가 호스트 오퍼레이팅 시스템(102) 상에 남아 있으며 컨테이너(130)로 유입하지 않는 것을 보장하기 위해 신뢰형 네트워크 리소스와 연관된 개별 패킷의 데이터를 변경하도록 구성된다. 아래에서 더욱 상세히 논의되는 바와 같이, 프록시 인증 시나리오에서, 네트워크 필터(116)는 프록시 트래버설(proxy traversal)을 보장하고 크리덴셜이 컨테이너로 누설되거나 그렇지 않으면 컨테이너에 의해 액세스되는 것을 방지하기 위해 네트워크 트래픽에 크리덴셜 정보를 주입한다. 몇몇 실시예에서, 네트워크 필터(116)는 네트워크 트래픽이 DNS 룩업(lookup) 동안 질의되었던 네트워크 리소스에서 유래하거나 종결되고 있음을 확인한다(validate). 이를 달성하기 위해, 허용된 네트워크 리소스에 기반한 식별자가 컨테이너 내부에서 검지되고(plumbed) 하나 이상의 네트워크 리소스 명칭과 연관된다. 컨테이너 내의 네트워크 스택(network stack)은 네트워크 트래픽에서의 이러한 식별자를 포함한다. 네트워크 필터(116)는 식별자가 네트워크 리소스 명칭과 매칭하는지를 확인한다. 확인이 성공적인 경우에, 트래픽이 포워딩되고, 그것인 실패하는 경우에, 트래픽은 중절된다(dropped). 몇몇 실시예에서, 네트워크 필터(116)는 포워딩되는 네트워크 트래픽으로부터 식별자를 탈거한다.
하나 이상의 실시예에 따르면, 네트워크 필터(116)는 가상 스위치 확장(virtual switch extension)으로서 구현된다. 대안적으로, 네트워크 필터(116)는 네트워크 트래픽을 인터셉트하고, 검사하고, 포워딩하고, 수정하고, 차단하는 것을 포함하는 다수의 능력을 갖는 임의의 모듈로서 구현된다. 다른 실시예에서 네트워크 필터는 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스의 방화벽 또는 다른 보안 소프트웨어에 내장된다. 하나 이상의 실시예에 따르면, 정책이 호스트 오퍼레이팅 시스템에서 수신되는 경우 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102) 상에 설치된다. 예를 들어, 정책 관리자(112)가 도 1에 도시된 관리 및 모니터링 서비스(104)로부터 정책을 수신하는 경우 네트워크 필터(116)가 설치될 수 있다. 그러나, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스의 리소스(예컨대, 메모리)를 요구하기 때문에, 하나 이상의 실시예에서 네트워크 필터(116)는 호스트 오퍼레이팅 시스템 상에 어떠한 정책도 존재하지 않는 경우 설치되지 않는다. 이러한 방식으로, 비신뢰형 네트워크 리소스를 컨테이너(130)와 같은 격리된 컨테이너로 전환시키는 어떠한 정책도 없는 경우, 네트워크 오버헤드를 감소시키기 위해 네트워크 필터(116)가 설치되지 않는다.
몇몇 실시예에서, 네트워크 필터(116)는 어느 네트워크 인터페이스가 리소스에 연결하는 데 사용될 것인지를 시행한다. 예를 들어, 호스트 오퍼레이팅 시스템(102)이 기업 내에 있는 동안, 보안이 가정된다. 기업에서, 호스트 오퍼레이팅 시스템(102) 상에서 실행되는 애플리케이션(202)은 단순히 임의의 이용가능한 물리적 인터페이스(예컨대, 이더넷(Ethernet), 와이파이(Wi-Fi) 등)를 사용할 수 있다. 그러나, 호스트 오퍼레이팅 시스템(102)이 공중 네트워크 상에(예컨대, 커피숍의 공용 Wi-Fi에서 기업 외부에) 있는 경우, 네트워크 필터(116)는 단지 호스트 오퍼레이팅 시스템(102) 상에서 실행되는 애플리케이션(202) 및 다른 애플리케이션이 VPN 인터페이스와 같은 어떤 네트워크 인터페이스를 사용할 수 있도록 하여, 네트워크 보안을 개선할 수 있다. 몇몇 구성에서, 네트워크 필터(116)는 컨테이너(130)에서 실행되는 하나 이상의 애플리케이션으로 하여금 VPN을 사용하지 않고서 공중 네트워크를 액세스할 수 있도록 한다. 하나의 네트워크 인터페이스가 호스트 오퍼레이팅 시스템(102) 통신을 위해 격리되고 상이한 네트워크 인터페이스가 컨테이너(130) 통신을 위해 격리되는 실시예에서, 네트워크 필터(116)는 컨테이너를 위한 네트워크 통신이 상이한 네트워크 인터페이스로 격리된다는 표시를 컨테이너(130)의 네트워크 스택에 제공하도록 구성된다.
HVSI 서브시스템(110)은 네트워크 필터(116)를 호출하고 네트워크 필터(116)로 하여금 그 자신을 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스의 네트워크 포트에 접속하게 한다. 일단 네트워크 필터(116)가 네트워크 포트에 접속되면, 그것은 네트워크 트래픽을 모니터링, 필터링, 그리고/또는 차단할 수가 있다. 하나 이상의 실시예에서, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102)을 위한 정책을 또한 시행하기 위한 로컬 DNS 서버를 포함한다. 예를 들어, 하나 이상의 실시예에서 네트워크 필터(116)의 DNS 서버는 네트워크 리소스를 대응 IP 주소에 매핑하여 개별 네트워크 리소스의 출처를 확인한다. 하나 이상의 구현에서, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102) 및 임의의 하나 이상의 컨테이너(130) 양자 모두를 위한 네트워크 트래픽을 허용 또는 차단하도록 구성된 하나 이상의 입력/출력 제어 시스템(Input/Output Control system: IOCTL)을 포함한다. 다른 구현에서 이 구성은 API, 파일 또는 커맨드 쉘(command shell)을 통해 수행된다.
네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102) 및 컨테이너(130)가 각각의 호스트 오퍼레이팅 시스템 또는 컨테이너에 대해 허용되지 않는 네트워크 리소스를 액세스하지 않고 있음을 보장하기 위해 네트워크 트래픽(예컨대, HTTP 트래픽)을 모니터링하도록 구성된다. HTTP 트래픽을 모니터링하기 위해서, 네트워크 필터(116)는 호스트 오퍼레이팅 시스템(102) 및/또는 도 1에 도시된 웹 프록시(106)와 같은 임의의 하나 이상의 격리된 컨테이너(130) 사이의 네트워크 트래픽을 용이하게 하는 하나 이상의 웹 프록시로써 HTTP 헤더 검사를 수행한다. 대안적으로, 하나 이상의 실시예에 따라, 네트워크 필터(116)는 그 자체의 HTTP 프록시를 구현하도록 구성된다.
프록시된(proxied) 환경에서 그리고 네트워크 변경에 걸쳐서 네트워크 통신 기능을 지원하기 위해, 네트워크 필터(116)는 네트워크 주소 변환기(Network Address Translator: NAT)를 포함한다. NAT는 네트워크 외부 호스트 오퍼레이팅 시스템(102)에 도달하기 위해 게이트웨이 및 사설 네트워크를 컨테이너(130)에 제공한다. 하나 이상의 실시예에 따르면, NAT는 호스트 오퍼레이팅 시스템(102)에 외부 네트워크 변경 통지를 포워딩하고 외부 네트워크 프록시 구성을 포워딩하도록 구성된다. 예를 들어, 하나 이상의 실시예에서 네트워크 필터(116)는, 네트워크 연결 상태가 변경되는 경우, 예를 들면 Wi-Fi(IEEE 802.11) 네트워크 어댑터가 Wi-Fi 네트워크의 범위를 벗어나거나 진입하는 경우, 호스트 오퍼레이팅 시스템(102)에 네트워크 변경 통지를 포워딩하기 위해 NAT를 사용한다. 추가적으로, 네트워크 필터(116)의 NAT는 컨테이너(130)가 상이한 네트워크를 정확하게 식별할 수 있음을 보장하기 위해 외부 네트워크 아이덴티티(outside network identity)를 에뮬레이트하도록(emulate) 구성된다. 예를 들어, NAT는 호스트의 외부 네트워크 게이트웨이의 매체 액세스 제어(Media Access Control: MAC) 주소를 취하고 그것을 NAT에 의해 제공되는 사설 네트워크 게이트웨이 MAC 주소로서 재사용할 수 있다. 이것은 컨테이너(130)의 HTTP 소프트웨어가 HTTP 캐시(cache)를 적절히 정렬할 것임을 보장하고, 동일한 네트워크에 재연결하는 경우 프록시 검색(proxy discovery)이 중복되지 않음을 보장한다. 외부 네트워크 아이덴티티를 에뮬레이트함으로써, 네트워크 필터(116)의 NAT는 네트워크 재연결 성능을 상당히 개선하고 호스트 오퍼레이팅 시스템(102)의 사용자를 위한 사용자 경험을 개선한다. 추가적으로, 네트워크 필터(116)의 NAT는 컨테이너(130)와 같은 하나 이상의 격리된 컨테이너에서 실행되고 있는 하나 이상의 가상 애플리케이션(206)을 위해 호스트 오퍼레이팅 시스템(102)에 "저전력 연결 스탠바이"(low-power connected standby) 설정을 포워딩하도록 구성된다. 이것은 호스트 오퍼레이팅 시스템(102)이 하나 이상의 활성인 격리된 컨테이너(130)에서 실행되는 임의의 가상 애플리케이션(206)을 존속시키는 것(keep alive)을 가능하게 한다. 하나 이상의 실시예에서, NAT의 기능성은 호스트 오퍼레이팅 시스템(102)의 상이한 컴포넌트로 분담된다. 예를 들어, 네트워크 외부 호스트 오퍼레이팅 시스템(102)에 도달하기 위해 사설 네트워크 및 게이트웨이를 공급하는 것(provisioning), 네트워크 변경 통지를 포워딩하는 것, 외부 네트워크 아이덴티티를 에뮬레이트하는 것, 그리고 저전력 연결 스탠바이 설정을 포워딩하는 것은 네트워크 필터(116), HVSI 서브시스템(110), 또는 컨테이너 관리자(118) 중 하나 또는 조합에 의해 수행될 수 있다.
HVSI 서브시스템(110)은 하나 이상의 실시예에 따라 웹 프록시 인증을 수행하기 위해 네트워크 필터(116)와 상호작용하도록 구성된다. 예를 들어, 많은 기업 시스템은 기업의 개별 사용자를 위한 인터넷 액세스를 제어하기 위해 하나 이상의 웹 프록시를 사용한다. 이러한 웹 프록시는, 사용자이름 및 연관된 패스워드와 같은 사용자 크리덴셜을 프롬프트함(prompting)으로써, 개별 사용자 또는 애플리케이션이 웹 사이트와 같은 네트워크 리소스를 액세스하는 것을 허용하기 전에 인증을 요구한다. 따라서, 네트워크 필터(116)는 도 1에 도시된 웹 프록시(106)와 같은 웹 사이트에 대한 액세스를 용이하게 하는 데 요구되는 웹 프록시를 식별하도록 구성된다. 그러나, 격리된 컨테이너에서 실행되는 가상 애플리케이션이 웹 프록시 인증을 요구하는 시나리오에서는, 보안 문제가 발생한다. 예를 들어, 격리된 컨테이너(130)에서 열려서 실행되고 있는 하나 이상의 비신뢰형 네트워크 리소스가 사용자 크리덴셜에 대한 인가되지 않은 액세스를 얻고 연관된 사용자 계정의 보안을 위태롭게 할 수도 있다.
웹 프록시 인증을 요구하는, 컨테이너(130)에서 실행되는 가상 애플리케이션(206)에 끊김없는(seamless) 사용자 경험을 제공하기 위해서, HVSI 서브시스템(110)은 컨테이너(130)에 사용자 크리덴셜을 제공하지 않고서 호스트 오퍼레이팅 시스템(102)으로부터 웹 프록시에 사용자 크리덴셜을 제공하도록 구성된다. HVSI 서브시스템(110)은 격리된 컨테이너 내에 가상 보안 서브시스템(210)을 구현함으로써 컨테이너(130)에서 실행되는 가상 애플리케이션(206)을 위한 웹 프록시에 사용자 크리덴셜을 제공하도록 구성된다. 가상 보안 서브시스템(210)은 호스트 오퍼레이팅 시스템(102)의 보안 서브시스템(120)과 인터페이스하도록 구성된다. 예를 들어, 하나 이상의 실시예에서 HVSI 서브시스템(110)은 가상 웹 애플리케이션(206)이 웹 프록시 인증을 요구하는 네트워크 리소스를 호출하고 있음을 검출한다. HVSI 서브시스템(110)은 가상 보안 서브시스템(210)이 호스트 오퍼레이팅 시스템(102)의 보안 서브시스템(120)과 인터페이스할 수 있도록, 격리된 컨테이너 내에 가상 보안 서브시스템(210)을 구현하도록 구성된다. 가상 보안 서브시스템(210)과 보안 서브시스템(120) 간의 통신은 HVSI 서브시스템(110)에 의해 수립된 연결을 통하여, 예를 들면 가상 머신 버스(216)를 통하여 수행될 수 있다.
컨테이너(130) 내의 가상 웹 애플리케이션(206)이 웹 프록시를 통해 네트워크 리소스를 액세스하려고 시도하는 경우, 웹 프록시는 사용자 크리덴셜에 대한 챌린지(challenge)로써 회신한다. 이 시나리오에서, 가상 보안 서브시스템(210)은 웹 프록시에 인증을 제공하기 위해 호스트 오퍼레이팅 시스템(102)의 보안 서브시스템(120)을 호출하도록 구성된다. 이 호출을 수신하는 것에 응답하여, 보안 서브시스템(120)은 크리덴셜 블롭(blob) 내에 사용자 크리덴셜을 실제로 포함하지 않고서 사용자 크리덴셜의 소유권(ownership)을 나타내는 더미(dummy) 크리덴셜 블롭을 생성하도록 구성된다. 본 명세서에서 논의되는 바와 같이, 더미 블롭은 또한 사용자 크리덴셜의 의사-인증(pseudo-authentication)으로 지칭될 수 있다. 보안 서브시스템(120)은 생성된 더미 크리덴셜 블롭을 가상 보안 서브시스템(210)에 반환한다. 이후, 가상 보안 서브시스템(210)은 가상 웹 애플리케이션(206)에 더미 크리덴셜 블롭을 제공하여서, 가상 웹 애플리케이션은 웹 프록시로의 HTTP 응답 내에 더미 크리덴셜 블롭을 임베딩할(embed) 수 있다. 이러한 방식으로, 컨테이너(130)는 호스트 오퍼레이팅 시스템(102)으로부터 실제 사용자 크리덴셜을 수신하지 않고서 사용자 크리덴셜의 소유권을 증명하도록 구성된다. 하나 이상의 실시예에 따르면, 더미 블롭 내의 크리덴셜 소유권의 증명은 실제 크리덴셜에 해시(hash) 보안 기능을 적용함으로써, 그리고 해시된 크리덴셜을 더미 블롭 내에 포함시킴으로써 수행된다. 이것은 사용자 크리덴셜이 컨테이너(130)에서 실행될 수 있는 어떠한 비신뢰형 네트워크 리소스에 의해서도 위태롭게 되지 않음을 보장한다.
대안적으로, 가상 보안 서브시스템(210)이 호스트 오퍼레이팅 시스템(102)의 보안 서브시스템(120)에 사용자 크리덴셜에 대한 웹 프록시 요청을 포워딩하는 경우에, 보안 서브시스템(120)은 2개의 크리덴셜 블롭을 생성하도록 구성된다. 보안 서브시스템(120)에 의해 생성된 제 1 크리덴셜 블롭은 전술한 바와 같은 더미 크리덴셜 블롭이다. 보안 서브시스템(120)에 의해 생성된 제 2 크리덴셜 블롭은 웹 프록시에 의해 요청된 실제 사용자 크리덴셜을 포함한다. 이 시나리오에서, 더미 크리덴셜 블롭은 컨테이너(130)에서의 가상 보안 서브시스템(210)에 제공되고, 실제 사용자 크리덴셜을 포함한 블롭은 호스트 오퍼레이팅 시스템(102)에서의 네트워크 필터(116)에 제공된다. 전술한 바와 같이, 가상 웹 애플리케이션(206)은 가상 보안 서브시스템(210)으로부터 더미 크리덴셜 블롭을 수신하고 웹 프록시로의 HTTP 응답 내에 더미 크리덴셜 블롭을 임베딩하도록 구성된다. 호스트 오퍼레이팅 시스템(102) 및 컨테이너(130) 양자 모두로부터의 모든 네트워크 트래픽이 네트워크 필터(116)를 통해 필터링되기 때문에, 네트워크 필터(116)는 HTTP 응답을 웹 프록시에 송신하기 전에 컨테이너로부터의 HTTP 응답을 인터셉트하고 더미 블롭을 실제 사용자 크리덴셜 블롭으로 대체하도록 구성된다. 호스트 오퍼레이팅 시스템(102)이 네스트형(nested) 컴퓨팅 환경에서 기능하고 있는 하나 이상의 실시예에 따르면, 이 크리덴셜 블롭 대체는 네스트형 환경의 각 계층(layer)에서 여러 번 수행될 수 있다. 대안적으로, 하나 이상의 실시예에서, 네트워크 필터(116)는, 위에서 논의된 바와 같이, 네트워크 트래픽이 DNS 룩업 동안 질의되었던 네트워크 리소스에서 유래 및 종료되고 있음을 확인하기 위해 컨테이너(130) 내의 허용된 네트워크 리소스 식별자를 검지한다.
본 명세서에서 논의되는 바와 같은 정책 관리자(112), 네트워크 필터(116) 및 보안 서브시스템(110)을 사용하여, 호스트 오퍼레이팅 시스템(102)이 비신뢰형 네트워크 리소스를 액세스하려고 시도하고 있음을 HVSI 서브시스템(110)이 판정하는 경우, HVSI 서브시스템(110)은 비신뢰형 네트워크 리소스를 액세스하기 위한 하나 이상의 컨테이너(130)를 관리 및 모니터링하기 위해 컨테이너 관리자(118)와 통신한다.
컨테이너 관리자
컨테이너 관리자(118)는 비신뢰형 네트워크 리소스를 액세스하기 위해 호스트 오퍼레이팅 시스템(102)으로부터 격리된 하나 이상의 컨테이너(130)를 활성화하는 것을 담당한다. 본 명세서에서 논의되는 바와 같이, 컨테이너(130)와 같은 컨테이너를 활성화하는 것은 하나 이상의 새로운 컨테이너를 생성하는 것 또는 하나 이상의 일시 중단된 컨테이너의 실행을 재개하는 것을 포함한다. 컨테이너 관리자(118)는 호스트 오퍼레이팅 시스템(102)에 로그인된 개별 사용자를 위한 하나 이상의 컨테이너를 활성화하고 호스트 오퍼레이팅 시스템의 임의의 다른 사용자가 개별 사용자를 위한 활성화된 하나 이상의 컨테이너를 액세스하는 것이 제약됨을 보장하도록 추가적으로 구성된다. 컨테이너 관리자(118)는 호스트 오퍼레이팅 시스템(102)에 로그인된 사용자의, 컨테이너(130)로의 매핑(mapping)을 보장한다. 여러 컨테이너 및 호스트 오퍼레이팅 시스템(102)의 여러 사용자가 있는 몇몇 실시예에서, 컨테이너 관리자(118)는 로그온된 사용자의 아이덴티티를 보고 이를 하나 이상의 대응하는 컨테이너와 직접적으로 연관시키도록 구성된다. 이 제약은 다른 사용자가 컨테이너를 열람하거나 그렇지 않으면 컨테이너와 상호작용하는 것을 방지한다.
컨테이너 관리자(118)는 컨테이너(130) 내의 활동을 기술하는 로그 및 트레이스를 수집하도록 더 구성된다. 컨테이너 관리자(118)는 원격측정 및 보안 표시자를 위한 컨테이너 사용을 모니터링하는 데에 이들 로그 및 트레이스를 사용하도록 구성된다. 하나 이상의 실시예에 따르면, 컨테이너(130) 내의 모니터링된 활동과 연관된 임의의 보안 이슈를 해석하기 위해서, 컨테이너 관리자(118)는 호스트 오퍼레이팅 시스템(102) 상에 설치된 로컬 애플리케이션, 예를 들면 안티바이러스 애플리케이션과 상의한다. 컨테이너 관리자(118)는 이 모니터링된 정보를 집성하고 모니터링된 정보를 HVSI 서브시스템(110)에 제공하도록 구성된다. 대안적으로 또는 추가적으로, 컨테이너 관리자(118)는 이 모니터링된 정보를 도 1에 도시된 관리 및 모니터링 서비스(104)와 같은 하나 이상의 원격 소스에 제공하도록 구성된다.
호스트 오퍼레이팅 시스템(102)이 기동되는 경우, HVSI 서브시스템(110)은 정책이 존재하는지를 판정한다. 하나 이상의 실시예에서, HVSI 서브시스템(110)은, 본 명세서에서 논의되는 바와 같이, 정책 관리자(112)와 통신함으로써 정책이 존재하는지를 판정한다. 정책이 호스트 오퍼레이팅 시스템(102) 상에 존재한다고 HVSI 서브시스템(110)이 판정하는 경우에, 컨테이너 관리자(118)는 호스트 오퍼레이팅 시스템에 의해 요청된 임의의 비신뢰형 네트워크 리소스를 처리하기 위해 컨테이너(130)를 활성화하도록 구성된다. 컨테이너 관리자(118)는 컨테이너 기본 이미지가 존재하는지를 판정하기 위해 호스트 오퍼레이팅 시스템(102)과 통신함으로써 컨테이너(130)를 활성화하도록 구성된다. 컨테이너 관리자(118)가 컨테이너 기본 이미지가 존재하지 않는다고 판정하는 경우에, 컨테이너 관리자(118)는 컨테이너 기본 이미지를 생성하도록 구성된다. 컨테이너 관리자(118)가 컨테이너 기본 이미지가 존재한다고 판정하는 경우에, 또는 컨테이너 관리자(118)가 컨테이너 기본 이미지를 생성한 후에, 컨테이너 관리자(118)는 사용자가 호스트 오퍼레이팅 시스템(102)에 로그온하기를 기다린다.
컨테이너 기본 이미지는 그 자신의 오퍼레이팅 시스템을 포함하는 격리된 컨테이너, 예를 들면 컨테이너(130)를 생성하고 활성화하는 데에 요구되는 정보를 포함한다. 예를 들어, 하나 이상의 실시예에서 컨테이너 기본 이미지는 호스트 오퍼레이팅 시스템(102)이 컨테이너를 위한 레지스트리 설정을 어떻게 설정해야 하는지를 기술하는 정보를 포함한다. 컨테이너(130)의 내부에서 열린 몇몇 가상 애플리케이션은 호스트 오퍼레이팅 시스템(102) 상에서 열릴 애플리케이션의 버전과 상이하게 거동하기 때문에 레지스트리 설정에 관한 정보가 요구된다. 추가적으로 또는 대안적으로, 컨테이너 기본 이미지는 컨테이너(130)에서 실행되는 가상 애플리케이션 내에서 사용자 계정을 어떻게 생성하는지를 기술하는 정보를 포함한다. 추가적으로 또는 대안적으로, 컨테이너 기본 이미지는 활성인 경우에 컨테이너(130)에 의해 요구될 수 있는 메모리, 프로세서, 디스크 또는 네트워크와 같은 할당된 리소스의 양에 관한 정보를 포함한다.
사용자가 호스트 오퍼레이팅 시스템(102)에 로그온하는 경우, 컨테이너 관리자(118)는 컨테이너 기본 이미지에 대응하는 컨테이너가 존재하는지를 판정한다. 컨테이너 관리자(118)가 컨테이너 기본 이미지에 대해 컨테이너가 존재하지 않는다고 판정하는 경우에, 컨테이너 관리자(118)는 컨테이너(130)와 같은 컨테이너를 생성할 수 있다. 컨테이너 기본 이미지가 호스트 오퍼레이팅 시스템(102)을 정확하게 나타내는 것을 보장하기 위해, 컨테이너 관리자(118)는 오퍼레이팅 시스템 업데이트 이후에 임의의 기존 컨테이너 기본 이미지를 무효화하고(invalidate) 하나 이상의 새로운 컨테이너 기본 이미지를 생성하도록 구성된다. 이러한 방식으로, 컨테이너 관리자(118)는 컨테이너 기본 이미지가 임의의 업데이트된 호스트 오퍼레이팅 시스템 바이너리를 포함하는 것을 보장하고, 이로써 컨테이너 기본 이미지로부터 생성된 컨테이너를 호스트 오퍼레이팅 시스템(102)에 대해 최신으로 유지한다. 호스트 오퍼레이팅 시스템(102) 업데이트의 경우, 컨테이너 관리자(118)는 임의의 열린 컨테이너를 강제로 닫도록, 아니면 컨테이너 기본 이미지를 삭제하고 새로운 컨테이너 기본 이미지를 생성하기 위해 컨테이너에서의 사용자 활동이 중지될 때까지 대기하도록 구성된다. 컨테이너를 생성한 후에, 컨테이너 관리자(118)는 컨테이너를 일시 중단 모드(suspended mode)로 둔다. 컨테이너가 일시 중단 모드에 있는 경우, 컨테이너는 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스의 리소스를 더 적게 소비하는바, 이로써 리소스 오버헤드를 감소시킨다. 컨테이너 관리자(118)는 호스트 오퍼레이팅 시스템(102)이 하나 이상의 비신뢰형 네트워크 리소스에 대한 액세스를 요청할 때까지 일시 중단 모드 내에 하나 이상의 격리된 컨테이너(130)를 유지하도록 구성된다.
HVSI 서브시스템(110)이 호스트 오퍼레이팅 시스템(102)이 하나 이상의 비신뢰형 네트워크 리소스에 대한 액세스를 요청하고 있음을 검출하는 경우, HVSI 서브시스템(110)은 하나 이상의 비신뢰형 네트워크 리소스를 처리하기 위해서 하나 이상의 일시 중단된 컨테이너를 활성화하도록 컨테이너 관리자(118)에 명령한다. 하나 이상의 실시예에서, 그 하나 이상의 컨테이너는 호스트 오퍼레이팅 시스템(102)을 구현하고 있는 컴퓨팅 디바이스 상에 호스팅된다. 대안적으로, 하나 이상의 컨테이너 중 적어도 하나는 호스트 오퍼레이팅 시스템(102)을 구현하는 컴퓨팅 디바이스로부터 원격인 컴퓨팅 디바이스 상에 호스팅될 수 있다. 컨테이너가 상이한 컴퓨팅 디바이스 상에 호스팅되는 시나리오에서, 컨테이너 관리자(118)는 원격 컨테이너를 관리 및 모니터링하기 위해 상이한 컴퓨팅 디바이스와 통신하도록 구성된다. 컨테이너 관리자(118)는 그것이 컨테이너를 생성할 수 있는 것보다 더 빠르게, 일시 중단된 컨테이너를 활성화할 수 있기 때문에, 하나 이상의 일시 중단된 컨테이너를 유지하는 것은 호스트 오퍼레이팅 시스템(102)으로 하여금 비신뢰형 네트워크 리소스에 대한 요청에 신속하게 응답할 수 있도록 한다.
호스트 오퍼레이팅 시스템(102)이 하나 이상의 비신뢰형 네트워크 리소스에 대한 액세스를 요청하고 있음을 판정하는 것에 응답하여, 컨테이너 관리자(118)는 비신뢰형 네트워크 리소스를 요청하고 있는 호스트 오퍼레이팅 시스템 상의 애플리케이션을 식별하도록 구성된다. 컨테이너 관리자(118)는 비신뢰형 네트워크 리소스를 처리하기 위해 컨테이너(130) 내의 애플리케이션의 가상 버전을 개시하도록 구성된다. 컨테이너 관리자(118)가 컨테이너(130) 내의 애플리케이션의 가상 버전을 활성화한 후, HVSI 서브시스템(110)은 호스트 오퍼레이팅 시스템(102)을 구현하는 디바이스의 디스플레이에 가상 애플리케이션의 인터페이스를 디스플레이하기 위해 컨테이너(130) 내로 원격으로 구성된다.
컨테이너 관리자(118)는, 컨테이너가 원격 컴퓨팅 디바이스에 의해 호스팅되는 경우에, 적절한 하드웨어 가상화 기술이 호스트 오퍼레이팅 시스템(102) 상에, 그리고 컨테이너(130) 내에 존재하는 것을 보장하기 위해 HVSI 서브시스템(110)과 통신하도록 구성된다. 컨테이너 관리자(118)가 적절하게 기능하기 위해, 컨테이너 관리자(118)는 호스트 오퍼레이팅 시스템(102)의 애플리케이션 프로그래밍 인터페이스(Application Programming Interface: API)가 격리된 컨테이너 라이프사이클 및 연관된 네트워크 스택을 관리하기 위해 이용가능함을 확인하도록 구성된다.
컨테이너 관리자(118)는 로깅 시스템(214)을 사용하여 컨테이너(130) 내의 활동을 모니터링하도록 구성된다. 이러한 방식으로, 컨테이너 관리자(118)는 컨테이너(130) 내에서 액세스되는 네트워크 또는 네트워크 리소스의 임의의 의심스러운 거동, 컨테이너(130)가 너무 많은 디스크 공간을 차지하고 있는지 등등을 검출하도록 구성된다. 로깅 시스템(214)으로부터 획득된 정보에 기반하여, 컨테이너 관리자(118)는 하나 이상의 컨테이너(130)를 어떻게 관리하는지를 HVSI 서브시스템(110)에 통지할 수 있다. 예를 들어, 하나 이상의 실시예에서 컨테이너 관리자(118)는 컨테이너(130) 내의 하나 이상의 비신뢰형 네트워크 리소스에 대한 액세스가 완료되었고 이 정보를 HVSI 서브시스템(110)에 통신한다는 것을 인지한다. 이 정보를 수신하는 것에 응답하여, HVSI 서브시스템(110)은 그것이 차후에 추가적인 비신뢰형 네트워크 리소스를 처리할 필요가 있을 때까지 컨테이너(130)를 일시 중단 모드로 둔다.
컨테이너 관리자(118)는 또한 호스트 오퍼레이팅 시스템(102)의 사용자가 언제 로그오프하는지를 모니터링하고 판정하도록 구성된다. 호스트 오퍼레이팅 시스템(102)의 사용자가 로그오프했다고 판정하는 것에 응답하여, 컨테이너 관리자(118)는 이 정보를 HVSI 서브시스템(110)에 제공한다. HVSI 서브시스템(110)은 사용자가 로그오프하는 것에 응답하여 하나 이상의 컨테이너(130)를 삭제하도록 구성된다. 본 명세서에서 논의되는 바와 같이, 컨테이너를 삭제하는 것은 또한 컨테이너 내에 포함된 임의의 정보를 클리어한다(clear).
컨테이너 관리자(118)는 또한 하나 이상의 격리된 컨테이너 내의 웹 브라우징 성능 또는 다른 네트워크 활동을 개선하기 위해 호스트 오퍼레이팅 시스템(102)으로부터 DNS 및 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol: HTTP) 정보를 공유하도록 구성된다. 하나 이상의 실시예에서, 컨테이너 관리자(118)는, 컨테이너에서의 향후의 요청이 비신뢰형 웹 사이트를 액세스하여 이전의 사용자 선호, 구성 또는 설정 중 하나 이상을 기억하는 것을 가능하게 하는 인터넷 데이터 파일 또는 웹 사이트 쿠키와 같은 HTTP 데이터뿐만 아니라, 컨테이너(130)가 네트워크 리소스를 액세스한 이전의 인스턴스로부터 행해진 DNS 질의의 캐시를 유지한다.
컨테이너 관리자(118)로부터 컨테이너(130) 내의 모니터링된 활동에 관한 정보를 수신하는 것에 더하여, HVSI 서브시스템(110)은 또한 하나 이상의 HVSI 라이브러리(208)로부터 컨테이너 활동에 관한 정보를 수신하도록 구성된다.
HVSI 라이브러리
본 명세서에 논의되는 바와 같이, HVSI 라이브러리는 애플리케이션 내에서 정적으로든 또는 동적으로든 링크되도록 구성된 작고 경량인 비동기(asynchronous) 라이브러리이다. 예를 들어, 도 2의 도시된 시스템 아키텍처(200)에서, 애플리케이션(202)은 HVSI 라이브러리(204)를 포함하고 가상 애플리케이션(206)은 가상 HVSI 라이브러리(208)를 포함한다. 각각의 HVSI 라이브러리는 그 각각의 애플리케이션의 내부에서 실행되도록 구성되며, 애플리케이션으로부터 HVSI 서브시스템(110)으로의 네트워크 리소스 호출을 인터셉트하고 포워딩하는 것을 담당한다.
호스트 오퍼레이팅 시스템(102)의 사용자가 애플리케이션(202)을 통해 네트워크 리소스를 열려고 시도하는 경우, HVSI 라이브러리(204)는 요청된 네트워크 리소스에 관한 정보를 HVSI 서브시스템(110)에 통신한다. HVSI 서브시스템(110)은 이 정보를 정책 관리자(112)로부터 획득된 하나 이상의 정책과 비교하여, 요청된 네트워크 리소스가 신뢰형 네트워크 리소스인지를 판정한다. HVSI 서브시스템(110)이 요청된 네트워크 리소스가 신뢰형 네트워크 리소스라고 판정하는 경우에, HVSI 서브시스템(110)은 애플리케이션(202)이 요청된 네트워크 리소스를 액세스하는 것을 허용한다. 대안적으로, HVSI 서브시스템(110)이 요청된 네트워크 리소스가 신뢰형 네트워크 리소스가 아니라고 판정하는 경우에, HVSI 서브시스템(110)은 비신뢰형 네트워크 리소스를 컨테이너(130) 내의 가상 애플리케이션(206)에 포워딩한다.
컨테이너(130) 내의 가상 HVSI 라이브러리(208)는 가상 애플리케이션(206)으로부터의 네트워크 리소스 요청을 인터셉트하고, 요청된 네트워크 리소스에 관한 정보를 HVSI 서브시스템(110)에 통신하도록 구성된다. HVSI 서브시스템(110)은 어떠한 신뢰형 네트워크 리소스도 컨테이너(130)에 제공되지 않음을 보장하기 위해 호스트 오퍼레이팅 시스템(102)을 위한 임의의 정책과 이 정보를 비교하도록 유사하게 구성된다. 하나 이상의 실시예에서, 가상 애플리케이션은 호환성을 보장하기 위해 가상 HVSI 라이브러리(208)에 링크하지 않을 것이다. 이러한 실시예에서, 로깅 시스템(214) 및 네트워크 필터(116)는 가상 애플리케이션으로부터의 네트워크 리소스 요청을 인터셉트하고, 요청된 네트워크 리소스에 관한 정보를 HVSI 서브시스템(110)에 통신하도록 동작한다.
비신뢰형 네트워크 리소스와 연관된 공격 또는 감염으로부터 컴퓨팅 디바이스를 보호하기 위해 하드웨어 기반의 가상화된 보안 격리를 구현하는 시스템을 위한 시스템 아키텍처를 고려한바, 이제 하나 이상의 실시예에 따른 예시적인 절차를 고려한다.
예시적인 절차
도 3은 하나 이상의 실시예에 따라 하드웨어 기반의 보안 격리를 구현하기 위한 예시적인 프로세스(300)를 도시하는 흐름도이다. 프로세스(300)는 도 1의 시스템(100)과 같은 시스템에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(300)는 작동의 세트(a set of acts)로서 보여지며, 다양한 작동의 동작을 수행하기 위해 보여진 순서에 한정되지 않는다. 프로세스(300)는 하드웨어 기반의 가상화된 보안 격리를 구현하는 예시적인 프로세스이며, 하드웨어 기반의 가상화된 보안 격리를 구현하는 것에 대한 추가적인 논의는 상이한 도면을 참조하여 본 명세서에 포함된다.
프로세스(300)에서, 네트워크 리소스에 대한 시도된 액세스가 검출된다(작동(302)). 사용자, 운영관리자, 프로그램, 애플리케이션, 또는 시스템의 다른 개체가 시스템으로부터 원격으로 위치된 하나 이상의 위치로부터 하나 이상의 네트워크 리소스를 요청하는 경우, 시도된 액세스가 검출된다. 예를 들어, 시스템의 사용자가 웹 애플리케이션을 사용하여 웹페이지에 대해 내비게이트하려고 시도하는 경우 네트워크 리소스에 대한 시도된 액세스가 검출된다.
네트워크 리소스에 대한 시도된 액세스를 검출하는 것에 응답하여, 이어서 프로세스(300)는 네트워크 리소스가 신뢰되는지를 판정한다(작동(304)). 네트워크 리소스가 신뢰되는지의 판정은 네트워크 리소스를 호스트 오퍼레이팅 시스템 상에 저장되거나 아니면 호스트 오퍼레이팅 시스템에 의해 원격으로 액세스되는 정책과 비교함으로써 수행된다. 예를 들어, 하나 이상의 실시예에서 호스트 오퍼레이팅 시스템은 정책을, 예를 들면 도 1의 정책 관리자(112) 내에, 국부적으로 저장하는데, 이는 신뢰형 네트워크 리소스의 리스트를 열거한다. 대안적으로 또는 추가적으로, 정책은 호스트 오퍼레이팅 시스템으로부터 원격인 관리 및 모니터링 서비스로부터, 예를 들면 도 1의 관리 및 모니터링 서비스(104)로부터 수신된다. 추가적으로 또는 대안적으로, 호스트 오퍼레이팅 시스템은 호스트 오퍼레이팅 시스템 및 연관된 컨테이너에서의 네트워크 리소스 활동과 관련된 모니터링된 활동에 기반하여 로컬 정책을 업데이트한다. 본 명세서에서 논의되는 바와 같이, 정책은 신뢰형 네트워크 리소스의 현재 리스트를 유지하도록 연속적으로 업데이트될 수 있다.
네트워크 리소스가 신뢰형 네트워크 리소스라고 판정하는 것에 응답하여, 프로세스(300)는 네트워크 리소스가 호스트 오퍼레이팅 시스템 상의 애플리케이션에 의해 액세스되는 것을 허용한다(작동(312)). 예를 들어, 프로세스(300)가 도 1의 시스템(100)에 의해 수행되고, 네트워크 리소스가 신뢰형 네트워크 리소스인 것으로 판정되는 경우에, 프로세스(300)는 호스트 오퍼레이팅 시스템(102) 상의 애플리케이션(114) 중 하나가 신뢰형 네트워크 리소스를 액세스하는 것을 허용할 것이다.
네트워크 리소스가 신뢰형 네트워크 리소스가 아니라고 판정하는 것에 응답하여, 프로세스(300)는 하드웨어 기반의 가상화된 보안 격리가 호스트 오퍼레이팅 시스템 상에서 가능화된(enabled) 것인지를 판정한다(작동 306). 프로세스가 하드웨어 기반의 가상화된 보안 격리가 가능화되지 않음을 판정하는 경우에, 프로세스는 호스트 오퍼레이팅 시스템 상의 애플리케이션이 비신뢰형 네트워크 리소스를 액세스하는 것을 허용한다(작동(312)). 따라서, 본 명세서에서 논의되는 바와 같이 하드웨어 기반의 가상화된 보안 격리를 가능화하지 않은 호스트 오퍼레이팅 시스템은 비신뢰형 네트워크 리소스가 호스트 오퍼레이팅 시스템 상의 애플리케이션에 의해 액세스되는 것을 허용하는데, 이로써 호스트 오퍼레이팅 시스템을 구현하는 디바이스를 비신뢰형 네트워크 리소스로부터의 악의적인 공격 또는 감염에 노출시킨다.
대안적으로, 프로세스(300)가 하드웨어 기반의 가상화된 보안 격리가 가능화됨을 판정하는 경우에, 이어서 프로세스는 컨테이너를 활성화한다(작동(308)). 본 명세서에서 논의되는 바와 같이, 컨테이너를 활성화하는 것은 하나 이상의 실시예에 따라 컨테이너를 생성하는 것을 포함한다. 대안적으로 또는 추가적으로, 컨테이너를 활성화하는 것은 일시 중단된 컨테이너를 식별하는 것과, 일시 중단된 컨테이너의 처리를 재개하는 것을 포함한다. 본 명세서에서 논의되는 바와 같이, 컨테이너는 호스트 오퍼레이팅 시스템(102)과 같은 호스트 오퍼레이팅 시스템과는 별개인 격리된 런타임(runtime) 환경을 나타낸다. 컨테이너는 호스트 오퍼레이팅 시스템의 커널과는 별개인 그 자체의 커널을 포함하고, 따라서 호스트 오퍼레이팅 시스템에 지향될 수 있는 비신뢰형 네트워크 리소스와 연관된 커널 레벨 공격으로부터 보호한다. 따라서, 컨테이너가 위태롭게 되더라도, 호스트 오퍼레이팅 시스템은 격리되고 비신뢰형 네트워크 리소스와 연관된 임의의 감염 또는 공격으로부터 보호된다.
컨테이너를 활성화하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 컨테이너가 네트워크 리소스를 액세스하는 것을 허용한다(작동(310)). 호스트 오퍼레이팅 시스템은 네트워크 리소스 및 임의의 하나 이상의 추가적인 네트워크 리소스(어떠한 신뢰형 네트워크 리소스도 컨테이너에 의해 액세스되지 않음을 보장하기 위해 컨테이너에 의해 호출됨)와 연관된 컨테이너에서의 활동을 계속해서 모니터링한다. 유사하게, 시스템은 어떠한 비신뢰형 네트워크 리소스도 호스트 오퍼레이팅 시스템에 의해 액세스되지 않음을 보장한다.
비신뢰형 네트워크 리소스와 연관된 공격 또는 감염으로부터 호스트 오퍼레이팅 시스템을 구현하는 디바이스를 보호하기 위해 호스트 오퍼레이팅 시스템에서 하드웨어 기반의 가상화된 보안 격리를 구현하기 위한 예시적인 절차를 고려한바, 이제 하드웨어 기반의 가상화된 보안 격리를 위해 컨테이너를 활성화하는 데 활용될 수 있는 예시적인 절차를 고려한다.
도 4는 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 위해 컨테이너를 활성화하기 위한 예시적인 프로세스(400)를 도시하는 흐름도이다.
프로세스(400)는 도 1의 호스트 오퍼레이팅 시스템(102)과 같은 호스트 오퍼레이팅 시스템에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(400)는 작동의 세트로서 보여지며, 다양한 작동의 동작을 수행하기 위해 보여진 순서에 한정되지 않는다. 프로세스(400)는 하드웨어 기반의 가상화된 보안 격리를 위해 컨테이너를 활성화하는 예시적인 프로세스이며, 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 활성화하는 것에 대한 추가적인 논의는 상이한 도면을 참조하여 본 명세서에 포함된다.
프로세스(400)에서, 호스트 오퍼레이팅 시스템이 기동된다(작동 402). 호스트 오퍼레이팅 시스템이 기동된 후, 이어서 호스트 오퍼레이팅 시스템은 컨테이너 기본 이미지가 존재하는지를 판정한다(작동(404)).
호스트 오퍼레이팅 시스템이 컨테이너 기본 이미지가 존재하지 않는다고 판정하는 경우에, 이어서 호스트 오퍼레이팅 시스템은 컨테이너 기본 이미지를 생성한다(작동(406)). 호스트 오퍼레이팅 시스템이 컨테이너 기본 이미지가 존재한다고 판정하는 경우에, 또는 컨테이너 기본 이미지를 생성하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 사용자가 로그온할 때까지 대기한다(작동(408)). 사용자는 사용자이름, 패스워드 등등과 같이 사용자와 고유하게 연관된 하나 이상의 크리덴셜을 입력함으로써 호스트 오퍼레이팅 시스템에 로그온할 수 있다.
사용자가 로그온한 후, 호스트 오퍼레이팅 시스템은 로그온된 사용자에 대해 컨테이너가 존재하는지를 판정한다(작동(410)). 본 명세서에서 논의되는 바와 같이, 컨테이너는 개별 사용자에 대해 고유하며, 사용자가 호스트 오퍼레이팅 시스템과는 별개인 격리된 런타임 환경에서 비신뢰형 네트워크 리소스와 상호작용하는 것을 허용한다.
로그온된 사용자에 대해 어떠한 컨테이너도 존재하지 않는다고 호스트 오퍼레이팅 시스템이 판정하는 경우에, 이어서 호스트 오퍼레이팅 시스템은 로그온된 사용자를 위한 컨테이너를 생성한다(작동(412)). 호스트 오퍼레이팅 시스템은 본 명세서에 기술된 기법 중 임의의 하나 이상에 따라 로그온된 사용자를 위한 컨테이너를 생성하도록 구성된다.
로그온된 사용자에 대해 컨테이너가 존재한다고 호스트 오퍼레이팅 시스템이 판정하는 경우에, 또는 호스트 오퍼레이팅 시스템이 로그온된 사용자를 위한 컨테이너를 생성한 후에, 이어서 호스트 오퍼레이팅 시스템은 로그온된 사용자를 위한 컨테이너를 활성화한다(작동(414)). 이러한 방식으로, 호스트 오퍼레이팅 시스템은 호스트 오퍼레이팅 시스템에 의해 요청되는 임의의 비신뢰형 네트워크 리소스를 처리하도록 마련된 호스트 오퍼레이팅 시스템에 사용자가 로그온하는 경우 컨테이너를 활성화한다.
비신뢰형 네트워크 리소스로부터 호스트 오퍼레이팅 시스템을 보호하기 위해 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 활성화하기 위한 예시적인 절차를 고려한바, 이제 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 관리하는 예시적인 절차를 고려한다.
도 5는 하나 이상의 실시예에 따라 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 관리하기 위한 예시적인 프로세스(500)를 도시하는 흐름도이다.
프로세스(500)는 도 1의 호스트 오퍼레이팅 시스템(102)과 같은 호스트 오퍼레이팅 시스템에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(500)는 작동의 세트로서 보여지며, 다양한 작동의 동작을 수행하기 위해 보여진 순서에 한정되지 않는다. 프로세스(500)는 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 관리하는 프로세스의 예이며, 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 관리하는 것에 대한 추가적인 논의는 상이한 도면을 참조하여 본 명세서에 포함된다.
프로세스(500)에서, 사용자가 호스트 오퍼레이팅 시스템에 로그온하고 로그온된 사용자에 대해 컨테이너가 활성화된 후, 호스트 오퍼레이팅 시스템은 컨테이너를 일시 중단한다(작동(502)). 컨테이너를 일시 중단함으로써, 호스트 오퍼레이팅 시스템은 활성 컨테이너를 유지하는 데 요구되는, 호스트 오퍼레이팅 시스템을 구현하는 디바이스를 위한 시스템 리소스의 양을 감소시킨다. 일시 중단된 컨테이너를 재개하는 것은 컨테이너를 생성하는 것보다 신속하게 수행될 수 있기 때문에, 프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템은 비신뢰형 네트워크 리소스를 액세스하기 위한 요청에 빠르게 응답하도록 구성된다.
프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템은 그것이 비신뢰형 네트워크 리소스에 대한 시도된 액세스를 검출할 때까지 네트워크 리소스에 대한 요청을 계속 모니터링한다(작동(504)). 비신뢰형 네트워크 리소스에 대한 시도된 액세스를 검출하는 것은, 본 명세서에서 논의되는 바와 같이, 요청된 네트워크 리소스를 기술하는 정보를 프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템을 위한 정책과 비교함으로써 수행된다. 예를 들어, 하나 이상의 실시예에서, 프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템의 사용자는 신뢰형 웹 사이트로서 정책에 의해 정의되지 않은 웹 사이트를 액세스하려고 시도한다.
비신뢰형 네트워크 리소스에 대한 액세스를 검출하는 것에 응답하여, 프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템은 일시 중단된 컨테이너를 활성화한다(작동(506)). 일단 일시 중단된 컨테이너가 활성화되면, 호스트 오퍼레이팅 시스템은 컨테이너에서 실행되는 애플리케이션의 가상 인스턴스가 비신뢰형 네트워크 리소스를 액세스하는 것을 허용한다. 호스트 오퍼레이팅 시스템은 가상 머신 버스를 통해 컨테이너와 통신하여 애플리케이션의 가상 인스턴스를 설치 및 활성화하고 애플리케이션의 가상 인스턴스의 인터페이스의 디스플레이를 야기하도록 구성될 수 있다. 이러한 방식으로, 하나 이상의 비신뢰형 네트워크 리소스가 호스트 오퍼레이팅 시스템으로부터 격리된 포함된 런타임 환경 내에서 동작되면서 컨테이너는 프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템의 사용자가 하나 이상의 비신뢰형 네트워크 리소스와 인터페이스하는 것을 허용한다.
프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템은 트리거 이벤트가 검출될 때까지(작동(508)), 또는 호스트 오퍼레이팅 시스템이 임의의 하나 이상의 비신뢰형 네트워크 리소스에 대한 액세스가 종료되었다고 판정할 때까지(작동(510)), 컨테이너를 활성 상태로 유지하도록 구성된다. 예를 들어, 프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템이 웹 애플리케이션에서 열린 하나 이상의 웹 사이트를 비신뢰형 네트워크 리소스로서 식별하는 경우에, 시스템은 사용자가 웹 애플리케이션을 닫는 것에 응답하여 하나 이상의 비신뢰형 네트워크 리소스에 대한 액세스가 종료되었음을 식별할 수 있다. 호스트 오퍼레이팅 시스템이 하나 이상의 비신뢰형 네트워크 리소스에 대한 액세스가 종료되었다고 판정하는 경우에, 호스트 오퍼레이팅 시스템은 컨테이너를 일시 중단한다(작동(502)). 컨테이너가 어떤 비신뢰형 네트워크 리소스도 액세스하고 있지 않는 경우 컨테이너를 일시 중단함으로써, 호스트 오퍼레이팅 시스템은 활성 컨테이너를 유지하는 데 요구되는 시스템 리소스의 양을 감소시킨다. 유사하게, 컨테이너를 삭제하는 것보다는 컨테이너를 일시 중단함으로써, 호스트 오퍼레이팅 시스템은 하나 이상의 추가적인 비신뢰형 네트워크 리소스에 대한 시도된 액세스를 검출할 때 일시 중단된 컨테이너를 용이하게 활성화할 수 있다.
트리거 이벤트를 검출하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 컨테이너를 삭제하도록 구성된다(작동(512)). 본 명세서에서 논의되는 바와 같이, 트리거 이벤트는 프로세스(500)를 구현하는 호스트 오퍼레이팅 시스템의 사용자가 로그오프한 것을 검출하는 것을 지칭할 수 있다. 추가적으로 또는 대안적으로, 컨테이너에서 이례적인 거동이 검출되는 경우 트리거 이벤트가 검출된다.
비신뢰형 네트워크 리소스와 연관된 공격 및 감염으로부터 호스트 오퍼레이팅 시스템을 구현하는 디바이스를 보호하기 위해 하드웨어 기반의 가상화된 보안 격리를 위한 컨테이너를 관리하는 예시적인 절차를 고려한바, 이제 호스트 오퍼레이팅 시스템 상에서 하드웨어 기반의 가상화된 보안 격리를 구현하는 데 활용될 수 있는 예시적인 절차를 고려한다.
도 6은 하나 이상의 실시예에 따라 호스트 오퍼레이팅 시스템 상에서 하드웨어 기반의 가상화된 보안 격리를 구현하기 위한 프로세스(600)를 도시하는 흐름도이다.
프로세스(600)는 도 1의 호스트 오퍼레이팅 시스템(102)과 같은 호스트 오퍼레이팅 시스템에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(600)는 작동의 세트로서 보여지며, 다양한 작동의 동작을 수행하기 위해 보여진 순서에 한정되지 않는다. 프로세스(600)는 하드웨어 기반의 가상화된 보안 격리를 위한 하나 이상의 컨테이너를 사용하는 프로세스의 예이며, 하드웨어 기반의 가상화된 보안 격리를 위한 하나 이상의 컨테이너를 사용하는 것에 대한 추가적인 논의는 상이한 도면을 참조하여 본 명세서에 포함된다.
프로세스(600)에서, 호스트 오퍼레이팅 시스템은 애플리케이션을 실행한다(작동(602)). 애플리케이션은 웹 애플리케이션, 워드 프로세싱 애플리케이션, 이메일 애플리케이션 등등과 같은 임의의 유형의 애플리케이션일 수 있다.
호스트 오퍼레이팅 시스템은 애플리케이션이 네트워크 리소스를 액세스하려고 시도하고 있음을 검출한다(작동(604)). 호스트 오퍼레이팅 시스템은, 본 명세서에서 논의되는 바와 같이, 네트워크 필터를 사용하여 네트워크 통신을 모니터링함으로써 애플리케이션이 네트워크 리소스에 대한 액세스를 요청하고 있음을 검출하도록 구성된다.
호스트 오퍼레이팅 시스템에서 실행되는 애플리케이션이 네트워크 리소스에 대한 액세스를 요청하고 있음을 검출하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 네트워크 리소스가 비신뢰형 네트워크 리소스라고 판정한다(작동(606)). 호스트 오퍼레이팅 시스템은, 본 명세서에서 논의되는 바와 같이, 네트워크 리소스를 호스트 오퍼레이팅 시스템을 위한 하나 이상의 정책과 비교함으로써 네트워크 리소스가 신뢰되지 않는다고 판정하도록 구성된다.
네트워크 리소스가 비신뢰형 네트워크 리소스라고 판정하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 호스트 오퍼레이팅 시스템으로부터 격리된 컨테이너를 활성화하도록 구성된다(작동(608)). 본 명세서에서 논의되는 바와 같이, 호스트 오퍼레이팅 시스템으로부터 격리된 컨테이너는 호스트 오퍼레이팅 시스템의 커널로부터 분리되고 격리된 그 자체의 커널을 포함하는바, 이로써 호스트 오퍼레이팅 시스템을 커널 공격으로부터 보호한다.
호스트 오퍼레이팅 시스템이 격리된 컨테이너를 활성화한 후, 호스트 오퍼레이팅 시스템은 격리된 컨테이너 내의 비신뢰형 네트워크 리소스를 요청했던 애플리케이션의 가상 버전을 개시한다(작동(610)). 격리된 컨테이너 내에서 개시된 애플리케이션의 가상 버전은 호스트 오퍼레이팅 시스템 상에서 실행되는 애플리케이션이 요청된 네트워크 리소스를 어떻게 처리하는지와 유사한 방식으로 그 요청된 네트워크 리소스를 처리하도록 구성된다.
격리된 컨테이너에서 애플리케이션의 가상 버전을 개시하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 비신뢰형 네트워크 리소스를 격리된 컨테이너에 전달하고, 격리된 컨테이너에서 실행되는 애플리케이션의 버전이 비신뢰형 네트워크 리소스를 액세스하는 것을 허용한다(작동(612)). 격리된 컨테이너에서 애플리케이션의 버전을 개시하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 또한 격리된 컨테이너 내에서 동작하는 애플리케이션 버전을 위한 인터페이스를 호스트 오퍼레이팅 시스템을 구현하는 디바이스의 디스플레이에 디스플레이하도록 구성된다(작동(614)). 따라서, 호스트 오퍼레이팅 시스템은 격리된 컨테이너에 의해 액세스되는 하나 이상의 비신뢰형 네트워크 리소스에 호스트 오퍼레이팅 시스템을 노출시키지 않고서 사용자로 하여금 격리된 컨테이너 내에서 개시된 애플리케이션의 가상 버전과 인터페이스할 수 있게 한다.
격리된 컨테이너 내의 애플리케이션의 가상 버전이 실행되고 있는 동안, 호스트 오퍼레이팅 시스템은 격리된 컨테이너에서의 애플리케이션의 가상 버전이 하나 이상의 추가적인 비신뢰형 네트워크 리소스를 액세스하는 것을 허용하도록 구성된다(작동(618)). 호스트 오퍼레이팅 시스템은 격리된 컨테이너와 하나 이상의 네트워크 리소스 위치 간의 네트워크 통신을 모니터링함으로써 비신뢰형 네트워크 리소스를 격리된 컨테이너 내에서 실행되는 애플리케이션의 버전이 액세스하는 것을 허용하도록 구성된다.
유사하게, 격리된 컨테이너 내의 애플리케이션의 가상 버전이 실행되고 있는 동안, 호스트 오퍼레이팅 시스템은 격리된 컨테이너 내의 애플리케이션의 가상 버전이 하나 이상의 신뢰형 네트워크 리소스를 액세스하는 것을 방지하도록 구성된다(작동(620)). 이러한 방식으로, 호스트 오퍼레이팅 시스템은 신뢰형 네트워크 리소스만이 호스트 오퍼레이팅 시스템에 의해 액세스되는 것, 그리고 임의의 비신뢰형 네트워크 리소스는 하나 이상의 격리된 컨테이너에 의해서만 액세스되는 것을 보장하도록 구성된다.
격리된 컨테이너 내에서 실행하는 애플리케이션의 가상 버전이 하나 이상의 비신뢰형 네트워크 리소스를 더 이상 액세스하고 있지 않다고 판정하는 것에 응답하여, 또는 호스트 오퍼레이팅 시스템의 사용자가 로그오프했다고 판정하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 하나 이상의 격리된 컨테이너를 일시 중단하거나 삭제하도록 구성된다(동작(622)). 예를 들어, 컨테이너 내의 애플리케이션의 버전이 하나 이상의 비신뢰형 네트워크 리소스를 더 이상 액세스하고 있지 않다고 판정하는 것에 응답하여, 호스트 오퍼레이팅 시스템은 그것이 하나 이상의 추가적인 비신뢰형 네트워크 리소스를 처리할 필요가 있을 때까지 컨테이너를 일시 중단한다. 호스트 오퍼레이팅 시스템이 사용자가 로그오프한 것을 검출하는 경우에, 호스트 오퍼레이팅 시스템은 하나 이상의 컨테이너를, 활성이든 또는 일시 중단되었든, 삭제한다.
예시적인 시스템
특정한 기능성이 본 명세서에서 특정한 모듈을 참조하여 논의되지만, 본 명세서에서 논의되는 개별 모듈의 기능성은 여러 모듈로 분리될 수 있음, 그리고/또는 여러 모듈 중 적어도 일부의 기능성이 단일 모듈로 조합될 수 있음에 유의해야 한다. 추가적으로, 작동을 수행하는 것으로서 본 명세서에서 논의되는 특정 모듈은, 작동을 수행하는 그 특정 모듈 자체를 포함하거나, 또는 대안적으로, 작동을 수행하는 (또는 그 특정 모듈과 함께 작동을 수행하는) 다른 컴포넌트 또는 모듈을 호출하거나 그렇지 않으면 액세스하는 그 특정 모듈을 포함한다. 따라서, 작동을 수행하는 특정 모듈은 작동을 수행하는 그 특정 모듈 자체 및/또는 작동을 수행하는 그 특정 모듈에 의해 호출되거나 그렇지 않으면 액세스되는 다른 모듈을 포함한다.
도 7은 본 명세서에 기술된 다양한 기법을 구현할 수 있는 하나 이상의 시스템 및/또는 디바이스를 나타내는 예시적인 컴퓨팅 디바이스(702)를 포함하는 예시적인 시스템을 일반적으로 700에 도시한다. 컴퓨팅 디바이스(702)는, 예를 들어, 서비스 제공자의 서버, 클라이언트(예컨대, 클라이언트 디바이스)와 연관된 디바이스, 온-칩(on-chip) 시스템, 그리고/또는 임의의 다른 적합한 컴퓨팅 디바이스 또는 컴퓨팅 시스템일 수 있다.
도시된 바와 같은 예시적인 컴퓨팅 디바이스(702)는 처리 시스템(processing system)(704), 하나 이상의 컴퓨터 판독가능(computer-readable) 매체(706), 그리고 서로 통신가능하게 커플링된 하나 이상의 I/O 인터페이스(708)를 포함한다. 도시되지는 않았지만, 컴퓨팅 디바이스(702)는 다양한 컴포넌트를 서로 커플링하는 시스템 버스 또는 다른 데이터 및 커맨드 전송 시스템을 더 포함할 수 있다. 시스템 버스는 메모리 버스(memory bus) 또는 메모리 제어기(memory controller), 주변장치 버스(peripheral bus), 범용 직렬 버스(universal serial bus), 그리고/또는 다양한 버스 아키텍처 중 임의의 것을 활용하는 프로세서 또는 로컬 버스와 같은 상이한 버스 구조 중 임의의 하나 또는 조합을 포함할 수 있다. 제어 및 데이터 라인과 같은 다양한 다른 예들이 또한 고려된다.
처리 시스템(704)은 하드웨어를 사용하여 하나 이상의 동작을 수행하는 기능성을 나타낸다. 따라서, 처리 시스템(704)은 프로세서, 기능 블록 및 기타 등등으로서 구성될 수 있는 하드웨어 요소(710)를 포함하는 것으로 도시된다. 이것은 하나 이상의 반도체를 사용하여 형성되는 애플리케이션 특정 집적 회로(application specific integrated circuit) 또는 다른 로직 디바이스로서의 하드웨어로의 구현을 포함할 수 있다. 하드웨어 요소(710)는 이들이 형성되는 재료 또는 그 내부에서 채용된 처리 메커니즘에 의해 한정되지 않는다. 예를 들어, 프로세서는 반도체(들) 및/또는 트랜지스터(예컨대, 전자 집적 회로(Integrated Circuit: IC))로 구성될 수 있다. 이러한 맥락에서, 프로세서-실행가능(processor-executable) 명령어는 전자적-실행가능(electronically-executable) 명령어일 수 있다.
컴퓨터 판독가능 매체(706)는 메모리/스토리지(storage)(712)를 포함하는 것으로 도시된다. 메모리/스토리지(712)는 하나 이상의 컴퓨터 판독가능 매체와 연관된 메모리/스토리지 용량을 나타낸다. 메모리/스토리지(712)는 휘발성 매체(예를 들면 랜덤 액세스 메모리(Random Access Memory: RAM)) 및/또는 비휘발성 매체(예를 들면 판독 전용 메모리(Read- Only Memory: ROM), 저항성 RAM(Resistive RAM: ReRAM), 플래시 메모리(Flash memory), 광학 디스크, 자기 디스크 및 기타 등등)를 포함할 수 있다. 메모리/스토리지(712)는 탈착가능(removable) 매체(예컨대, 플래시 메모리, 탈착가능 하드 드라이브, 광 디스크 및 기타 등등)뿐만 아니라 고정형 매체(예컨대, RAM, ROM, 고정형 하드 드라이브 및 기타 등등)를 포함할 수 있다. 컴퓨터 판독가능 매체(706)는 이하에서 더 기술되는 바와 같이 다양한 다른 방법으로 구성될 수 있다.
하나 이상의 입력/출력 인터페이스(들)(708)는, 사용자가 커맨드 및 정보를 컴퓨팅 디바이스(702)에 입력할 수 있도록 하고, 또한 다양한 입력/출력 디바이스를 사용하여 정보가 사용자 및/또는 다른 컴포넌트 또는 디바이스에 제시될 수 있도록 하는 기능성을 나타낸다. 입력 디바이스의 예는, 키보드, 커서 제어 디바이스(예컨대, 마우스), 마이크로폰(예컨대, 음성 입력), 스캐너, 터치 기능성(예컨대, 물리적 터치를 검출하도록 구성된 용량성 또는 다른 센서), (예컨대, 제스처로서 접촉을 수반하지 않는 움직임을 검출하기 위해 적외선 주파수와 같은 비가시적 또는 가시적 파장을 채용할 수 있는) 카메라, 센서(예컨대, 주변 광 센서 또는 모션 센서) 및 기타 등등을 포함한다. 출력 디바이스의 예는 디스플레이 디바이스(예컨대, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드, 촉각 응답형 디바이스(tactile-response device) 및 기타 등등을 포함한다. 따라서, 컴퓨팅 디바이스(702)는 사용자 상호작용을 지원하기 위해 이하에서 더 기술되는 바와 같은 다양한 방식으로 구성될 수 있다.
컴퓨팅 디바이스(702)는 또한 호스트 오퍼레이팅 시스템(714)을 포함한다. 호스트 오퍼레이팅 시스템(714)은, 앞서 논의된 바와 같이, 하드웨어 기반의 가상화된 보안 격리의 다양한 관리를 제공한다. 호스트 오퍼레이팅 시스템(714)은, 예를 들어 도 1의 호스트 오퍼레이팅 시스템(102)을 구현할 수 있다.
소프트웨어, 하드웨어 요소 또는 프로그램 모듈의 일반적인 맥락에서 다양한 기법이 본 명세서에 기술될 수 있다. 일반적으로, 그러한 모듈은 특정 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 요소, 컴포넌트, 데이터 구조 및 기타 등등을 포함한다. 본 명세서에서 사용되는 바와 같은 "모듈"(module), "기능성"(functionality) 및 "컴포넌트"(component)라는 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 본 명세서에 기술된 기법의 특징은 플랫폼-독립적이며, 이는 기법이 다양한 프로세서를 갖는 다양한 컴퓨팅 플랫폼 상에서 구현될 수 있음을 의미한다.
기술된 모듈 및 기법의 구현은 어떤 형태의 컴퓨터 판독가능 매체 상에 저장되거나 이를 거쳐 송신될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 디바이스(702)에 의해 액세스될 수 있는 다양한 매체를 포함할 수 있다. 한정이 아니고 예로서, 컴퓨터 판독가능 매체는 "컴퓨터 판독가능 저장 매체" 및 "컴퓨터 판독가능 신호 매체"를 포함할 수 있다.
"컴퓨터 판독가능 저장 매체"는 단순한 신호 송신, 반송파, 또는 신호 그 자체와는 대조적으로, 유형적인 스토리지 및/또는 정보의 영구적 저장을 가능하게 하는 디바이스 및/또는 매체를 지칭한다. 따라서, 컴퓨터 판독가능 저장 매체는 비-신호 보유(non-signal bearing) 매체를 지칭한다. 컴퓨터 판독가능 저장 매체는 하드웨어, 예를 들면 휘발성 및 비휘발성, 탈착가능 및 비탈착가능 매체, 그리고/또는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 로직 요소/회로, 또는 다른 데이터와 같은 정보의 저장에 적합한 방법 또는 기술로 구현된 저장 디바이스를 포함한다. 컴퓨터 판독가능 저장 매체의 예는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(Digital Versatile Disk: DVD) 또는 다른 광학 스토리지, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스, 또는 다른 저장 디바이스, 유형적 매체, 또는 원하는 정보를 저장하기에 적합하고 컴퓨터에 의해 액세스될 수 있는 제조 물품을 포함할 수 있으나 이에 한정되지 않는다.
"컴퓨터 판독가능 신호 매체"는, 예를 들면 네트워크를 통해, 컴퓨팅 디바이스(702)의 하드웨어에 명령어를 송신하도록 구성된 신호 보유 매체(signal-bearing medium)를 지칭한다. 신호 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 반송파, 데이터 신호, 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 체현할(embody) 수 있다. 신호 매체는 또한 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"(modulated data signal)는 그것의 특성 중 하나 이상이 신호 내에 정보를 인코딩하도록 하는 그러한 방식으로 설정되거나 변경된 신호를 의미한다. 한정이 아니고 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 연결과 같은 유선 매체, 그리고 음향(acoustic), RF, 적외선, 및 다른 무선 매체와 같은 무선 매체를 포함한다.
전술된 바와 같이, 하드웨어 요소(710) 및 컴퓨터 판독가능 매체(706)는 본 명세서에 기술된 기법 중 적어도 몇몇 양상을 구현하기 위해 몇몇 실시예에서 채용될 수 있는 하드웨어 형태로 구현되는 명령어, 모듈, 프로그램가능 디바이스 로직 및/또는 고정형 디바이스 로직을 나타낸다. 하드웨어 요소는 집적 회로 또는 온칩 시스템, 애플리케이션 특정 집적 회로(Application-Specific Integrated Circuit: ASIC), 필드 프로그램가능 게이트 어레이(Field-Programmable Gate Array: FPGA), 복합 프로그램가능 로직 디바이스(Complex Programmable Logic Device: CPLD), 그리고 실리콘 또는 다른 하드웨어 디바이스에서의 다른 구현의 컴포넌트를 포함할 수도 있다. 이러한 맥락에서, 하드웨어 요소는, 하드웨어 요소에 의해 체현된 명령어, 모듈 및/또는 로직뿐만 아니라 실행을 위한 명령어를 저장하기 위해 활용되는 하드웨어 디바이스, 예컨대 앞서 기술된 컴퓨터 판독가능 저장 매체에 의해 정의된 프로그램 작업을 수행하는 처리 디바이스로서 동작할 수 있다.
전술한 것들의 조합이 또한 본 명세서에 기술된 다양한 기법 및 모듈을 구현하는 데 채용될 수 있다. 따라서, 소프트웨어, 하드웨어, 또는 프로그램 모듈 및 다른 프로그램 모듈이 몇몇 형태의 컴퓨터 판독가능 저장 매체 상에서, 그리고/또는 하나 이상의 하드웨어 요소(710)에 의해 체현되는 하나 이상의 명령어 및/또는 로직으로서 구현될 수 있다. 컴퓨팅 디바이스(702)는 소프트웨어 및/또는 하드웨어 모듈에 대응하는 특정 명령어 및/또는 기능을 구현하도록 구성될 수 있다. 따라서, 컴퓨팅 디바이스(702)에 의해 소프트웨어로서 실행가능한 모듈로서의 모듈의 구현은, 예컨대 처리 시스템의 컴퓨터 판독가능 저장 매체 및/또는 하드웨어 요소(710)의 사용을 통해, 적어도 부분적으로 하드웨어로 달성될 수 있다. 명령어 및/또는 기능은 본 명세서에 기술된 기법, 모듈 및 예를 구현하기 위해 하나 이상의 제조 물품(예를 들어, 하나 이상의 컴퓨팅 디바이스(702) 및/또는 처리 시스템(704))에 의해 실행가능/동작가능할 수 있다.
도 7에 추가로 도시된 바와 같이, 예시적인 시스템(700)은 개인용 컴퓨터(Personal Computer: PC), 텔레비전 디바이스 및/또는 모바일 디바이스 상에서 애플리케이션을 실행하는 경우 끊김없는 사용자 경험을 위한 유비쿼터스(ubiquitous) 환경을 가능하게 한다. 애플리케이션을 활용하는 것, 비디오 게임을 하는 것, 비디오를 보는 것 등등을 행하는 동안 하나의 디바이스로부터 다음 디바이스로 전이하는 경우 공통의 사용자 경험을 위한 세 가지 환경 모두에서 서비스 및 애플리케이션은 실질적으로 유사하게 실행된다.
예시적인 시스템(700)에서, 다수의 디바이스가 중앙 컴퓨팅 디바이스를 통해 상호연결된다. 중앙 컴퓨팅 디바이스는 다수의 디바이스에 대해 국부적일 수 있거나 다수의 디바이스로부터 원격으로 위치될 수 있다. 하나 이상의 실시예에서, 중앙 컴퓨팅 디바이스는 네트워크, 인터넷 또는 다른 데이터 통신 링크를 통해 여러 디바이스에 연결된 하나 이상의 서버 컴퓨터의 클라우드일 수 있다.
하나 이상의 실시예에서, 이러한 상호연결 아키텍처는 다수의 디바이스의 사용자에게 공통적이고 끊김없는 경험을 제공하기 위해 다수의 디바이스에 걸쳐 기능성이 전달될 수 있게 한다. 다수의 디바이스 각각은 상이한 물리적 요구사항 및 능력을 가질 수 있으며, 중앙 컴퓨팅 디바이스는 플랫폼을 사용하여 디바이스에 맞춤화되고 모든 디바이스에 여전히 공통적인, 디바이스에 대한 경험의 전달을 가능하게 한다. 하나 이상의 실시예에서, 타겟 디바이스의 클래스가 생성되고, 경험은 디바이스의 포괄적인 클래스에 맞춤화된다. 디바이스의 클래스는 물리적 특징, 사용의 유형 또는 디바이스의 다른 공통 특성으로 정의될 수 있다.
다양한 구현에서, 컴퓨팅 디바이스(702)는, 예를 들면 컴퓨터(716), 모바일(718) 및 텔레비전(720) 사용을 위한, 다양한 상이한 구성을 가정할 수 있다. 이들 구성 각각은 일반적으로 상이한 구조 및 능력을 가질 수 있는 디바이스를 포함하고, 따라서 컴퓨팅 디바이스(702)는 상이한 디바이스 클래스 중 하나 이상에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 디바이스(702)는 개인용 컴퓨터, 데스크톱 컴퓨터, 멀티스크린(multi-screen) 컴퓨터, 랩톱 컴퓨터, 넷북 등등을 포함하는 디바이스의 컴퓨터(716) 클래스로서 구현될 수 있다.
컴퓨팅 디바이스(702)는 또한 모바일 전화, 휴대용 음악 플레이어, 휴대용 게이밍 디바이스, 태블릿 컴퓨터, 멀티스크린 컴퓨터 등등과 같은 모바일 디바이스를 포함하는 모바일(718) 클래스로서 구현될 수 있다. 컴퓨팅 디바이스(702)는 또한 평상시의 열람 환경에서 일반적으로 더 큰 스크린을 가지거나 이에 연결된 디바이스를 포함하는 디바이스의 텔레비전(720) 클래스로서 구현될 수 있다. 이러한 디바이스는 텔레비전, 셋톱 박스, 게이밍 콘솔 등등을 포함한다.
본 명세서에 기술된 기법은 컴퓨팅 디바이스(702)의 이들 다양한 구성에 의해 지원될 수 있으며 본 명세서에 기술된 기법의 특정 예에 한정되지 않는다. 이 기능성은 또한 아래에 기술되는 바와 같이, 예를 들면 플랫폼(724)을 통해 "클라우드"(722) 상에서, 분산 시스템의 사용을 통해 전체적으로 또는 부분적으로 구현될 수 있다.
클라우드(722)는 리소스(726)를 위한 플랫폼(724)을 포함하고/하거나 이를 나타낸다. 플랫폼(724)은 클라우드(722)의 소프트웨어 리소스 및 하드웨어(예컨대, 서버)의 기저의 기능성을 추상화한다. 리소스(726)는 컴퓨터 처리가 컴퓨팅 디바이스(702)로부터 원격인 서버 상에서 실행되는 동안 활용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수 있다. 리소스(726)는 또한 인터넷을 통하여 그리고/또는 셀룰러 또는 Wi-Fi 네트워크와 같은 가입자 네트워크를 통해 제공되는 서비스를 포함할 수 있다.
플랫폼(724)은 컴퓨팅 디바이스(702)를 다른 컴퓨팅 디바이스와 연결하기 위한 리소스 및 기능을 추상화할 수 있다. 플랫폼(724)은 또한 플랫폼(724)을 통해 구현되는 리소스(726)에 대한 직면한(encountered) 요구에 스케일의 대응하는 레벨을 제공하기 위해 리소스의 스케일링을 추상화하는 역할을 할 수 있다. 따라서, 상호연결된 디바이스 실시예에서, 본 명세서에 기술된 기능성의 구현은 시스템(700) 도처에 분산될 수 있다. 예를 들어, 기능성은 클라우드(722)의 기능성을 추상화하는 플랫폼(724)을 통해서뿐만 아니라 컴퓨팅 디바이스(702) 상에 부분적으로 구현될 수 있다. 클라우드(722)가 무수히 많은 구성으로 배열될 수 있음에 유의해야 한다. 예를 들어, 클라우드(722)는 단일 클라우드로서, 모두가 단일 클라우드로서 거동하는 클라우드(722)의 다수의 인스턴스로서, 또는 플랫폼(724)의 하나 이상의 인스턴스가 클라우드(722) 배후에 구현되고 클라우드 내에 플랫폼(724)의 하나 이상의 인스턴스가 구현된 것처럼 거동하면서, 구현될 수 있다.
본 명세서에서의 논의에서, 다양한 상이한 실시예가 기술된다. 본 명세서에 기술된 각각의 실시예는 그 자체로 또는 본 명세서에 기술된 하나 이상의 다른 실시예와 관련하여 사용될 수 있음이 인식되고 이해될 것이다. 본 명세서에서 논의되는 기법의 추가적인 양상은 이하의 실시예 중 하나 이상에 관련된다.
방법은: 호스트 오퍼레이팅 시스템에서 애플리케이션을 실행하는 것; 애플리케이션에 의한 네트워크 리소스에 대한 액세스를 검출하는 것; 네트워크 리소스가 신뢰형 네트워크 리소스인지 또는 비신뢰형 네트워크 리소스인지를 판정하는 것; 그리고 네트워크 리소스가 비신뢰형 네트워크 리소스라고 판정하는 것에 응답하여: 호스트 오퍼레이팅 시스템으로부터 격리되고 애플리케이션의 버전을 실행하도록 구성된 컨테이너를 호스트 오퍼레이팅 시스템에 의해 활성화하는 것; 그리고 컨테이너에서 실행되는 애플리케이션의 버전이 비신뢰형 네트워크 리소스를 액세스하는 것을 호스트 오퍼레이팅 시스템에 의해 허용하는 것을 포함한다.
대안적으로 또는 전술한 방법들 중 임의의 것에 추가하여, 이하의 것 중 임의의 하나 또는 조합이다: 방법은 컨테이너에서 실행되는 애플리케이션의 버전이 하나 이상의 추가적인 비신뢰형 네트워크 리소스를 액세스하는 것을 허용하는 것과, 컨테이너에서 실행되는 애플리케이션이 신뢰형 네트워크 리소스를 액세스하는 것을 방지하는 것을 더 포함함; 방법은 호스트 오퍼레이팅 시스템에 의한 파일 또는 애플리케이션에 대한 액세스를 검출하는 것과, 파일 또는 애플리케이션이 비신뢰형 네트워크 리소스라고 판정하는 것에 응답하여, 파일 또는 애플리케이션이 컨테이너 내에서 열리는 것을 허용하는 것을 더 포함함; 여기서 컨테이너는 호스트 오퍼레이팅 시스템의 인스턴스와, 호스트 오퍼레이팅 시스템의 커널로부터 분리되고 격리된 커널을 포함함; 방법은 신뢰형 네트워크 리소스의 적어도 한 열거형 리스트를 포함하는 적어도 하나의 정책을 수신하는 것을 더 포함하되, 네트워크 리소스가 신뢰형 네트워크 리소스인지 또는 비신뢰형 네트워크 리소스인지를 판정하는 것은 네트워크 리소스를 신뢰형 네트워크 리소스의 열거형 리스트와 비교하는 것을 포함하되, 신뢰형 네트워크 리소스의 열거형 리스트는 네트워크 리소스의 파일 유형, 네트워크 리소스와 연관된 네트워크 위치, 또는 네트워크 리소스를 액세스하려고 시도하고 있는 애플리케이션 유형 중 하나 이상에 기반하여 식별됨; 여기서, 컨테이너는 호스트 오퍼레이팅 시스템에 로그온된 사용자를 위해 활성화되고, 방법은 상이한 사용자가 호스트 오퍼레이팅 시스템에 로그온됨을 판정하는 것과, 호스트 오퍼레이팅 시스템 및 컨테이너로부터 격리된 상이한 컨테이너를 상이한 사용자를 위해 활성화하는 것을 더 포함함; 방법은 네트워크 리소스에 대한 액세스가 비신뢰형 네트워크 인터페이스를 통해 요청된다고 판정하는 것과, 네트워크 리소스에 대한 액세스가 비신뢰형 네트워크 인터페이스를 통해 요청된다고 판정하는 것에 응답하여: 호스트 오퍼레이팅 시스템에서의 애플리케이션을 위한 네트워크 통신을 가상 사설 네트워크(Virtual Private Network: VPN) 인터페이스로 제약하는 것과, 컨테이너에서 실행되는 애플리케이션의 버전이 비신뢰형 네트워크 인터페이스를 통해 네트워크 통신을 수행하는 것을 허용하는 것과, 컨테이너를 위한 네트워크 통신이 비신뢰형 네트워크 인터페이스로 격리됨을 컨테이너의 네트워크 스택에 나타내는 것을 더 포함함; 방법은 사용자 크리덴셜을 위한 웹 프록시 프롬프트(web proxy prompt)에 대한 응답을 호스트 오퍼레이팅 시스템에 의해 인터셉트하는 것과, 하나 이상의 사용자 크리덴셜을, 컨테이너에 하나 이상의 사용자 크리덴셜을 통신하지 않고서 웹 프록시 프롬프트에 대한 응답 내에 삽입하는 것을 더 포함함; 방법은 컨테이너에서 액세스되는 하나 이상의 비신뢰형 네트워크 리소스를 스캐닝하는 것과, 호스트 오퍼레이팅 시스템에서의 안티바이러스 소프트웨어를 사용하여 하나 이상의 위험 레벨을 하나 이상의 비신뢰형 네트워크 리소스에 할당하고, 할당된 위험 레벨이 비신뢰형 네트워크 리소스가 악의적임을 나타내는 경우에 하나 이상의 비신뢰형 네트워크 리소스 중 하나를 고립화(quarantine), 클리닝(clean) 또는 삭제하는 것을 더 포함함; 방법은 컨테이너에서의 비신뢰형 네트워크 리소스와 연관된 활동을 모니터링하는 것과, 모니터링된 활동에 기반하여 호스트 오퍼레이팅 시스템에서 로컬 정책을 업데이트하는 것을 더 포함함; 여기서, 애플리케이션은 웹 애플리케이션이고 비신뢰형 네트워크 리소스는 웹 페이지임; 여기서, 컨테이너는 제1 네트워크 통신 인터페이스를 통한 네트워크 리소스 통신을 위해 활성화되되, 방법은 제2 네트워크 통신 인터페이스를 통한 네트워크 리소스 통신을 위해 제2 컨테이너를 활성화하는 것을 더 포함함; 방법은: 컨테이너에서 실행되는 애플리케이션의 버전이 처리를 중지했음을 검출하는 것, 컨테이너에서 실행되는 애플리케이션의 버전이 처리를 중지했음을 검출하는 것에 응답하여, 컨테이너에 의해 사용되는 시스템 리소스의 양을 감소시키기 위해 컨테이너를 호스트 오퍼레이팅 시스템에 의해 일시 중단시키는 것, 애플리케이션에 의한 추가적인 네트워크 리소스에 대한 추가적인 액세스를 검출하는 것, 추가적인 네트워크 리소스가 비신뢰형 리소스라고 판정하는 것에 응답하여 일시 중단된 컨테이너를 활성화하는 것, 컨테이너에서 실행되는 애플리케이션의 버전이 추가적인 비신뢰형 네트워크 리소스를 액세스하는 것을 허용하는 것, 호스트 오퍼레이팅 시스템의 사용자가 로그오프하였음을 검출하는 것, 그리고 사용자가 로그오프하였음을 검출하는 것에 응답하여 컨테이너를 삭제하는 것을 더 포함함; 방법은 호스트 오퍼레이팅 시스템에 대한 업데이트를 검출하는 것과, 호스트 오퍼레이팅 시스템에 대한 업데이트를 검출하는 것에 응답하여, 컨테이너를 삭제하는 것과 호스트 오퍼레이팅 시스템의 하나 이상의 업데이트된 바이너리(binary)를 반영하는 새로운 컨테이너를 생성하는 것을 더 포함함; 여기서, 호스트 오퍼레이팅 시스템은 네트워크 리소스의 파일 유형, 네트워크 리소스와 연관된 네트워크 위치, 네트워크 리소스를 액세스하려고 시도하고 있는 애플리케이션 유형, 네트워크 리소스의 안티바이러스 스캐닝 중 하나 이상에 기반하여, 또는 악의적인 네트워크 리소스의 리스트를 유지하는 클라우드 기반 서비스를 참고하는 것에 기반하여 네트워크 리소스가 신뢰형 네트워크 리소스인지를 판정하도록 구성됨; 여기서, 컨테이너는 호스트 오퍼레이팅 시스템에 로그온된 사용자를 위해 활성화되되, 방법은 사용자를 위한 하나 이상의 추가적인 컨테이너를 활성화하는 것과, 호스트 오퍼레이팅 시스템의 다른 사용자가 컨테이너 및 하나 이상의 추가적인 컨테이너를 액세스하는 것을 방지하는 것을 더 포함함; 방법은 사용자 크리덴셜을 위해 컨테이너에서 실행되는 애플리케이션의 버전으로부터 요청을 수신하는 것과, 컨테이너에 사용자 크리덴셜을 제공하지 않고서 사용자 크리덴셜의 소유권을 증명하는 정보를 포함하는 의사-인증을 컨테이너에서 실행하는 애플리케이션의 버전에 제공하는 것을 더 포함함; 방법은 호스트 오퍼레이팅 시스템에 의해 로컬 네트워크를 식별하는 것과, 컨테이너를 위해 로컬 네트워크를 에뮬레이트하는 것을 더 포함함; 방법은 로컬 네트워크를 식별하는 것과, 컨테이너를 위한 네트워크 주소 변환기(Network Address Translator: NAT) 배후에서 로컬 네트워크를 에뮬레이트하는 것을 더 포함함; 방법은 호스트 오퍼레이팅 시스템 및 컨테이너 간에 도메인 네임 시스템(Domain Name System: DNS) 및 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol: HTTP) 정보를 공유하는 것을 더 포함함; 방법은 호스트 오퍼레이팅 시스템에 의해, 컨테이너에서 실행되는 애플리케이션의 버전에 의해 수행되는 하나 이상의 구성 변경을 추적하는 것을 더 포함함; 방법은 호스트 오퍼레이팅 시스템에 의해 컨테이너로부터 원격 측정을 획득하는 것과, 획득된 원격 측정에 기반하여 컨테이너 활동을 분석하는 것을 더 포함함; 방법은 컨테이너 내의 모니터링된 활동에 기반하여 컨테이너를 위한 정책을 계산하도록 구성된 정책 엔진을 호스트 오퍼레이팅 시스템에서 구현하는 것을 더 포함하되, 계산된 정책은 하나 이상의 정책 템플릿 또는 정책 시그니처에 기반함.
방법은: 호스트 오퍼레이팅 시스템의 기동을 검출하는 것; 호스트 오퍼레이팅 시스템의 기동을 검출하는 것에 응답하여, 컨테이너 기본 이미지가 호스트 오퍼레이팅 시스템 내에 존재하는지를 판정하는 것; 컨테이너 기본 이미지가 호스트 오퍼레이팅 시스템 내에 존재하지 않는다고 판정하는 것에 응답하여, 호스트 오퍼레이팅 시스템으로부터 컨테이너 기본 이미지를 생성하는 것; 호스트 오퍼레이팅 시스템에 대한 사용자 로그인을 검출하는 것; 호스트 오퍼레이팅 시스템에 대한 사용자 로그인을 검출하는 것에 응답하여, 컨테이너 기본 이미지에 대응하는 컨테이너를 활성화하고 활성화된 컨테이너를 일시 중단하는 것; 비신뢰형 네트워크 리소스에 대한 액세스를 검출하는 것에 응답하여, 일시 중단된 컨테이너를 재개하는 것; 그리고 재개된 컨테이너가 비신뢰형 네트워크 리소스를 액세스하는 것을 허용하는 것을 포함한다.
대안적으로 또는 전술한 방법 중 임의의 것에 추가하여, 다음 중 임의의 것 또는 조합이다: 여기서, 컨테이너 기본 이미지는 다음 중 하나로부터 생성됨: 호스트 오퍼레이팅 시스템, 호스트 오퍼레이팅 시스템과는 상이한 오퍼레이팅 시스템, 또는 호스트 오퍼레이팅 시스템 및 호스트 오퍼레이팅 시스템과는 상이한 오퍼레이팅 시스템의 조합.
디바이스는: 하나 이상의 프로세서; 그리고 다음을 포함하는 동작을 수행하기 위해 하나 이상의 프로세서에 의해 실행가능한 컴퓨터 판독가능 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함한다: 디바이스의 호스트 오퍼레이팅 시스템 상에서 웹 애플리케이션을 실행하는 것; 웹 애플리케이션에 의한 네트워크 리소스에 대한 액세스를 검출하는 것; 네트워크 리소스를 디바이스로부터 원격으로 위치된 관리 및 모니터링 서비스로부터 수신된 정책과 비교함으로써 네트워크 리소스가 비신뢰형 리소스라고 판정하는 것; 네트워크 리소스가 비신뢰형 네트워크 리소스라고 판정하는 것에 응답하여: 호스트 오퍼레이팅 시스템으로부터 격리되고 웹 애플리케이션의 버전을 실행하도록 구성된 컨테이너를 호스트 오퍼레이팅 시스템에 의해 활성화하는 것; 컨테이너에서 실행되는 웹 애플리케이션의 버전이 비신뢰형 네트워크 리소스를 액세스하는 것을 호스트 오퍼레이팅 시스템에 의해 허용하는 것; 컨테이너에서 실행되는 웹 애플리케이션의 버전이 하나 이상의 추가적인 비신뢰형 네트워크 리소스를 액세스하는 것을 허용하는 것; 그리고 컨테이너에서 실행되는 웹 애플리케이션의 버전이 신뢰형 네트워크 리소스를 액세스하는 것을 방지하는 것.
비록 주제가 구조적 특징 및/또는 방법론적 작동에 특정적인 언어로 기술되었지만, 첨부된 청구항에 정의된 주제는 위에서 기술된 특정한 특징 또는 작동으로 반드시 한정되는 것은 아니라는 점이 이해될 것이다. 오히려, 위에서 기술된 특정한 특징 및 작동은 청구항을 구현하는 예시적인 형태로서 개시된다.

Claims (27)

  1. 호스트 디바이스 상에서 실행되는 호스트 오퍼레이팅 시스템(host operating system)에 의해 수행되는 방법으로서,
    상기 호스트 디바이스가 네트워크를 통해 액세스할 수 있는 네트워크 리소스(network resource)에 상기 호스트 오퍼레이팅 시스템 상에서 실행되는 애플리케이션이 액세스하려고 시도하는 것을 검출하는 단계와,
    상기 애플리케이션이 상기 네트워크 리소스에 액세스하려고 시도하는 것을 검출한 것에 응답하여, 상기 네트워크 리소스가 비신뢰형(untrusted) 네트워크 리소스인지 여부를 판정하는 단계와,
    상기 네트워크 리소스가 비신뢰형 네트워크 리소스라는 판정에 응답하여,
    상기 호스트 오퍼레이팅 시스템으로부터 격리되어 있으며 상기 애플리케이션의 버전(version)을 실행하도록 구성된 컨테이너(container)를 활성화하는 단계와,
    상기 비신뢰형 네트워크 리소스를 상기 컨테이너에 전달하여 상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 상기 비신뢰형 네트워크 리소스에 액세스하도록 허용하는 단계와,
    상기 비신뢰형 네트워크 리소스에 대한 액세스가 종료되었다는 판정에 응답하여, 상기 컨테이너를 일시 중단(suspending)하는 단계를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 하나 이상의 추가적인 비신뢰형 네트워크 리소스에 액세스하도록 허용하는 단계와, 상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 신뢰형 네트워크 리소스에 액세스하는 것을 방지하는 단계를 더 포함하는,
    방법.
  3. 제1항에 있어서,
    상기 애플리케이션이 상기 네트워크 리소스에 액세스하려고 시도하는 것을 검출하는 단계는, 상기 애플리케이션이 파일 또는 다른 애플리케이션에 액세스하려고 시도하는 것을 검출하는 단계를 포함하고, 상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 상기 비신뢰형 네트워크 리소스에 액세스하도록 허용하는 단계는 상기 파일 또는 상기 다른 애플리케이션이 상기 컨테이너 내에서 열리도록 허용하는 단계를 포함하는,
    방법.
  4. 제1항에 있어서,
    신뢰형 네트워크 리소스의 적어도 하나의 열거형 리스트를 포함하는 적어도 하나의 정책(policy)을 수신하는 단계를 더 포함하되, 상기 네트워크 리소스가 비신뢰형 네트워크 리소스인지 여부를 판정하는 단계는 상기 네트워크 리소스를 신뢰형 네트워크 리소스의 상기 열거형 리스트와 비교하는 단계를 포함하며, 상기 신뢰형 네트워크 리소스의 열거형 리스트는 상기 네트워크 리소스의 파일 유형, 상기 네트워크 리소스와 연관된 네트워크 위치, 또는 상기 네트워크 리소스에 액세스하려고 시도하고 있는 애플리케이션 유형 중 하나 이상에 기반하여 식별되는,
    방법.
  5. 제1항에 있어서,
    상기 컨테이너는 상기 호스트 오퍼레이팅 시스템에 로그온된(logged on) 사용자를 위해 활성화되고, 상기 방법은 상이한 사용자가 상기 호스트 오퍼레이팅 시스템에 로그온되는지 판정하는 단계와, 상기 호스트 오퍼레이팅 시스템 및 상기 컨테이너로부터 격리된 상이한 컨테이너를 상기 상이한 사용자를 위해 활성화하는 단계를 더 포함하는,
    방법.
  6. 제1항에 있어서,
    상기 애플리케이션이 비신뢰형 네트워크 인터페이스를 통해 상기 네트워크 리소스에 액세스하려고 시도하는지 판정하는 단계와, 상기 애플리케이션이 상기 비신뢰형 네트워크 인터페이스를 통해 상기 네트워크 리소스에 액세스하려고 시도한다는 판정에 응답하여,
    상기 호스트 오퍼레이팅 시스템 내의 상기 애플리케이션을 위한 네트워크 통신을 가상 사설망(Virtual Private Network: VPN) 인터페이스로 제약하는 단계와,
    상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 상기 비신뢰형 네트워크 인터페이스를 통해 네트워크 통신을 수행하는 것을 허용하는 단계와,
    상기 컨테이너에 대한 네트워크 통신이 상기 비신뢰형 네트워크 인터페이스로 격리됨을 상기 컨테이너의 네트워크 스택(network stack)에게 나타내는 단계를 더 포함하는,
    방법.
  7. 제1항에 있어서,
    사용자 크리덴셜에 대한 웹 프록시 프롬프트(web proxy prompt)에 대한 응답을 인터셉트하는(intercepting) 단계와, 상기 웹 프록시 프롬프트에 대한 상기 응답 내에 하나 이상의 사용자 크리덴셜을, 상기 컨테이너에 상기 하나 이상의 사용자 크리덴셜을 통신하지 않고서 삽입하는 단계를 더 포함하는,
    방법.
  8. 제1항에 있어서,
    상기 컨테이너에서 액세스되는 하나 이상의 비신뢰형 네트워크 리소스를 스캐닝하는 단계와, 상기 호스트 오퍼레이팅 시스템에서의 안티바이러스 소프트웨어(antivirus software)를 사용하여 하나 이상의 위험 레벨을 상기 하나 이상의 비신뢰형 네트워크 리소스에 할당하고, 상기 할당된 위험 레벨이 상기 비신뢰형 네트워크 리소스가 악의적임을 나타내는 경우에 상기 하나 이상의 비신뢰형 네트워크 리소스 중 하나를 고립화(quarantine), 클리닝(clean) 또는 삭제하는 단계를 더 포함하는,
    방법.
  9. 제1항에 있어서,
    상기 컨테이너에서의 상기 비신뢰형 네트워크 리소스와 연관된 활동을 모니터링하는 단계와, 상기 모니터링된 활동에 기반하여 상기 호스트 오퍼레이팅 시스템에서 로컬 정책을 업데이트하는 단계를 더 포함하는,
    방법.
  10. 제1항에 있어서,
    상기 애플리케이션은 웹 애플리케이션이고 상기 비신뢰형 네트워크 리소스는 웹 페이지인,
    방법.
  11. 제1항에 있어서,
    상기 컨테이너는 제1 네트워크 통신 인터페이스를 통한 네트워크 리소스 통신을 위해 활성화되고, 상기 방법은 제2 네트워크 통신 인터페이스를 통한 네트워크 리소스 통신을 위한 제2 컨테이너를 활성화하는 단계를 더 포함하는,
    방법.
  12. 제1항에 있어서,
    상기 애플리케이션이 추가적인 네트워크 리소스에 액세스하려고 시도하는 것을 검출하는 단계와,
    상기 추가적인 네트워크 리소스가 비신뢰형 리소스라는 판정에 응답하여 상기 컨테이너를 활성화시키는 단계와,
    상기 추가적인 네트워크 리소스를 상기 컨테이너에 전달하여 상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 상기 추가적인 네트워크 리소스에 액세스하도록 허용하는 단계를 더 포함하는,
    방법.
  13. 제1항에 있어서,
    상기 호스트 오퍼레이팅 시스템에 대한 업데이트를 검출하는 단계와,
    상기 호스트 오퍼레이팅 시스템에 대한 상기 업데이트를 검출하는 것에 응답하여, 상기 컨테이너를 삭제하는 단계와, 상기 호스트 오퍼레이팅 시스템의 하나 이상의 업데이트된 바이너리(binary)를 반영하는 새로운 컨테이너를 생성하는 단계를 더 포함하는,
    방법.
  14. 제1항에 있어서,
    상기 네트워크 리소스가 비신뢰형 네트워크 리소스인지 여부를 판정하는 단계는, 상기 네트워크 리소스의 파일 유형, 상기 네트워크 리소스와 연관된 네트워크 위치, 상기 네트워크 리소스에 액세스하려고 시도하고 있는 애플리케이션 유형, 상기 네트워크 리소스의 안티바이러스 스캐닝 중 하나 이상에 기반하여, 또는 악의적인 네트워크 리소스의 리스트를 유지하는 클라우드 기반 서비스를 참고하는 것에 기반하여 수행되는,
    방법.
  15. 제1항에 있어서,
    상기 컨테이너는 상기 호스트 오퍼레이팅 시스템에 로그온하는 사용자에 대해 활성화되고,
    상기 방법은 상기 사용자에 대해 하나 이상의 추가적인 컨테이너를 활성화하는 단계와, 상기 호스트 오퍼레이팅 시스템의 다른 사용자가 상기 컨테이너 및 상기 하나 이상의 추가적인 컨테이너에 액세스하는 것을 방지하는 단계를 더 포함하는,
    방법.
  16. 제1항에 있어서,
    사용자 크리덴셜에 대한 상기 컨테이너 내에서 실행되는 상기 애플리케이션의 상기 버전으로부터의 요청을 수신하는 단계와, 상기 사용자 크리덴셜을 상기 컨테이너에 제공하지 않고 상기 사용자 크리덴셜의 소유권을 증명하는 정보를 포함하는 상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전에 의사 인증(pseudo-authentication)을 제공하는 단계를 더 포함하는,
    방법.
  17. 제1항에 있어서,
    로컬 네트워크를 식별하는 단계와, 상기 컨테이너에 대해 상기 로컬 네트워크를 에뮬레이팅하는 단계를 더 포함하는,
    방법.
  18. 제1항에 있어서,
    로컬 네트워크를 식별하는 단계와, 상기 컨테이너에 대해 네트워크 주소 변환기(network address translator; NAT) 배후에서 로컬 네트워크를 에뮬레이트하는 단계를 더 포함하는,
    방법.
  19. 제1항에 있어서,
    상기 호스트 오퍼레이팅 시스템 및 상기 컨테이너 간에 도메인 네임 시스템(Domain Name System: DNS) 및 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol: HTTP) 정보를 스캐닝하고 공유하는 단계를 더 포함하는,
    방법.
  20. 제1항에 있어서,
    상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전에 의해 수행되는 하나 이상의 구성 변경을 추적하는 단계를 더 포함하는,
    방법.
  21. 제1항에 있어서,
    상기 컨테이너로부터 원격 측정을 획득하는 단계와, 상기 획득된 원격 측정에 기반하여 컨테이너 활동을 분석하는 단계를 더 포함하는,
    방법.
  22. 제1항에 있어서,
    상기 컨테이너 내의 모니터링된 활동에 기반하여 상기 컨테이너에 대한 정책을 계산하도록 구성된 정책 엔진을 구현하는 단계를 더 포함하되, 상기 계산된 정책은 하나 이상의 정책 템플릿 또는 정책 시그니처에 기반하는,
    방법.
  23. 제1항에 있어서,
    상기 호스트 오퍼레이팅 시스템의 사용자가 로그오프했는지 검출하는 단계와,
    상기 사용자가 로그오프했음을 검출한 것에 응답하여, 상기 컨테이너를 일시 중단하는 단계를 더 포함하는,
    방법.
  24. 디바이스로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 의해 실행가능한 컴퓨터 판독가능 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하되, 상기 컴퓨터 판독가능 명령어는,
    상기 디바이스가 네트워크를 통해 액세스할 수 있는 네트워크 리소스에 호스트 오퍼레이팅 시스템 상에서 실행되는 웹 애플리케이션이 액세스하려고 시도하는 것을 검출하는 것과,
    상기 웹 애플리케이션이 상기 네트워크 리소스에 액세스하려고 시도하는 것을 검출한 것에 응답하여, 상기 네트워크 리소스를 상기 디바이스로부터 원격으로 위치하는 관리 및 모니터링 서비스로부터 수신된 정책과 비교함으로써 상기 네트워크 리소스가 비신뢰형 네트워크 리소스인지 여부를 판정하는 것과,
    상기 네트워크 리소스가 비신뢰형 네트워크 리소스라는 판정에 응답하여,
    상기 호스트 오퍼레이팅 시스템으로부터 격리되어 있으며 상기 웹 애플리케이션의 버전을 실행하도록 구성된 컨테이너를 활성화하는 것과,
    상기 비신뢰형 네트워크 리소스를 상기 컨테이너에 전달하여 상기 컨테이너에서 실행되는 상기 웹 애플리케이션의 상기 버전이 상기 비신뢰형 네트워크 리소스에 액세스하도록 허용하는 것과,
    추가적인 비신뢰형 네트워크 리소스를 상기 컨테이너에 전달하여 상기 컨테이너에서 실행되는 상기 웹 애플리케이션의 상기 버전이 상기 추가적인 비신뢰형 네트워크 리소스에 액세스하도록 허용하는 것과,
    상기 컨테이너에서 실행되는 상기 웹 애플리케이션의 상기 버전이 신뢰형 네트워크 리소스에 액세스하는 것을 방지하는 것과,
    상기 비신뢰형 네트워크 리소스 및 상기 추가적인 비신뢰형 네트워크 리소스에 대한 액세스가 종료되었다는 판정에 응답하여, 상기 컨테이너를 일시 중단하는 것
    을 포함하는 동작을 수행하는,
    디바이스.
  25. 제24항에 있어서,
    상기 동작은, 크리덴셜에 대해 상기 컨테이너 내에서 실행되는 상기 웹 애플리케이션의 상기 버전으로부터의 요청을 수신하는 것과, 사용자 크리덴셜을 상기 컨테이너에 제공하지 않고 상기 사용자 크리덴셜의 소유권을 증명하는 정보를 포함하는 상기 컨테이너에서 실행되는 상기 웹 애플리케이션의 상기 버전에 의사 인증을 제공하는 것을 더 포함하는,
    디바이스.
  26. 디바이스로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 의해 실행가능한 컴퓨터 판독가능 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하되,
    상기 컴퓨터 판독가능 명령어는,
    상기 디바이스가 네트워크를 통해 액세스할 수 있는 네트워크 리소스에 호스트 오퍼레이팅 시스템 상에서 실행되는 애플리케이션이 액세스하려고 시도하는 것을 검출하는 것과,
    상기 애플리케이션이 상기 네트워크 리소스에 액세스하려고 시도하는 것을 검출한 것에 응답하여, 상기 네트워크 리소스가 비신뢰형 네트워크 리소스인지 여부를 판정하는 것과,
    상기 네트워크 리소스가 비신뢰형 네트워크 리소스라는 판정에 응답하여,
    상기 호스트 오퍼레이팅 시스템으로부터 격리되어 있으며 상기 애플리케이션의 버전을 실행하도록 구성된 컨테이너를 활성화하는 것과,
    상기 비신뢰형 네트워크 리소스를 상기 컨테이너에 전달하여 상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 상기 비신뢰형 네트워크 리소스에 액세스하도록 허용하는 것과,
    상기 비신뢰형 네트워크 리소스에 대한 액세스가 종료되었다는 판정에 응답하여, 상기 컨테이너를 일시 중단하는 것
    을 포함하는 동작을 수행하는,
    디바이스.
  27. 컴퓨터 판독가능 명령어가 기록되어 있는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 판독가능 명령어는, 프로세서에 의해 실행될 경우, 상기 프로세서로 하여금,
    상기 저장 매체를 포함하는 디바이스가 네트워크를 통해 액세스할 수 있는 네트워크 리소스에 호스트 오퍼레이팅 시스템 상에서 실행되는 애플리케이션이 액세스하려고 시도하는 것을 검출하는 것과,
    상기 애플리케이션이 상기 네트워크 리소스에 액세스하려고 시도하는 것을 검출한 것에 응답하여, 상기 네트워크 리소스가 비신뢰형 네트워크 리소스인지 여부를 판정하는 것과,
    상기 네트워크 리소스가 비신뢰형 네트워크 리소스라는 판정에 응답하여,
    상기 호스트 오퍼레이팅 시스템으로부터 격리되어 있으며 상기 애플리케이션의 버전을 실행하도록 구성된 컨테이너를 활성화하는 것과,
    상기 비신뢰형 네트워크 리소스를 상기 컨테이너에 전달하여 상기 컨테이너에서 실행되는 상기 애플리케이션의 상기 버전이 상기 비신뢰형 네트워크 리소스에 액세스하도록 허용하는 것과,
    상기 비신뢰형 네트워크 리소스에 대한 액세스가 종료되었다는 판정에 응답하여, 상기 컨테이너를 일시 중단하는 것
    을 포함하는 동작을 수행하게 하는,
    컴퓨터 판독가능 저장 매체.
KR1020187034872A 2016-06-02 2017-05-25 하드웨어 기반의 가상화된 보안 격리 기법 KR102386560B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/171,917 2016-06-02
US15/171,917 US10855725B2 (en) 2016-06-02 2016-06-02 Hardware-based virtualized security isolation
PCT/US2017/034354 WO2017210065A1 (en) 2016-06-02 2017-05-25 Hardware-based virtualized security isolation

Publications (2)

Publication Number Publication Date
KR20190015273A KR20190015273A (ko) 2019-02-13
KR102386560B1 true KR102386560B1 (ko) 2022-04-13

Family

ID=59014799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187034872A KR102386560B1 (ko) 2016-06-02 2017-05-25 하드웨어 기반의 가상화된 보안 격리 기법

Country Status (19)

Country Link
US (1) US10855725B2 (ko)
EP (1) EP3465517B1 (ko)
JP (1) JP6982006B2 (ko)
KR (1) KR102386560B1 (ko)
CN (1) CN109196505B (ko)
AU (1) AU2017275464B2 (ko)
BR (1) BR112018074347A8 (ko)
CA (1) CA3023472A1 (ko)
CL (1) CL2018003297A1 (ko)
CO (1) CO2018012982A2 (ko)
ES (1) ES2806379T3 (ko)
IL (1) IL263152B (ko)
MX (1) MX2018014912A (ko)
NZ (1) NZ747895A (ko)
PH (1) PH12018550196A1 (ko)
RU (1) RU2755880C2 (ko)
SG (1) SG11201810295UA (ko)
WO (1) WO2017210065A1 (ko)
ZA (1) ZA201807411B (ko)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2984580B1 (en) 2013-04-10 2018-12-19 Illumio, Inc. Distributed network management system using a logical multi-dimensional label-based policy model
US9882919B2 (en) 2013-04-10 2018-01-30 Illumio, Inc. Distributed network security using a logical multi-dimensional label-based policy model
EP3143502A4 (en) * 2014-05-14 2017-12-27 Hay, Peter, Mcclelland Systems and methods for ensuring computer system security via a virtualized layer of application abstraction
US9928377B2 (en) 2015-03-19 2018-03-27 Netskope, Inc. Systems and methods of monitoring and controlling enterprise information stored on a cloud computing service (CCS)
US10397255B1 (en) * 2015-09-23 2019-08-27 StackRox, Inc. System and method for providing security in a distributed computation system utilizing containers
US11405423B2 (en) * 2016-03-11 2022-08-02 Netskope, Inc. Metadata-based data loss prevention (DLP) for cloud resources
US11425169B2 (en) 2016-03-11 2022-08-23 Netskope, Inc. Small-footprint endpoint data loss prevention (DLP)
US11403418B2 (en) 2018-08-30 2022-08-02 Netskope, Inc. Enriching document metadata using contextual information
US11019101B2 (en) 2016-03-11 2021-05-25 Netskope, Inc. Middle ware security layer for cloud computing services
US10459823B1 (en) * 2016-06-29 2019-10-29 EMC IP Holding Company LLC Debugging using dual container images
US10372588B2 (en) 2016-07-08 2019-08-06 International Business Machines Corporation Providing debug information on production containers using debug containers
US10505830B2 (en) * 2016-08-11 2019-12-10 Micro Focus Llc Container monitoring configuration deployment
US20180082053A1 (en) * 2016-09-21 2018-03-22 Telefonaktiebolaget Lm Ericsson (Publ) Application token through associated container
US10592664B2 (en) * 2017-02-02 2020-03-17 Cisco Technology, Inc. Container application security and protection
US11165825B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for creating encrypted virtual private network hotspot
US11122013B2 (en) 2017-02-16 2021-09-14 Emerald Cactus Ventures, Inc. System and method for encrypting data interactions delineated by zones
US11165751B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for establishing simultaneous encrypted virtual private networks from a single computing device
US10691816B2 (en) * 2017-02-24 2020-06-23 International Business Machines Corporation Applying host access control rules for data used in application containers
US10613885B2 (en) 2017-02-24 2020-04-07 International Business Machines Corporation Portable aggregated information calculation and injection for application containers
WO2018208669A1 (en) 2017-05-08 2018-11-15 KnowBe4, Inc. Systems and methods for providing user interfaces based on actions associated with untrusted emails
US10719603B2 (en) * 2017-05-16 2020-07-21 Vmware, Inc. Methods and apparatus for sandboxed code execution using containers
US10726121B2 (en) * 2017-05-16 2020-07-28 Vmware, Inc. Methods and apparatus for improving sandboxed code execution by caching container image templates
WO2018226790A1 (en) * 2017-06-09 2018-12-13 ORock Holdings, LLC Secure network-accessible system for executing remote applications
US11240207B2 (en) * 2017-08-11 2022-02-01 L3 Technologies, Inc. Network isolation
US11601467B2 (en) * 2017-08-24 2023-03-07 L3 Technologies, Inc. Service provider advanced threat protection
US10528733B2 (en) * 2017-08-31 2020-01-07 International Business Machines Corporation Integrity, theft protection and cyber deception using a deception-based filesystem
US11178104B2 (en) 2017-09-26 2021-11-16 L3 Technologies, Inc. Network isolation with cloud networks
US11223601B2 (en) * 2017-09-28 2022-01-11 L3 Technologies, Inc. Network isolation for collaboration software
US10931669B2 (en) * 2017-09-28 2021-02-23 L3 Technologies, Inc. Endpoint protection and authentication
US11374906B2 (en) 2017-09-28 2022-06-28 L3 Technologies, Inc. Data exfiltration system and methods
US11184323B2 (en) * 2017-09-28 2021-11-23 L3 Technologies, Inc Threat isolation using a plurality of containers
US11552987B2 (en) * 2017-09-28 2023-01-10 L3 Technologies, Inc. Systems and methods for command and control protection
US11336619B2 (en) * 2017-09-28 2022-05-17 L3 Technologies, Inc. Host process and memory separation
US11550898B2 (en) 2017-10-23 2023-01-10 L3 Technologies, Inc. Browser application implementing sandbox based internet isolation
US11120125B2 (en) 2017-10-23 2021-09-14 L3 Technologies, Inc. Configurable internet isolation and security for laptops and similar devices
US11170096B2 (en) 2017-10-23 2021-11-09 L3 Technologies, Inc. Configurable internet isolation and security for mobile devices
US10001990B2 (en) * 2017-10-26 2018-06-19 Iomaxis, Llc Method and system for enhancing application container and host operating system security in a multi-tenant computing environment
US11516252B2 (en) * 2017-10-31 2022-11-29 Cable Television Laboratories, Inc. Systems and methods for internet of things security environment
US11503051B2 (en) 2018-01-11 2022-11-15 Perspecta Labs Inc. Migration of traffic flows
US10664592B2 (en) * 2018-03-22 2020-05-26 International Business Machines Corporation Method and system to securely run applications using containers
US11409569B2 (en) * 2018-03-29 2022-08-09 Xilinx, Inc. Data processing system
US20190362075A1 (en) * 2018-05-22 2019-11-28 Fortinet, Inc. Preventing users from accessing infected files by using multiple file storage repositories and a secure data transfer agent logically interposed therebetween
KR101959544B1 (ko) * 2018-06-01 2019-03-18 주식회사 에프원시큐리티 웹 공격 탐지 및 차단 시스템 및 그 방법
US11012310B2 (en) * 2018-06-05 2021-05-18 Illumio, Inc. Managing containers based on pairing keys in a segmented network environment
US10958480B2 (en) * 2018-07-19 2021-03-23 Vmware, Inc. Per-app virtual private network tunnel for multiple processes
EP3844923A1 (en) * 2018-08-30 2021-07-07 Telefonaktiebolaget Lm Ericsson (Publ) Method for restricting access to a management interface using standard management protocols and software
US11036856B2 (en) * 2018-09-16 2021-06-15 Fortinet, Inc. Natively mounting storage for inspection and sandboxing in the cloud
US11677713B2 (en) * 2018-10-05 2023-06-13 Vmware, Inc. Domain-name-based network-connection attestation
CN109301936B (zh) * 2018-10-11 2022-03-08 云南电网有限责任公司红河供电局 一种基于容器调度架构的智能变电站运维信息监视系统
EP3644206A1 (en) 2018-10-22 2020-04-29 Koninklijke Philips N.V. A container builder for individualized network services
CN109522760B (zh) * 2018-10-29 2020-08-14 北京博衍思创信息科技有限公司 一种基于硬件控制逻辑的数据转发控制方法及系统
US10785166B1 (en) 2018-11-29 2020-09-22 Cox Communications, Inc. Resource assignment protocol-implemented policy-based direction of a client to an edge-compute resource
US11601787B2 (en) 2018-12-31 2023-03-07 T-Mobile Usa, Inc. Using a blockchain to determine trustworthiness of messages between vehicles over a telecommunications network
US11159945B2 (en) 2018-12-31 2021-10-26 T-Mobile Usa, Inc. Protecting a telecommunications network using network components as blockchain nodes
US11329982B2 (en) 2018-12-31 2022-05-10 T-Mobile Usa, Inc. Managing internet of things devices using blockchain operations
US11159322B2 (en) * 2019-01-31 2021-10-26 Baidu Usa Llc Secure multiparty computing framework using a restricted operating environment with a guest agent
US11775475B2 (en) 2019-03-05 2023-10-03 Microsoft Technology Licensing, Llc Deferred path resolution during container deployment
CN110059453B (zh) * 2019-03-13 2021-02-05 中国科学院计算技术研究所 一种容器虚拟化安全加固装置及方法
US10942855B2 (en) * 2019-03-18 2021-03-09 Microsoft Technology Licensing, Llc Contextual loading based on dynamic context
US11190512B2 (en) 2019-04-17 2021-11-30 Microsoft Technology Licensing, Llc Integrity attestation of attestation component
US11392467B2 (en) 2019-04-17 2022-07-19 Microsoft Technology Licensing, Llc Failover between decentralized identity stores
US11381567B2 (en) 2019-04-29 2022-07-05 Microsoft Technology Licensing, Llc Execution of an application within a scope of user-granted permission
US11429743B2 (en) 2019-04-29 2022-08-30 Microsoft Technology Licensing, Llc Localization of DID-related claims and data
US11222137B2 (en) 2019-05-03 2022-01-11 Microsoft Technology Licensing, Llc Storing and executing an application in a user's personal storage with user granted permission
US11411959B2 (en) * 2019-05-03 2022-08-09 Microsoft Technology Licensing, Llc Execution of application in a container within a scope of user-granted permission
US11003771B2 (en) 2019-05-03 2021-05-11 Microsoft Technology Licensing, Llc Self-help for DID claims
US11876798B2 (en) * 2019-05-20 2024-01-16 Citrix Systems, Inc. Virtual delivery appliance and system with remote authentication and related methods
US11190514B2 (en) * 2019-06-17 2021-11-30 Microsoft Technology Licensing, Llc Client-server security enhancement using information accessed from access tokens
US11533312B2 (en) * 2019-07-10 2022-12-20 ColorTokens, Inc. Dynamically enforcing context sensitive network access control policies
US11470017B2 (en) * 2019-07-30 2022-10-11 At&T Intellectual Property I, L.P. Immersive reality component management via a reduced competition core network component
US11556367B2 (en) * 2019-08-06 2023-01-17 Microsoft Technology Licensing, Llc Dynamic image composition for container deployment
CN110955886B (zh) * 2019-11-08 2022-06-21 广州供电局有限公司 基于沙箱的数据安全融合服务装置及其方法
CN111008041B (zh) * 2019-12-04 2022-03-11 北京百度网讯科技有限公司 用于主机的命令处理方法、装置、电子设备和存储介质
US11314614B2 (en) 2020-01-02 2022-04-26 Sri International Security for container networks
US20210216343A1 (en) 2020-01-09 2021-07-15 International Business Machines Corporation Safely processing integrated flows of messages in a multi-tenant container
US11601461B2 (en) * 2020-01-13 2023-03-07 Vmware, Inc. Risk-based cloud profile management for VDI in the cloud
US11856022B2 (en) 2020-01-27 2023-12-26 Netskope, Inc. Metadata-based detection and prevention of phishing attacks
US11232198B2 (en) * 2020-01-28 2022-01-25 Cyberark Software Ltd. Dynamic visualization of scripts based on centralized security assessments
US11233805B2 (en) 2020-01-28 2022-01-25 Cyberark Software Ltd. Centralized security assessments of scripts in network environments
US11394750B1 (en) 2020-02-28 2022-07-19 Red Hat, Inc. System and method for generating network security policies in a distributed computation system utilizing containers
US11539738B1 (en) * 2020-03-24 2022-12-27 Mcafee, Llc Methods, systems, and media for mitigating damage resulting from a website being an intermediary in a cyberattack
US11176247B2 (en) * 2020-04-02 2021-11-16 Aqua Security Software, Ltd. System and method for container assessment using sandboxing
NL2025327B1 (nl) * 2020-04-10 2021-10-26 Mobuyou B V Werkwijze voor veilige overdacht van gegevens.
US20220060513A1 (en) * 2020-08-21 2022-02-24 Oracle Intenational Corporation Centralized request processing and security zone policy enforcement in a cloud infrastructure system
US20220159029A1 (en) * 2020-11-13 2022-05-19 Cyberark Software Ltd. Detection of security risks based on secretless connection data
US11683331B2 (en) * 2020-11-23 2023-06-20 Juniper Networks, Inc. Trust scoring of network entities in networks
US11580230B2 (en) * 2020-11-30 2023-02-14 Aqua Security Software, Ltd. System and method for assessing software containers for vulnerabilities
US11811804B1 (en) 2020-12-15 2023-11-07 Red Hat, Inc. System and method for detecting process anomalies in a distributed computation system utilizing containers
US11848949B2 (en) 2021-01-30 2023-12-19 Netskope, Inc. Dynamic distribution of unified policies in a cloud-based policy enforcement system
US11989308B2 (en) * 2021-05-27 2024-05-21 EMC IP Holding Company LLC Method to intelligently manage the end to end container compliance in cloud environments
US11831688B2 (en) * 2021-06-18 2023-11-28 Capital One Services, Llc Systems and methods for network security
US11689505B2 (en) * 2021-06-28 2023-06-27 Cisco Technology, Inc. Dynamic proxy response from application container
US11651089B2 (en) * 2021-07-13 2023-05-16 Graphcore Ltd. Terminating distributed trusted execution environment via self-isolation
US12074879B2 (en) 2021-09-14 2024-08-27 Juniper Networks, Inc. Inferring trust in computer networks
US20240037229A1 (en) * 2022-07-28 2024-02-01 Pure Storage, Inc. Monitoring for Security Threats in a Container System

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150143374A1 (en) * 2010-05-28 2015-05-21 Bromium, Inc. Securing an internet endpoint using fine-grained operating system virtualization
US20150150142A1 (en) * 2013-10-23 2015-05-28 Avecto Limited Computer device and method for isolating untrusted content

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620956B2 (en) * 2003-06-11 2009-11-17 Symantec Corporation Portable memory storage devices with application layers
US8418234B2 (en) * 2005-12-15 2013-04-09 International Business Machines Corporation Authentication of a principal in a federation
US7716240B2 (en) 2005-12-29 2010-05-11 Nextlabs, Inc. Techniques and system to deploy policies intelligently
US8544058B2 (en) * 2005-12-29 2013-09-24 Nextlabs, Inc. Techniques of transforming policies to enforce control in an information management system
WO2007120360A2 (en) * 2005-12-29 2007-10-25 Blue Jungle Information management system
US8151337B2 (en) 2006-06-30 2012-04-03 Microsoft Corporation Applying firewalls to virtualized environments
US8612971B1 (en) * 2006-10-17 2013-12-17 Manageiq, Inc. Automatic optimization for virtual systems
US8769268B2 (en) 2007-07-20 2014-07-01 Check Point Software Technologies, Inc. System and methods providing secure workspace sessions
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
CN101730451B (zh) * 2008-10-24 2013-02-20 富准精密工业(深圳)有限公司 散热装置
US8341749B2 (en) * 2009-06-26 2012-12-25 Vmware, Inc. Preventing malware attacks in virtualized mobile devices
US8627451B2 (en) 2009-08-21 2014-01-07 Red Hat, Inc. Systems and methods for providing an isolated execution environment for accessing untrusted content
US8479286B2 (en) * 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US8776169B2 (en) 2010-03-30 2014-07-08 Authentic8, Inc. Disposable browsers and authentication techniques for a secure online user environment
US9104837B1 (en) 2012-06-18 2015-08-11 Bromium, Inc. Exposing subset of host file systems to restricted virtual machines based on upon performing user-initiated actions against host files
US9609619B2 (en) * 2010-08-31 2017-03-28 William E. Woodcock, IV Geolocation
US9027151B2 (en) * 2011-02-17 2015-05-05 Red Hat, Inc. Inhibiting denial-of-service attacks using group controls
US8839245B1 (en) 2012-06-18 2014-09-16 Bromium, Inc. Transferring files using a virtualized application
RU2460133C1 (ru) 2011-06-28 2012-08-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ защиты компьютерных приложений
US8886925B2 (en) 2011-10-11 2014-11-11 Citrix Systems, Inc. Protecting enterprise data through policy-based encryption of message attachments
US9245108B1 (en) 2012-03-13 2016-01-26 Bromium, Inc. Dynamic adjustment of the file format to identify untrusted files
US9032506B2 (en) 2012-08-09 2015-05-12 Cisco Technology, Inc. Multiple application containerization in a single container
US9087191B2 (en) 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US9460283B2 (en) * 2012-10-09 2016-10-04 Dell Products L.P. Adaptive integrity validation for portable information handling systems
US9344762B2 (en) * 2012-10-18 2016-05-17 Broadcom Corporation Integration of untrusted applications and frameworks with a secure operating system environment
WO2014094653A1 (zh) 2012-12-20 2014-06-26 北京奇虎科技有限公司 一种用于检测恶意链接的设备、方法及系统
JP6070355B2 (ja) * 2013-03-28 2017-02-01 富士通株式会社 仮想マシン制御プログラム,仮想マシン制御方法,仮想マシン制御装置及びクラウドシステム
US9716996B2 (en) 2013-05-21 2017-07-25 Brocade Communications Systems, Inc. Method and system for selective and secure interaction of BYOD (bring your own device) with enterprise network through mobile wireless networks
CN103914647A (zh) * 2014-04-14 2014-07-09 中国人民解放军国防科学技术大学 基于本地虚拟化机制的程序隔离运行方法
CO6950443A2 (es) 2014-05-13 2014-05-20 Sicpa Holding Sa Patrón para codificar información digital sobre una superficie, y métodos de marcación y lectura
US20160342801A1 (en) * 2014-06-25 2016-11-24 defend7, Inc. Containerized security as a service
US9246690B1 (en) 2014-09-03 2016-01-26 Amazon Technologies, Inc. Secure execution environment services
US10516733B2 (en) * 2014-11-25 2019-12-24 Auth0, Inc. Multi-tenancy via code encapsulated in server requests
CN105138905A (zh) * 2015-08-25 2015-12-09 中国科学院信息工程研究所 Linux应用程序的隔离运行方法
US10635509B2 (en) * 2016-11-17 2020-04-28 Sung Jin Cho System and method for creating and managing an interactive network of applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150143374A1 (en) * 2010-05-28 2015-05-21 Bromium, Inc. Securing an internet endpoint using fine-grained operating system virtualization
US20150150142A1 (en) * 2013-10-23 2015-05-28 Avecto Limited Computer device and method for isolating untrusted content

Also Published As

Publication number Publication date
AU2017275464B2 (en) 2021-08-12
US20170353496A1 (en) 2017-12-07
WO2017210065A1 (en) 2017-12-07
CO2018012982A2 (es) 2018-12-14
SG11201810295UA (en) 2018-12-28
AU2017275464A1 (en) 2018-11-22
RU2018142303A3 (ko) 2020-07-24
BR112018074347A2 (pt) 2019-03-06
RU2018142303A (ru) 2020-06-01
JP6982006B2 (ja) 2021-12-17
CL2018003297A1 (es) 2019-03-01
CN109196505B (zh) 2022-04-19
BR112018074347A8 (pt) 2023-01-31
US10855725B2 (en) 2020-12-01
KR20190015273A (ko) 2019-02-13
ES2806379T3 (es) 2021-02-17
NZ747895A (en) 2022-07-01
EP3465517B1 (en) 2020-05-13
IL263152B (en) 2021-12-01
RU2755880C2 (ru) 2021-09-22
PH12018550196A1 (en) 2019-09-30
CA3023472A1 (en) 2017-12-07
EP3465517A1 (en) 2019-04-10
MX2018014912A (es) 2019-05-06
ZA201807411B (en) 2020-01-29
IL263152A (en) 2018-12-31
CN109196505A (zh) 2019-01-11
JP2019517694A (ja) 2019-06-24

Similar Documents

Publication Publication Date Title
KR102386560B1 (ko) 하드웨어 기반의 가상화된 보안 격리 기법
US11290488B2 (en) Distribution and management of services in virtual environments
US10375111B2 (en) Anonymous containers
EP3716108A1 (en) Cloud-based web content processing system providing client threat isolation and data integrity
US10089458B2 (en) Separate, disposable execution environment for accessing unverified content
US10055231B1 (en) Network-access partitioning using virtual machines
US11711399B2 (en) Policy enforcement for secure domain name services
US11711345B2 (en) Split tunnel-based security
US11861008B2 (en) Using browser context in evasive web-based malware detection
US11599675B2 (en) Detecting data leakage to websites accessed using a remote browsing infrastructure
US11403397B2 (en) Cache system for consistent retrieval of related objects
Bickford et al. Safe internet browsing using a transparent virtual browser
JP7444596B2 (ja) 情報処理システム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant