KR20110093816A - 플러그인들의 샌드박스 실행 - Google Patents

플러그인들의 샌드박스 실행 Download PDF

Info

Publication number
KR20110093816A
KR20110093816A KR1020117012044A KR20117012044A KR20110093816A KR 20110093816 A KR20110093816 A KR 20110093816A KR 1020117012044 A KR1020117012044 A KR 1020117012044A KR 20117012044 A KR20117012044 A KR 20117012044A KR 20110093816 A KR20110093816 A KR 20110093816A
Authority
KR
South Korea
Prior art keywords
code
execution
isolation
plug
supplemental
Prior art date
Application number
KR1020117012044A
Other languages
English (en)
Other versions
KR101652135B1 (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 KR20110093816A publication Critical patent/KR20110093816A/ko
Application granted granted Critical
Publication of KR101652135B1 publication Critical patent/KR101652135B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • 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/1425Traffic logging, e.g. anomaly detection
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

(의도적 또는 비의도적인) 오동작 플러그인들을 격리하고 식별하여 시스템 중지 및 고장을 방지하는 샌드박스 아키텍처가 개시된다. 플러그인 에러들에 기초하여, 아키텍처는 페널티 포인트 시스템을 통해 해로운 플러그인의 등록을 자동으로 디스에이블하고 차단한다. 해로운 플러그인들의 게시자들은 해로운 플러그인들을 디스에이블하고 게시자를 안전하지 않은 리스트에 등록함으로써 제어된다. 격리는 머신 격리, 프로세스 격리, 제한된 액세스 권리를 갖는 안전한 계정들, 및 로컬 보안 메커니즘들을 이용하는 프로세스들 내의 애플리케이션 도메인 격리와 같은 다양한 레벨로 제공될 수 있다. 다양한 격리 레벨들의 조합은 높은 레벨의 보안을 달성한다. 격리는 다른 플러그인 실행들로부터의 분리 및 파일 시스템 및 네트워크 IP와 같은 시스템 자원들에 대한 제한을 제공한다. 더욱이, 아키텍처는 플러그인들의 실행을 위한 고도로 스케일링 가능하고, 상태가 없는 저급 관리 아키텍처로서, 사전 구성없이 단지 추가적인 샌드박스 서버들을 온더플라이로 추가/제거함으로써 스케일링될 수 있다.

Description

플러그인들의 샌드박스 실행{SANDBOXED EXECUTION OF PLUG-INS}
현재 전개된 현존하는 다수의 애플리케이션과 더불어, 소프트웨어 판매자들은 새로운 제품 구매를 통해서가 아니라 고객들에게 가치를 제공할 다른 방법들을 찾고 있다. 이것은 맞춤 코드가 정상 애플리케이션 동작의 일부로서 실행되게 하는 특징을 제공함으로써 충족될 수 있다. 맞춤 코드는 애플리케이션 동작에서 특정 포인트들에서 실행되도록 구성될 수 있는 "플러그인들" 또는 보조 애플리케이션들의 형태로 추가된다. 온라인 환경에서, 이것은 호스트되는 서버 상에서 코드가 실행될 때 문제가 되며, 따라서 코딩 에러들 또는 악의 코드는 회사 컴퓨터 시스템들 또는 회사 네트워크들에 대한 손상을 유발할 수 있다.
아래는 여기에 설명되는 일부 새로운 실시예들의 기본적인 이해를 제공하기 위하여 간단한 요약을 제공한다. 이 요약은 포괄적인 개요가 아니며, 본 발명의 중요한/필수적인 요소들을 식별하거나 그 범위를 정하는 것을 의도하지 않는다. 그의 유일한 목적은 후술하는 더 상세한 설명에 대한 서론으로서 일부 개념들을 간단한 형태로 제공하는 데 있다.
개시되는 아키텍처는 소프트웨어 플러그인 코드를 격리하여, 코드가 회사의 호스트되는 환경 내에서 안전하게 실행되면서도, 환경에 대한 유용한 기능들을 수행할 수 있게 하는 특징들의 고유한 조합이다. 이러한 아키텍처는 의도적인 또는 비의도적인 오동작 플러그인들로부터 그 자신을 식별하고 보호하여, 에러들로부터 복구하고, 페널티 포인트 시스템을 통해 유해 플러그인들의 등록을 자동으로 디스에이블 및 차단하도록 설계된 샌드박스 시스템을 포함한다. 샌드박스 시스템은 또한 동일한 격리된 시스템 상에서 실행되는 다른 플러그인들로부터의 격리를 제공하며, 머신명, IP 어드레스, 파일 시스템 등과 같은 민감한 정보 및 자원들에 대한 액세스를 제공한다.
격리는 머신 격리, 프로세스 격리, 제한된 액세스 권리를 갖는 보안 계정, 및 로컬 보안 메커니즘을 이용하는 프로세스 내의 애플리케이션 도메인 격리와 같이 다양한 레벨에서 제공될 수 있다. 다수의 격리 레벨의 조합은 높은 레벨의 보안을 달성한다.
더욱이, 이 아키텍처는 플러그인들의 실행을 위한 고도로 스케일링 가능하고, 상태가 없는 저급 관리 아키텍처로서, 사전 구성없이 단지 추가적인 샌드박스 서버들을 온더플라이로(on-the-fly) 추가(또는 제거)함으로써 스케일링될 수 있다.
상기 및 관련 목적들을 달성하기 위해, 아래의 설명 및 첨부 도면들과 관련하여 소정의 예시적인 양태들이 본 명세서에서 설명된다. 이러한 양태들은 여기에 개시되는 원리들이 실행될 수 있는 다양한 방법들을 지시하며, 그의 모든 양태들 및 균등물들은 청구 발명의 범위 내에 있음을 의도한다. 다른 이점들 및 새로운 특징들은 도면들과 함께 고려될 때 아래의 상세한 설명으로부터 명확해질 것이다.
도 1은 개시되는 아키텍처에 따른 프로그램 관리 시스템의 도면이다.
도 2는 오동작 보조 코드에 페널티를 부과하기 위한 페널티 컴포넌트를 포함하는 더 상세한 프로그램 관리 시스템의 도면이다.
도 3은 예시적인 프로그램 관리 아키텍처의 도면이다.
도 4는 샌드박스 서버를 이용하는 프로그램 관리용의 더 일반적인 시스템의 도면이다.
도 5는 프로그램을 관리하는 방법의 도면이다.
도 6은 페널티 포인트들에 기초하여 보조 코드를 관리하는 방법의 도면이다.
도 7은 페널티 포인트들에 기초하여 등록을 관리하는 방법의 도면이다.
도 8은 오동작 보조 코드의 게시자들을 관리하는 방법의 도면이다.
도 9는 오동작 보조 코드에 기초하여 조직들을 관리하는 방법의 도면이다.
도 10은 부하 균형화에 기초하여 샌드박스 서버를 선택하는 방법의 도면이다.
도 11은 개시되는 아키텍처에 따른 격리된 플러그인 실행을 실행하도록 동작 가능한 컴퓨팅 시스템의 블록도이다.
도 12는 플러그인 격리의 프로그램 관리를 위한 컴퓨팅 환경의 개략 블록도이다.
샌드박스 아키텍처는 (의도적 또는 비의도적인) 오동작 플러그인들을 격리하고 식별하여, 시스템 중단 및 고장을 방지한다. 플러그인이 에러를 유발하는 경우, 아키텍처는 페널티 포인트 시스템을 통해 유해 플러그인의 등록을 디스에이블 및 차단한다. 격리는 머신 격리, 프로세스 격리, 제한된 액세스 권리를 갖는 보안 계정, 및 로컬 보안 메커니즘(예컨대, .Net 코드 액세스 보안)을 이용하는 프로세스 내의 애플리케이션 도메인(예컨대, AppDomain) 격리와 같이 다양한 레벨에서 제공될 수 있다. 다수의 격리 레벨의 조합은 높은 레벨의 보안을 달성한다.
더욱이, 아키텍처는 플러그인들의 실행을 위한 고도로 스케일링 가능하고, 상태가 없는 저급 관리 아키텍처로서, 사전 구성없이 단지 추가적인 샌드박스 서버들을 온더플라이로 추가(또는 제거)함으로써 스케일링될 수 있다.
이하, 도면들을 참조하며, 도면들 전반에서 동일한 참조 번호들은 동일한 요소들을 나타내는 데 사용된다. 아래의 설명에서는 설명의 목적으로 그의 충분한 이해를 제공하기 위해 다양한 구체적인 상세들이 제공된다. 그러나, 새로운 실시예들은 그러한 구체적인 상세들 없이도 실시될 수 있음이 명백할 수 있다. 다른 예들에서는, 잘 알려진 구조들 및 장치들은 그의 설명을 용이하게 하기 위하여 블록도 형태로 도시된다. 그 의도는 청구 발명의 사상 및 범위 내에 속하는 모든 변경들, 균등물들 및 대안들을 커버하기 위한 것이다.
도 1은 개시되는 아키텍처에 따른 프로그램 관리 시스템(100)을 나타낸다. 시스템(100)은 애플리케이션(106)(예컨대, 서버)과 함께 실행할 보조 코드(104)를 수신하기 위한 인터페이스 컴포넌트(102)를 포함한다. 인터페이스 컴포넌트(102)는 예를 들어 애플리케이션(106)의 일부 또는 하나의 개별 코드일 수 있다. 대안으로서, 인터페이스 컴포넌트(102)는 예를 들어 격리 컴포넌트(108)의 일부일 수 있다.
시스템(100)은 또한 보조 코드(104)를 수신하여 하나 이상의 격리 레벨을 이용하여 격리된 환경(110) 내에 안전하게 격리하기 위한 격리 컴포넌트(108) 및 비정상적인 실행 거동에 부분적으로 기초하여 격리된 환경(110)에서의 보조 코드(104)의 실행을 모니터링 및 관리하기 위한 관리 컴포넌트(112)를 포함한다.
보조 코드(104)는 서버 애플리케이션인 애플리케이션(106)과 함께 실행하기 위해 수신된 제삼자 플러그인일 수 있으며, 격리 컴포넌트(108)는 격리 실행을 위해 보조 코드(104)가 전송되는 샌드박스 서버의 일부일 수 있다. 하나 이상의 격리 레벨은 머신 격리 레벨, 프로세스 격리 레벨 또는 애플리케이션 도메인 코드 액세스 격리 레벨 중 적어도 하나를 포함한다. 대안 구현에서, 이러한 설계는 클라이언트 상에서 개별적으로 또는 서버 상에서도 추구될 수 있다. 즉, 격리된 플러그인들은 서버 상에서만 처리될 필요는 없다.
인터페이스 컴포넌트(102)는 보조 코드(104)로부터의 호출들이 적절한 애플리케이션(106)으로 지향되는 것을 보증한다. 즉, 플러그인들을 격리하여 실행하는 다수의 애플리케이션이 존재하는 경우, 인터페이스 컴포넌트(102)는 플러그인들로부터의 호출들을 대응하는 서버 애플리케이션으로 올바르게 라우팅한다. 관리 컴포넌트(112)는 보조 코드(104)를 디스에이블함으로써 격리 환경(110)에서의 보조 코드(104)의 실행을 중지한다. 보조 코드(104)가 임계 횟수 이상 디스에이블된 때 보조 코드(104)의 등록이 차단된다.
도 2는 오동작 보조 코드에 페널티를 부과하기 위한 페널티 컴포넌트(202)를 포함하는 더 상세한 프로그램 관리 시스템(200)을 나타낸다. 시스템(200)은 애플리케이션(106)(예컨대, 서버)과 함께 실행할 보조 코드(104)를 수신하기 위한 인터페이스 컴포넌트(102), 보조 코드(104)를 수신하여 하나 이상의 격리 레벨을 이용하여 격리된 환경(110) 내에 안전하게 격리하기 위한 격리 컴포넌트(108), 및 격리된 환경(110)에서의 보조 코드(104)의 실행을 모니터링 및 관리하기 위한 관리 컴포넌트(112)를 포함한다. 관리 컴포넌트(112)는 페널티 시스템으로 인해 디스에이블된 보조 코드(104)의 실행을 허락하지 않을 것이다.
페널티 컴포넌트(202)는 개별 보조 코드(104)를 통해 누적된 페널티 포인트들을 추적하며, 임계치를 초과한 경우에 보조 코드(104)를 디스에이블한다. 즉, 오동작 보조 코드(104)에 대해 페널티 포인트들이 할당되고 누적된다. 페널티 컴포넌트(202)는 설정 가능한 페널티 임계치를 포함하며, 그의 초과는 보조 코드의 더 이상의 실행의 차단을 유발한다. 페널티 임계치가 초과된 때, 그 같은 보조 코드(104)의 등록은 어셈블리 시그니처에 기초하여 차단될 수 있다.
어셈블리 시그니처는 어셈블리 이름, 어셈블리 버전, 게시자 공개 키 토큰, 및 어셈블리 문화 정보를 포함한다. 시스템에서 디스에이블된 어셈블리들의 이력은 어떠한 게시들이 디스에이블되어야 하는지를 결정하기 위한 데이터로서 잠재적으로 이용될 수 있다.
대안 실시예에서, 어셈블리 등록은 게시자 키 토큰을 통해서도 디스에이블될 수 있으며, 이 게시자 키 토큰은 별개의 기능이며, 페널티 포인트 시스템과 별개로 동작한다.
인터페이스 컴포넌트(102)는 서버 머신 상에 서버 애플리케이션일 수 있는 애플리케이션(106)과 함께 배치될 수 있다. 마찬가지로, 관리 컴포넌트(112) 및/또는 페널티 컴포넌트(202)는 서버 머신 상에 애플리케이션(106)과 나란히 배치될 수 있다. 그러나, 이것은 필요 조건이 아닌데, 그 이유는 인터페이스 컴포넌트(102), 관리 컴포넌트(112) 및 페널티 컴포넌트(202)가 ("샌드박스" 서버라고도 하는) 격리 서버일 수 있는 격리 컴포넌트(108)와 나란히 배치될 수 있기 때문이다.
시스템(200)은 증가된 실행 부하에 기초하여 하나 이상의 현존 격리 컴포넌트를 선택하여 다수의 현존 격리 컴포넌트들에 걸쳐 부하를 균등화하기 위한 부하 관리 컴포넌트(204)를 더 포함할 수 있다. 즉, 플러그인들(보조 코드)을 처리하기 위한 동일 또는 상이한 서버들로부터의 다수의 애플리케이션이 존재한다는 것은 본 아키텍처의 의도 내에 있다. 또한, 플러그인들은 실행 거동에 따라 실행, 모니터링 및 관리를 위해 격리 서버들로 전송된다. 오동작 플러그인들은 예를 들어 동일 네트워크 상에 배치된 대응하는 애플리케이션(및 서버) 또는 다른 시스템에 대한 위협이 되지 않을 것이다.
다시 말하면, 프로그램 관리 시스템(200)은 애플리케이션(106)과 함께 실행할 보조 코드(104)를 수신하고, 보조 코드(104)로부터의 호출들이 애플리케이션(106)으로 지향되는 것을 보장하기 위한 인터페이스 컴포넌트(102)를 포함한다. 격리 컴포넌트(108)는 보조 코드(104)를 수신하여 머신 격리 레벨, 프로세스 격리 레벨 또는 애플리케이션 도메인 코드 액세스 격리 레벨 중 적어도 하나를 이용하여 격리 환경(110) 내에 안전하게 격리한다. 페널티 컴포넌트(202)는 개별 보조 코드(104)를 통해 누적된 페널티 포인트들을 추적하고, 보조 코드(104)의 비정상적인 실행 거동에 응답하여 임계치가 초과되는 경우에 보조 코드(104)를 디스에이블한다. 관리 컴포넌트(112)는 페널티 포인트들에 기초하여 격리 환경(110) 내의 보조 코드(104)의 실행을 모니터링 및 관리한다.
관리 컴포넌트(112)는 비정상적인 실행 거동에 응답하여 적용되는 페널티 포인트들의 총 누적치에 기초하여 디스에이블된 보조 코드(104)의 실행을 불허함으로써 보조 코드(104)의 실행을 차단한다. 관리 컴포넌트(112)는 오동작 보조 코드를 제공하는 게시자의 이력에 기초하여 게시자의 보조 코드가 실행되는 것을 차단한다. 또한, 관리 컴포넌트(112)는 실행된 또는 실행되고 있는 조직으로부터의 현존 보조 코드에 대해 누적된 페널티 포인트들에 기초하여 그 조직으로부터의 새로운 보조 코드의 등록을 방지한다. 보조 코드(104)는 서버 애플리케이션인 애플리케이션(106)과 함께 실행하기 위해 수신된 제삼자 플러그인이며, 격리 컴포넌트(108)는 보조 코드(104)가 격리 실행을 위해 전송되는 샌드박스 서버의 일부이다.
도 3은 예시적인 프로그램 관리 아키텍처(300)를 나타낸다. 프로그램 관리 아키텍처(300)는 (격리 환경을 위한) 독립형 샌드박스 서버 머신(302) 또는 현존 플랫폼 서버 머신(304)에 대한 인핸스먼트(enhancement)를 포함할 수 있다. 아키텍처(300)는 플랫폼 서버 머신(304)에서 "샌드박스 서버"로서 정의되는 서버 "역할"을 포함할 수 있다. 샌드박스 서버 머신(302)은 "플러그인"이라고도 하는 보조 코드(AC)(306)를 안전하게 실행하는 별도의 전용 서버 머신일 수 있다. 그러나, 이것은 필요 조건은 아닌데, 그 이유는 샌드박스 서버 기능이 플랫폼 서버 머신(304) 상에 배치될 수 있기 때문이다. 이 실시예에서, 아키텍처(300)는 .Net 프레임워크와 관련하여 설명되지만, 다른 운영 체제들을 사용할 때는 다른 유사한 구현들이 이용될 수 있다. (.Net 프레임워크는 새로운 애플리케이션들과의 연동성을 위한 사전 코딩된 솔루션들의 라이브러리를 포함하는 마이크로소프트사의 운영 체제들에서 일반적으로 이용된다.) 보조 코드(306)는 적절히 정의된 인터페이스를 갖춘 .Net 어셈블리들 내에 포함된 .Net 컴포넌트일 수 있다.
샌드박스 서버 머신(302)은 (예를 들어, 운영 체제(OS) 서비스로서 구현되는) "호스트"로서 도시된 호스트 프로세스(308)를 포함한다. 예를 들어 단일 프로세스인 호스트 프로세스(308)는 "작업자(들)"로서 도시된 하나 이상의 작업자 프로세스(310)를 관리할 수 있다. 작업자 프로세스들(310)은 작업자 프로세스(310) 내에서 실행 코드를 격리하는 데 사용될 수 있는 (.Net 프레임워크에서 AppDomains로서 지칭되는) 하나 이상의 애플리케이션 도메인(AD)(312)을 포함할 수 있다. 따라서, 샌드박스 보조 코드(306)는 3개의 격리 레벨, 즉 머신, 프로세스 및 애플리케이션 도메인 격리 레벨을 가질 수 있다.
애플리케이션 도메인들은 특권들만을 "실행"하도록 .Net 코드를 제한하기 위한 .Net 메커니즘인 코드 액세스 보안(CAS)을 이용하여 제한될 수 있다. CAS는 특정 어셈블리와 관련된 식별자들을 사용한다. 보조 코드(306)는 제한된 애플리케이션 도메인들(312) 중 하나 내에서만 실행된다. 호스트 프로세스(308) 및 작업자 프로세스(들)(310)는 샌드박스 서버 머신(302) 내에서 매우 제한된 기능들만을 수행할 수 있는 저급 특권 계정들 하에서 실행될 수 있다.
보조 코드(306)는 등록 컴포넌트(318)를 이용하여 플랫폼 서버 데이터베이스(314) 내에 보조 코드(AC) 등록(316)으로서 등록된다. 그러나, 등록 컴포넌트(318)에 의한 등록은 누적된 페널티 포인트들의 수가 임계치를 초과한 경우에는 허락되지 않는다. 더욱이, 등록 컴포넌트(318)는 서명된 어셈블리들만의 등록을 허가한다. 등록 컴포넌트(318)는 안전하지 않은 것으로 표시된 게시자들로부터의 어셈블리들의 등록을 허가하지 않는다. 게시자가 안전한 것으로 표시되는 경우, 어셈블리들은 격리 없이 실행되도록 등록될 수 있다. 실행을 위해, 보조 코드(306)는 플랫폼 서버 머신(304)으로부터 샌드박스 서버 머신(302)으로 전송된다.
샌드박스 서버 머신(302) 상에 어셈블리 캐시(320)가 유지된다. 어셈블리 캐시(320)는 각각의 보조 코드 어셈블리에 대한 ("AC 어셈블리 파일"로 표시되는) 보조 코드 어셈블리 파일(322)을 저장한다. 보조 코드(306)가 샌드박스 서버 머신(302) 상에서 실행되어야 할 때, 어셈블리 캐시(320)는 캐시(320)가 실행을 위한 올바른 보조 코드(306)를 이미 갖고 있는지를 결정하기 위해 검사된다. 갖고 있지 않은 경우, 보조 코드(306)는 플랫폼 서버 데이터베이스(314)로부터 인출되어 샌드박스 서버 머신(302)으로 전송되며, 보조 코드(306)는 어셈블리 캐시(320) 내에 보조 코드 어셈블리 파일(322)로서 저장된다. 각각의 보조 코드 어셈블리 파일(322)은 고유하게 식별되며, 따라서 버전화가 올바르게 적용되고 이루어질 수 있다.
어셈블리 캐시(320)로부터 오래된 보조 코드 어셈블리 파일들이 주기적으로 삭제된다. 어셈블리 캐시의 전체 크기를 제한하고, 조직당 어셈블리 캐시의 전체 크기를 제한하고, 어셈블리 캐시 내의 어셈블리의 전체 수명을 제한하는 것 등과 같은 어셈블리 캐시에 관한 관리 기능의 모든 세트들이 존재한다. 보조 코드 어셈블리 파일은 버전이 구식인 경우, 즉 어셈블리가 새로운 것으로 갱신된 경우에 또는 어셈블리가 허락된 시간 이상 캐시 내에 존재한 경우에 오래된 것으로 간주된다.
어셈블리 캐시(320) 구현은 다양할 수 있다. 예컨대, 간단한 파일들로서 저장하는 것이 아니라, 캐시(320)는 로컬 데이터베이스를 갖도록 그리고 그 안에 어셈블리들이 위치하도록 구현될 수 있다. 어셈블리 캐시(320)는 호출마다 통신 채널들을 통해 동일한 데이터를 계속 전송하지 않기 위한 최적화 단계이다.
보조 코드(306)가 유용한 작업을 행하게 하기 위해, 보조 코드(306)에는 플랫폼 서버 머신 기능들을 수행하기 위한 인터페이스가 제공된다. 이러한 인터페이스는 작업자 프로세스(310)에 의해 관리되며, 보조 코드(306)에 의한 플랫폼 서버 머신(304)에 대한 모든 호출들이 개시 플랫폼 서버(여기서는 플랫폼 서버 머신(304))로 되돌아가는 것을 보장한다. 이것은 트랜잭션 무결성을 유지하기를 원할 때에만 이용될 수 있다. 동일 서버로 되돌아가는 것은 설계의 간소화를 제공한다. 내부 트랜잭션 플러그인들 및 외부 트랜잭션 플러그인들 양자가 존재한다. 외부 트랜잭션 플러그인들은 상이한 플랫폼 서버들로 갈 수 있다.
이것은 트랜잭션에 대한 식별자가 개시 플랫폼 서버(플랫폼 서버 머신(304))에서 다시 인식되게 하며, 따라서 플랫폼 서버 머신(304)은 보조 코드(306)에 의해 수행되는 새로운 작업을 오리지널 트랜잭션과 연관시킬 수 있다. 이것은 트랜잭션 상에서 샌드박스 보조 코드(306)에 의해 수행되는 모든 작업이 올바른 트랜잭션 상황에서 수행된다는 것을 의미하며, 분산 트랜잭션들에 대한 어떠한 필요성도 없앤다.
보조 코드(306)가 샌드박스 서버 머신(302)에서 예상치 못한 예외를 발생시키고, 갑자기 중단되고, 과다한 CPU 시간 또는 메모리를 사용하거나 기타 등등일 경우, 개시 플랫폼 서버 머신(304)은 이것을 인식하고, 페널티 컴포넌트(324)를 이용하여, 보조 코드(306)를 포함하는 보조 코드 어셈블리에 대한 페널티 포인트들이 누적되게 한다. 보조 코드 어셈블리에 대한 페널티 포인트들의 수가 과도한 경우, 이 보조 코드 어셈블리는 디스에이블되며, 어셈블리 내에 포함된 보조 코드의 하나 이상의 세트가 더 이상 실행되지 못한다.
그러나, 이 시점에서, 어셈블리는 등록 해제되고, 등록 컴포넌트(318)를 이용하여 다시 등록될 수 있다. 따라서, 어셈블리가 디스에이블된 횟수에 대한 카운트가 유지된다. 카운트가 정해진 임계치를 초과하는 경우, 어셈블리는 관리 액션이 수행될 때까지 더 이상의 등록이 금지된다. 대안으로서, 디스에이블된 어셈블리가 간단히 다시 인에이블될 수 있다.
또한, 조직에 대한 등록된 모든 보조 코드 어셈블리들에 대한 페널티 포인트들의 총 수가 소정의 임계치를 초과하는 경우, 소정의 관리 액션이 취해질 때까지 그 조직에 대한 보조 코드 세트들의 모든 추가 등록이 금지된다.
더욱이, 과도한 횟수의 에러들 또는 충돌들로 인한 게시자의 차단을 용이하게 하는 차단된 게시자들의 표가 유지되며, 또한 게시자 식별자를 포함하는 관련 보조 코드 어셈블리들은 등록, 재등록 또는 실행되지 못할 것이다.
동작들을 위해 개시 플랫폼 서버(304)로 복귀함으로써 상이한 샌드박스 서버 머신 상에서의 플러그인 실행의 다양한 레벨을 통해 아키텍처(300)의 트랜잭션 무결성이 유지된다.
어셈블리가 소정 시간 동안 올바르게 실행되고 있는 경우에는 페널티 포인트들을 감소시키는 보상 프로세스도 존재할 수 있다. 이것은 소정 기간 동안의 임의적인 고장들이 어셈블리를 디스에이블시키지 못하게 하는 것을 보장한다.
도 4는 샌드박스 서버(402)를 이용하는 프로그램 관리를 위한 더 일반적인 시스템(400)을 나타낸다. 동작에 있어서, 관련된 샌드박스 플러그인 단계를 갖는 플랫폼 서버 머신(406)의 플랫폼 서버(404)의 동작이 수행될 때, 구성된 샌드박스 서버 머신들(408)의 리스트로부터 이용 가능한 샌드박스 서버 머신(예컨대, 샌드박스 서버(402))이 선택된다. 선택 프로세스는 부하 관리 컴포넌트(204)의 부하 균형화 알고리즘에 기초할 수 있다. 샌드박스 서버 머신들(408)은 가용성 및 부하를 확인하기 위해 부하 관리 컴포넌트(204)에 의해 주기적으로 쿼리된다. 부하 관리 컴포넌트(204)는 예컨대 플랫폼 서버 머신들(410) 각각의 일부일 수 있다.
샌드박스 서버 머신(402) 상의 호스트 프로세스(412)로 실행 요청이 전송된다. 호스트 프로세스(412)는 어셈블리가 샌드박스 머신(402)의 어셈블리 캐시에서 이용 가능한지를 결정하고, 이용 가능하지 않은 경우에는 개시자 서버(플랫폼 서버 머신(406))로부터 어셈블리를 요청한다. 어셈블리가 어셈블리 캐시 내에 있을 때, 호스트 프로세스(412)는 이용 가능한 풀로부터 작업자 프로세스(414)를 선택하고, 실행 요청을 그 작업자 프로세스(414)로 전송한다. 호스트 프로세스(412)는 작업자 프로세스들의 풀을 유지하고, 작업자 프로세스 자원 사용(예컨대, 메모리, CPU 사용 등)을 모니터링하고, 한도를 초과한 경우에는 작업자 프로세스들을 셧다운시킨다.
작업자 프로세스의 선택은 라운드 로빈, 무작위 또는 소정의 어피니티(affinity)를 이용하는 것과 같은 상이한 전략들에 따를 수 있다. 한 가지 전략은 자유로운 작업자 프로세스들의 리스트를 유지하는 것이다. 하나의 조직에 대해 요청이 들어오는 경우, 그 조직이 동작하고 있는 작업자 프로세스에 의해 서비스되고 있는지를 결정하기 위한 검사가 행해진다. 그러한 경우, 요청은 그 작업자 프로세스로 라우팅되며, 그렇지 않은 경우에는 이용 가능한 자유 작업자 프로세스 풀로부터 새로운 작업자 프로세스를 선택하고, 이를 이용한다.
작업자 프로세스(414)는 작업자 프로세스(414) 내에서 적절한 CAS 제한된 애플리케이션 도메인을 생성 및/또는 선택하고, 원하는 플러그인 어셈블리 및 클래스를 로딩한다. 이어서, 작업자 프로세스(414)는 플러그인 상에서 "실행"을 호출하며, 이어서 플러그인은 플러그인이 플랫폼 서버 동작들을 수행할 수 있게 하는 인터페이스를 포함하는 적절한 플랫폼 서버 머신(406)에 대해 관련 파라미터들을 갖는 호출들을 행할 수 있다. 또한, 플러그인은 플러그인이 추적을 수행할 수 있게 하는 인터페이스를 제공받는다. 플러그인이 오동작하여 소정의 페널티 임계치를 초과하는 다수의 페널티 포인트를 축적한 경우, 플랫폼 서버(404)를 통해 데이터베이스(416)에서 디스에이블함으로써 플러그인의 더 이상의 실행이 금지된다. 플러그인이 임계치를 초과하는 횟수로 디스에이블된 경우, 그 어셈블리의 더 이상의 등록이 디스에이블된다. 모든 플러그인 세트들에 대한 모든 디스에이블 카운트가 다른 임계치를 초과하는 경우, 그 조직에 대한 모든 플러그인 등록이 디스에이블될 수 있다. 플러그인 인터페이스는 확장 가능하며, 따라서 추가적인 서비스들이 플러그인에 제공될 수 있다.
본 명세서에는, 개시된 아키텍처의 새로운 양태들을 수행하기 위한 예시적인 방법들을 나타내는 한 세트의 흐름도들이 포함된다. 설명의 간략화를 위해, 예를 들어 흐름도 또는 흐름 다이어그램의 형태로 여기에 도시되는 하나 이상의 방법은 일련의 행위들로서 도시되고 설명되지만, 이러한 방법들은 행위들의 순서에 의해 제한되지 않음을 이해하고 알아야 하는데, 그 이유는 일부 행위들이 여기에 도시되고 설명되는 것에 따라, 그와 상이한 순서로 그리고/또는 다른 행위들과 동시에 발생할 수 있기 때문이다. 예를 들어, 이 분야의 기술자들은 방법이 대안으로서 상태 다이어그램에서와 같이 일련의 상호 관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 이해하고 알 것이다. 더욱이, 방법에서 예시되는 모든 행위들이 새로운 구현에 필요한 것은 아닐 수 있다.
도 5는 프로그램을 관리하는 방법을 나타낸다. 단계(500)에서, 실행을 위해 보조 코드가 수신된다. 단계(502)에서, 보조 코드는 실행을 위해 격리 환경으로 전송된다. 단계(504)에서, 보조 코드가 격리 환경에서 실행된다. 단계(506)에서, 보조 코드의 실행이 비정상적인 실행 거동에 대해 모니터링된다. 단계(508)에서, 비정상적인 실행 거동에 기초하여 보조 코드의 실행이 관리된다.
방법의 추가적인 양태들은 주요 동작의 일부로서 격리 실행을 위해 보조 코드를 스케줄링하는 단계를 포함할 수 있다. 또한, 단계(504)에 이어서, 결과들이 플랫폼으로 반환되고, 주요 동작이 계속된다.
도 6은 페널티 포인트들에 기초하여 보조 코드를 관리하는 방법을 나타낸다. 단계(600)에서, 보조 코드의 실행이 비정상적인 실행 거동에 대해 모니터링된다. 단계(602)에서, 보조 코드의 비정상적인 실행 거동의 인스턴스들에 기초하여 페널티 포인트들이 적용된다. 단계(604)에서, 소정의 페널티 임계치에 대한 비교를 위해 페널티 포인트들이 누적된다. 단계(606)에서, 소정의 임계치와 관련하여 보조 코드의 실행이 중지된다.
도 7은 페널티 포인트들에 기초하여 등록을 관리하는 방법을 나타낸다. 단계(700)에서, 페널티 포인트들이 적용되고, 누적되고, 페널티 임계치와 비교된다. 단계(702)에서, 누적된 페널티 포인트들의 수에 의해 결정되는 바와 같은 과다한 비정상적인 거동에 기초하여 보조 코드의 등록이 금지된다. 단계(704)에서, 조직에 대한 플러그인들의 과다한 비정상적인 거동에 기초하여 보조 코드의 등록이 금지된다. 단계(706)에서, 안전하지 않은 게시자에 기초하여 보조 코드의 등록이 금지된다.
도 8은 오동작 보조 코드의 게시자들을 관리하는 방법을 나타낸다. 단계(800)에서, 안전하지 않은 게시자가 안전하지 않은 게시자 리스트에 추가되며, 리스트로부터의 제거는 관리 액션에 의할 수 있다. 단계(802)에서, 오동작 보조 코드를 제공하는 게시자들 및 게시자 식별자들의 표가 유지된다. 단계(804)에서, 게시자 식별자를 갖는 게시자로부터 보조 코드가 수신된다. 단계(806)에서, 게시자로부터의 보조 코드의 실행이 표 및 식별자에 기초하여 차단된다. 단계(808)에서, 게시자로부터의 보조 코드의 등록이 표 및 식별자에 기초하여 차단된다.
도 9는 오동작 보조 코드에 기초하여 조직들을 관리하는 방법을 나타낸다. 단계(900)에서, 페널티 포인트들이 보조 코드의 하나 이상의 세트에 대해 하나 이상의 세트의 오동작 실행에 기초하여 적용된다. 단계(902)에서, 오동작 세트(들)의 누적 페널티 포인트들이 페널티 임계치에 대해 테스트된다. 단계(904)에서, 오동작 세트(들)가 디스에이블되고, 이전에 디스에이블된 세트(들)가 관리 액션을 이용하여 다시 인에이블될 수 있다. 단계(906)에서, 오동작하는 하나 이사의 세트의 조직이 식별된다. 단계(908)에서, 조직에 의한 새로운 보조 코드의 등록 및 기존 코드의 재등록이 금지된다.
도 10은 부하 균형화에 기초하여 샌드박스 서버를 선택하는 방법을 나타낸다. 단계(1000)에서, 실행을 위해 개시 플랫폼 서버에서 보조 코드가 수신된다. 단계(1002)에서, 부하 균형화 컴포넌트가 액세스된다. 단계(1004)에서, 보조 코드의 실행을 위한 요청이 제출된다. 단계(1006)에서, 다수의 샌드박스 서버 중 하나가 부하 균형화 컴포넌트에 의해 격리 실행을 위해 선택된다. 라운드 로빈, 무작위, 소정의 어피니티 등에 기초하는 것 등과 같이, 선택을 행하기 위한 상이한 전략들이 이용될 수 있다. 단계(1008)에서, 보조 코드의 오동작이 모니터링된다. 단계(1010)에서, 오동작이 개시 플랫폼 서버에 보고되고, 페널티 포인트들이 적용된다. 단계(1012)에서, 페널티 포인트들에 기초하여 오동작 보조 코드의 등록 및 실행이 관리된다.
본 출원에서 사용될 때, "컴포넌트" 및 "시스템"이라는 용어들은 컴퓨터 관련 엔티티, 즉 하드웨어, 하드웨어와 소프트웨어의 결합, 소프트웨어 또는 실행 중인 소프트웨어를 지칭하는 것을 의도한다. 예컨대, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 하드 디스크 드라이브, (광 및/또는 자기 저장 매체의) 다양한 저장 드라이브들, 개체, 실행 파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이에 제한되는 것은 아니다. 예를 들어, 서버 상에서 실행되는 애플리케이션 및 서버는 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 존재할 수 있고, 하나의 컴포넌트가 하나의 컴퓨터 상에 국지화되고 그리고/또는 둘 이상의 컴퓨터 사이에 분산될 수 있다. 본 명세서에서, "예시적"이라는 단어는 예, 보기 또는 예시로서의 사용을 의미하는 데 사용될 수 있다. 본 명세서에서 "예시적"인 것으로서 설명되는 임의의 양태 또는 설계는 다른 양태들 또는 설계들보다 바람직하거나 이로운 것으로 해석될 필요는 없다.
이제, 도 11을 참조하면, 개시되는 아키텍처에 따른 격리된 플러그인 실행을 실행하도록 동작 가능한 컴퓨팅 시스템(1100)의 블록도가 도시되어 있다. 본 발명의 양태들에 대한 추가적인 상황을 제공하기 위하여, 도 11 및 아래의 설명은 다양한 양태들이 구현될 수 있는 적절한 컴퓨팅 환경(1100)의 간단한 일반적인 설명을 제공하는 것을 의도한다. 위의 설명은 하나 이상의 컴퓨터 상에서 실행될 수 있는 컴퓨터 실행가능 명령어들과 일반적으로 관련되지만, 이 분야의 기술자들은 다른 프로그램 모듈들과 관련하여 그리고/또는 하드웨어와 소프트웨어의 결합으로서 새로운 실시예가 또한 구현될 수 있다는 것을 인식할 것이다.
다양한 양태를 구현하기 위한 컴퓨팅 시스템(1100)은 처리 장치(들)(1104), 시스템 메모리(1106) 및 시스템 버스(1108)를 구비하는 컴퓨터(1102)를 포함한다. 처리 장치(들)(1104)는 단일 프로세서, 멀티 프로세서, 단일 코어 장치 및 멀티 코어 장치와 같은 임의의 다양한 상용 프로세서일 수 있다. 더욱이, 이 분야의 기술자들은 새로운 방법들이 미니 컴퓨터, 메인프레임 컴퓨터는 물론, 퍼스널 컴퓨터(예컨대, 데스크톱, 랩톱 등), 핸드-헬드 컴퓨팅 장치, 마이크로프로세서 기반 또는 프로그램가능한 가전제품 등도 포함하는 다른 컴퓨터 시스템 구성들에서도 실시될 수 있다는 것을 알 것이며, 그러한 구성들 각각은 하나 이상의 관련 장치에 동작적으로 결합될 수 있다.
시스템 메모리(1106)는 휘발성(VOL) 메모리(1110)(예컨대, 랜덤 액세스 메모리(RAM)) 및 비휘발성 메모리(NON-VOL)(1112)(예컨대, ROM, EPROM, EEPROM 등)를 포함할 수 있다. 기본 입/출력 시스템(BIOS)이 비휘발성 메모리(1112)에 저장될 수 있으며, 시동 중과 같은 때에, 컴퓨터(1102) 내의 컴포넌트들 사이의 데이터 및 신호들의 통신을 용이하게 하는 기본 루틴들을 포함한다. 휘발성 메모리(1110)는 데이터를 캐싱하기 위한 정적 RAM과 같은 고속 RAM도 포함할 수 있다.
시스템 버스(1108)는 메모리 서브시스템(1106)을 포함하지만 이에 제한되지 않는 시스템 컴포넌트들의 처리 장치(들)(1104)에 대한 인터페이스를 제공한다. 시스템 버스(1108)는 임의의 다양한 상용 버스 아키텍처를 이용하여 (메모리 컨트롤러를 갖거나 갖지 않은) 메모리 버스 및 주변 버스(예컨대, PCI, PCIe, AGP, LPC 등)에 더 상호접속할 수 있는 임의의 다양한 유형의 버스 구조일 수 있다.
컴퓨터(1102)는 저장 서브시스템(들)(1114) 및 저장 서브시스템(들)(1114)을 시스템 버스(1108) 및 다른 원하는 컴퓨터 컴포넌트들에 인터페이스하기 위한 저장 인터페이스(들)(1116)를 더 포함한다. 저장 서브시스템(들)(1114)은 예컨대 하드 디스크 드라이브(HDD), 자기 플로피 디스크 드라이브(FDD) 및/또는 광 디스크 저장 드라이브(예컨대, CD-ROM 드라이브, DVD 드라이브) 중 하나 이상을 포함할 수 있다. 저장 인터페이스(들)(1116)는 예컨대 EIDE, ATA, SATA 및 IEEE 1394와 같은 인터페이스 기술들을 포함할 수 있다.
운영 체제(1120), 하나 이상의 애플리케이션 프로그램(1122), 기타 프로그램 모듈(1124) 및 프로그램 데이터(1126)를 포함하는 하나 이상의 프로그램 및 데이터가 메모리 서브시스템(1106), 이동식 메모리 서브시스템(1118)(예컨대, 플래시 드라이브 폼팩터 기술) 및/또는 저장 서브시스템(들)(1114)에 저장될 수 있다. 일반적으로, 프로그램들은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 메소드, 데이터 구조, 기타 소프트웨어 컴포넌트 등을 포함한다. 컴퓨터(1102)가 서버 머신(예컨대, 플랫폼 서버, 샌드박스 서버)인 경우, 하나 이상의 애플리케이션 프로그램(1122), 기타 프로그램 모듈(1124) 및 프로그램 데이터(1126)는 예를 들어 도 1의 시스템(100), 도 2의 시스템(200), 도 3의 프로그램 관리 아키텍처(300), 일반 시스템(400), 및 도 5-9의 방법들을 포함할 수 있다.
운영 체제(1120), 애플리케이션(1122), 모듈(1124) 및/또는 데이터(1126)의 모두 또는 부분들도 예컨대 휘발성 메모리(1110)와 같은 메모리 내에 캐시될 수 있다. 개시되는 아키텍처는 다양한 상용 운영 체제들 또는 운영 체제들의 결합들을 이용하여 (예컨대, 가상 머신들로서) 구현될 수 있다는 것을 알아야 한다.
저장 서브시스템(들)(1114) 및 메모리 서브시스템들(1106, 1118)은 데이터, 데이터 구조, 컴퓨터 실행가능 명령어 등의 휘발성 및 비휘발성 저장을 위한 컴퓨터 판독가능 매체로서 사용된다. 컴퓨터 판독가능 매체들은 컴퓨터(1102)에 의해 액세스될 수 있는 임의의 이용 가능 매체일 수 있으며, 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터(1102)에 대해, 매체들은 임의의 적절한 디지털 포맷으로의 데이터의 저장을 수용한다. 이 분야의 기술자들은 집(zip) 드라이브, 자기 테이프, 플래시 메모리 카드, 카트리지 등과 같은 다른 유형의 컴퓨터 판독가능 매체들이 개시되는 아키텍처의 새로운 방법들을 수행하기 위한 컴퓨터 실행가능 명령어들을 저장하는 데 사용될 수 있다는 것을 알아야 한다.
사용자는 키보드 및 마우스와 같은 외부 사용자 입력 장치들(1128)을 이용하여 컴퓨터(1102), 프로그램 및 데이터와 상호작용할 수 있다. 다른 외부 사용자 입력 장치들(1128)은 마이크, 적외선(IR) 원격 제어, 조이스틱, 게임 패드, 카메라 인식 시스템, 스타일러스 펜, 터치 스크린, 제스처 시스템(예컨대, 눈 이동, 머리 이동 등) 등을 포함할 수 있다. 사용자는 컴퓨터(1102)가 예컨대 휴대용 컴퓨터인 경우에 터치 패드, 마이크, 키보드 등과 같은 온보드 사용자 입력 장치들(1130)을 이용하여 컴퓨터(1102), 프로그램 및 데이터와 상호작용할 수 있다. 이들 및 다른 입력 장치들은 시스템 버스(1108)를 경유하여 입출력(I/O) 장치 인터페이스(들)(1132)를 통해 처리 장치(들)(1104)에 접속되거나, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등과 같은 다른 인터페이스들에 의해 접속될 수 있다. I/O 장치 인터페이스(들)(1132)는 또한 프린터, 오디오 장치, 카메라 장치, 사운드 카드 및/또는 온보드 오디오 처리 능력 등과 같은 출력 주변 장치들(1134)의 사용을 용이하게 한다.
(일반적으로 그래픽 처리 장치(GPU)로도 지칭되는) 하나 이상의 그래픽 인터페이스(들)(1136)가 컴퓨터(1102)와 외부 디스플레이(들)(1138)(예컨대, LCD, 플라즈마) 및/또는 온보드 디스플레이(1140)(예컨대, 휴대용 컴퓨터용) 사이에서 그래픽 및 비디오 신호들을 제공한다. 그래픽 인터페이스(들)(1136)는 컴퓨터 시스템 보드의 일부로서 제조될 수도 있다.
컴퓨터(1102)는 하나 이상의 네트워크 및/또는 다른 컴퓨터들에 대한 유선/무선 통신 서브시스템(1142)을 통한 논리 접속을 이용하여 네트워크화된 환경(예컨대, IP)에서 동작할 수 있다. 다른 컴퓨터들은 워크스테이션, 서버, 라우터, 퍼스널 컴퓨터, 마이크로프로세서 기반 엔터테인먼트 장치, 피어 장치 또는 다른 일반 네트워크 노드를 포함할 수 있으며, 통상적으로 컴퓨터(1102)와 관련하여 설명된 요소들 중 다수 또는 모두를 포함한다. 논리 접속들은 근거리 네트워크(LAN), 광역 네트워크(WAN), 핫스팟 등에 대한 유선/무선 접속을 포함할 수 있다. LAN 및 WAN 네트워킹 환경들은 사무실들 및 회사들에서 일반적이고, 인트라넷과 같은 전사적 컴퓨터 네트워크(enterprise-wide computer network)를 용이하게 하며, 이들 모두는 인터넷과 같은 글로벌 통신 네트워크에 접속될 수 있다.
네트워킹 환경에서 사용될 때, 컴퓨터(1102)는 유선/무선 통신 서브시스템(1142)(예컨대, 네트워크 인터페이스 어댑터, 온보드 송수신기 서브시스템 등)을 통해 네트워크에 접속하여, 유선/무선 네트워크, 유선/무선 프린터, 유선/무선 입력 장치(1144) 등과 통신한다. 컴퓨터(1102)는 모뎀을 포함할 수 있거나, 네트워크를 통해 통신을 설정하기 위한 다른 수단을 구비한다. 네트워크화된 환경에서, 컴퓨터(1102)와 관련된 프로그램들 및 데이터는 분산 시스템과 관련되는 바와 같이 원격 메모리/저장 장치에 저장될 수 있다. 도시된 네트워크 접속들은 예시적이며, 컴퓨터들 사이에 통신 링크를 설정하기 위한 다른 수단들이 사용될 수 있다는 것을 알 것이다.
컴퓨터(1102)는 예를 들어 프린터, 스캐너, 데스크톱 및/또는 휴대용 컴퓨터, 개인용 휴대 단말기(PDA), 통신 위성, 무선 검출 가능한 태그와 관련된 임의의 장비 또는 장소(예컨대, 키오스크, 뉴스 스탠드, 휴게실), 및 전화와 무선 통신(예를 들어, IEEE 802.11 무선 변조 기술들)하도록 동작 가능하게 배치된 무선 장치들과 같은 유선/무선 장치들 또는 엔티티들과 표준들의 IEEE 802.xx 패밀리와 같은 무선 기술들을 이용하여 통신하도록 동작할 수 있다. 이것은 적어도 핫스팟을 위한 Wi-Fi(즉, Wireless Fidelity), WiMax 및 BluetoothTM 무선 기술들을 포함한다. 따라서, 통신들은 통상의 네트워크에서와 같은 사전 정의된 구조 또는 적어도 2개의 장치 사이의 애드혹 통신일 수 있다. Wi-Fi 네트워크는 IEEE 802.11x(a, b, g 등)라고 하는 무선 기술들을 이용하여, 안전하고, 신뢰성 있고, 빠른 무선 접속을 제공한다. Wi-Fi 네트워크는 컴퓨터들을 서로, 인터넷에 그리고 (IEEE 802.3 관련 매체 및 기능을 이용하는) 유선 네트워크에 접속하는 데 사용될 수 있다.
예시된 양태들은 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 소정의 태스크가 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및/또는 원격 저장 및/또는 메모리 시스템에 위치할 수 있다.
이제, 도 12를 참조하면, 플러그인 격리의 프로그램 관리를 위한 컴퓨팅 환경(1200)의 개략 블록도가 도시되어 있다. 환경(1200)은 하나 이상의 클라이언트(들)(1202)를 포함한다. 클라이언트(들)(1202)는 하드웨어 및/또는 소프트웨어(예컨대, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 클라이언트(들)(1202)는 예를 들어 쿠키(들) 및/또는 관련 상황 정보를 포함할 수 있다.
환경(1200)은 또한 하나 이상의 서버(들)(1204)를 포함한다. 서버(들)(1204)도 하드웨어 및/또는 소프트웨어(예컨대, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 서버들(1204)은 예를 들어 아키텍처를 이용하여 변환을 수행하기 위한 스레드들을 포함할 수 있다. 클라이언트(1202)와 서버(1204) 사이의 하나의 가능한 통신은 둘 이상의 컴퓨터 프로세스 사이에서 전송되도록 적응되는 데이터 패킷의 형태일 수 있다. 데이터 패킷은 예를 들어 쿠키 및/또는 관련 상황 정보를 포함할 수 있다. 환경(1200)은 클라이언트(들)(1202)와 서버(들)(1204) 사이의 통신을 용이하게 하는 데 사용될 수 있는 통신 프레임워크(1206)(예컨대, 인터넷과 같은 글로벌 통신 네트워크)를 포함한다.
통신은 유선(광섬유 포함) 및/또는 무선 기술을 통해 용이해질 수 있다. 클라이언트(들)(1202)는 클라이언트(들)(1202)에 국한된 정보(예컨대, 쿠키(들) 및/또는 관련 상황 정보)를 저장하는 데 사용될 수 있는 하나 이상의 클라이언트 데이터 저장소(들)(1208)에 동작적으로 접속된다. 유사하게, 서버(들)(1204)는 서버들(1204)에 국한된 정보를 저장하는 데 사용될 수 있는 하나 이상의 서버 데이터 저장소(들)(1210)에 동작적으로 접속된다.
전술한 설명은 개시되는 아키텍처의 예들을 포함한다. 물론, 컴포넌트들 및/또는 방법들의 모든 구상 가능한 조합을 설명하는 것을 불가능하지만, 이 분야의 통상의 기술자는 많은 추가 조합들 및 교환들이 가능하다는 것을 인식할 수 있다. 따라서, 새로운 아키텍처는 첨부된 청구항들의 사상 및 범위 내에 속하는 모든 그러한 변경, 수정 및 변형을 포함하는 것을 의도한다. 더욱이, "includes"라는 용어가 상세한 설명 또는 청구항들에서 사용되는 한도에서, 그러한 용어는 "comprising"이 청구항에서 전이어로서 사용될 때 해석되는 바와 같이 "comprising"이라는 용어와 유사한 방식으로 포괄적인 것을 의도한다.

Claims (15)

  1. 컴퓨터 구현 프로그램 관리 시스템(100)으로서,
    애플리케이션과 함께 실행할 보조 코드를 수신하기 위한 인터페이스 컴포넌트(102);
    상기 보조 코드를 수신하고, 상기 보조 코드를 하나 이상의 격리 레벨을 이용하여 격리된 환경 내에 안전하게 격리하기 위한 격리 컴포넌트(108); 및
    비정상적인 실행 거동에 부분적으로 기초하여 상기 격리된 환경에서 상기 보조 코드의 실행을 모니터링하고 관리하기 위한 관리 컴포넌트(112)
    를 포함하는 컴퓨터 구현 프로그램 관리 시스템.
  2. 제1항에 있어서, 상기 보조 코드는 서버 애플리케이션인 상기 애플리케이션과 함께 실행하기 위해 수신된 제삼자 플러그인이고, 상기 격리 컴포넌트는 상기 보조 코드가 격리된 실행을 위해 전송되는 샌드박스 서버의 일부인 컴퓨터 구현 프로그램 관리 시스템.
  3. 제1항에 있어서, 상기 하나 이상의 격리 레벨은 머신 격리 레벨, 프로세스 격리 레벨 또는 애플리케이션 도메인 코드 액세스 격리 레벨 중 적어도 하나를 포함하는 컴퓨터 구현 프로그램 관리 시스템.
  4. 제1항에 있어서, 상기 인터페이스 컴포넌트는 상기 보조 코드로부터의 호출들이 상기 애플리케이션으로 지향되는 것을 보증하는 컴퓨터 구현 프로그램 관리 시스템.
  5. 제1항에 있어서, 상기 관리 컴포넌트는 상기 비정상적인 실행 거동에 응답하여 적용된 페널티 포인트들의 누적 합계에 기초하여 상기 보조 코드를 디스에이블함으로써 상기 보조 코드의 실행을 중지하는 컴퓨터 구현 프로그램 관리 시스템.
  6. 제1항에 있어서, 상기 비정상적인 실행 거동에 기초하여 상기 보조 코드에 의해 누적된 페널티 포인트들을 추적하기 위한 페널티 컴포넌트를 더 포함하는 컴퓨터 구현 프로그램 관리 시스템.
  7. 제1항에 있어서, 증가된 실행 부하에 기초하여 하나 이상의 현존하는 격리 컴포넌트를 선택하기 위한 부하 관리 컴포넌트를 더 포함하는 컴퓨터 구현 프로그램 관리 시스템.
  8. 실행할 보조 코드를 수신하는 단계(500);
    상기 보조 코드를 실행을 위해 격리된 환경으로 전송하는 단계(502);
    상기 격리된 환경에서 상기 보조 코드를 실행하는 단계(504);
    비정상적인 실행 거동에 대해 상기 보조 코드의 실행을 모니터링하는 단계(506); 및
    상기 비정상적인 실행 거동에 기초하여 상기 보조 코드의 실행을 관리하는 단계(508)
    를 포함하는 컴퓨터 구현 프로그램 관리 방법.
  9. 제8항에 있어서,
    상기 비정상적인 실행 거동에 기초하여 페널티 포인트들을 적용하고 누적시키는 단계; 및
    페널티 포인트들의 소정 임계치에 대해 상기 보조 코드의 실행을 중지시키는 단계
    를 더 포함하는 컴퓨터 구현 프로그램 관리 방법.
  10. 제9항에 있어서, 상기 페널티 포인트들은 상기 보조 코드의 실행시의 에러들과 관련된 비정상적인 거동에 기초하는 컴퓨터 구현 프로그램 관리 방법.
  11. 제8항에 있어서, 페널티 포인트들의 소정 임계치에 대해 상기 보조 코드의 등록을 금지하는 단계를 더 포함하는 컴퓨터 구현 프로그램 관리 방법.
  12. 제8항에 있어서, 상기 보조 코드가 디스에이블된 횟수에 기초하여 상기 보조 코드를 관리하는 단계를 더 포함하는 컴퓨터 구현 프로그램 관리 방법.
  13. 제8항에 있어서, 실행되었거나 실행되고 있는 조직으로부터의 현존 보조 코드에 대해 누적된 페널티 포인트들에 기초하여 상기 조직으로부터의 새로운 보조 코드의 등록을 금지하는 단계를 더 포함하는 컴퓨터 구현 프로그램 관리 방법.
  14. 제8항에 있어서, 오동작하는 보조 코드를 제공하는 게시자의 이력에 기초하여 상기 게시자로부터의 보조 코드가 실행되는 것을 차단하는 단계를 더 포함하는 컴퓨터 구현 프로그램 관리 방법.
  15. 제8항에 있어서, 부하 균형화 데이터에 기초하여 다수의 샌드박스 서버 중에서 샌드박스 서버를 선택하는 단계를 더 포함하는 컴퓨터 구현 프로그램 관리 방법.
KR1020117012044A 2008-12-02 2009-11-02 플러그인들의 샌드박스 실행 기법 KR101652135B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/326,114 2008-12-02
US12/326,114 US8745361B2 (en) 2008-12-02 2008-12-02 Sandboxed execution of plug-ins

Publications (2)

Publication Number Publication Date
KR20110093816A true KR20110093816A (ko) 2011-08-18
KR101652135B1 KR101652135B1 (ko) 2016-08-29

Family

ID=42223846

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117012044A KR101652135B1 (ko) 2008-12-02 2009-11-02 플러그인들의 샌드박스 실행 기법

Country Status (12)

Country Link
US (3) US8745361B2 (ko)
EP (1) EP2356578A4 (ko)
JP (1) JP2012510679A (ko)
KR (1) KR101652135B1 (ko)
CN (1) CN102232217B (ko)
AU (1) AU2009322881B2 (ko)
BR (1) BRPI0920054A2 (ko)
CA (1) CA2742121A1 (ko)
IL (1) IL212332A0 (ko)
MX (1) MX2011005834A (ko)
RU (1) RU2011122280A (ko)
WO (1) WO2010065222A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160009663A (ko) * 2013-05-20 2016-01-26 미쓰비시덴키 가부시키가이샤 감시 제어 장치

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418040B2 (en) * 2005-07-07 2016-08-16 Sciencelogic, Inc. Dynamically deployable self configuring distributed network management system
US8856782B2 (en) 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
FR2940695B1 (fr) * 2008-12-30 2012-04-20 Eads Secure Networks Serveur passerelle a micronoyau
CN101510167B (zh) * 2009-03-31 2016-04-20 阿里巴巴集团控股有限公司 一种插件运行的方法、装置及系统
US9762701B1 (en) * 2009-04-10 2017-09-12 Open Invention Network Llc System and method for cached streaming application isolation
US8839422B2 (en) 2009-06-30 2014-09-16 George Mason Research Foundation, Inc. Virtual browsing environment
US20110154214A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems
US9009697B2 (en) 2011-02-08 2015-04-14 International Business Machines Corporation Hybrid cloud integrator
US9063789B2 (en) 2011-02-08 2015-06-23 International Business Machines Corporation Hybrid cloud integrator plug-in components
US9128773B2 (en) 2011-02-25 2015-09-08 International Business Machines Corporation Data processing environment event correlation
US9053580B2 (en) 2011-02-25 2015-06-09 International Business Machines Corporation Data processing environment integration control interface
US9104672B2 (en) * 2011-02-25 2015-08-11 International Business Machines Corporation Virtual security zones for data processing environments
US8988998B2 (en) 2011-02-25 2015-03-24 International Business Machines Corporation Data processing environment integration control
CN102184356B (zh) * 2011-04-21 2014-04-02 奇智软件(北京)有限公司 利用沙箱技术进行防御的方法、装置及安全浏览器
CN103942488B (zh) * 2011-04-21 2017-06-23 北京奇虎科技有限公司 利用沙箱技术进行防御的方法、装置及安全浏览器
CN103514401A (zh) * 2011-04-21 2014-01-15 北京奇虎科技有限公司 利用沙箱技术进行防御的方法、装置及安全浏览器
US20130167028A1 (en) * 2011-06-01 2013-06-27 Adobe Systems Incorporated Restricting media content rendering
US8973158B2 (en) 2011-07-20 2015-03-03 Microsoft Technology Licensing Llc Trust level activation
US9081959B2 (en) 2011-12-02 2015-07-14 Invincea, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
CN104021168B (zh) * 2011-12-28 2017-06-16 北京奇虎科技有限公司 一种浏览网页的方法及装置
CN102436507B (zh) * 2011-12-28 2014-07-16 奇智软件(北京)有限公司 一种浏览网页的方法及装置
CN104021167B (zh) * 2011-12-28 2017-06-16 北京奇虎科技有限公司 一种浏览网页的方法及装置
US9336061B2 (en) 2012-01-14 2016-05-10 International Business Machines Corporation Integrated metering of service usage for hybrid clouds
US8799988B2 (en) * 2012-01-25 2014-08-05 Microsoft Corporation Document communication runtime interfaces
CN103955468B (zh) * 2012-03-06 2017-12-19 北京奇虎科技有限公司 基于浏览器的文档展示方法及装置
CN102622439B (zh) * 2012-03-06 2014-06-11 北京奇虎科技有限公司 一种在浏览器中展示文档的方法及装置
CN102663283B (zh) * 2012-03-20 2016-02-10 浪潮电子信息产业股份有限公司 一种动态隔离计算机系统的方法
US10740765B1 (en) 2012-05-23 2020-08-11 Amazon Technologies, Inc. Best practice analysis as a service
US8769059B1 (en) * 2012-05-23 2014-07-01 Amazon Technologies, Inc. Best practice analysis, third-party plug-ins
US8954574B1 (en) 2012-05-23 2015-02-10 Amazon Technologies, Inc. Best practice analysis, migration advisor
US9626710B1 (en) 2012-05-23 2017-04-18 Amazon Technologies, Inc. Best practice analysis, optimized resource use
US9003479B2 (en) * 2012-12-11 2015-04-07 International Business Machines Corporation Uniformly transforming the characteristics of a production environment
US9197446B2 (en) * 2012-12-12 2015-11-24 Google Inc. Address pinning
CN102982169B (zh) * 2012-12-12 2017-05-24 北京奇虎科技有限公司 用于隔离网页插件的浏览器和方法
CN103064709B (zh) * 2012-12-25 2016-11-09 北京奇虎科技有限公司 浏览器活动对象的执行方法、系统及浏览器
US9740390B2 (en) * 2013-03-11 2017-08-22 Spikes, Inc. Dynamic clip analysis
CN104063284B (zh) * 2013-03-18 2016-07-06 腾讯科技(深圳)有限公司 运行应用程序的方法和装置
US9292525B2 (en) * 2013-06-19 2016-03-22 BlackBerry Limited; 2236008 Ontario Inc. Searching data using pre-prepared search data
CN103617092A (zh) * 2013-11-21 2014-03-05 北京奇虎科技有限公司 一种基于浏览器的插件运行方法和装置
US9697374B2 (en) * 2014-02-19 2017-07-04 Microsoft Technology Licensing, Llc Data proxy service
US9811393B2 (en) * 2014-05-29 2017-11-07 Apple Inc. Consistent extension points to allow an extension to extend functionality of an application to another application
CN104536776B (zh) * 2014-11-28 2018-11-23 百度在线网络技术(北京)有限公司 一种在宿主端插件运行环境中运行插件应用的方法与装置
WO2016106510A1 (zh) * 2014-12-29 2016-07-07 华为技术有限公司 一种安全防护方法,及装置
US10230750B2 (en) * 2015-06-08 2019-03-12 Securboration, Inc. Secure computing environment
RU2618947C2 (ru) * 2015-06-30 2017-05-11 Закрытое акционерное общество "Лаборатория Касперского" Способ предотвращения работы программ, содержащих нежелательный для пользователя функционал
US11637866B2 (en) * 2015-10-28 2023-04-25 Qomplx, Inc. System and method for the secure evaluation of cyber detection products
CN105302563B (zh) * 2015-11-09 2019-09-17 歌尔股份有限公司 移动应用服务的插件化方法及系统
US10021120B1 (en) * 2015-11-09 2018-07-10 8X8, Inc. Delayed replication for protection of replicated databases
CN105760755B (zh) * 2016-02-24 2018-06-19 浪潮通用软件有限公司 一种Visual Studio扩展包的隔离方法
US9665714B1 (en) * 2016-05-31 2017-05-30 AO Kaspersky Lab System and method of detecting malicious files on virtual machines in a distributed network
RU2638000C1 (ru) 2017-02-08 2017-12-08 Акционерное общество "Лаборатория Касперского" Способ контроля системы исполнения программируемого логического контроллера
US11423140B1 (en) * 2017-03-27 2022-08-23 Melih Abdulhayoglu Auto-containment of guest user applications
US10951644B1 (en) 2017-04-07 2021-03-16 Comodo Security Solutions, Inc. Auto-containment of potentially vulnerable applications
US20190138712A1 (en) * 2017-05-31 2019-05-09 Adnomus, Inc. Systems and methods for real-time data processing analytics engine with adaptive component services
CN107395650B (zh) * 2017-09-07 2020-06-09 杭州安恒信息技术股份有限公司 基于沙箱检测文件识别木马回连方法及装置
CN107968721B (zh) * 2017-11-02 2020-09-11 江苏神州信源系统工程有限公司 针对服务器主动放行的方法、网络管控系统及被管控终端
TWI683264B (zh) * 2017-11-23 2020-01-21 兆豐國際商業銀行股份有限公司 監控管理系統及同步訊息定義檔的方法
CN108647513B (zh) * 2018-03-22 2020-04-28 华中科技大学 一种基于TrustZone的共享库安全隔离方法及系统
US10908948B2 (en) * 2018-04-04 2021-02-02 Vmware, Inc Multiple application instances in operating systems that utilize a single process for application execution
CN109325345B (zh) * 2018-09-21 2022-10-28 百度在线网络技术(北京)有限公司 用于在沙盒环境中运行第三方代码的方法和装置
US10942945B2 (en) * 2018-10-19 2021-03-09 Oracle International Corporation Isolated hierarchical runtime environments for multi-tenant databases
CN110324486A (zh) * 2019-04-25 2019-10-11 维沃移动通信有限公司 一种应用程序控制方法及终端
US11321101B2 (en) * 2019-07-10 2022-05-03 Vmware, Inc. Deployment and isolation of plugins in a virtualized computing environment
EP3786826A1 (en) * 2019-08-30 2021-03-03 Barclays Execution Services Limited Secure validation pipeline in a third party cloud environment
US11886587B2 (en) 2020-10-13 2024-01-30 Kyndryl, Inc Malware detection by distributed telemetry data analysis
US11487870B1 (en) * 2021-04-30 2022-11-01 Snowflake Inc. Logging from user-defined functions
CN113656092B (zh) * 2021-07-29 2024-04-19 浙江中控信息产业股份有限公司 一种基于插件式的scada系统驱动协议高效管理方法
US20230315836A1 (en) * 2022-03-29 2023-10-05 International Business Machines Corporation Software discovery within software packaging and deployment systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167522A (en) * 1997-04-01 2000-12-26 Sun Microsystems, Inc. Method and apparatus for providing security for servers executing application programs received via a network
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6836888B1 (en) * 2000-03-17 2004-12-28 Lucent Technologies Inc. System for reverse sandboxing
GB0007063D0 (en) * 2000-03-23 2000-05-10 Simsci Limited Mulitvariate statistical process monitors
US7461148B1 (en) 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with isolation of system components
EP1233333A1 (en) * 2001-02-19 2002-08-21 Hewlett-Packard Company Process for executing a downloadable service receiving restrictive access rights to al least one profile file
US7228551B2 (en) * 2001-06-11 2007-06-05 Microsoft Corporation Web garden application pools having a plurality of user-mode web applications
US7392546B2 (en) * 2001-06-11 2008-06-24 Bea Systems, Inc. System and method for server security and entitlement processing
EP1271310B1 (de) * 2001-06-26 2003-02-05 Aladdin Knowledge Systems GmbH& Co. KG Verfahren zum Erweitern einer mittels eines Installationsprogramms zu installierenden Anwendung um eine Funktion und Computerprogrammprodukt
WO2003054704A1 (en) * 2001-12-19 2003-07-03 Netuitive Inc. Method and system for analyzing and predicting the behavior of systems
WO2003060707A1 (en) 2002-01-11 2003-07-24 Akamai Technologies, Inc. Java application framework for use in a content delivery network (cdn)
US20040123117A1 (en) * 2002-12-18 2004-06-24 Symantec Corporation Validation for behavior-blocking system
US10110632B2 (en) * 2003-03-31 2018-10-23 Intel Corporation Methods and systems for managing security policies
US7493614B2 (en) * 2003-03-31 2009-02-17 Microsoft Corporation System architecture and related methods for dynamically adding software components to extend functionality of system processes
US7508532B2 (en) * 2003-05-20 2009-03-24 Microsoft Corporation Method and system for sandboxing printer drivers
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7444678B2 (en) * 2003-10-28 2008-10-28 Aol Llc Securing resources from untrusted scripts behind firewalls
US20050177635A1 (en) * 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US7490268B2 (en) * 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7908653B2 (en) * 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US7630313B2 (en) * 2004-09-30 2009-12-08 Alcatel-Lucent Usa Inc. Scheduled determination of network resource availability
US7519809B2 (en) * 2005-04-07 2009-04-14 International Business Machines Corporation Operating system-wide sandboxing via switchable user skins
US20070118609A1 (en) 2005-11-23 2007-05-24 France Telecom Distributed computing architecture and associated method of providing a portable user environment
US7941813B1 (en) 2006-02-17 2011-05-10 Parallels Holdings, Ltd. System and method for using virtual machine for driver installation sandbox
US8448242B2 (en) * 2006-02-28 2013-05-21 The Trustees Of Columbia University In The City Of New York Systems, methods, and media for outputting data based upon anomaly detection
US7849451B2 (en) 2006-03-02 2010-12-07 Oracle America Inc. Dynamic delegation chain for runtime adaptation of a code unit to an environment
US7725922B2 (en) * 2006-03-21 2010-05-25 Novell, Inc. System and method for using sandboxes in a managed shell
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US7747785B2 (en) * 2006-04-14 2010-06-29 Microsoft Corporation Instant messaging plug-ins
US7979891B2 (en) * 2006-05-09 2011-07-12 Oracle International Corporation Method and system for securing execution of untrusted applications
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US8656461B2 (en) * 2006-07-28 2014-02-18 Microsoft Corporation Copy-paste trust system
US20080070665A1 (en) * 2006-09-19 2008-03-20 Cyberscan Technology, Inc. Regulated gaming - compartmented freelance code
US7845006B2 (en) * 2007-01-23 2010-11-30 International Business Machines Corporation Mitigating malicious exploitation of a vulnerability in a software application by selectively trapping execution along a code path
US8146109B2 (en) * 2007-02-15 2012-03-27 Microsoft Corporation Version resiliency for a host application and custom code
JP5081480B2 (ja) * 2007-03-28 2012-11-28 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
US7899762B2 (en) * 2007-05-17 2011-03-01 International Business Machines Corporation Apparatus, method, and computer program product providing improved identification of suspect entries in transaction data
US20090049547A1 (en) * 2007-08-13 2009-02-19 Yuan Fan System for real-time intrusion detection of SQL injection web attacks
US8316101B2 (en) * 2008-03-15 2012-11-20 Microsoft Corporation Resource management system for hosting of user solutions
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8214364B2 (en) * 2008-05-21 2012-07-03 International Business Machines Corporation Modeling user access to computer resources
US20090293121A1 (en) * 2008-05-21 2009-11-26 Bigus Joseph P Deviation detection of usage patterns of computer resources
US9098698B2 (en) * 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
US9003517B2 (en) 2009-10-28 2015-04-07 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US8621619B2 (en) 2009-12-03 2013-12-31 Google Inc. Dynamic code insertion for static analysis based sandboxes
US8479286B2 (en) 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160009663A (ko) * 2013-05-20 2016-01-26 미쓰비시덴키 가부시키가이샤 감시 제어 장치

Also Published As

Publication number Publication date
CN102232217A (zh) 2011-11-02
EP2356578A1 (en) 2011-08-17
US20100138639A1 (en) 2010-06-03
AU2009322881B2 (en) 2014-07-24
CN102232217B (zh) 2015-02-04
US10542022B2 (en) 2020-01-21
WO2010065222A1 (en) 2010-06-10
KR101652135B1 (ko) 2016-08-29
US8745361B2 (en) 2014-06-03
EP2356578A4 (en) 2012-09-05
CA2742121A1 (en) 2010-06-10
BRPI0920054A2 (pt) 2015-12-15
US20140245437A1 (en) 2014-08-28
IL212332A0 (en) 2011-06-30
AU2009322881A1 (en) 2010-06-10
MX2011005834A (es) 2011-06-21
JP2012510679A (ja) 2012-05-10
RU2011122280A (ru) 2012-12-10
US9705905B2 (en) 2017-07-11
US20180027007A1 (en) 2018-01-25

Similar Documents

Publication Publication Date Title
US10542022B2 (en) Sandboxed execution of plug-ins
US10885189B2 (en) Isolated container event monitoring
US11102215B2 (en) Graphical user interface privacy, security and anonymization
US7379918B2 (en) Method and system for single reactivation of software product licenses
US8799985B2 (en) Automated security classification and propagation of virtualized and physical virtual machines
US20130160108A1 (en) Extensible and/or distributed authorization system and/or methods of providing the same
WO2015074512A1 (zh) 一种访问物理资源的方法和装置
US10353786B2 (en) Virtualization substrate management device, virtualization substrate management system, virtualization substrate management method, and recording medium for recording virtualization substrate management program
US20190325133A1 (en) Protecting a Computer Device From Escalation of Privilege Attacks
US11720712B2 (en) Managing registry access on a computer device
US9349012B2 (en) Distributed processing system, distributed processing method and computer-readable recording medium
GB2515736A (en) Controlling access to one or more datasets of an operating system in use
US20180260563A1 (en) Computer system for executing analysis program, and method of monitoring execution of analysis program
US11989303B2 (en) Secure boot partition for cloud compute nodes
US20230063458A1 (en) Restricted operations due to attachment of compute instances owned by different tenancies
JP2014225302A (ja) ウイルス検出プログラム、ウイルス検出方法、及びコンピュータ
WO2022255005A1 (ja) 監視システム、監視方法、監視装置および機能制限装置
US12032935B2 (en) Enforcement of environmental conditions for cloud applications
US11496482B2 (en) Methods and systems for memory tracing in asset management systems
US20230342125A1 (en) Enforcement of environmental conditions for cloud applications
US8214499B2 (en) System and method for enabling software applications as a service in a non-intrusive manner
US8332940B2 (en) Techniques for securing a computing environment

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 4