KR101730984B1 - 다수의 동작 모드들을 가진 애플리케이션용 데이터 관리 - Google Patents

다수의 동작 모드들을 가진 애플리케이션용 데이터 관리 Download PDF

Info

Publication number
KR101730984B1
KR101730984B1 KR1020157031149A KR20157031149A KR101730984B1 KR 101730984 B1 KR101730984 B1 KR 101730984B1 KR 1020157031149 A KR1020157031149 A KR 1020157031149A KR 20157031149 A KR20157031149 A KR 20157031149A KR 101730984 B1 KR101730984 B1 KR 101730984B1
Authority
KR
South Korea
Prior art keywords
application
mobile device
mode
data
version
Prior art date
Application number
KR1020157031149A
Other languages
English (en)
Other versions
KR20160019410A (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
Priority claimed from US13/886,889 external-priority patent/US9280377B2/en
Priority claimed from US14/021,227 external-priority patent/US10284627B2/en
Application filed by 사이트릭스 시스템스, 인크. filed Critical 사이트릭스 시스템스, 인크.
Publication of KR20160019410A publication Critical patent/KR20160019410A/ko
Application granted granted Critical
Publication of KR101730984B1 publication Critical patent/KR101730984B1/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/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • H04W12/084Access security using delegated authorisation, e.g. open authorisation [OAuth] protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • H04W12/088Access security using filters or firewalls
    • H04W4/001
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

다수의 모드들을 가진 애플리케이션을 관리하기 위한 방법 및 시스템이 개시된다. 모바일 디바이스를 관리하는 디바이스 관리자(device manager)는 모바일 디바이스를 모니터링할 수 있다. 디바이스 관리자는 관리 모드(managed mode)(또는 다수의 관리 모드들) 및 비관리 모드(unmanaged mode)로 실행되는 제 1 타입의 애플리케이션이 모바일 디바이스상에 설치됨을 검출할 수 있다. 애플리케이션이 디바이스에서 실행될 때, 애플리케이션은, 예컨대, 위치, 사용자, 역할, 업계 입지(industry presence) 또는 다른 미리 정의된 컨텍스트에 기초하여, 선택된 애플리케이션 모드 따라 실행된다.

Description

다수의 동작 모드들을 가진 애플리케이션용 데이터 관리{DATA MANAGEMENT FOR AN APPLICATION WITH MULTIPLE OPERATION MODES}
[001] 본 출원은 "Data Management for an Application with Multiple Operation Modes"란 명칭으로 2013년 9월 9일에 출원된 미국 출원 일련번호 제 14/021,227호"의 우선권을 주장하며, 이어서 이 출원은 "Policy-Based Application Management"란 명칭으로 2013년 8월 2일에 출원된 가출원 제61/861,736호, "Data Management for an Application with Multiple Operation Modes"란 명칭으로 2013년 8월 2일에 출원된 가출원 제61/861,758호 및 "Systems and Methods for Enterprise Mobility Management"란 명칭으로 2013년 3월 29일에 출원된 가출원 제61/806,557호의 우선권을 주장하며 "Application with Multiple Operation Modes"란 명칭으로 2013년 5월 2일에 출원된 미국 특허 출원번호 제 13/886,889호의 일부 계속 출원이며, 이들 출원 각각은 그 전체가 인용에 의해 본원에 통합된다.
[002] 모바일 컴퓨팅 디바이스들의 사용이 계속 증가하고 있다. 특히, 비지니스 및 다른 기업들은 개인들이 다양한 기업 자원들에 원격적으로 액세스하도록 하기 위하여 모바일 컴퓨팅 디바이스들에 의존해 오고 있었다. 이러한 자원들은 예컨대 전자 메일 서비스들, 파일 서비스들, 데이터, 및 기업의 컴퓨터 시스템들에 의해 제공되는 다른 전자 자원들을 포함할 수 있다.
[003] 이러한 비지니스적 용도의 위반 행위로, 개인들은 그들의 모바일 컴퓨팅 디바이스들을 비지니스 수단 및 개인용 수단 모두로 사용하기 시작했다. 예컨대, 기업의 종업원은 동일한 모바일 컴퓨팅 디바이스로 기업의 이메일 계정 및 개인 이메일 계정에 액세스할 수 있다. 따라서, 모바일 컴퓨팅 디바이스의 특정 기능은 비즈니스적 측면 및 개인적 측면을 공유할 수 있다. 그러나, 비즈니스 정보는 종종 보안 통신 및 저장을 요구한다. 부가적으로, 모바일 디바이스에 저장된 비즈니스 정보는 관리를 필요로 할 수 있다. 따라서, 디바이스 관리자가 모바일 디바이스에 저장된 정보를 관리하는 것이 요구된다.
[004] 하기 설명은 본원에서 설명된 다양한 양상들의 간략화된 요약을 제시한다. 이러한 요약은 포괄적인 개요가 아니며, 중요하거나 핵심적인 엘리먼트들을 식별하거나, 청구항들의 범위를 서술하고자 할 의도도 아니다. 이하의 요약은 단순히 이하에서 제공된 더욱 상세한 설명을 소개하기 위한 서두로서 일부 개념들을 간략화된 형태로 제시한다.
[005] 다수의 동작 모드들을 가진 애플리케이션을 관리하기 위한 방법 및 시스템이 본원에서 설명된다. 모바일 디바이스를 관리하는 디바이스 관리자는 모바일 디바이스를 모니터링할 수 있다. 디바이스 관리자는 비관리 모드(unmanaged mode) 및 관리 모드(managed mode)로 실행되는 미리 결정된 타입의 애플리케이션이 모바일 디바이스상에 설치됨을 검출할 수 있다. 동작 모드는 디바이스 컨텍스트(device context) 또는 디바이스 관련 정보(device-related information)에 기초할 수 있다. 예컨대, 애플리케이션은 사용자 크리덴셜(user credential)들이 신뢰성이 있는 사용자로서 사용자를 인증할 때 제 1 관리 모드로 실행될 수 있고, 그렇지 않은 경우 애플리케이션은 제 2 덜 보안적인 모드(less-secure mode)로 실행될 수 있다. 동작 모드는 또한 디바이스의 물리적 위치, 네트워크 위치, 사용자 크리덴셜들, 사용자 역할(user roles)들, 위치 타입(location types)들(예컨대, 직장 환경 타입들로서 또한 지칭되는, 헬스케어, 금융 기관, 학교, 정부 기관들 등) 등에 기초하여 선택될 수 있다. 애플리케이션은 3가지 이상의 동작 모드로 실행가능할 수 있고, 액세스, 보안, 자원 등의 여러 레벨을 제공하는 다수의 상이한 관리 모드들로 실행가능할 수 있다.
[006] 이들 및 추가적인 양상들은 이하에서 더 상세하게 논의되는 개시내용들의 장점과 함께 인식될 것이다.
[007] 본원에서 설명되는 양상들 및 이의 장점들의 더 완전한 이해는 첨부 도면들을 고려하여 하기의 설명을 참조함으로써 획득될 수 있으며, 첨부 도면들에서 유사한 참조 번호는 유사한 특징을 표시한다.
[008] 도 1은 예시적인 실시예에 따라 사용될 수 있는 예시적인 컴퓨터 시스템 아키텍처를 도시한 것이다.
[009] 도 2는 예시적인 실시예에 따라 사용될 수 있는 예시적인 원격-액세스 시스템 아키텍처를 도시한 것이다.
[0010] 도 3은 예시적인 실시예에 따라 사용될 수 있는 예시적인 가상화 (하이퍼바이저(hypervisor)) 시스템 아키텍처를 도시한 것이다.
[0011] 도 4는 예시적인 실시예에 따라 사용될 수 있는 예시적인 클라우드 기반의 시스템 아키텍처를 도시한 것이다.
[0012] 도 5는 예시적인 실시예에 따라 사용될 수 있는 예시적인 기업 모빌리티 관리 시스템(enterprise mobility management system)을 도시한 것이다.
[0013] 도 6은 예시적인 실시예에 따라 사용될 수 있는 다른 예시적인 기업 모빌리티 관리 시스템을 도시한 것이다.
[0014] 도 7은 예시적인 실시예에 따른 모바일 디바이스의 샘플 인터페이스(sample interface)를 도시한 것이다.
[0015] 도 8은 예시적인 실시예에 따른 애플리케이션에 대한 애플리케이션 모드를 결정하는 것을 설명하기 위한 순서도이다.
[0016] 도 9는 예시적인 실시예에 따른 애플리케이션에 대한 계정 타입 컨텍스트(account type context)를 결정하는 것을 설명하기 위한 순서도이다.
[0017] 도 10은 예시적인 실시예에 따른 애플리케이션에 대한 위치 컨텍스트(location context)를 결정하는 것을 설명하기 위한 순서도이다.
[0018] 도 11은 예시적인 실시예에 따른 애플리케이션에 대한 미리 결정된 애플리케이션 상태 컨텍스트(predetermine application status context)를 결정하는 것을 설명하기 위한 순서도이다.
[0019] 도 12는 예시적인 실시예에 따른 애플리케이션에 대한 네트워크 연결 컨텍스트(network connection context)를 결정하는 것을 설명하기 위한 순서도이다.
[0020] 도 13은 예시적인 실시예에 따른 애플리케이션에 대한 세팅 컨텍스트(settings context)를 결정하는 것을 설명하기 위한 순서도이다.
[0021] 도 14는 예시적인 실시예에 따른 애플리케이션에 대한 애플리케이션 모드를 전환하는 것을 설명하기 위한 순서도이다.
[0022] 도 15는 예시적인 실시예에 따른 다수의 동작 모드들로 애플리케이션을 관리하는 것을 설명하기 위한 순서도이다.
[0023] 도 16은 예시적인 실시예에 따른 멀티-모드 애플리케이션을 관리하는 것을 설명하기 위한 순서도이다.
[0024] 도 17은 예시적인 실시예에 따른 앱 스토어(app store)를 설명하기 위한 순서도이다.
[0025] 다양한 실시예들의 이하의 설명에서는 실시예들의 일부분을 형성하며, 본원에서 설명된 양상들이 실시될 수 있는 예시적인 다양한 실시예들로 도시되는 앞서 식별된 첨부 도면들을 참조한다. 본원에서 설명된 범위로부터 벗어나지 않고, 다른 실시예들이 활용될 수 있고 구성 및 기능이 수정될 수 있다는 것이 이해되어야 한다. 다양한 양상들은 다른 실시예들을 가능하게 하며 다양한 상이한 방식들로 실시되거나 또는 수행될 수 있다.
[0026] 이하에서 더 상세히 설명된 요지에 대한 일반적인 도입부로서, 본원에서 설명된 양상들은 특히 다수의 동작 모드들로 실행될 수 있는 애플리케이션들과 함께 사용되는, 모바일 컴퓨팅 디바이스들의 관리 모바일 애플리케이션들을 사용하여 기업 컴퓨팅 시스템의 자원들에 원격 액세스하는 것을 제어하는 것에 관한 것이다. 액세스 관리자는 기업 자원들에 대한 액세스를 요청하는 모바일 애플리케이션이 그 자체적으로 정확하게 식별되고 모바일 컴퓨팅 디바이스에 설치된 이후에 나중에 변경되지 않았는지의 여부를 결정하는 타당성 검증 프로세스(validation process)를 수행할 수 있다. 이러한 방식으로, 액세스 관리자는 기업 자원에 대한 액세스를 요청하는 모바일 디바이스가 신뢰성을 가질 수 있도록 보장하며 이들 기업 자원들을 보호하기 위하여 사용되는 보안 메커니즘들을 우회(circumvent)하는 것을 시도하지 않는다. 결과적으로, 기업과 연관된 개인들은 사전 승인된 애플리케이션들을 사용하여 그들의 개인 모바일 디바이스들로 기업 자원들을 유리하게 활용할 수 있다.
[0027] 본원에서 사용된 어법 및 전문 용어가 설명을 위한 것이며 제한으로서 간주되지 않아야 한다는 것이 이해되어야 한다. 오히려, 본원에서 사용되는 문구들 및 용어들은 가장 넓게 해석되고 가장 넓은 의미가 부여되어야 한다. "포함하는" 및 "구성하는"과 이의 변형들의 사용은 이후에 리스트되는 항목들 및 이의 균등물들 뿐만아니라 추가 항목들 및 이의 균등물들을 포함하는 것으로 의도된다. 용어들 "장착된", "연결된", "커플링된", "포지셔닝된", "관여된"과 유사한 용어들의 사용은 직접적 및 간접적 장착, 연결, 커플링, 포지셔닝 및 관여를 포함하는 것으로 의도된다.
[0028] 컴퓨팅 아키텍처
[0029] 컴퓨터 소프트웨어, 하드웨어 및 네트워크들은 특히 스탠드얼론(standalone), 네트워크화, 원격-액세스(원격 데이크탑으로도 알려짐), 가상화 및/또는 클라우드-기반 환경들을 비롯하여 다양한 상이한 시스템 환경들에서 활용될 수 있다. 도 1은 스탠드 얼론 및/또는 네트워크화 환경에서, 본원에서 설명된 하나 이상의 예시적인 양상들을 구현하기 위하여 사용될 수 있는 시스템 아키텍처 및/또는 데이터 프로세싱 디바이스의 일례를 예시한다. 다양한 네트워크 노드들(103, 105, 107 및 109)은 광역 통신망(WAN)(101), 예컨대 인터넷을 통해 상호 연결될 수 있다. 사설 인트라넷들, 기업 네트워크들, LAN들, 도시권 통신망(MAN)들, 무선 네트워크들, 개인 네트워크(PAN)들 등을 포함하는 다른 네트워크들이 또한 또는 대안적으로 사용될 수 있다. 네트워크(101)는 예시적 목적이며, 더 적은 수의 컴퓨터 네트워크들로 또는 추가 네트워크들로 대체될 수 있다. 근거리 통신망(LAN)은 임의의 공지된 LAN 토폴로지 중 하나 이상을 가질 수 있으며, 이더넷과 같은 다양한 상이한 프로토콜들 중 하나 이상을 사용할 수 있다. 디바이스들(103, 105, 107, 109) 및 다른 디바이스들(도시안됨)은 트위스트 페어 와이어들, 동축 케이블, 광섬유들, 라디오 파들 또는 다른 통신 매체를 통해 네트워크들 중 하나 이상의 네트워크에 연결될 수 있다.
[0030] 본원에서 사용되고 도면들에 도시된 바와같은 용어 "네트워크"는 원격 저장 디바이스들이 하나 이상의 통신 경로들을 통해 함께 커플링되는 시스템들 뿐만아니라 가끔씩 저장 능력을 가지는 이러한 시스템들에 커플링될 수 있는 스탠드-얼론 디바이스들을 지칭한다. 결과적으로, 용어 "네트워크"는 "물리적 네트워크" 뿐만아니라 "콘텐츠 네트워크"를 포함하며, "콘텐츠 네트워크"는 모든 물리적 네트워크들에 걸쳐 상주하는 데이터로 구성되며, 단일 엔티티로 여겨질 수 있다.
[0031] 컴포넌트들은 데이터 서버(103), 웹 서버(105) 및 클라이언트 컴퓨터들(107, 109)을 포함할 수 있다. 데이터 서버(103)는 본원에서 설명된 하나 이상의 예시적인 양상들을 수행하기 위한 제어 소프트웨어 및 데이터베이스들의 전체 액세스, 제어 및 관리를 제공한다. 데이터 서버(103)는 웹 서버(105)에 연결될 수 있으며, 웹 서버(105)를 통해 사용자들은 요청된 데이터와 상호작용하여 이 데이터를 획득한다. 대안적으로, 데이터 서버(103)는 그 자체적으로 웹 서버로서 작용할 수 있고 인터넷에 직접 연결될 수 있다. 데이터 서버(103)는 네트워크(101)(예컨대, 인터넷)를 통해, 직접 또는 간접 연결을 통해 또는 일부 다른 네트워크를 통해 웹 서버(105)에 연결될 수 있다. 사용자들은 웹 서버(105)에 의해 호스팅되는 하나 이상의 외부적으로 노출된 웹 사이트들을 통해 데이터 서버(103)에 연결하기 하여 원격 컴퓨터들(107, 109)을 사용하여, 예컨대 웹 브라우저들을 사용하여 데이터 서버(103)와 상호작용할 수 있다. 클라이언트 컴퓨터들(107, 109)은 데이터 서버(103)에 저장된 데이터에 액세스하기 위하여 데이터 서버(103)와 협력하여 사용될 수 있거나 또는 다른 목적들을 위해 사용될 수 있다. 예컨대, 클라이언트 디바이스(107)로부터, 사용자는 기술분야에서 공지된 인터넷 브라우저를 사용하여 또는 컴퓨터 네트워크(예컨대, 인터넷)를 통해 웹 서버(105) 및/또는 데이터 서버(103)와 통신하는 소프트웨어 애플리케이션을 실행함으로써 웹 서버(105)에 액세스할 수 있다.
[0032] 서버들 및 애플리케이션들은 동일한 물리적 머신들상에 결합될 수 있고, 개별적인 가상 또는 논리 어드레스들을 보유할 수 있거나 또는 개별 물리 머신들상에 상주할 수 있다. 도 1은 사용될 수 있는 네트워크 아키텍처의 단지 하나의 예를 예시하며, 당업자는, 본원에서 추가로 설명되는 바와같이, 사용된 특정 네트워크 아키텍처 및 데이터 프로세싱 디바이스들이 변화될 수 있으며, 이들이 제공하는 기능이 부차적이라는 것을 인식할 것이다. 예컨대, 웹 서버(105) 및 데이터 서버(103)에 의해 제공되는 서비스들은 단일 서버상에서 결합될 수 있다.
[0033] 각각의 컴포넌트(103, 105, 107, 109)는 임의의 타입의 공지된 컴퓨터, 서버 또는 데이터 프로세싱 디바이스일 수 있다. 데이터 서버(103)는 예컨대 레이트 서버(rate server)(103)의 전체 동작을 제어하는 프로세서(111)를 포함할 수 있다. 데이터 서버(103)는 RAM(113), ROM(115), 네트워크 인터페이스(117), 입력/출력 인터페이스들(119)(예컨대, 키보드, 마우스, 디스플레이, 프린터 등) 및 메모리(121)를 더 포함한다. I/O(119)는 데이터 또는 파일들을 판독하고, 기록하며, 디스플레이하며 그리고/또는 프린트하기 위한 다양한 인터페이스 유닛들 및 드라이브들을 포함할 수 있다. 메모리(121)는 데이터 프로세싱 디바이스(103)의 전체 동작을 제어하기 위한 운영체제 소프트웨어(123), 본원에서 설명된 양상들을 수행하도록 데이터 서버(103)에 명령하기 위한 제어 로직(125), 및 본원에서 설명된 양상들과 함께 사용될 수 있거나 또는 본원에서 설명된 양상들과 함께 사용되지 않을 수 있는 2차 기능, 지원 기능 및/또는 다른 기능을 제공하는 다른 애플리케이션 소프트웨어(127)를 추가로 저장할 수 있다. 제어 로직은 또한 데이터 서버 소프트웨어(125)로서 본원에서 지칭될 수 있다. 데이터 서버 소프트웨어의 기능은 제어 로직으로 코딩된 규칙들에 기초하여 자동적으로 만들어지거나 또는 시스템내에 입력을 제공하는 사용자에 의해 수동적으로 만들어지거나 또는 사용자 입력(예컨대, 질의들, 데이터 업데이트들 등)에 기초한 자동 프로세싱의 조합으로 만들어진 동작들 또는 결정들을 지칭할 수 있다.
[0034] 제 1 데이터베이스(129) 및 제 2 데이터베이스(131)를 포함하는 메모리(121)는 또한 본원에서 설명된 하나 이상의 양상들의 수행시에 사용되는 데이터를 저장할 수 있다. 일부 실시예들에서, 제 1 데이터베이스는 (예컨대, 개별 테이블, 보고 등으로서) 제 2 데이터베이스를 포함할 수 있다. 즉, 시스템 설계에 따라, 정보는 단일 데이터베이스에 저장될 수 있거나 또는 상이한 논리적, 가상적 또는 물리적 데이터베이스들로 분리될 수 있다. 디바이스들(105, 107, 109)은 디바이스(103)와 관련하여 설명된 것과 유사한 또는 상이한 아키텍처를 가질 수 있다. 당업자는 본원에서 설명된 데이터 프로세싱 디바이스(103)(또는 디바이스들(105, 107, 109))의 기능이 예컨대 다수의 컴퓨터들에 걸쳐 프로세싱 로드를 분배하기 위하여, 즉 지리적 위치, 사용자 액세스 레벨, 서비스 품질(QoS) 등에 기초하여 트랜잭션(transaction)들을 분리하기 위하여, 다수의 데이터 프로세싱 디바이스들에 걸쳐 확산될 수 있다는 것을 인식할 것이다.
[0035] 하나 이상의 양상들은 본원에서 설명되는 바와같이 컴퓨터-사용가능 또는 판독가능 데이터 및/또는 컴퓨터-실행가능 명령들로, 예컨대 하나 이상의 컴퓨터들 또는 다른 디바이스들에 의해 실행되는 하나 이상의 프로그램 모듈들로 구현될 수 있다. 일반적으로, 프로그램 모듈들은 컴퓨터 또는 다른 디바이스의 프로세서에 의해 실행될 때 특정 태스크(task)들을 수행하거나 또는 특정 추상 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 모듈들은 실행을 위해 나중에 컴파일링되는 소스 코드 프로그래밍 언어로 쓰여질 수 있거나 또는 HTML 또는 XML와 같은 (그러나, 이에 제한되지 않음) 스크립팅 언어(scripting language)로 쓰여질 수 있다. 컴퓨터 실행가능 명령들은 비휘발성 저장 디바이스와 같은 컴퓨터 판독가능 매체상에 저장될 수 있다. 하드 디스크들, CD-ROM들, 광 저장 디바이스들, 자기 저장 디바이스들 및/또는 이들의 임의의 조합을 포함하는 임의의 적절한 컴퓨터 판독가능 저장 매체가 활용될 수 있다. 더욱이, 본원에서 설명된 바와 같은 데이터 또는 이벤트들을 나타내는 다양한 전송(비-저장) 매체는 금속 와이어들, 광섬유들, 및/또는 무선 전송 매체(예컨대, 에어(air) 및/또는 공간)와 같은 신호-전도 매체(signal-conducting media)를 통해 이동하는 전자기 파들의 형태로 소스와 목적지사이에서 이동될 수 있다. 본원에서 설명된 다양한 양상들은 방법, 데이터 프로세싱 시스템 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 다양한 기능들은 소프트웨어, 펌웨어 및/또는 하드웨어 또는 하드웨어 균등물들, 예컨대 집적회로들, 필드 프로그램가능 게이트 어레이(FPGA)들 등으로 전체적으로 또는 부분적으로 구현될 수 있다. 특정 데이터 구조들이 본원에서 설명된 하나 이상의 양상들을 더 효과적으로 구현하기 위하여 사용될 수 있으며, 이러한 데이터 구조들은 본원에서 설명된 컴퓨터 실행가능 명령들 및 컴퓨터-사용가능 데이터의 범위내에 있는 것으로 고려된다.
[0036] 도 2를 추가로 참조하면, 본원에서 설명된 하나 이상의 양상들은 원격-액세스 환경에서 구현될 수 있다. 도 2는 본원에서 설명된 하나 이상의 예시적인 양상들에 따라 사용될 수 있는 예시적인 컴퓨팅 환경(200)의 범용 컴퓨팅 디바이스(201)를 포함하는 예시적인 시스템 아키텍처를 도시한다. 범용 컴퓨팅 디바이스(201)는 클라이언트 액세스 디바이스들에 가상 머신들을 제공하도록 구성된 단일-서버 또는 멀티-서버 데스크탑 가상화 시스템(예컨대, 원격 액세스 또는 클라우드 시스템)에서 서버(206a)로서 사용될 수 있다. 범용 컴퓨팅 디바이스(201)는 랜덤 액세스 메모리(RAM)(205), 판독-전용 메모리(ROM)(207), 입력/출력(I/O) 모듈(209) 및 메모리(215)를 비롯하여 서버 및 이와 연관된 컴포넌트들의 전체 동작을 제어하기 위한 프로세서(203)를 가질 수 있다.
[0037] I/O 모듈(209)은 마우스, 키패드, 터치 스크린, 스캐너, 광 판독기, 및/또는 스타일러스(또는 다른 입력 디바이스(들)) ― 이를 통해 범용 컴퓨팅 디바이스(201)의 사용자는 입력을 제공할 수 있음 ―를 포함할 수 있으며, 또한 오디오 출력을 제공하기 위한 스피커 및 문자, 시청각 및/또는 그래픽 출력을 제공하기 위한 비디오 디스플레이 디바이스 중 하나 이상을 포함할 수 있다. 소프트웨어는 본원에서 설명된 바와 같은 다양한 기능들을 수행하기 위하여 범용 컴퓨팅 디바이스(201)를 특수 목적 컴퓨팅 디바이스로 구성하기 위한 명령들을 프로세서(203)에 제공하도록 메모리(215) 및/또는 다른 스토리지내에 저장될 수 있다. 예컨대, 메모리(215)는 컴퓨팅 디바이스(201), 예컨대 운영체제(217), 애플리케이션 프로그램들(219) 및 연관된 데이터베이스(221)에 의해 사용된 소프트웨어를 저장할 수 있다.
[0038] 컴퓨팅 디바이스(201)는 단말들(240)(또한 클라이언트 디바이스들로 지칭됨)과 같은 하나 이상의 원격 컴퓨터들에의 연결들을 지원하는 네트워크화 환경에서 동작할 수 있다. 단말들(240)은 범용 컴퓨팅 디바이스(103 또는 201)와 관련하여 앞서 설명된 엘리먼트들 모두 또는 많은 엘리먼트들을 포함하는, 퍼스널 컴퓨터들, 모바일 디바이스들, 랩탑 컴퓨터들, 태블릿들 또는 서버들일 수 있다. 도 2에 도시된 네트워크 컴포넌트들은 근거리 통신망(LAN)(225) 및 광역 통신망(WAN)(229)을 포함하나, 또한 다른 네트워크들을 포함할 수 있다. LAN 네트워킹 환경에서 사용될 때, 컴퓨팅 디바이스(201)는 네트워크 인터페이스 또는 어댑터(223)를 통해 LAN(225)에 연결될 수 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨팅 디바이스(201)는 모뎀(227), 또는 컴퓨터 네트워크(230)(예컨대, 인터넷)와 같이 WAN(229)를 통해 통신들을 설정하기 위한 다른 광역 네트워크 인터페이스를 포함할 수 있다. 도시된 네트워크 연결들이 예시적이며 컴퓨터들 사이에 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것이 인식될 것이다. 컴퓨팅 디바이스(201) 및/또는 단말들(240)은 또한 배터리, 스피커, 및 안테나들(도시안됨)과 같은 다양한 다른 컴포넌트들을 포함하는 모바일 단말들(예컨대, 모바일 전화들, 스마트폰들, PDA들, 노트북들 등)일 수 있다.
[0039] 본원에서 설명된 양상들은 또한 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들로 운용가능할 수 있다. 본원에서 설명된 양상들과 함께 사용하기에 적합할 수 있는 다른 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예들은 퍼스널 컴퓨터들, 서버 컴퓨터들, 핸드-헬드 또는 랩탑 디바이스들, 멀티프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그램가능 가전제품들, 네트워크 PC들, 미니컴퓨터들, 메인프레임 컴퓨터들, 앞의 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분산형 컴퓨팅 환경들 등을 포함하나 이들에 제한되지 않는다.
[0040] 도 2에 도시된 바와같이, 하나 이상의 클라이언트 디바이스들(240)은 하나 이상의 서버들(206a-206n)(일반적으로 본원에서 "서버(들)(206)"로 지칭됨)과 통신할 수 있다. 일 실시예에서, 컴퓨팅 환경(200)은 서버(들)(206)와 클라이언트 머신(들)(240) 사이에 설치된 네트워크 기기를 포함할 수 있다. 네트워크 기기는 클라이언트/서버 연결들을 관리할 수 있으며, 일부 경우들에서 복수의 백엔드 서버들(206) 사이의 클라이언트 연결들을 로드 밸런싱할 수 있다.
[0041] 클라이언트 머신(들)(240)은 일부 실시예들에서 단일 클라이언트 머신(240) 또는 클라이언트 머신들(240)의 단일 그룹으로 지칭될 수 있는 반면에, 서버(들)(206)는 단일 서버(206) 또는 서버들(206)의 단일 그룹으로 지칭될 수 있다. 일 실시예에서, 단일 클라이언트 머신(240)은 2개 이상의 서버(206)와 통신하는 반면에, 다른 실시예에서 단일 서버(206)는 2개 이상의 클라이언트 머신(240)과 통신한다. 또 다른 실시예에서, 단일 클라이언트 머신(240)은 단일 서버(206)와 통신한다.
[0042] 일부 실시예들에서, 클라이언트 머신(240)은 이하의 비-제한적인 항목들, 즉 클라이언트 머신(들); 클라이언트(들); 클라이언트 컴퓨터(들); 클라이언트 디바이스(들); 클라이언트 컴퓨팅 디바이스(들); 로컬 머신; 원격 머신; 클라이언트 노드(들); 엔드포인트(들) 또는 엔드포인트 노드(들) 중 어느 하나에 의해 참조될 수 있다. 일부 실시예들에서, 서버(206)는 이하의 비-제한적인 항목들, 즉 서버(들); 로컬 머신; 원격 머신; 서버 팜(들) 또는 호스트 컴퓨팅 디바이스(들) 중 어느 하나에 의해 참조될 수 있다.
[0043] 일 실시예에서, 클라이언트 머신(240)은 가상 머신일 수 있다. 가상 머신은 임의의 가상 머신일 수 있는 반면에, 일부 실시예들에서, 가상 머신은 타입 1 또는 타입 2 하이퍼바이저(hypervisor), 예컨대 Citrix Systems, IBM, VMware에 의해 개발된 하이퍼바이저 또는 임의의 다른 하이퍼바이저에 의해 관리되는 임의의 가상 머신일 수 있다. 일부 양상들에서, 가상 머신은 하이퍼바이저에 의해 관리될 수 있는 반면에, 양상들에서 가상 머신은 서버(206)상에서 실행되는 하이퍼바이저 또는 클라이언트(240)상에서 실행되는 하이퍼바이저에 의해 관리될 수 있다.
[0044] 일부 실시예들은 서버(206)상에서 원격적으로 실행되는 애플리케이션 또는 다른 원격적으로 위치한 머신에 의해 생성되는 애플리케이션 출력을 디스플레이하는 클라이언트 디바이스(240)를 포함한다. 이들 시스템들에서, 클라이언트 디바이스(240)는 애플리케이션 윈도우, 브라우저 또는 다른 출력 윈도우에서 출력을 디스플레이하기 위하여 가상 머신 수신기 프로그램 또는 애플리케이션을 실행할 수 있다. 일례에서 애플리케이션은 데스크탑인 반면에, 다른 예에서 애플리케이션은 데스크탑을 생성하거나 또는 제시하는 애플리케이션이다. 데스크탑은 로컬 및/또는 원격 애플리케이션들이 통합될 수 있는 운영체제의 인스턴스(instance)에 대한 사용자 인터페이스를 제공하는 그래픽 쉘(graphical shell)을 포함할 수 있다. 본원에서 설명된 바와같은 애플리케이션들은 운영체제(그리고, 또한 선택적으로 데스크탑)의 인스턴스가 로드된 후 실행되는 프로그램들이다.
[0045] 일부 실시예들에서, 서버(206)는 서버(206)상에서 실행되는 애플리케이션에 의해 생성되는 디스플레이 출력을 제시하기 위하여 클라이언트상에서 실행되는 씬-클라이언트(thin-client) 또는 원격-디스플레이 애플리케이션에 데이터를 송신하기 위하여 원격 프리젠테이션 프로토콜 또는 다른 프로그램을 사용한다. 씬-클라이언트 또는 원격-디스플레이 프로토콜은 프로토콜들의 이하의 비-제한적인 리스트, 즉 플로리다, 포트 로더데일에 있는 Citrix Systems, Inc.에 의해 개발된 ICA(Independent Computing Architecture) 프로토콜 또는 Redmond, Washington에 있는 Microsoft Corporation에 의해 제조된 RDP(Remote Desktop Protocol) 중 어느 하나일 수 있다.
[0046] 원격 컴퓨팅 환경은 예컨대 클라우드 컴퓨팅 환경에서 서버들(206a-206n)이 서버 팜(206)으로 논리적으로 함께 그룹핑되도록 2개 이상의 서버(206a-206n)를 포함할 수 있다. 서버 팜(206)은 지리적으로 분산된 반면에 함께 논리적으로 그룹핑되는 서버들(206) 또는 서로 근접하게 배치되는 반면에 함께 논리적으로 그룹핑되는 서버들(206)을 포함할 수 있다. 일부 실시예들에서, 서버 팜(206) 내의 지리적으로 분산된 서버들(206a-206n)은 WAN(광역), MAN(대도시) 또는 LAN(지역)을 사용하여 통신할 수 있으며, 여기서 상이한 지리적 지역들은 상이한 대륙들; 상이한 대륙 영역들; 상이한 국가들; 상이한 주들; 상이한 도시들; 상이한 캠퍼스들; 상이한 방들; 또는 전술한 지리적 위치들의 임의의 조합으로 특징지워질 수 있다. 일부 실시예들에서 서버 팜(206)은 단일 엔티티로서 관리될 수 있는 반면에, 다른 실시예들에서 서버 팜(206)은 다수의 서버 팜들을 포함할 수 있다.
[0047] 일부 실시예들에서, 서버 팜은 실질적으로 유사한 타입의 운영체제 플랫폼(예컨대, WINDOWS, UNIX, LINUX, iOS, ANDROID, SYMBIAN 등)을 실행하는 서버들(206)을 포함할 수 있다. 다른 실시예들에서, 서버 팜(206)은 제 1 타입의 운영체제 플랫폼을 실행하는 하나 이상의 서버들의 제 1 그룹 및 제 2 타입의 운영체제 플랫폼을 실행하는 하나 이상의 서버들의 제 2 그룹을 포함할 수 있다.
[0048] 서버(206)는 필요에 따라 임의의 타입의 서버로서, 예컨대 파일 서버, 애플리케이션 서버, 웹 서버, 프록시 서버, 어플라이언스, 네트워크 어플라이언스, 게이트웨이, 애플리케이션 게이트웨이, 게이트웨이 서버, 가상화 서버, 전개 서버, SSL VPN 서버, 방화벽, 웹 서버, 애플리케이션 서버로서 또는 마스터 애플리케이션 서버, 액티브 디렉토리를 실행하는 서버, 또는 방화벽 기능, 애플리케이션 기능 또는 로드 밸런싱 기능을 제공하는 애플리케이션 가속 프로그램을 실행하는 서버로서 구성될 수 있다. 다른 서버 타입들이 또한 사용될 수 있다.
[0049] 일부 실시예들은 클라이언트 머신(240)으로부터의 요청들을 수신하며, 제 2 서버(106b)에 요청을 포워드하며 그리고 제 2 서버(106b)로부터의 응답으로 클라이언트 머신(240)에 의해 생성되는 요청에 응답하는 제 1 서버(106a)를 포함한다. 제 1 서버(106a)는 클라이언트 머신(240)이 이용할 수 있는 애플리케이션들의 목록 뿐만아니라 애플리케이션들의 목록내에서 식별되는 애플리케이션을 호스팅하는 애플리케이션 서버(206)와 연관된 어드레스 정보를 획득할 수 있다. 이후, 제 1 서버(106a)는 웹 인터페이스를 사용하여 클라이언트의 요청에 대한 응답을 제시할 수 있으며, 식별된 애플리케이션에 대한 액세스를 클라이언트(240)에 제공하기 위하여 클라이언트(240)와 직접 통신할 수 있다. 하나 이상의 클라이언트들(240) 및/또는 하나 이상의 서버들(206)은 네트워크(230), 예컨대 네트워크(101)를 통해 데이터를 전송할 수 있다.
[0050] 도 2는 예시적인 데스크탑 가상화 시스템의 고레벨 아키텍처를 도시한다. 도시된 바와같이, 데스크탑 가상화 시스템은 하나 이상의 클라이언트 액세스 디바이스들(240)에 가상 데스크탑들 및/또는 가상 애플리케이션들을 제공하도록 구성된 적어도 하나의 가상화 서버(206)를 포함하는 단일-서버 또는 멀티-서버 시스템 또는 클라우드 시스템일 수 있다. 본원에서 사용되는 바와같이, 데스크탑은 하나 이상의 애플리케이션들이 호스팅되고 그리고/또는 실행되는 그래픽 환경 또는 공간을 지칭한다. 데스크탑은 로컬 및/또는 원격 애플리케이션들이 통합될 수 있는 운영체제의 인스턴스에 대한 사용자 인터페이스를 제공하는 그래픽 쉘을 포함할 수 있다. 애플리케이션들은 운영체제(그리고 선택적으로 또한 데스크탑)의 인스턴스가 로드된 이후에 실행되는 프로그램들을 포함할 수 있다. 운영체제의 각각의 인스턴스는 물리적(예컨대, 디바이스당 하나의 운영체제) 또는 가상적(예컨대, 단일 디바이스상에서 실행되는 OS의 많은 인스턴스들)일 수 있다. 각각의 애플리케이션은 로컬 디바이스상에서 실행될 수 있거나 또는 원격적으로 위치한 디바이스(예컨대 원격 디바이스)상에서 실행될 수 있다.
[0051] 도 3을 추가로 참조하면, 컴퓨터 디바이스(301)는 가상화 환경의 가상화 서버, 예컨대, 단일-서버, 멀티-서버 또는 클라우드 컴퓨팅 환경으로서 구성될 수 있다. 도 3에 예시된 가상화 서버(301)는 도 2에 예시된 서버(206)의 하나 이상의 실시예에 의해, 또는 다른 공지된 컴퓨팅 디바이스에 의해 구현 및/또는 전개될 수 있다. 가상화 서버(301)에 포함된 것은 하나 이상의 물리적 디스크(304), 하나 이상의 물리적 디바이스(306), 하나 이상의 물리적 프로세서(308) 및 하나 이상의 물리적 메모리(316)를 포함할 수 있는 하드웨어 계층이다. 일부 실시예에서, 펌웨어(312)는 물리적 메모리(316)의 메모리 엘리먼트 내에 저장될 수 있고, 하나 이상의 물리적 프로세서(308)에 의해 실행될 수 있다. 가상화 서버(301)는 또한 물리적 메모리(316)의 메모리 엘리먼트에 저장되고 하나 이상의 물리적 프로세서(308)에 의해 실행될 수 있는 운영 체제(314)를 더 포함할 수 있다. 또한, 하이퍼바이저(302)는 물리적 메모리(316)의 메모리 엘리먼트에 저장될 수 있고 하나 이상의 물리적 프로세서(308)에 의해 실행될 수 있다.
[0052] 하나 이상의 물리적 프로세서(308) 상에서 실행시키는 것은 하나 이상의 가상 머신(332A-C, 일반적으로 332)일 수 있다. 각각의 가상 머신(332)은 가상 디스크(326A-C) 및 가상 프로세서(328A-C)를 포함할 수 있다. 일부 실시예에서, 제 1 가상 머신(332A)은, 가상 프로세서(328A)를 이용하여, 툴 스택(tools stack)(324)를 포함하는 제어 프로그램(320)을 실행할 수 있다. 제어 프로그램(320)은 제어 가상 머신, Dom0, Domain 0, 또는 시스템 운영 및/또는 제어용으로 사용되는 다른 가상 머신으로서 참조될 수도 있다. 일부 실시예에서, 하나 이상의 가상 머신(332B-C)은, 가상 프로세서(328B-C)를 이용하여, 게스트 운영 체제(330A-B)를 실행시킬 수 있다.
[0053] 가상화 서버(301)는 가상화 서버(301)와 통신하는, 하드웨어의 하나 이상의 피스(piece)들을 구비하는 하드웨어 계층(310)을 포함할 수 있다. 일부 실시예에서, 하드웨어 계층(310)은 하나 이상의 물리적 디스크(304), 하나 이상의 물리적 디바이스(306), 하나 이상의 물리적 프로세서(308) 및 하나 이상의 메모리(216)를 포함할 수 있다. 물리적 컴포넌트(304, 306, 308, 316)는, 예컨대, 임의의 상술한 컴포넌트를 포함할 수 있다. 물리적 디바이스(306)는, 예컨대, 네트워크 인터페이스 카드, 비디오 카드, 키보드, 마우스, 입력 디바이스, 모니터, 디스플레이 디바이스, 스피커, 광학 드라이브, 스토리지 드라이브, 범용 직렬 버스 연결, 프린터, 스캐너, 네트워크 엘리먼트(예컨대, 라우터, 방화벽, 네트워크 어드레스 변환기, 로드 밸런서, VPN(virtual private network) 게이트웨이, DHCP(Dynamic Host Configuration Protocol) 라우터 등), 또는 가상화 서버(301)와 통신하거나 연결하는 임의의 디바이스를 포함할 수 있다. 하드웨어 계층(310)의 물리적 메모리(316)는 임의의 타입의 메모리를 포함할 수 있다. 물리적 메모리(316)는 데이터를 저장할 수 있고, 일부 실시예에서 하나 이상의 프로그램, 또는 실행 가능한 명령 세트를 저장할 수 있다. 도 3은 펌웨어(312)가 가상화 서버(301)의 물리적 메모리(316) 내에 저장된 실시예를 도시한다. 물리적 메모리(316)에 저장된 프로그램 또는 실행 가능한 명령들은 가상화 서버(301)의 하나 이상의 프로세서(308)에 의해 실행될 수 있다.
[0054] 가상화 서버(301)는 또한 하이퍼바이저(302)를 포함할 수 있다. 일부 실시예에서, 하이퍼바이저(302)는 가상화 서버(301) 상의 프로세서(308)에 의해 실행되어 임의의 개수의 가상 머신(332)를 생성 및 관리하는 프로그램일 수 있다. 하이퍼바이저(302)는 가상 머신 모니터 또는 플랫폼 가상화 소프트웨어로 참조될 수 있다. 일부 실시예에서, 하이퍼바이저(302)는 컴퓨팅 머신 상에서 실행되는 가상 머신을 모니터링하는 하드웨어 및 실행 가능한 명령들의 임의의 조합일 수 있다. 하이퍼바이저(302)는 타입 2 하이퍼바이저일 수 있고, 운영 체제(314) 내에서 실행되는 하이퍼바이저는 가상화 서버(301) 상에서 실행될 수 있다. 다름으로 가상 머신이 하이퍼바이저의 상위 레벨에서 실행된다. 일부 실시예에서, 타입 2 하이퍼바이저는 사용자의 운영 체제의 컨텍스트 내에서 실행되어, 타입 2 하이퍼바이저는 사용자의 운영 체제와 상호 작용을 한다. 다른 실시예에서, 가상화 환경의 하나 이상의 가상화 서버(201)는 대신에 타입 1 하이퍼바이저(도시되지 않음)를 포함할 수 있다. 타입 1 하이퍼바이저는 하드웨어 계층(310) 내의 자원 및 하드웨어를 직접 액세스함으로써 가상화 서버(301) 상에서 실행될 수 있다. 즉, 타입 2 하이퍼바이저(302)는 도시된 바와 같이 호스트 운영 체제(314)를 통해 시스템 자원을 액세스하지만, 타입 1 하이퍼바이저는 호스트 운영 체제(314) 없이 모든 시스템 자원에 직접 액세스할 수 있다. 타입 1 하이퍼바이저는 가상화 서버(301)의 하나 이상의 물리적 프로세서(308) 상에서 직접 실행될 수 있고, 물리적 메모리(316)에 저장된 프로그램 데이터를 포함할 수 있다.
[0055] 일부 실시예에서, 하이퍼바이저(302)는 가상 자원을, 운영 체제(330) 또는 제어 프로그램(320)이 시스템 자원에 직접 액세스하도록 시뮬레이션하는 임의의 방식으로 가상 머신(332) 상에서 실행되는 운영 체제(330) 또는 제어 프로그램(320)에 제공할 수 있다. 시스템 자원은 물리적 디바이스(306), 물리적 디스크(304), 물리적 프로세서(308), 물리적 메모리(316) 및 가상화 서버(301) 하드웨어 계층(310)에 포함된 임의의 다른 컴포넌트를 포함할 수 있으나 이에 제한되는 것은 아니다. 하이퍼바이저(302)는 가상 하드웨어를 에뮬레이션하고, 물리적 하드웨어를 파티셔닝하고, 물리적 하드웨어를 가상화하고, 및/또는 컴퓨팅 환경에 대한 액세스를 제공하는 가상 머신을 실행시키기 위해 사용될 수 있다. 또 다른 실시예에서, 하이퍼바이저(302)는 가상화 서버(301) 상에서 실행되는 가상 머신(332)에 대한 메모리 파티셔닝 및 프로세서 스케쥴링을 제어한다. 하이퍼바이저(302)는 켈리포니아 팔로 알토의 VMWare, Inc.에 의해 제조된 것들; 그 개발이 오픈 소스 Xen.org 커뮤니티에 의해 감독되는 오픈 소스 상품인 XEN 하이퍼바이저; 마이크로소프트에 의해 제공되는 virtual PC, HyperV, 또는 VirtualServer 또는 기타 하이퍼바이저를 포함할 수 있다. 일부 실시예에서, 가상화 서버(301)는, 게스트 운영 체제가 실행될 수 있는 가상 머신 플랫폼을 생성하는 하이퍼바이저(302)를 실행시킨다. 이들 실시예에서, 가상화 서버(301)는 호스트 서버로서 참조될 수 있다. 이러한 가상화 서버의 예로서 플로리다, 포트 로더데일의 Citrix Systems, Inc.에 의해 제공되는 XEN SERVER를 들 수 있다.
[0056] 하이퍼바이저(302)는 게스트 운영 체제(330)가 실행되는 하나 이상의 가상 머신(332B-C, 일반적으로 332)을 생성할 수 있다. 일부 실시예에서, 하이퍼바이저(302)는 가상 머신 이미지를 로드하여 가상 머신(332)을 생성할 수 있다. 다른 실시예에서, 하이퍼바이저(302)는 가상 머신(332) 내에서 게스트 운영 체제(330)를 실행시킬 수 있다. 또 다른 실시예에서, 가상 머신(332)은 게스트 운영 체제(330)를 실행시킬 수 있다.
[0057] 가상 머신(332)을 생성하는 것에 추가하여, 하이퍼바이저(302)는 하나 이상의 가상 머신(332)의 실행을 제어할 수 있다. 다른 실시예에서, 하이퍼바이저(302)는 가상화 서버(301)에 의해 제공되는 하나 이상의 하드웨어 자원)(예컨대, 하드웨어 계층(310) 내에서 사용 가능한 임의의 하드웨어 자원)의 추상화로 하나 이상의 가상 머신(332)을 제시할 수 있다. 다른 실시예에서, 하이퍼바이저(302)는 가상 머신(332)이 가상화 서버(301)에서 사용 가능한 물리적 프로세서(308)를 액세스하는 방식을 제어할 수 있다. 물리적 프로세서(308)에 대한 액세스를 제어하는 것은, 가상 머신(332)이 프로세서(308)에 대한 액세스를 가져야 하는지 여부 및 물리적 프로세서 기능이 가상 머신(332)에 제공되는 방식을 결정하는 것을 포함할 수 있다.
[0058] 도 3에 도시된 바와 같이, 가상화 서버(301)는 하나 이상의 가상 머신(332)을 호스팅 또는 실행할 수 있다. 가상 머신(332)은, 프로세서(308)에 의해 실행된 경우, 물리적 컴퓨터의 동작을 모방하여, 가상 머신(332)이 물리적 컴퓨팅 디바이스와 매우 유사하게 프로그램 및 프로세스를 실행할 수 있도록 하는 실행 가능한 명령들의 세트이다. 도 3은 가상화 서버(301)가 3 개의 가상 머신(332)을 호스팅하는 것을 실시예를 나타내고 있으나, 다른 실시예에서, 가상화 서버(301)는 임의의 개수의 가상 머신(332)를 호스팅할 수 있다. 하이퍼바이저(302)는, 일부 실시예에서, 각각의 가상 머신(332)에 물리적 하드웨어, 메모리, 프로세서 및 상기 가상 머신(332)에 사용 가능한 다른 시스템 자원의 고유한 가상 뷰(unique virtual view)를 제공한다. 일부 실시예에서, 고유한 가상 뷰는 하나 이상의 가상 머신 퍼미션(permission), 하나 이상의 가상 머신 식별자에 대한 정책 엔진(policy engine)의 애플리케이션, 가상 머신에 액세스하는 사용자, 가상 모신 상에서 실행되는 애플리케이션, 가상 머신에 의해 액세스되는 네트워크 또는 다른 임의의 원하는 기준에 기반할 수 있다. 예컨대, 하이퍼바이저(302)는 하나 이상의 비보안(unsecure) 가상 머신(332) 및 하나 이상의 보안 가상 머신(332)을 생성할 수 있다. 비보안 가상 머신(332)은 보안 가상 머신(332)은 액세스 허용될 수 있는 프로그램, 자원, 하드웨어, 및 메모리 위치를 액세스하는 것이 제한될 수 있다. 다른 실시예에서, 하이퍼바이저(302)는 각각의 가상 머신(332)에 물리적 하드웨어, 메모리, 프로세서 및 가상 머신(332)에 사용 가능한 다른 시스템 자원에 대한 실질적으로 유사한 뷰를 제공할 수 있다.
[0059] 각각의 가상 머신(332)은 가상 디스크(326A-C, 일반적으로 326) 및 가상 프로세서(328A-C, 일반적으로 328)을 포함할 수 있다. 가상 디스크(326)는, 일부 실시예에서, 가상화 서버(301)의 하나 이상의 물리적 디스크(304) 또는 가상화 서버(301)의 하나 이상의 물리적 디스크(304)의 일부분에 대한 가상화된 뷰(virtualized view)이다. 물리적 디스크(304)에 대한 가상화된 뷰는 하이퍼바이저(302)에 의해 생성, 제공 및 관리될 수 있다. 일부 실시예에서, 하이퍼바이저(302)는 각각의 가상 머신(332)에 물리적 디스크(304)의 고유한 뷰(unique view)를 제공한다. 따라서, 이들 실시예에서, 각각의 가상 머신(332)에 포함된 특정 가상 디스크(326)는 다른 가상 디스크(326)과 비교하여 고유할 수 있다.
[0060] 가상 프로세서(328)는 가상화 서버(301)의 하나 이상의 물리적 프로세서(308)의 가상화된 뷰일 수 있다. 일부 실시예에서, 물리적 프로세서(308)의 가상화된 뷰는 하이퍼바이저(302)에 의해 생성, 제공 및 관리될 수 있다. 일부 실시예에서, 가상 프로세서(328)은 하나 이상의 물리적 프로세서(308)와 실질적으로 전부 동일한 특징을 가질 수 있다. 다른 실시예에서, 가상 프로세서(308)는 물리적 프로세서(308)의 변형된 뷰(modified view)를 제공하여, 가상 프로세서(328)의 특징 중 적어도 일부가 대응하는 물리적 프로세서(308)의 특징과 다르도록 할 수 있다.
[0061] 도 4를 추가로 참조하면, 본원에서 설명된 일부 양태들은 클라우드 기반의 환경에서 구현될 수 있다. 도 4는 클라우드 컴퓨팅 환경(또는 클라우드 시스템)(400)의 일례를 도시한다. 도 4에 도시된 바와 같이, 클라이언트 컴퓨터(411-414)는 클라우드 관리 서버(410)와 통신하여 클라우드 시스템의 컴퓨팅 자원(예컨대, 호스트 서버(403), 스토리지 자원(404) 및 네트워크 자원(405))에 액세스할 수 있다.
[0062] 관리 서버(410)는 하나 이상의 물리적 서버 상에서 구현될 수 있다. 관리 서버(410)는, 예컨대, 플로리다, 포트 로더데일의 Citrix Systems, Inc.의 CLOUDSTACK 또는, 특히 OPENSTACK을 실행시킬 수 있다. 관리 서버(410)는 클라우드 하드웨어 및 소프트웨어 자원, 예컨대 호스트 컴퓨터(403), 데이터 스토리지 디바이스(404), 네트워크 디바이스(405)를 포함하는 다양한 컴퓨팅 자원을 관리할 수 있다. 클라우드 하드웨어 및 소프트웨어 자원은 사설 및/또는 공중 컴포넌트를 포함할 수 있다. 예컨대, 클라우드는 사설 네트워크를 통해 그리고또는 하나 이상의 특정 고객들 또는 클라이언트 컴퓨터들(411-414)에 의해 사용될 사설 클라우드로서 구성될 수 있다. 다른 실시예에서, 공중 클라우드 또는 하이브리드 사설-공중 클라우드는 개방형 또는 하이브리드 네트워크를 이용하여 다른 고객들에 의해 사용될 수 있다.
[0063] 관리 서버(410)는 클라우드 운영자 및 클라우드 고객이 클라우드 시스템과 상호 작용할 수 있도록 하는 사용자 인터페이스를 제공하도록 구성될 수 있다. 예컨대, 관리 서버(410)는 API 세트 및/또는 하나 이상의 클라우드 운영자 콘솔 애플리케이션(예컨대, 웹 기반의 스탠드얼론 애플리케이션)에, 클라우드 운영자가 클라우드 자원을 관리하고, 가상화 계층을 구성하고, 고객 계정을 관리하고, 다른 클라우드 운영 작업들을 수행할 수 있도록 하는 사용자 인터페이스를 제공할 수 있다. 관리 서버(410)는 또한 API 세트 및/또는 하나 이상의 클라우드 운영자 콘솔 애플리케이션에, 클라이언트 컴퓨터(411-414)를 통해 엔드 유저(end user)로부터 클라우드 컴퓨팅 요청, 예컨대, 클라우드 내에 가상 머신을 생성, 수정 또는 제거하기 위한 요청을 수신하도록 구성된 사용자 인터페이스를 제공할 수 있다. 클라우드 컴퓨터(411-414)는 인터넷 또는 다른 통신 네트워크를 통해 관리 서버(410)에 연결할 수 있고, 관리 서버(410)에 의해 관리되는 하나 이상의 컴퓨팅 자원에 대한 액세스를 요청할 수 있다. 클라이언트 요청에 대한 응답으로, 관리 서버(410)는 클라이언트 요청에 기초하여 클라우드 시스템의 하드웨어 계층의 물리적 자원을 선택 및 공급하도록 구성된 자원 관리자를 포함할 수 있다. 예컨대, 관리 서버(410) 및 클라우드 시스템의 추가적인 컴포넌트들은, 고객에게 연산 자원(computational resource), 데이터 스토리지 서비스, 네트워크 기능 및 컴퓨터 플랫폼 및 애플리케이션 지원을 제공하는, 네트워크(예컨대, 인터넷)를 이용하여, 클라이언트 컴퓨터(411-414)에서 고객들에 대한 가상 머신 및 그 동작 환경(예컨대, 하이퍼바이저, 스토리지 자원, 네트워크 엘리먼트에 의해 제공되는 서비스 등)을 제공, 생성 및 관리하도록 구성될 수 있다. 클라우드 시스템은 또한, 보안 시스템, 개발 환경, 사용자 인터페이스 등을 포함하는 다양한 특정 서비스들을 제공하도록 구성될 수 있다.
[0064] 특정 클라이언트(411-414)는 관련이 있을 수 있고, 예컨대, 서로 다른 클라이언트 컴퓨터가 동일한 최종 사용자들을 대표하는 가상 머신을 생성하거나, 서로 다른 사용자가 동일한 회사 또는 조직에 관계될 수 있다. 다른 예에서, 특정 클라이언트(411-414)는 관련이 없을 수 있고, 예컨대, 사용자들은 서로 다른 회사 또는 조직에 관계될 수 있다. 관련이 없는 클라이언트에 대해, 임의의 특정 사용자의 가상 머신 또는 스토리지에 대한 정보는 다른 사용자들에게 숨겨질 수 있다.
[0065] 이제 클라우드 컴퓨팅 환경의 물리적 하드웨어 계층을 참조하면, 가용 존(availability zone)(401-402)(또는 존(zone))은 물리적 컴퓨팅 자원의 함께 배치된 세트(collocated set)를 참조할 수 있다. 존은 컴퓨팅 자원의 전 클라우드의 다른 존으로부터 지리적으로 떨어져 있을 수 있다. 예컨대, 존(401)은 캘리포니아에 위치한 제 1 클라우드 데이터센터일 수 있고, 존(402)은 플로리다에 위치한 제 2 클라우드 데이터센터일 수 있다. 관리 서버(410)는 가용 존들 중 하나에, 또는 떨어진 위치에 위치할 수 있다. 각각의 존은, 게이트웨이를 통해, 관리 서버(410)와 같은, 존 외부의 디바이스와 인터페이싱하는 내부 네트워크를 포함할 수 있다. 클라우드의 최종 사용자들(예컨대, 클라이언트(411-414))은 존들 사이를 구분할 수 있거나, 구분할 수 없을 수 있다. 예컨대, 최종 사용자들은 특정 양의 메모리, 처리 성능 및 네트워크 기능을 갖는 가상 머신의 생성을 요청할 수 있다. 관리 서버(410)는 사용자의 요청에 대해 응답하고, 가상 머신이 존(401) 또는 존(402)의 자원을 사용하여 생성되는지 여부를 사용자가 모르게 가상 머신을 생성하기 위한 자원을 할당할 수 있다. 다른 실시예에서, 클라우드 시스템은 최종 사용자가, 가상 머신(또는 다른 클라우드 자원)이 특정 존에, 또는 존 내의 특정 자원(403-405) 상에 할당되는 것을 요청하도록 할 수 있다.
[0066] 이러한 예에서, 각각의 존(401-402)은 다양한 물리적 하드웨어 컴포넌트(또는 컴퓨팅 자원)(403-405), 예컨대, 물리적 호스팅 자원(또는 처리 자원), 물리적 네트워크 자원, 물리적 스토리지 자원, 스위치, 및 클라우드 컴퓨팅 서비스를 고객에게 제공하기 위해 사용될 수 있는 추가적인 하드웨어 자원의 배치를 포함할 수 있다. 클라우드 존(401-402)의 물리적 호스팅 자원은, 상술한 가상화 서버(301)와 같은 하나 이상의 컴퓨터 서버(403)을 포함할 수 있고, 그것은 가상 머신 인스턴스를 생성 및 호스팅하도록 구성될 수 있다. 클라우드 존(401 또는 402)의 물리적 네트워크 자원은, 방화벽, 네트워크 어드레스 변환기, 로드 밸런서, VPN(virtual private network) 게이트웨이, DHCP(Dynamic Host Configuration Protocol) 라우터 등과 같은 네트워크 서비스를 클라우드 고객에게 제공하도록 구성된 하드웨어 및/또는 소프트웨어를 포함하는 하나 이상의 네트워크 엘리먼트(405)(예컨대, 네트워크 서비스 공급자)를 포함할 수 있다. 클라우드 존(401-402)의 스토리지 자원은 스토리지 디스크(예컨대, SSD(solid state drive), 자기 하드 디스크 등) 및 다른 스토리지 디바이스를 포함할 수 있다.
[0067] 도 4에 도시된 예시적인 클라우드 컴퓨팅 환경은 또한 (예컨대, 도 1 내지 도 3에 도시된 바와 같은) 가상화 계층과, 가상 머신을 생성 및 관리하고 클라우드의 물리적 자원을 이용하여 고객에게 다른 서비스를 제공하도록 구성된 추가적인 하드웨어 및/또는 소프트웨어 자원을 포함할 수 있다. 가상화 계층은 도 3에서 상술한 바와 같은 하이퍼바이저와, 네트워크 가상화, 스토리지 가상화 등을 제공하는 다른 컴포넌트들을 포함할 수 있다. 가상화 계층은 물리적 자원 계층과 별개의 계층으로 될 수 있거나, 물리적 자원 계층과 동일한 하드웨어 및/또는 소프트웨어 자원의 일부 또는 전부를 공유할 수 있다. 예컨대, 가상화 계층은 각각의 가상화 서버(403)에 설치된 하이퍼바이저와 물리적 컴퓨팅 자원을 포함할 수 있다. 공지된 클라우드 시스템, 예컨대 WINDOWS AZURE (Microsoft Corporation of Redmond Washington), AMAZON EC2 (Amazon.com Inc. of Seattle, Washington), IBM BLUE CLOUD (IBM Corporation of Armonk, New York) 등이 대안적으로 사용될 수 있다.
[0068] 기업용 모바일 관리 아키텍처
[0069] 도 5는 BYOD 환경에서 사용하기 위한 기업용 모바일 기술 아키텍처(500)를 나타낸 것이다. 상기 아키텍처는 모바일 디바이스(502)의 사용자가 모바일 디바이스(502)의 기업 자원 또는 개인 자원을 모두 액세스하고, 모바일 디바이스(502)를 개인적 용도로 사용할 수 있도록 한다. 사용자는 기업에 의해 사용자에게 제공된 모바일 디바이스(502) 또는 사용자에 의해 구매된 모바일 디바이스(502)를 이용하는 이와 같은 기업 서비스(508) 또는 기업 자원(504)을 액세스할 수 있다. 사용자는 모바일 디바이스(502)를 비즈니스적 용도로만 이용하거나, 비즈니스적 및 개인적 용도로 활용할 수 있다. 모바일 디바이스는 iOS 운영 체제, 안드로이드(Android) 운영 체제 등에서 실행될 수 있다. 기업은 모바일 디바이스(504)를 관리하기 위한 정책을 구현하도록 선택할 수 있다. 정책은, 모바일 디바이스가 식별되고, 보안 또는 보안 검증되고, 기업 자원에 선택적 또는 모든 액세스가 제공되는 방식에 대해, 방화벽 또는 게이트웨이를 통해 주입될 수 있다. 정책은 모바일 디바이스 관리 정책, 모바일 애플리케이션 관리 정책, 모바일 데이터 관리 정책 또는 모바일 디바이스, 애플리케이션 및 데이터 관리 정책의 일부 조합일 수 있다. 모바일 디바이스 관리 정책의 적용을 통해 관리되는 모바일 디바이스(504)는 관리(managed) 디바이스로서 참조될 수 있다.
[0070] 일부 실시예에서, 모바일 디바이스의 운영 체제는 관리 파티션(managed partition)(510) 및 비관리 파티션(unmanaged partition)(512)로 분리될 수 있다. 관리 파티션(510)은 그것에 적용되어 관리 파티션 상에서 실행되는 애플리케이션 및 관리 파티션에 저장되는 데이터를 안전하게 보장하는 정책들을 가질 수 있다. 관리 파티션 상에서 실행되는 애플리케이션은 보안 애플리케이션일 수 있다. 다른 실시예에서, 모든 애플리케이션은 애플리케이션으로부터 따로 수신된 하나 이상의 정책 파일의 세트에 따라 실행될 수 있고, 그것은 하나 이상의 보안 파라미터, 특징, 자원 제한 및/또는 상기 애플리케이션이 상기 디바이스 상에서 실행되는 중 모바일 디바이스 관리 시스템에 의해 시행되는 다른 액세스 제어를 정의한다. 이들 각각의 정책 파일(들)에 따라 동작시킴에 의해, 각각의 애플리케이션은 하나 이상의 다른 애플리케이션 및/또는 자원과 통신하는 것이 허용 또는 제한될 수 있고, 이에 따라 가상 파티션을 생성할 수 있다. 따라서, 본원에서 사용된 바와 같이, 파티션은 물리적으로 파티셔닝된 메모리의 부분(물리적 파티션), 논리적으로 파티셔닝된 메모리의 부분(논리적 파티션) 및/또는 본원에서 설명된 바와 같은 다중 앱에 걸쳐 하나 이상의 정책 및/또는 정책 파일들의 시행 결과로 생성된 가상 파티션(가상 파티션)을 참조할 수 있다. 달리 언급하면, 관리 앱(managed app)에 대해 정책을 시행함으로써, 이들 앱들은 다른 관리 앱 및 신뢰된 기업 자원과만 통신이 가능하도록 제한될 수 있고, 이에 따라 비관리 앱 및 디바이스에 의해 뚫리지 않는(impenetrable) 가상 파티션을 생성할 수 있다.
[0071] 보안 애플리케이션은 이메일 애플리케이션, 웹 브라우징 애플리케이션, SaaS(software-as-a-service) 액세스 애플리케이션, 윈도우 애플리케이션 액세스 애플리케이션(Windows Application access application) 등일 수 있다. 보안 애플리케이션은 보안 네이티브 애플리케이션(514), 보안 애플리케이션 론처(secure application launcher)(518)에 의해 실행되는 보안 원격 애플리케이션(522), 보안 애플리케이션 론처(518)에 의해 실행되는 가상화 애플리케이션(526) 등일 수 있다. 보안 네이티브 애플리케이션(514)은 보안 애플리케이션 래퍼(secure application wrapper)(520)에 의해 래핑될(wrapped) 수 있다. 보안 애플리케이션 래퍼(520)는 보안 네이티브 애플리케이션이 디바이스 상에서 실행되는 경우 모바일 디바이스(502) 상에서 실행되는 통합 정책을 포함할 수 있다. 보안 애플리케이션 래퍼(520)는, 모바일 디바이스(520) 상에서 실행되는 보안 네이티브 애플리케이션(514)을 기업에서 호스팅되는 자원에 포인팅하는 메타 데이터를 포함할 수 있고, 보안 네이티브 애플리케이션(514)은 보안 네이티브 애플리케이션(514)의 실행 중에 요청된 작업을 완료할 것을 필요로 할 수 있다. 보안 애플리케이션 론처(518)에 의해 실행되는 보안 원격 애플리케이션(522)은 보안 애플리케이션 론처 애플리케이션(518) 내애서 실행될 수 있다. 보안 애플리케이션 론처(518)에 의해 실행되는 가상화 애플리케이션(526)은 모바일 디바이스(502) 상의 자원 또는 기업 자원(504)의 자원 등을 이용할 수 있다. 보안 애플리케이션 론처(518)에 의해 실행되는 가상화 애플리케이션(526)에 의해 모바일 디바이스(502) 상에서 사용되는 자원은 사용자 상호 작용 자원, 처리 자원 등을 포함할 수 있다. 사용자 상호 작용 자원은 키보드 입력, 마우스 입력, 카메라 입력, 촉각 입력(tactile input), 오디오 입력, 비주얼 입력, 제스처 입력 등을 수집 및 전송하기 위해 사용될 수 있다. 처리 자원은 사용자 인터페이스를 제공하고, 기업 자원(504)로부터 수신된 데이터를 처리하는 등을 위해 사용될 수 있다. 보안 애플리케이션 론처(518)에 의해 실행되는 가상화 애플리케이션(526)에 의해 기업 자원(504)에서 사용된 자원은 사용자 인터페이스 생성 자원, 처리 자원 등을 포함할 수 있다. 사용자 인터페이스 생성 자원은 사용자 인터페이스를 구성하고, 사용자 인터페이스를 변경하고, 사용자 인터페이스를 리프레시 하는 등을 위해 사용될 수 있다. 처리 자원은 정보를 생성하고, 정보를 읽고, 정보를 업데이트하고, 정보를 삭제하는 등을 위해 사용될 수 있다. 예컨대, 가상화 애플리케이션은 GUI와 연관된 사용자 상호 작용을 기록하고 서버 애플리케이션에 통신할 수 있고, 서버 애플리케이션은 사용자 상호 작용 데이터를 서버 상에서 동작하는 애플리케이션에 대한 입력으로서 사용할 것이다. 이러한 구성에서, 기업은 서버 측 상에서 애플리케이션 및 애플리케이션에 연관된 데이터, 파일 등을 유지하기 위해 선정할 수 있다. 기업이 모바일 디바이스 상에서의 전개를 위해 안전하게 보장함에 의해 여기서의 원칙에 따라 일부 애플리케이션을 "모바일화(mobilize)"하도록 선정할 수 있는 한편, 이러한 구성은 또한 특정 애플리케이션에 대해 선정될 수도 있다. 예컨대, 일부 애플리케이션이 모바일 디바이스 상에서의 사용을 위해 안전하게 보장될 수 있는 한편, 다른 애플리케이션은 모바일 디바이스 상에서의 전개를 위해 준비되거나 적절하지 않을 수 있어 기업은 가상화 기술을 통해 준비되지 않은 애플리케이션에 대한 모바일 사용자 액세스를 제공하도록 선정할 수 있다. 다른 예로서, 기업은 대규모이고 복잡한 데이터 세트를 갖는 대규모의 복잡한 애플리케이션(예컨대, 물질 자원 계획 애플리케이션)을 가질 수 있고, 모바일 디바이스 용으로 애플리케이션을 커스터마이징 하는 것이 매우 어렵거나, 아니면 바람직하기 않을 수 있어, 기업은 가상화 기술을 통해 애플리케이션에 대한 액세스를 제공하도록 선정할 수 있다. 또 다른 예로서, 기업은, 기업에 의해 보안 모바일 환경에서 조차 너무 민감한 것으로 간주되는 고도로 안전이 보장된 데이터(예컨대, 인적 자원 데이터, 고객 데이터, 엔지니어링 데이터)를 유지하는 애플리케이션을 가질 수 있고, 기업은 이러한 애플리케이션 및 데이터를 모바일 액세스하는 것을 허용하기 위해 가상화 기술을 이용하도록 선정할 수 있다. 기업은 모바일 디바이스 상에 완전히 보안되고 완전히 기능적인 애플리케이션 및 서버 측 상에서 더욱 적절하게 동작되는 것으로 간주되는 애플리케이션에 대한 액세스를 허용하는 가상화 애플리케이션을 제공하기 위해 선정할 수 있다. 일 실시예에서, 가상화 애플리케이션은 일부 데이터, 파일 등을 보안 스토리지 위치들 중 하나의 모바일 폰 상에 저장할 수 있다. 기업은 예컨대 특정 정보가 폰 상에 저장되는 것을 허용하고 다른 정보에 대해서는 허용하지 않도록 선정할 수 있다.
[0072] 가상화 애플리케이션과 관련하여, 본원에서 설명된 바와 같이, 모바일 디바이스는 GUI를 제시하고, 이후 GUI와의 사용자 상호 작용을 기록/통과(pass-through)하도록 설계된 가상화 애플리케이션을 가질 수 있다. 애플리케이션은 사용자 상호 작용을 서버 측에 통신하여 서버 측 애플리케이션에 의해 애플리케이션에 대한 사용자 상호 작용으로서 사용되도록 할 수 있다. 이에 대한 응답으로, 서버 측의 애플리케이션은 모바일 디바이스에 새로운 GUI를 다시 전송할 수 있다. 예컨대, 새로운 GUI는 정적 페이지, 동적 페이지, 애니메이션 등일 수 있고, 이에 따라 원격에 위치한 자원에 대한 액세스를 제공할 수 있다.
[0073] 보안 애플리케이션은 모바일 디바이스의 관리 파티션(510)의 보안 데이터 컨테이너(528)에 저장된 데이터를 액세스할 수 있다. 보안 데이터 컨테이너에 저장된 데이터는 보안 래핑 애플리케이션(secure wrapped applications)(514), 보안 애플리케이션 론처(522)에 의해 실행되는 애플리케이션, 보안 애플리케이션 론처(522)에 의해 실행되는 가상화 애플리케이션(526) 등에 의해 액세스될 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 파일, 데이터베이스 등을 포함할 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 특정 보안 애플리케이션(530), 보안 애플리케이션(532) 사이에 공유된 것 등에 제한된 데이터를 포함할 수 있다. 보안 애플리케이션에 제한된 데이터는 보안 범용 데이터(534) 및 고도 보안 데이터(538)를 포함할 수 있다. 보안 범용 데이터는 AES 128 비트 암호화 등과 같은 강한 형태의 암호화를 이용할 수 있고, 고도 보안 데이터(538)는 AES 254 비트 암호화와 같은 매우 강한 형태의 암호화를 이용할 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 디바이스 관리자(524)로부터 명령을 수신함에 따라 디바이스로부터 삭제될 수 있다. 보안 애플리케이션은 이중 모드 옵션(540)을 가질 수 있다. 이중 모드 옵션(540)은 사용자가 비보안 모드에서 보안 애플리케이션을 동작시키기 위한 옵션을 제공할 수 있다. 비보안 모드에서, 보안 애플리케이션은 모바일 디바이스(502)의 비관리 파티션(512) 상의 비보안 데이터 컨테이너(542)에 저장된 데이터를 액세스할 수 있다. 비보안 데이터 컨테이너에 저장된 데이터는 개인용 데이터(544)일 수 있다. 비보안 데이터 컨테이너(542)에 저장된 데이터는 또한 모바일 디바이스(502)의 비관리 파티션(512) 상에서 실행되는 비보안 애플리케이션(548)에 의해 액세스될 수도 있다. 보안 데이터 컨테이너(528)에 저장된 데이터가 모바일 디바이스(502)로부터 삭제된 경우, 비보안 데이터 컨테이너(542)에 저장된 데이터는 모바일 디바이스(502) 상에 남아있을 수 있다. 기업은 모바일 디바이스로부터 기업에 의해 소유되거나, 라이센싱되거나, 제어되는, 선택되거나 모든 데이터, 파일 및/또는 애플리케이션(기업 데이터)을 삭제하되, 사용자에 의해 소유되거나, 라이센싱되거나, 제어되는, 개인 데이터, 파일 및/또는 애플리케이션(개인용 데이터)을 두거나 보존하기를 원할 수 있다. 이 동작은 선택적 지움(selective wipe)으로서 참조될 수 있다. 본원에서 설명된 양태들에 따라 구성된 기업 및 개인 데이터로, 기업은 선택적 지움을 수행할 수 있다.
[0074] 모바일 디바이스는 기업에서 기업 자원(504) 및 기업 서비스(508), 공중 인터넷(548) 등에 연결할 수 있다. 모바일 디바이스는 가상 사설 네트워크 연결을 통해 기업 자원(504) 및 기업 서비스(508)에 연결할 수 있다. 마이크로VPN(microVPN) 또는 애플리케이션 특정 VPN(application-specific VPN)으로도 참조되는, 가상 사설 네트워크 연결은 특정 애플리케이션(550), 특정 디바이스, 모바일 디바이스 상의 특정 보안 영역 등(552)에 특정적일 수 있다. 예컨대, 폰의 보안 영역의 각각의 래핑 애플리케이션은 애플리케이션 특정 VPN을 통해 기업 자원에 액세스할 수 있고, VPN에 대한 액세스는, 아마도 사용자 또는 디바이스 속성 정보와 함께, 애플리케이션과 연관된 속성에 기초하여 허가될 수 있다. 가상 사설 네트워크 연결은 마이크로소프트 익스체인지(Microsoft Exchange) 트래픽, 마이크로소프트 액티브 디렉터리(Microsoft Active Directory) 트래픽, HTTP 트래픽, HTTPS 트래픽, 애플리케이션 관리 트래픽 등을 운반할 수 있다. 가상 사설 네트워크 연결은 싱글 사인 온(single-sign-on) 인증 프로세스(554)를 지원하고 활성화할 수 있다. 싱글 사인 온 프로세스들은 사용자가 나중에 인증 서비스(558)에 의해 검증되는, 인증 크리덴셜들의 단일 세트를 제공하도록 한다. 인증 서비스(558)는 그 후 사용자에게, 사용자가 각각의 개별적인 기업 자원(504)에 대한 인증 크리덴셜들을 제공할 것을 필요로 하지 않고, 다중 기업 자원(504)에 대한 액세스를 허가할 수 있다.
[0075] 가상 사설 네트워크 연결은 액세스 게이트웨이(560)에 의해 설정 및 관리될 수 있다. 액세스 게이트웨이(560)는 기업 자원(504)을 모바일 디바이스(502)로 전달하는 것을 관리, 가속화 및 향상시키는 성능 향상 기능을 포함할 수 있다. 액세스 게이트웨이는 또한, 모바일 디바이스(502)가 공중 인터넷(548) 상에서 실행되는 공중으로 사용 가능하고 비보안인 애플리케이션을 액세스 가능하도록 하고, 모바일 디바이스(502)로부터 공중 인터넷(548)으로 트래픽을 재라우팅할 수도 있다. 모바일 디바이스는 전송 네트워크(562)를 통해 게이트웨이를 액세스하도록 연결할 수 있다. 전송 네트워크(562)는 유선 네트워크, 무선 네트워크, 클라우드 네트워크, 로컬 영역 네트워크, 도시 영역 네트워크, 광역 네트워크, 공중 네트워크, 사설 네트워크 등일 수 있다.
[0076] 기업 자원(504)은 이메일 서버, 파일 공유 서버, SaaS 애플리케이션, 웹 애플리케이션 서버, 윈도우 애플리케이션 서버 등을 포함할 수 있다. 이메일 서버는 익스체인지(Exchange), 로터스 노트(Lotus Notes) 서버 등을 포함할 수 있다. 파일 공유 서버는 셰어파일(ShareFile) 서버 등을 포함할 수 있다. SaaS 애플리케이션은 세일즈포스(Salesforce) 등을 포함할 수 있다. 윈도우 애플리케이션 서버는 로컬 윈도우 운영 체제 상에서 실행되는 것이 의도된 애플리케이션을 제공하도록 구성된 임의의 애플리케이션 서버 등을 포함할 수 있다. 기업 자원(504)은 전제 기반(premise-based) 자원, 클라우드 기반 자원 등일 수 있다. 기업 자원(504)은 모바일 디바이스(502)에 의해 직접 액세스되거나, 액세스 게이트웨이(560)를 통해 액세스될 수 있다. 기업 자원(504)은 전송 네트워크(562)를 통해 모바일 디바이스(502)에 액세스될 수 있다. 전송 네트워크(562)는 유선 네트워크, 무선 네트워크, 클라우드 네트워크, 로컬 영역 네트워크, 도시 영역 네트워크, 광역 네트워크, 공중 네트워크, 사설 네트워크 등일 수 있다.
[0077] 기업 서비스(508)는 인증 서비스(558), 위협 감지 서비스(564), 디바이스 관리 서비스(524), 파일 공유 서비스(568), 정책 관리 서비스(570), 사회 통합 서비스(social integration services)(572), 애플리케이션 제어기 서비스(574) 등을 포함할 수 있다. 인증 서비스(558)는 사용자 인증 서비스, 디바이스 인증 서비스, 애플리케이션 인증 서비스, 데이터 인증 서비스 등을 포함할 수 있다. 인증 서비스(558)는 인증서를 이용할 수 있다. 인증서는, 기업 자원(504) 등에 의해 모바일 디바이스(502) 상에 저장될 수 있다. 모바일 디바이스(502) 상에 저장된 인증서는 모바일 디바이스 상의 암호화된 위치에 저장될 수 있고, 인증서는 인증 시점에서의 사용 등을 위해 모바일 디바이스(502) 상에 일시적으로 저장될 수 있다. 위협 감지 서비스(564)는 침입 감지 서비스, 비허가 액세스 시도 감지 서비스 등을 포함할 수 있다. 비허가 액세스 시도 감지 서비스는 디바이스, 애플리케이션, 데이터 등을 액세스하기 위한 비허가된 시도를 포함할 수 있다. 디바이스 관리 서비스(524)는 구성, 프로비저닝, 보안, 지원, 모니터링, 보고 및 사후 서비스를 포함할 수 있다. 파일 공유 서비스(568)는 파일 관리 서비스, 파일 스토리지 서비스, 파일 협업 서비스 등을 포함할 수 있다. 정책 관리자 서비스(570)는 디바이스 정책 관리자 서비스, 애플리케이션 정책 관리자 서비스, 데이터 정책 관리자 서비스 등을 포함할 수 있다. 사회 통합 서비스(572)는 연락처 통합 서비스, 협업 서비스, 페이스북(Facebook), 트위터(Twitter) 및 링크드인(LinkedIn)과 같은 소셜 네트워크와의 통합 등을 포함할 수 있다. 애플리케이션 제어기 서비스(574)는 관리 서비스, 프로비저닝 서비스, 전개 서비스, 할당 서비스, 취소 서비스, 래핑 서비스 등을 포함할 수 있다.
[0078] 기업 모바일 기술 아키텍처(500)는 애플리케이션 스토어(578)을 포함할 수 있다. 애플리케이션 스토어(578)는 비-래핑된(unwrapped) 애플리케이션(580), 사전-래핑된(pre-wrapped) 애플리케이션(582) 등을 포함할 수 있다. 애플리케이션은 애플리케이션 제어기(574)로부터 애플리케이션 스토어(578)에 채워질 수 있다. 애플리케이션 스토어(578)는 액세스 게이트웨이(560)를 통해 모바일 디바이스(502)에 의해, 공중 인터넷(548) 등을 통해 액세스될 수 있다. 애플리케이션 스토어에는 사용하기에 직관적이고 용이한 사용자 인터페이스가 제공될 수 있다. 애플리케이션 스토어(578)는 소프트웨어 개발 킷(584)에 대한 액세스를 제공할 수 있다. 소프트웨어 개발 킷(584)은 사용자에게, 본 설명에서 상술한 바와 같이 애플리케이션을 래핑함으로써 사용자에 의해 선택된 애플리케이션의 안전을 보장하도록 하는 기능을 제공할 수 있다. 그 후 소프트웨어 개발 킷(584)을 이용하여 래핑된 애플리케이션은, 애플리케이션 제어기(574)를 이용하여 애플리케이션 스토어(578)에 그것을 채움으로써 모바일 디바이스(502)에 사용 가능하도록 만들 수 있다.
[0079] 기업 모바일 기술 아키텍처(500)는 관리 및 분석 기능(588)을 포함할 수 있다. 관리 및 분석 기능(588)은 자원이 이용되는 방식, 자원이 이용되는 빈도 등에 관한 정보를 제공할 수 있다. 자원은 디바이스, 애플리케이션, 데이터 등을 포함할 수 있다. 자원이 이용되는 방식은 어떤 디바이스가 어떤 애플리케이션을 다운로드하는지, 어떤 애플리케이션이 어떤 데이터를 액세스하는지 등을 포함할 수 있다. 자원이 이용되는 빈도는 애플리케이션이 얼마나 자주 다운로드 되었는지, 데이터의 특정 세트가 몇 번 애플리케이션에 의해 액세스 되었는지 등을 포함할 수 있다.
[0080] 도 6은 다른 예시적인 기업 모바일 관리 시스템(600)을 나타낸다. 도 5를 참조하여 상술한 모바일 관리 시스템(500)의 일부 컴포넌트들은 단순성을 위해 생략되었다. 도 6에 도시된 시스템(600)의 아키텍처는 도 5에 관해 상술한 시스템(500)의 아키텍처와 많은 측면에서 유사하고, 이전에 언급되지 않은 추가적인 특징들을 포함할 수 있다.
[0081] 이 경우, 좌측은 관리 모바일 디바이스(602) 및 클라이언트 에이전트(604)를 나타내고, 이들은 (액세스 게이트웨이(Access Gateway) 및 앱 제어기(App Controller) 기능을 포함하는) 게이트웨이 서버(606)로 상호 작용을 하여, 우측에 도시된 것과 같은 다양한 기업 자원(608) 및 익스체인지, 쉐어포인트(Sharepoint), PKI 자원, 커버로스(Kerberos) 자원, 인증서 발급 서비스와 같은 서비스(609)를 액세스한다. 세부적으로 도시되지는 않았지만, 관리 모바일 디바이스(602)는 또한 애플리케이션을 선택하고 다운로드하기 위한 기업 애플리케이션 스토어(스토어프론트(StoreFront))와 상호 작용할 수도 있다.
[0082] 클라이언트 에이전트(604)는, HDX/ICA 디스플레이 원격 프로토콜을 이용하여 액세스될 수 있는, 기업 데이터 센터에서 호스팅되는 윈도우 앱/데스크탑에 대한 UI(사용자 인터페이스) 매개자(intermediary)로서 동작할 수 있다. 클라이언트 에이전트(604)는 또한 모바일 디바이스(602) 상에, 네이티브 iOS또는 안드로이드 애플리케이션과 같은 네이티브 애플리케이션의 설치 및 관리를 지원한다. 예컨대, 앞선 도면에 도시된 관리 애플리케이션(610)(메일, 브라우저, 래핑 애플리케이션)은 모두 디바이스 상에서 국부적으로 실행되는 네이티브 애플리케이션이다. 클라이언트 에이전트(604) 및 본 아키텍처의 애플리케이션 관리 프레임워크는, 기업 자원/서비스(608)에 대한 연결 및 SSO(single sign on)와 같은 정책 기반 관리 능력 및 특징을 제공하기 위해 동작한다. 클라이언트 에이전트(604)는 기업에 대한, 보통 다른 게이트웨이 서버 컴포넌트에 대해 SSO 및 액세스 게이트웨이(Access Gateway, AG)에 대한 주된 사용자 인증을 처리한다. 클라이언트 에이전트(604)는 모바일 디바이스(602) 상의 관리 애플리케이션(610)의 행위를 제어하기 위해 게이트웨이 서버(606)로부터 정책을 획득한다.
[0083] 네이티브 애플리케이션(610)과 클라이언트 에이전트(604) 사이의 보안 IPC 링크(612)는 관리 채널을 나타내고, 클라이언트 에이전트가, 각각의 애플리케이션을 "래핑하는(wrapping)" 애플리케이션 관리 프레임워크(614)에 의해 시행될 정책을 공급하는 것을 허용한다. IPC 채널(612)은 또한 클라이언트 에이전트(604)가, 기업 자원(608)에 대한 연결 및 SSO를 가능하도록 하는 크리덴셜들 및 인증 정보를 공급하도록 허용한다. 마지막으로, IPC 채널(612)은 애플리케이션 관리 프레임워크(614)가, 온라인 및 오프라인 인증과 같은 클라이언트 에이전트(604)에 의해 구현되는 사용자 인터페이스 기능을 호출하는 것을 허용한다.
[0084] 클라이언트 에이전트(604)와 게이트웨이 서버(606) 사이의 통신은 필수적으로 각각의 네이티브 관리 애플리케이션(610)을 래핑하는 애플리케이션 관리 프레임워크(614)로부터 관리 채널의 연장이다. 애플리케이션 관리 프레임워크(614)는 클라이언트 에이전트(604)로부터 정책 정보를 요청하고, 다음으로 그것을 게이트웨이 서버(606)로부터 요청한다. 애플리케이션 관리 프레임워크(614)는 인증을 요청하고, 클라이언트 에이전트(604)는 게이트웨이 서버(606)(넷스케일러 액세스 게이트웨이(NetScaler Access Gateway)로도 알려짐)의 게이트웨이 서비스부에 로깅한다. 클라이언트 에이전트(604)는 또한 게이트웨이 서버(606) 상의 서비스를 지원하는 호출을 할 수 있고, 이것은 로컬 데이터 볼트(vault)(616)에 대한 암호화 키를 도출하기 위한 입력 재료를 생성하거나, PKI로 보호되는 자원에 대한 직접 인증을 가능할 수 있도록 하는 클라이언트 인증서를 제공할 수 있으며, 이에 대해서는 더욱 상세하게 후술하도록 한다.
[0085] 더욱 상세하게, 애플리케이션 관리 프레임워크(614)는 각각의 관리 애플리케이션(610)을 "래핑(wraps)"한다. 이것은 명시적인 빌드(build) 단계를 통해 또는 후빌드(post-build) 처리 단계를 통해 통합될 수 있다. 애플리케이션 관리 프레임워크(614)는, 보안 IPC 채널을 초기화하고 애플리케이션에 대한 정책을 획득하기 위해 애플리케이션(610)의 처음 런치 때에 클라이언트 에이전트(604)와 "페어링(pair)"할 수 있다. 애플리케이션 관리 프레임워크(614)는, 클라이언트 에이전트 로긴 의존성 및 로컬 OS 서비스가 사용될 수 있는 방법 또는 이들이 애플리케이션(610)과 상호 작용을 할 수 있는 방법을 제한하는 일부 봉쇄 정책 국부적으로 적용할 수 있는 정책의 관련 부분을 시행할 수 있다.
[0086] 애플리케이션 관리 프레임워크(614)는, 인증 및 내부 네트워크 액세스를 이용하기 위해 보안 IPC 채널(612)을 통해 클라이언트 에이전트(604)에 의해 제공되는 서비스를 사용할 수 있다. 사설 및 공유된 데이터 볼트(616)(컨테이너)에 대한 키 관리는 또한 관리 애플리케이션(610) 및 클라이언트 에이전트(604) 사이의 적절한 상호 작용에 의해 관리될 수도 있다. 볼트(616)는 온라인 인증 후에만 사용 가능할 수 있거나, 정책에 의해 허용되는 경우 오프라인 인증 후에 사용 가능하도록 이루어질 수 있다. 볼트(616)의 처음 사용은 온라인 인증을 필요로 하고, 오프라인 액세스는 많으면 온라인 인증이 다시 요구되기 전의 정책 리프레시 기간에 제한될 수 있다.
[0087] 내부 자원에 대한 네트워크 액세스는 액세스 게이트웨이(606)를 통해 개개의 관리 애플리케이션(610)으로부터 직접 발생될 수 있다. 애플리케이션 관리 프레임워크(614)는 각각의 애플리케이션(610)에 대해 네트워크 액세스를 조율할 책임이 있다. 클라이언트 에이전트(604)는 이어지는 온라인 인증에서 획득한 이차적인 크리덴셜들에 제한되는 적절한 시간을 제공함으로써 이러한 네트워크 연결을 이용할 수 있다. 역방향 웹 프록시 연결(reverse web proxy connection) 및 종단 VPN 스타일 터널(end-to-end VPN-style tunnel)(618)과 같은 네트워크 연결의 다중 모드가 사용될 수 있다.
[0088] 메일 및 브라우저 관리 애플리케이션(610)은 특별한 지위를 가지고, 임의의 래핑 애플리케이션에게 일반적으로 사용 가능하지 않을 수 있는 기능을 사용할 수 있다. 예컨대, 메일 애플리케이션은 특별한 백그라운드 네트워크 액세스 메커니즘을 사용할 수 있고, 이것은 메일 애플리케이션이 완전한 AG 로그온을 필요로 하지 않고 연장된 시간 기간 동안 익스체인지를 액세스할 수 있도록 한다. 브라우저 애플리케이션은 다중 사설 데이터 볼트를 사용하여 서로 다른 종류의 데이터를 분리할 수 있다.
[0089] 이러한 아키텍처는 다양한 다른 보안 특징들의 통합을 지원한다. 예컨대, 일부 경우의 (게이트웨이 서비스를 포함하는) 게이트웨이 서버(606)는 AD 패스워드를 유효화할 필요가 없을 것이다. AD 패스워드가 일부 상황에서 일부 사용자에게 인증 인자로서 사용되는지 여부는 기업의 재량에 달려 있을 수 있다. 사용자가 온라인 또는 오프라인에 있는 경우(즉, 네트워크에 연결 또는 비연결된 경우) 서로 다른 인증 방법들이 사용될 수 있다.
[0090] 스텝 업 인증(Step up authentication)은 게이트웨이 서버(606)가, 강한 인증을 필요로 하는 고도로 분류된 데이터에 대한 액세스를 허용하는 관리 네이티브 애플리케이션(610)을 식별하고, 이러한 수단이 이전의 약한 레벨의 로긴 후에 사용자에 의해 재인증이 필요함을 의미한다고 할지라도, 이러한 애플리케이션들에 대한 액세스가 오로지 적절한 인증을 수행한 후에만 허용된다는 점을 보장할 수 있는 특징이다.
[0091] 이러한 해결 방안의 다른 보안 특징은 모바일 디바이스(602) 상의 데이터 볼트(616)(컨테이너)의 암호화이다. 볼트(616)는 암호화되어, 파일, 데이터베이스 및 구성을 포함하는 모든 디바이스 상의 데이터가 보호된다. 온라인 볼트에 대해, 키가 서버(게이트웨이 서버(606)) 상에 저장될 수 있고, 오프라인 볼트에 대해, 키의 로컬 복사본이 사용자 패스워드에 의해 보호될 수 있다. 데이터가 보안 컨테이너(616)에서 디바이스(602) 상에 국부적으로 저장된 경우, 최소 AES 256 암호화 알고리즘이 사용되는 것이 바람직하다.
[0092] 다른 보안 컨테이너 특징이 또한 구현될 수 있다. 예컨대, 로깅 기능이 포함될 수 있고, 애플리케이션(610) 내부에서 일어나는 모든 보안 이벤트는 기록되고 백엔드에 보고된다. 만일 애플리케이션(610)이 훼손을 감지한 경우와 같은 경우, 데이터 지움이 지원될 수 있고, 연관된 암호화 키가 랜덤 데이터로 쓰여질 수 있고, 사용자 데이터가 파괴된 파일 시스템 상에 아무런 힌트도 나기지 않을 수 있다. 스크린샷 보호는, 애플리케이션이 임의의 데이터가 스크린샷에 저장되는 것을 방지할 수 있는 다른 특징이다. 예컨대, 키 윈도우의 숨겨진 속성은 YES로 설정될 수 있다. 이것은 스크린 상에 현재 디스플레이되는 임의의 컨텐트가 숨겨지도록 만들고, 이에 따라 모든 컨텐트가 일반적으로 존재하는 공백 스크린샷을 만든다.
[0093] 임의의 데이터가, 예컨대 그것을 외부 애플리케이션에 복사 또는 송신함으로써, 애플리케이션 컨테이너의 외부로 국부적으로 전송되는 것을 방지하는 것과 같이, 로컬 데이터 전송이 방지될 수 있다. 키보드 캐시 특징은 민감한 텍스트 필드에 대해 자동 교정 기능을 디스에이블하도록 동작할 수 있다. SSL 인증서 유효화는 애플리케이션이 특별히 서버 SSL 인증서를 키체인에 저장하는 대신에 유효화하도록 동작 가능할 수 있다. 암호화 키 생성 특징은, 디바이스 상의 데이터를 암호화하기 위해 사용되는 키가 (만일 오프라인 액세스가 필요한 경우) 사용자에 의해 공급되는 암호문(passphrase)을 이용하여 생성되도록 사용될 수 있다. 그것은 만일 오프라인 액세스가 불필요한 경우 랜덤하게 생성되고 서버측에 저장된 다른 키와 XOR될 수 있다. 키 도출 함수는 사용자 패스워드로부터 생성된 키가 암호학적인 해시를 생성하는 대신에 KDF(키 도출 함수, 특히 PBKDF2)를 사용하도록 동작할 수 있다. 후자는 키를 브루트 포스(brute force) 또는 딕셔너리 공격(dictionary attack)에 취약하도록 만든다.
[0094] 또한, 하나 이상의 초기화 벡터가 암호화 방법에 사용될 수 있다. 초기화 벡터는 동일한 암호화된 데이터의 다중 복사본을 생성하여 서로 다른 암호문 출력을 생성하고, 재생 및 암호 해독 공격을 모두 방지한다. 이것은 또한 공격자가, 데이터를 암호화하기 위해 사용된 구체적인 초기 벡터가 알려지지 않은 경우 도난된 암호화 키로 어떤 데이터든 해독하는 것 까지도 방지할 수 있다. 또한, 인증 후 해독이 사용될 수 있고, 애플리케이션 데이터는 사용자가 애플리케이션 내에서 인증된 후에만 해독될 수 있다. 다른 특징이 메모리의 민감한 데이터에 관련될 수 있고, 필요한 경우에 한해 (디스크가 아닌) 메모리에 유지될 수 있다. 예컨대, 로긴 크리덴셜들은 로긴 후 메모리로부터 제거되고, 오브젝티브 C 인스턴스 변수들 내부의 암호화 키 및 다른 데이터는 쉽게 참조될 수 있기 때문에 저장되지 않는다. 대신에, 메모리는 이들에 대해 수동적으로 할당될 수 있다.
[0095] 비활성 타임아웃이 구현될 수 있고, 정책적으로 정의된 기간의 비활성 이후 사용자의 세션은 종료된다.
[0096] 애플리케이션 관리 프레임워크(614)로부터의 데이터 유출은 다른 방식으로 방지될 수 있다. 예컨대, 애플리케이션(610)이 백그라운드로 들어간 경우, 메모리는 소정의(설정 가능한) 시간 이후에 삭제될 수 있다. 백그라운드된 경우, 포그라운드 프로세스를 고정하기 위해 애플리케이션의 최종 표시 화면의 스냅샷이 찍힐 수 있다. 스크린샷은 기밀 데이터를 포함하고 있을 수 있으므로 제거되어야 한다.
[0097] 다른 보안 특징은 하나 이상의 애플리케이션에 액세스하기 위해 AD(active directory)(622) 패스워드의 사용 없이 OTP(one time password)(620)의 사용에 관련된다. 일부의 경우에, 일부 사용자는 그들의 AD 패스워드를 알지 못한다(또는 아는 것이 허용되지 않는다). 따라서 이들 사용자들은 SecurID와 같은 하드웨어 OTP 시스템을 이용하는 것과 같이 OTP(620)를 이용하여 인증을 할 수 있다(OTP는 Entrust 또는 Gemalto와 같은 서로 다른 제조사에 의해 공급될 수 있다). 일부의 경우에, 사용자가 사용자 ID로 인증을 한 후, 텍스트는 OTP(620)으로 사용자에게 송신된다. 일부 경우에, 이것은 오로지 단일 필드가 있는 프롬프트를 포함하는 온라인 사용에 대해서만 구현될 수 있다.
[0098] 오프라인 패스워드는, 오프라인 사용이 기업 정책을 통해 허용되는, 이들 애플리케이션(610)에 대한 오프라인 인증에 대해 구현될 수 있다. 예컨대, 기업은 스토어프론트(StoreFront)가 이러한 방식으로 액세스되는 것을 원할 수 있다. 이 경우에, 클라이언트 에이전트(604)는 사용자가 커스텀 오프라인 패스워드를 설정하고 AD 패스워드는 사용되지 않도록 요청할 수 있다. 게이트웨이 서버(606)는, 표준 윈도우 서버 패스워드 복잡도 요구사항에 의해 설명되는 바와 같은, 최소 길이, 문자 클래스 구성, 패스워드의 연령에 관한 패스워드 기준을 제어 및 시행하기 위한 정책을 제공할 수 있고, 이들 요구사항은 변경될 수 있다.
[0090] 다른 특징은 (애플리케이션 관리 프레임워크 마이크로 VPN기능을 통해 PKI로 보호된 웹 자원을 액세스하기 위한 목적의) 이차적인 크리덴셜들으로서 특정 애플리케이션(610)에 대한 클라이언트 측 인증서의 가능화(enablement)에 관련된다. 예컨대, @WorkMail과 같은 애플리케이션은 이러한 인증서를 이용할 수 있다. 이 경우에, 액티브싱크(ActiveSync) 프로트콜을 이용하는 인증서 기반의 인증이 지원될 수 있고, 클라이언트 에이전트(604)로부터의 인증서는 게이트웨이 서버(606)에 의해 검색되어 키체인에서 사용될 수 있다. 각각의 관리 애플리케이션은, 게이트웨이 서버(606)로 정의되는 라벨에 의해 식별되는 하나의 연관된 클라이언트 인증서를 가질 수 있다.
[00100] 게이트웨이 서버(606)는 기업 특별 용도의 웹 서비스와 상호 작용하여 클라이언트 인증서의 발행을 지원하여 관련된 관리 애플리케이션이 내부의 PKI 보호 자원에 인증하는 것을 허용할 수 있다.
[00101] 클라이언트 에이전트(604) 및 애플리케이션 관리 프레임워크(614)는 내부의 PKI 보호된 네트워크 자원에 인증하기 위한 클라이언트 인증서를 획득 및 사용하는 것을 지원하기 위해 강화될 수 있다. 다양한 레벨의 보안 및/또는 분리 요구사항을 맞추기 위해, 2 이상의 인증서가 지원될 수 있다. 인증서는 메일 및 브라우저 관리 애플리케이션에 의해, 그리고 궁극적으로 임의의 래핑 애플리케이션에 의해 사용될 수 있다(이들 애플리케이션은, https 요청을 중재하기 위한 애플리케이션 관리 프레임워크에 합리적인, 웹 서비스 스타일 통신 패턴을 이용할 수 있다).
[00102] iOS 상에서 애플리케이션 관리 클라이언트 인증서 지원은 PKCS 12 BLOB(Binary Large Object)를 각각의 사용 기간에 대해 각각의 관리 애플리케이션의 iOS 키체인에 임포트(import)하는 것에 의존할 수 있다. 애플리케이션 관리 프레임워크 클라이언트 인증서 지원은 사설 인-메모리(in-memory) 키 스토리지와 함께 HTTPS 구현을 이용할 수 있다. 클라이언트 인증서는 iOS 키체인에서는 절대로 존재하지 않을 것이고, 잠재적으로 강하게 보호되는 "온라인 전용(online-only)" 데이터 값에 있는 경우를 제외하고는 지속되지 않을 것이다.
[00103] 상호 SSL은 또한 모바일 디바이스(602)가 기업에 인증하는 것 및 그 반대의 경우를 요구함으로써 추가적인 보안을 제공하도록 구현될 수 있다. 게이트웨이 서버(606)에 대한 인증을 위한 가상 스마트 카드 또한 구현될 수 있다.
[00104] 제한된 그리고 전체 Kerberos 지원은 추가 특징들일 수 있다. 전체 지원 특징은 AD 패스워드 또는 트러스티드 클라이언트 인증서를 사용하여 AD(622)에 대해 전체 Kerberos 로그인을 수행하고 HTTP Negotiate 인증 난제들에 응답하기 위하여 Kerberos 서비스 티켓들을 획득하는 능력과 관련된다. 제한된 지원 특징은 AFEE에서의 강제 위임(constrained delegation)과 관련되며, 여기서 AFEE는 Kerberos 프로토콜 전환을 인보크하는 것을 지원하며, 따라서 이는 HTTP Negotiate 인증 난제들에 응답하여 (강제 위임 대상인) Kerberos 서비스 티켓들을 획득하여 사용할 수 있다. 이러한 메커니즘은 리버스 웹 프록시(CVPN으로도 지칭됨) 모드에서 그리고 http(https가 아님) 연결들이 VPN 및 마이크로 VPN 모드에서 프록시될 때 작동한다.
[00105] 다른 특징은 애플리케이션 컨테이너 로킹 및 지움과 관련되며, 이는 자일-브레이크(jail-break) 또는 루팅 검출시 자동적으로 발생하며 관리 콘솔로부터 푸시 커맨드로서 발생할 수 있으며 그리고 애플리케이션(610)이 실행되지 않을 때 조차 원격 지움 기능을 포함할 수 있다.
[00106] StoreFront 및 App 제어기의 멀티-사이트 아키텍처 또는 구성이 지원될 수 있으며, 이는 사용자들로 하여금 실패의 경우에 여러 상이한 위치들 중 하나의 위치로부터 서비스받도록 한다.
[00107] 일부 경우들에서, 관리 애플리케이션들(610)은 API(예컨대, OpenSSL)를 통해 인증서 및 개인 키에 액세스하도록 허용될 수 있다. 기업의 트러스티드 관리 애플리케이션들(610)은 애플리케이션의 클라이언트 인증서 및 개인 키를 사용하여 특정 공개 키 동작들을 수행하도록 허용될 수 있다. 예컨대, 애플리케이션이 브라우저와 같이 동작하며 인증서 액세스가 요구되지 않을 때, 애플리케이션이 "나는 누구인가"에 대한 인증서를 판독할 때, 애플리케이션이 보안 세션 토큰을 구축하기 위하여 인증서를 사용할 때, 그리고 애플리케이션이 중요한 데이터에 대한 디지털 서명(예컨대, 트랜잭션 로그) 또는 일시적 데이터 암호화를 위해 개인 키들을 사용할 때, 다양한 사용의 경우들이 식별되어 처리될 수 있다.
[00108] 예시적인 실시예(들)
[00109] 도 7은 모바일 디바이스의 샘플 인터페이스를 예시하며, 도 8-14는 애플리케이션에 대한 동작 모드를 결정하기 위한 방법들의 샘플 실시예들을 예시한다. 도 8-14에 도시된 방법들은 다양한 실시예들에서 임의의 적절한 방식으로 결합될 수 있다. 도 7에 도시된 샘플 인터페이스는 디바이스(107, 109, 240, 502 및/또는 602)와 같은 모바일 디바이스상에서 디스플레이될 수 있으며, 도 8-14에 도시된 방법들은 이러한 모바일 디바이스에 의해 구현될 수 있다.
[00110] 도 8에서, 애플리케이션에 대한 애플리케이션 모드를 결정하기 위한 예시적인 방법 단계들의 흐름도가 도시된다. 도 8의 방법은 단계(802)에서 시작할 수 있으며, 단계(802)에서 복수의 애플리케이션들이 제시된다. 예컨대, 복수의 애플리케이션들이 모바일 디바이스상에서 사용자에게 제시될 수 있다. 도 7은 모바일 디바이스(예컨대, 태블릿, 스마트폰 등)상에 디스플레이되는 사용자 인터페이스(700)가 애플리케이션들 A(700), B(701), C(702) 및 E(703)을 사용자에게 제시하는 실시예를 예시한다. 이는 단순히 예이며, 복수의 애플리케이션들이 임의의 적절한 방식으로 제시될 수 있다. 일 실시예에서, 복수의 애플리케이션들은 이메일 애플리케이션들, 웹 브라우징, 애플리케이션들, SaaS(software-as-a-service) 액세스 애플리케이션들 등을 포함할 수 있다.
[00111] 도 8의 방법은 단계(802)로부터 단계(804)로 진행할 수 있으며, 단계(804)에서, 복수의 애플리케이션들 중 하나의 애플리케이션에 대한 선택이 수신된다. 도 7에 도시된 실시예를 참조하여, 모바일 디바이스의 사용자는 예컨대 모바일 디바이스의 디스플레이를 눌러서 애플리케이션을 선택함으로써, 제시된 애플리케이션들 중 하나를 선택할 수 있다. 이는 단순히 예이며, 애플리케이션은 이의의 적절한 방식으로 선택될 수 있다.
[00112] 도 8의 방법은 단계(804)로부터 단계(806)로 진행할 수 있으며, 단계(806)에서, 선택된 애플리케이션들에 대한 컨텍스트는 선택된 애플리케이션을 실행하는 디바이스의 하나 이상의 동작 파라미터들에 기초하여 결정된다. 예컨대, 컨텍스트는 애플리케이션에 의해 액세스될 계정, 모바일 디바이스의 위치 또는 애플리케이션을 실행하는 모바일 디바이스의 네트워크 연결 상태에 기초할 수 있거나 또는 임의의 다른 동작 파라미터에 기초할 수 있다. 이하에서 추가로 설명된 도 9-13의 방법들은 예시적인 컨텍스트들이 설명되는 다양한 실시예들을 예시한다.
[00113] 도 8의 방법은 단계(804)로부터 단계(806)로 진행할 수 있으며, 단계(806)에서, 선택된 애플리케이션에 대한 동작 모드는 컨텍스트에 기초하여 결정된다. 일 실시예에서, 동작 모드들은 예컨대 사용자가 직장-관련 활동을 수행할지 개인 활동을 수행할지의 경우에 대한 디바이스의 업무 모드 및 비업무 모드를 각각 나타내는 관리 모드 및 비관리 모드를 포함할 수 있다. 업무 모드는 기업 자원들에 대한 액세스를 제공할 수 있으며, 하나 이상의 콘텐츠 필터들 및/또는 제약들을 포함할 수 있는 반면에, 비업무 모드는 단지 비기업 관련 자원들에만 액세스를 허용하는 콘텐츠 필터들/제약들(또는 이 콘텐츠 필터들/제약들이 없음) 및/또는 정책들(또는 비정책)을 적용할 수 있다.
[00114] 게다가, 예컨대 사용자에 의해 제공된 크리덴셜들의 세트들 또는 다양한 사용자들의 상이한 보안 레벨들, 크리덴셜들의 세트에 의해 식별된 상이한 사용자 역할들(예컨대, 관리자 대 직원 종업원들), 디바이스가 동작하는 지리적 위치들, 네트워크 위치들, 동작 환경(예컨대, 헬스케어-관련 관리 모드 대 금융 산업 관리 모드)에 기초하여 또는 임의의 다른 맥락 결정에 기초하여 상이한 관리 모드들이 존재할 수 있다. 일부 모드들은 다수의 컨텍스트들, 예컨대 위치 및 역할에 기초할 수 있다. 하나의 이러한 조합에서, 제 1 관리 모드는 헬스케어 제공자에 적용가능한 정책들을 제공할 수 있는 반면에, 제 2 관리 모드는 환자에 적용가능한 정책들을 적용할 수 있다. 2명의 사용자들 사이에서 디바이스가 전달되기 때문에, 사용자(또는 사용자 행동에 기초한 소프트웨어)는 디바이스가 상이한 역할을 가진 사용자에게 전달될 때 모드 변화를 개시할 수 있다. 새로운 사용자는 예컨대 더 보안적인 모드로 변화할 때 모드들을 변경하도록 적절한 크리덴셜들로 진입하도록 요구받을 수 있다. 헬스케어 제공자 모드는 다양한 환자 기록들, 자원들, 스케줄링 세부사항들, 금용 기록들 및 다른 정보에 대한 액세스를 제공할 수 있는 반면에, 환자 모드는 예컨대 HIPPA 및 다른 사생활 고려사항들에 기초하여 그 환자의 정보에만 제한될 수 있다. 문맥적 결정들의 다른 조합들이 또한 사용될 수 있다.
[00115] 일 실시예에서, 결정된 컨텍스트는 동작 모드를 결정하기 위하여, 저장된 정책과 비교될 수 있다. 모바일 디바이스(502)와 같은 모바일 디바이스는 애플리케이션에 대한 동작 모드를 결정하기 위하여 사용되는 하나 이상의 정책들을 저장할 수 있다. 일 실시예에서, 정책들은 예컨대 도 5를 참조로 하여 앞서 설명된 정책 관리자(570)에 원격적으로 저장될 수 있거나 또는 디바이스상에 국부적으로 저장될 수 있다. 일례로, 컨텍스트는 보안 계정에 액세스하도록 구성된 선택된 애플리케이션, 예컨대 보안 이메일 계정에 액세스하도록 구성된 이메일 애플리케이션을 포함할 수 있다. 이러한 컨텍스트는 저장된 정책과 비교될 수 있다. 예컨대, 저장된 정책은 보안 이메일 계정에 액세스하도록 구성되는 이메일 애플리케이션이 관리 애플리케이션으로서 실행되어야 함을 정의할 수 있다. 저장된 정책은 디바이스 사용자의 개인 계정에 액세스하도록 구성될 때 이메일 애플리케이션이 비관리 모드에서 동작중일 수 있음을 추가로 표시할 수 있다. 추가 컨텍스트들 및 정책들은 도 9-13과 관련하여 설명될 것이다.
[00116] 도 8의 방법은 단계(806)로부터 단계(808)로 진행할 수 있으며, 단계(808)에서, 선택된 애플리케이션은 결정된 동작 모드로 실행된다. 예컨대, 동작 모드는 비관리 모드로서 결정될 수 있거나 또는 다수의 관리 모드들 중 하나의 모드로서 결정될 수 있으며, 선택된 애플리케이션은 결정된 모드로 실행될 수 있다.
[00117] 일 실시예에서, 관리 동작 모드는 도 5를 참조로 하여 앞서 설명된 바와같이 모바일 디바이스(502)의 관리 파티션(510)의 부분으로서 애플리케이션을 실행하는 것을 포함할 수 있다. 따라서, 관리 애플리케이션은 보안 네이티브 애플리케이션들(514), 보안 애플리케이션 론처(518)에 의해 실행되는 보안 원격 애플리케이션들(522), 보안 애플리케이션 론처(518)에 의해 실행되는 가상화 애플리케이션들(526) 등으로서 실행될 수 있다.
[00118] 일 실시예에서, 관리 모드로 실행되는 애플리케이션은 모바일 디바이스의 관리 파티션(510)(물리적, 논리적 또는 가상 파티션)의 보안 데이터 컨테이너(528)에 저장된 데이터에 액세스할 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 특정 보안/관리 애플리케이션(530)에 제약되는 데이터, 다른 보안/관리 애플리케이션들 등 사이에서 공유되는 데이터 등을 포함할 수 있다. 보안 애플리케이션에 제약된 데이터는 보안 범용 데이터(534) 및 고보안 데이터(538)를 포함할 수 있다. 상이한 레벨들 및 타입들의 보안 특징들은 보안 데이터의 레벨들을 구별하기 위하여 사용될 수 있다. 일 실시예에서, 관리 모드로 실행되는 애플리케이션은 보안 데이터 컨테이너(528)의 데이터를 세이브하거나 수정하거나 또는 제거할 수 있다. 세이브되거나 또는 수정된 데이터는 보안 데이터 컨테이너(528)에 저장된 다른 데이터와 유사하게 암호화될 수 있다.
[00119] 일 실시예에서, 관리 모드로 실행되는 애플리케이션은 도 5와 관련하여 앞서 설명된 바와같이 가상 사설 네트워크 연결들을 통해 기업 자원들(504) 및 기업 서비스들(508)에 연결될 수 있다. 가상 사설 네트워크 연결들은 특정 애플리케이션, 예컨대 선택된 애플리케이션, 특정 디바이스들, 모바일 디바이스상의 특정 보안 영역들 등에 특정한 마이크로 VPN들일 수 있다. 예컨대, 폰의 보안 영역의 래핑된 애플리케이션들은 애플리케이션 특정 VPN를 통해 기업 자원들에 액세스할 수 있으며, 따라서 VPN에 대한 액세스는 가능한 경우에 사용자 또는 디바이스 속성 정보 및 정책 정보와 함께 애플리케이션과 연관된 속성들에 기초하여 승인될 것이다.
[00120] 일 실시예에서, 관리 모드로 실행되는 애플리케이션은 애플리케이션으로부터 전송된 데이터를 암호화할 수 있다. 예컨대, 관리 모드로 실행되는 애플리케이션은 네트워크를 통해 컴퓨팅 디바이스와 통신할 수 있으며, 애플리케이션으로부터 디바이스로 전송된 데이터는 암호화될 수 있다. 게다가, 컴퓨팅 디바이스로부터 애플리케이션으로 통신된 데이터가 또한 암호화될 수 있으며, 관리 모드로 실행되는 애플리케이션은 수신된 데이터를 암호해독하도록 구성될 수 있다.
[00121] 일 실시예에서, 관리 모드로 실행되는 애플리케이션은 보안 포털에 액세스할 수 있다. 예컨대, 애플리케이션은 네트워크, 예컨대 마이크로 VPN를 통해 컴퓨팅 디바이스에 연결할 수 있으며, 비관리 모드로 실행되는 애플리케이션들과 같은 비보안 애플리케이션들에 의해 액세스되지 않을 수 있는 보안 포털에 액세스할 수 있다.
[00122] 일 실시예에서, 비관리 동작 모드는 도 5와 관련하여 앞서 설명된 바와같이 모바일 디바이스(502)의 비관리 파티션(512)(물리적, 논리적 또는 가상 파티션)의 부분으로서 애플리케이션을 실행하는 것을 포함할 수 있다. 비관리 모드에서, 애플리케이션은 모바일 디바이스((502)의 비관리 파티션(512)상의 비보안 데이터 컨테이너(542)에 저장된 데이터에 액세스할 수 있다. 비보안 데이터 컨테이너에 저장된 데이터는 개인 데이터(544)일 수 있다.
[00123] 일 실시예에서, 2개 이상의 관리 모드가 가능한 경우에, 덜 보안적인 관리 모드로 실행되는 애플리케이션은 더 보안적인 관리 모드로 실행되는 애플리케이션과 유사하게 실행될 수 있으나 후자의 모든 양상들을 포함하지 않을 수 있다. 예컨대, 도 5를 참조로하여 기술된 바와같이, 덜 보안적인 관리 모드로 실행되는 애플리케이션은 정보가 암호화된 네트워크를 통해 애플리케이션으로부터 전송되게 할 수 있으나, 애플리케이션은 보안 데이터 컨테이너(528)에 액세스하지 못할 수 있다. 다른 예에서, 덜 보안적인 관리 모드로 실행되는 애플리케이션은 보안 데이터 컨테이너(528)에 대해 액세스할 수 있으나, 가상 사설 네트워크 연결들을 통해 기업 자원들(504) 및 기업 서비스들(508)에 연결하지 못할 수 있다. 따라서, 결정된 컨텍스트에 따라, 덜 보안적인 관리 모드로 실행되는 애플리케이션은 더 보안적인 관리 모드로 실행되는 애플리케이션의 양상들 및 비관리 모드로 실행되는 애플리케이션의 양상들을 포함할 수 있다.
[00124] 도 9-13에서, 애플리케이션에 대한 컨텍스트 및 동작 모드를 결정하기 위한 예시적인 방법 단계들의 흐름도들이 도시된다. 일 실시예에서, 도 8의 단계들(806 및 808)은 도 9-13 중 어느 하나 이상의 도면의 방법 단계들을 포함할 수 있다. 도 9의 방법은 단계(902)에서 시작하며, 단계(902)에서, 선택된 애플리케이션에 의해 액세스될 계정이 검출된다. 예컨대, 선택된 애플리케이션은 이메일 애플리케이션을 포함할 수 있으며, 이메일 애플리케이션이 액세스하도록 구성되는 이메일 계정이 검출될 수 있다. 이러한 예에서, 이메일 애플리케이션은 다수의 이메일 계정들, 예컨대 기업 이메일 계정 및 개인 이메일 계정에 액세스할 수 있을 것이며, 이메일 애플리케이션이 실행시에 액세스하도록 구성되는 계정은 액세스될 컨텍스트 계정으로 결정될 수 있다.
[00125] 도 9의 방법은 단계(902)로부터 단계(904)로 진행할 수 있으며, 단계(904)에서, 액세스될 계정의 계정 타입이 결정될 수 있다. 계정 타입은 선택된 애플리케이션에 대한 컨텍스트를 포함할 수 있다. 예컨대, 선택된 애플리케이션은 이메일 애플리케이션을 포함할 수 있으며, 이메일 애플리케이션은 기업 계정에 액세스하도록 구성될 수 있다. 다른 예에서, 이메일 애플리케이션은 개인 계정에 액세스하도록 구성될 수 있다.
[00126] 도 9의 방법은 단계(904)로부터 단계(906)로 진행할 수 있으며, 단계(906)에서, 계정 타입은 계정 타입 정책과 비교될 수 있다. 예컨대, 정책은 기업 계정에 액세스해야 하는 이메일 애플리케이션이 관리 모드로 실행되어야 하며 개인 계정에 액세스해야 하는 이메일 애플리케이션이 비관리 모드로 실행되어야 함을 정의할 수 있다. 도 9의 방법은 단계(906)로부터 단계(908)로 진행할 수 있으며, 단계(908)에서 동작 모드는 비교에 기초하여 결정될 수 있다.
[00127] 도 10의 방법은 단계(1002)에서 시작할 수 있으며, 단계(1002)에서, 모바일 디바이스에 대한 위치가 결정된다. 예컨대, 정책은 모바일 디바이스(502)와 같은 모바일 디바이스는 도 10의 방법을 구현할 수 있으며, 모바일 디바이스에 대한 위치가 결정될 수 있다. 위치는 GPS, 신호 삼각측량(triangulation), 또는 임의의 다른 적절한 또는 그렇지 않은 경우에 공지된 방식에 의해 결정될 수 있다. 위치는 선택된 애플리케이션에 대한 컨텍스트를 포함할 수 있다.
[00128] 도 10의 방법은 단계(1002)로부터 단계(1004)로 진행할 수 있으며, 단계(1004)에서, 결정된 위치는 위치 정책과 비교될 수 있다. 예컨대, 정책은 선택된 애플리케이션이 특정 위치에 있을 때, 예컨대 회사 건물에 있을 때 더 보안적인 관리 모드로 실행됨을 정의할 수 있다. 일 실시예에서, 정책은 선택된 애플리케이션이 특정 위치에 있을 때, 예컨대 결정된 위치가 미국내에 있으나 회사 건물에서 떨어져 있을 때 덜 보안적인 관리 모드로 실행됨을 정의할 수 있다. 예컨대, 덜 보안적인 관리 모드는 선택된 애플리케이션으로 그리고 선택된 애플리케이션으로부터의 통신을 암호화할 수 있으나 자원들(504)과 같은 기업 자원들에 대한 액세스를 허용할 수 없다. 다른 실시예에서, 정책은 선택된 애플리케이션이 특정 위치에 있을 때, 예컨대 결정된 위치가 미국 밖에 있을 때 비관리 모드로 실행됨을 정의할 수 있다. 도 10의 방법은 단계(1004)로부터 단계(1006)로 진행할 수 있으며, 단계(1006)에서, 동작 모드는 비교에 기초하여 결정된다.
[00129] 대안적으로 또는 물리적 위치에 추가하여, 네트워크 위치는 액세스가 허락되는지의 여부를 결정하기 위하여 마찬가지로 또는 대신에 사용될 수 있다. 예컨대, 네트워크 위치는 사용자가 데이터 센터 (또는 사전-승인된 WiFi 액세스 포인트) 내에 있는지 또는 데이터 센터 외부에 있는지의 여부를 지칭할 수 있다. 적절한 액세스 모드들은 이러한 결정에 기초할 수 있다.
[00130] 도 11의 방법은 단계(1102)에서 시작할 수 있으며, 단계(1102)에서, 미리 결정된 애플리케이션이 디바이스상에서 실행중인의 여부가 모니터링된다. 예컨대, 모바일 디바이스(502)와 같은 모바일 디바이스는 도 11의 방법을 구현할 수 있으며, 모바일 디바이스는 미리 결정된 애플리케이션들이 실행중인지의 여부를 결정하기 위하여 모니터링될 수 있다. 미리 결정된 애플리케이션은 도 6을 참조로 하여 설명된 클라이언트 에이전트(604)와 같이 모바일 디바이스상에서 실행될 수 있는 임의의 애플리케이션을 포함할 수 있다. 모니터링된 미리 결정된 애플리케이션은 선택된 애플리케이션에 대한 컨텍스트를 포함할 수 있다.
[00131] 도 11의 방법은 단계(1102)로부터 단계(1104)로 진행할 수 있으며, 단계(1104)에서, 모니터링된 애플리케이션은 정책과 비교된다. 예컨대, 정책은 클라이언트 에이전트(604)와 같은 미리 결정된 애플리케이션이 실행중일 때 선택된 애플리케이션이 관리 모드로 실행되고 미리 결정된 애플리케이션이 실행중이 아닐 때 선택된 애플리케이션이 비관리 모드로 실행됨을 정의할 수 있다. 도 11의 방법은 단계(1104)로부터 단계(1106)로 진행할 수 있으며, 단계(1106)에서, 동작 모드는 비교에 기초하여 결정된다.
[00132] 도 12의 방법은 단계(1202)에서 시작할 수 있으며, 단계(1202)에서, 하나 이상의 네트워크 연결들이 검출된다. 예컨대, 모바일 디바이스(502)와 같은 모바일 디바이스는 도 12의 방법을 구현할 수 있으며, 모바일 디바이스가 만든 네트워크 연결들이 검출될 수 있다. 일례로, 네트워크 연결들은 셀룰라 네트워크에의 연결, WIFI 네트워크에의 연결, 또는 무선 근거리 통신망(WLAN)에의 연결 등을 포함할 수 있다. 하나 이상의 네트워크 연결들은 선택된 애플리케이션에 대한 컨텍스트를 포함할 수 있다.
[00133] 도 12의 방법은 단계(1202)로부터 단계(1204)로 진행할 수 있으며, 단계(1204)에서, 검출된 네트워크 연결들이 네트워크 연결 정책과 비교된다. 예컨대, 정책은 모바일 디바이스가 회사 내부의 WLAN과 같은 인터넷 네트워크에 연결될 때 선택된 애플리케이션이 관리 모드로 실행되고 모바일 디바이스가 단지 셀룰라 네트워크 또는 WIFI 네트워크와 같은 무선 네트워크에 연결될 때 선택된 애플리케이션이 비관리 모드로 실행됨을 정의할 수 있다. 도 12의 방법은 단계(1204)로부터 단계(1206)로 진행할 수 있으며, 단계(1206)에서, 동작 모드가 비교에 기초하여 결정된다.
[00134] 도 13의 방법은 단계(1302)에서 시작할 수 있으며, 단계(1302)에서 모바일 디바이스에 대한 하나 이상의 세팅들이 검출된다. 예컨대, 모바일 디바이스(502)와 같은 모바일 디바이스는 도 13의 방법을 구현할 수 있으며, 모바일 디바이스에 대한 하나 이상의 세팅들이 검출될 수 있다. 일례로, 모바일 디바이스가 모바일 디바이스를 사용하는 동안 요구되는 PIN와 같은 로크 스크린(lock screen)을 가지는지의 여부가 검출될 수 있거나 또는 모바일 디바이스가 탈옥(jailbroken)/정착(root)되었는지의 여부, 예컨대 모바일 디바이스가 애프터-마켓(after-market) 수정들을 수신하였는지의 여부가 검출될 수 있다. 하나 이상의 세팅들은 선택된 애플리케이션에 대한 컨텍스트를 포함할 수 있다.
[00135] 도 13의 방법은 단계(1302)로부터 단계(1304)로 진행할 수 있으며, 단계(1304)에서, 검출된 세팅들은 세팅 정책과 비교된다. 예컨대, 정책은 모바일 디바이스가 로크 스크린을 갖지 않거나 또는 모바일 디바이스가 탈옥/정착된 경우에 선택된 애플리케이션이 관리 모드로 실행되지 않을 수 있음을 정의할 수 있다. 도 13의 방법은 단계(1304)로부터 단계(1306)로 진행할 수 있으며, 단계(1306)에서, 동작 모드는 비교에 기초하여 결정된다. 일 실시예에서, 선택된 애플리케이션을 미리 결정된 모드로 실행할 때, 특정 정책들을, 예컨대 모바일 디바이스가 선택된 애플리케이션을 관리 모드로 실행하도록 허용되기 전에 모바일 디바이스가 로크 스크린을 가지는 요건들을 사용자에게 알리는 표시자가 모바일 디바이스상에 디스플레이될 수 있다. 도 9-13은 복수의 컨텍스트들을 설명하며, 임의의 다른 적절한 컨텍스트 및 대응 정책이 구현될 수 있다.
[00136] 일 실시예에서, 도 9-13에서 설명된 컨텍스트들 중 하나 이상은 결합될 수 있으며, 이들 컨텍스트들은 선택된 애플리케이션에 대한 정책과 비교될 수 있다. 예컨대, 선택된 애플리케이션에 대한 컨텍스트들은 기업 이메일 계정으로서 액세스될 계정 타입 및 셀룰라 네트워크로서 액세스될 검출된 네트워크 연결을 포함할 수 있다. 이러한 예에서, 정책은 기업 계정이 셀룰라 네트워크를 통해 액세스되도록 시도될 때 선택된 애플리케이션이 관리 모드로 실행되어야 함을 정의할 수 있다. 정책은 이러한 방식으로 정의될 수 있는데, 왜냐하면 선택된 애플리케이션이 기업 이메일 계정과의 통신을 암호화할 수 있고 따라서 셀룰라 네트워크를 통해 보안 트래픽을 송신할 때의 위험이 완화될 수 있기 때문이다.
[00137] 다른 예에서, 선택된 애플리케이션에 대한 컨텍스트들은 미국 밖에 있는 것으로 결정된 위치 및 회사 내부의 WLAN을 사용한 네트워크 연결을 포함할 수 있다. 정책은 결정된 위치가 미국 밖에 있고 네트워크 연결이 회사 내부의 WLAN로 이루어질 때 선택된 애플리케이션이 관리 모드로 실행되는 것을 정의할 수 있다. 정책은 회사 내부의 WLAN을 사용한 네트워크 연결이 미국 밖의 보안 통신들과 연관된 위험을 완화시키기 때문에 이러한 방식으로 정의될 수 있다.
[00138] 일 실시예에서, 도 9-13에서 설명된 것과 같은 하나 이상의 컨텍스트들은 우선순위를 포함할 수 있다. 예컨대, 선택된 애플리케이션에 대한 컨텍스트는 모바일 디바이스가 탈옥/정착된다는 결정을 포함할 수 있으며, 정책은 다른 컨텍스트들이 무엇을 표시하던지 간에 컨텍스트가 탈옥/정착된 모바일 디바이스를 표시할 때 선택된 애플리케이션이 단지 비관리 모드로 실행되는 것을 정의할 수 있다. 따라서, 탈옥/정착된 모바일 디바이스는 모바일 디바이스가 회사 내부의 WLAN에 연결될 때 조차 또는 선택된 애플리케이션들이 기업 계정에 액세스하는 것을 시도중인 경우에 선택된 애플리케이션이 비관리 모드로 실행되게 할 것이다.
[00139] 일 실시예에서, 정책은 도 9-13에 설명된 것과 같이 복수의 컨텍스트들에 기초하여, 선택된 애플리케이션이 덜 보안적인 관리 모드로 실행됨을 표시할 수 있다. 예컨대, 선택된 애플리케이션에 대한 컨텍스트들은 기업 이메일 계정으로서 액세스될 계정 타입 및 셀룰라 네트워크로서 액세스될 검출된 네트워크 연결을 포함할 수 있다. 이러한 예에서, 정책은 기업 계정이 셀룰라 네트워크를 통해 액세스되도록 시도될 때 선택된 애플리케이션이 덜 보안적인 관리 모드로 실행되어야 함을 정의할 수 있다. 덜 보안적인 관리 모드는 선택된 애플리케이션으로 그리고 선택된 애플리케이션으로부터의 통신을 암호화할 수 있으나 자원들(504)과 같은 기업 자원들에 대한 액세스를 허용하지 않을 수 있다. 정책은 이러한 방식으로 정의될 수 있는데, 왜냐하면 기업 이메일 계정을 사용한 암호화된 통신이 저위험 통신일 수 있고 기업 자원들에 대한 액세스를 허용하는 것이 고위험 통신일 수 있기 때문이다.
[00140] 도 14에서, 애플리케이션에 대한 동작 모드를 전환하기 위한 예시적인 방법 단계들의 흐름도가 도시된다. 예컨대, 도 14의 방법 단계들은 도 8의 방법 단계들을 뒤따를 수 있다. 도 14의 방법은 단계(1402)에서 시작할 수 있으며, 단계(1402)에서, 하나 이상의 컨텍스트들은 선택된 애플리케이션이 실행중인 동안 모니터링될 수 있다. 일 실시예에서, 도 9-13를 참조로 하여 설명된 컨텍스트들 중 하나 이상의 컨텍스트가 모니터링될 수 있다. 예컨대, 선택된 애플리케이션을 실행하는 모바일 디바이스는 셀룰라 네트워크에 연결될 수 있으며, 선택된 애플리케이션이 실행중인 동안 모바일 디바이스는 회사 내부의 WLAN과 새로운 네트워크 연결을 만들 수 있다.
[00141] 도 14의 방법은 단계(1402)로부터 단계(1404)로 진행할 수 있으며, 단계(1404)에서, 선택된 애플리케이션에 대한 동작 모드의 변화는 모니터링에 기초하여 검출된다. 달리 언급하면, 모바일 디바이스는 정보의 변화를 검출할 수 있으며, 이러한 변화는 특정 동작 모드를 선택하기 위한 기반이 된다. 예컨대, 선택된 애플리케이션은 비관리 모드로 실행중일 수 있으며, 일단 선택된 애플리케이션을 실행하는 모바일 애플리케이션이 회사 내부의 WLAN에 연결되면 정책은 선택된 애플리케이션에 대한 동작 모드가 관리 모드로 전환되어야 함을 정의할 수 있다. 도 14의 방법은 단계(1404)로부터 단계(1406)로 진행할 수 있으며, 단계(1406)에서, 선택된 애플리케이션에 대한 동작 모드가 전환된다.
[00142] 일 실시예에서, 모바일 디바이스 관리자와 같은 관리자는 하나 이상의 모바일 디바이스들을 관리할 수 있다. 이러한 예에서, 모바일 디바이스는 등록된 디바이스로서 지칭될 수 있다. 일 실시예에서, 모바일 디바이스는 도 6의 클라이언트 에이전트(604)와 같이 관리 모드로 설치된 소프트웨어에 기초하여 관리될 수 있다.
[00143] 일 실시예에서, 클라이언트 에이전트(604)는 연결 관리 소프트웨어 개발 키트(SDK), 연결 관리자(520), 연결/상태 애플리케이션 프로그래밍 인터페이스(API), 가상화 서비스들의 세트, 런타입 SDK, 플랫폼 SDK 및 클라이언트 코어를 더 포함할 수 있다.
[00144] 클라이언트 에이전트 아키텍처에서의 가상화 서비스는 예컨대 그래픽 서비스, 데스크탑 통합 서비스, 멀티미디어 서비스, 입력/출력 서비스들, 스마트 카드 서비스, 프린팅 서비스 등을 포함할 수 있다. 런타입 SDK는 예컨대 ICA 엔진을 포함하는 독립형 컴퓨팅 아키텍처(ICA) 런타임 SDK일 수 있다. 플랫폼 SDK는 예컨대 ICA 플랫폼 SDK 또는 다른 플랫폼 SDK일 수 있으며, 다양한 서브컴포넌트들, 예컨대 가상 채널 SDK, 구성 및 로드 관리자, 트레이스 서브컴포넌트(trace subcomponent), 플랫폼 추상(platform abstraction) SDK 등을 포함할 수 있다. 클라이언트 코어는 예컨대 단말 서비스들(예컨대, 코어 ICA 프로토콜을 가진 Winstation 드라이버), 압축 및 우선순위화를 수행하도록 구성된 리듀서 서브컴포넌트(reducer subcomponent), 멀티-스트림 ICA, 세션 신뢰도를 가진 TCP 스택, 프록시 및 SSL에 원격적으로 액세스하기 위한 코어 프로토콜, 및 UDP 서브컴포넌트를 포함할 수 있다. 클라이언트 코어는 또한 플랫폼-특정 서브컴포넌트들, 예컨대 그래픽 스마트 카드 및 스레드 지원(thread support), 구성 및 로드 관리자 라이브러리들, SSL SDK 등의 구현들을 포함할 수 있다.
[00145] 모바일 디바이스는 예컨대 클라이언트 에이전트(604)를 사용하여 기업 시스템에 등록될 수 있다. 예컨대, 등록된 클라이언트 디바이스(602)에서, 클라이언트 에이전트(604)는 다양한 기업 자원들(608) 및 서비스들(609)에 액세스하기 위하여 게이트웨이 서버(606) 또는 다른 액세스 게이트웨이와 상호작용할 수 있다. 디바이스를 등록하는 것은 BYOD(bring your own device) 및 관련 기술들을 수반할 수 있으며, MDM 또는 유사한 시스템에 참여하는 것을 수반할 수 있다. 회사 계정(또는 다른 단체 계정)에 디바이스를 등록하는 것은 디바이스에 인증서들을 푸시(push)하는 것 및 기업 시스템의 디바이스 관리 서버에 디바이스를 등록하는 것을 수반할 수 있다. 등록 이후에, 디바이스는 디바이스에 푸시되는 모바일 디바이스 경험 기술(애플리케이션 관리 프레임워크) 정책들 및/또는 모바일 디바이스 관리(MDM)을 사용하는 회사 관리자(또는 다른 단체 관리자)에 의해 운영될 수 있다. 등록된 디바이스는 또한 관리 디바이스들로서 지칭될 수 있다. 달리 언급하면, 등록 이후에, 디바이스는 본원에서 설명된 바와같은 관리 디바이스가 될 수 있다. 특정 예들에서, 기업 시스템에 디바이스를 등록하기 위하여, 클라이언트 에이전트(604) 및/또는 애플리케이션 등록 토큰은 디바이스상에 다운로드되어 설치될 수 있다. 애플리케이션 등록 토큰은 회사 또는 디바이스가 등록될 다른 단체의 인증서로부터 유도될 수 있다. 클라이언트 에이전트(604) 및 애플리케이션 등록 토큰을 다운로드한 이후에, 디바이스 사용자는 토큰을 열고 디바이스에 회사 계정(또는 다른 단체 계정)을 추가하도록 프롬프트될 수 있다.
[00146] 일 실시예에서, 도 5의 모바일 디바이스(502)와 같은 등록된 모바일 디바이스는 도 5의 디바이스 관리자(524)와 같은 서비스에 의해 관리될 수 있다. 디바이스 관리자(524)는 구성, 프로비저닝, 보안, 지원, 모니터링, 보고 및 해체(decommissioning)를 포함하는 서비스들을 제공할 수 있다. 예컨대, 디바이스 관리자(524)는 어떤 애플리케이션들이 등록/관리 모바일 디바이스상에 설치된지를 모니터링할 수 있다. 이러한 예에서, 디바이스 관리자(524)는 블랙-리스트 애플리케이션들의 리스트를 저장/액세스할 수 있으며, 등록/관리 모바일 디바이스상에의 블랙-리스트 애플리케이션의 설치를 추가로 결정할 수 있다. 블랙-리스트 애플리케이션은 의심스러운 멀웨어(suspected malware) 또는 임의의 다른 적절한 애플리케이션인 애플리케이션을 포함할 수 있다. 다른 예에서, 디바이스 관리자(524)는 등록된 모바일 디바이스에 대한 동작 상태를 모니터링할 수 있다. 이러한 예에서, 디바이스 관리자(524)는 등록된 모바일 디바이스가 탈옥/정착되었음을 결정할 수 있다. 디바이스 관리자(524)는 이들 결정들에 기초하여, 등록된 디바이스에 대하여 다양한 관리 활동들을 수행할 수 있다.
[00147] 다른 예에서, 디바이스 관리자(524)는 모바일 디바이스에 대한 네트워크 연결을 모니터링할 수 있다. 이러한 예에서, 디바이스 관리자(524)는 등록된 모바일 디바이스가 셀룰라 네트워크, 무선 근거리 통신망(WLAN), 근거리 통신망(LAN), 이들의 조합, 또는 임의의 다른 적절한 네트워크에 연결됨을 결정할 수 있다. 다른 예에서, 디바이스 관리자(524)는 모바일 디바이스에 대한 위치를 모니터링할 수 있다. 이러한 예에서, 디바이스 관리자(524)는 모바일 디바이스에 대한 지리적 위치, 예컨대 위도 및 경도, 국가, 주, 임의의 적절한 지역, 또는 모바일 디바이스에 대한 임의의 다른 적절한 위치를 결정할 수 있다.
[00148] 다른 예에서, 디바이스 관리자(524)는 특정 애플리케이션이 모바일 디바이스상에서 실행중인지의 여부를 모니터링할 수 있다. 이러한 예에서, 디바이스 관리자(524)는 도 6의 클라이언트 에이전트(604)와 같은 특정 애플리케이션이 모바일 디바이스상에서 실행중인지의 여부를 결정할 수 있다. 디바이스 관리자(524)는 이들 결정들에 기초하여 등록된 디바이스에 대하여 다양한 관리 활동들을 수행할 수 있다.
[00149] 일 실시예에서, 앞서 설명된 바와같이, 등록된 모바일 디바이스상에 설치된 애플리케이션은 관리 모드 또는 비관리 모드로 실행될 수 있다. 일 실시예에서, 도 5를 참조로하여 앞서 설명된 바와같이, 관리 동작 모드는 모바일 디바이스(502)의 관리 파티션(510)의 부분으로서 애플리케이션을 실행하는 것을 포함할 수 있다. 일 실시예에서, 관리 모드로 실행되는 애플리케이션은 모바일 디바이스의 관리 파티션(510)의 보안 데이터 컨테이너(528)에 저장된 데이터에 액세스할 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 다른 보안 애플리케이션들 사이에서 공유되는 특정 보안 애플리케이션(530)에 제약된 데이터 등을 포함할 수 있다. 보안 애플리케이션에 제약된 데이터는 보안 범용 데이터(534) 및 고보안 데이터(538)를 포함할 수 있다. 보안 범용 데이터는 AES 128-비트 암호화 등과 같은 고강도 암호화를 사용할 수 있는 반면에, 고보안 데이터(538)는 AES 254-비트 암호화와 같은 초고강도 암호화를 사용할 수 있다. 다른 타입들의 암호화가 사용될 수 있으며, 다른 레벨들 및 다른 타입들의 보안 조치들이 원하는 레벨 및/또는 원하는 타입의 보안 뿐만아니라 상이한 키 복원 특징들에 기초하여 적용될 수 있다. 일 실시예에서, 관리 모드로 실행되는 애플리케이션은 보안 데이터 컨테이너(528)에 데이터를 세이브하거나 이 데이터를 수정하거나 또는 제거할 수 있다. 세이브되거나 또는 수정된 데이터는 보안 데이터 컨테이너(528)에 저장된 다른 데이터와 유사하게 암호화될 수 있다.
[00150] 일 실시예에서, 관리 모드는 기업 모드를 포함할 수 있으며, 비관리 모드는 개인 모드를 포함할 수 있다. 예컨대, 애플리케이션이 관리 모드 또는 기업 모드로 실행중일 때, 애플리케이션은 보안 서버상에 저장된 자원들(예컨대, 기업 데이터)에 대해 액세스할 수 있다. 관리 모드로 실행되는 디바이스 관리자(524)는 기업과 연관될 수 있다. 이러한 예에서, 관리 모드로 실행되는 애플리케이션은 기업 데이터에 액세스하는 애플리케이션을 승인하는 하나 이상의 서버들(예컨대, 게이트웨이 서버(606))과 통신할 수 있을 것이다. 애플리케이션이 비관리 모드 또는 개인 모드로 실행될 때, 애플리케이션은 기업 데이터에 대해 액세스하지 못할 수 있다.
[00151] 일 실시예에서, 관리 모드 또는 비관리 모드로 실행될 수 있는 애플리케이션은 애플리케이션과 연관된 데이터를 저장하기 위한 저장 정책들을 레버리지(leverage)할 수 있다. 도 15에서, 다수의 모드들로 실행되는 애플리케이션을 관리하기 위한 예시적인 방법 단계들의 흐름도가 도시된다. 도 15는 단계(1502)에서 시작할 수 있으며, 단계(1502)에서, 애플리케이션은 관리 모드 또는 비관리 모드 중 하나로 모바일 디바이스상에서 실행된다. 예컨대, 앞서 설명된 바와같이, 관리 모드 또는 비관리 모드로 실행될 수 있는 애플리케이션은 이들 모드들 중 하나의 모드로 실행될 수 있다.
[00152] 도 15의 프로세스는 단계(1502)로부터 단계(1504)로 진행할 수 있으며, 단계(1504)에서, 애플리케이션과 연관된 데이터를 저장하기 위한 요청이 수신된다. 예컨대, 애플리케이션이 관리 모드로 실행될 때, 데이터, 예컨대 보안 서버(예컨대, 게이트웨이 서버(606))로부터 액세스되는 보안 데이터를 저장하기 위한 요청이 수신될 수 있다. 이러한 예에서, 앞서 설명된 바와같이, 보안 데이터는 기업 데이터를 포함할 수 있다. 다른 예로서, 애플리케이션이 비관리 모드로 실행중일 때, 개인 데이터와 같은 데이터를 저장하기 위한 요청이 수신될 수 있다.
[00153] 도 15의 프로세스는 단계(1504)로부터 단계(1506)로 진행할 수 있으며, 단계(1506)에서, 데이터는 저장 프로토콜에 따라 모바일 디바이스상에 저장된다. 저장 프로토콜은 요청된 데이터가 모바일 디바이스상에 저장될 방식을 정의할 수 있다. 예컨대, 애플리케이션이 관리 모드로 실행중일 때, 데이터는 제 1 프로토콜에 따라 저장될 수 있으며, 애플리케이션이 비관리 모드로 실행중일 때, 데이터는 제 2 프로토콜에 따라 저장될 수 있다.
[00154] 일 실시예에서, 제 1 저장 프로토콜은 요청된 데이터가 제 1 데이터 컨테이너, 예컨대 보안 데이터 컨테이너(예컨대, 보안 데이터 컨테이너(528))에 저장될 수 있음을 정의할 수 있다. 이러한 예에서, 제 1 데이터 컨테이너에 저장된 데이터는 애플리케이션이 비관리 모드로 실행중인 동안 애플리케이션에게 액세스가능하지 않을 수 있다. 일 실시예에서, 제 2 저장 프로토콜은 요청된 데이터가 제 1 데이터 컨테이너와 상이한 제 2 데이터 컨테이너에 저장될 수 있음을 정의할 수 있다. 제 2 데이터 컨테이너는 예컨대 개인 데이터를 저장하는 범용 데이터 컨테이너를 포함할 수 있다.
[00155] 일 실시예에서, 제 1 저장 프로토콜은 요청된 데이터가 저장 전에 암호화될 수 있음을 정의할 수 있다. 이러한 예에서, 데이터는 제 1 키를 사용하여 암호화될 수 있으며, 일부 실시예들에서, 제 1 키는 디바이스를 관리하는 디바이스 관리자(예컨대, 디바이스 관리자(524))와 연관될 수 있다. 일 실시예에서, 제 2 저장 프로토콜은 제 1 키와 상이한 제 2 키를 사용하여 저장전에 요청된 데이터가 암호화될 수 있음을 정의할 수 있다. 또 다른 예로, 제 1 저장 프로토콜은 요청된 데이터가 암호화되지 않은 채 저장될 수 있음을 정의할 수 있다.
[00156] 저장된 데이터는 저장 프로토콜이 변화되거나 또는 수정될 때 자동적으로 업데이트될 수 있다. 예컨대, 데이터 저장을 위하여 사용되는 암호화 방식을 제 1 타입의 암호화로부터 제 2 타입의 암호화로 변경시키는 정책이 업데이트될 수 있다. 이러한 상황이 발생할 때, 모바일 디바이스는 제 1 타입의 암호화에 기초하여 저장된 데이터를 자동적으로 암호해독할 수 있으며, 새로운 또는 변경된 정책을 사용하여 제 2 타입의 암호화에 기초하여 저장된 데이터를 재암호화할 수 있다. 이러한 방식에서, 저장된 데이터는 항상 현재의 저장 정책에 따라 유지될 수 있다.
[00157] 일 실시예에서, 제 1 저장 프로토콜은 요청된 데이터가 관리 계정과 연관되어 저장될 수 있음을 정의할 수 있다. 관리 모드로 실행되는 애플리케이션은 관리 계정과 연관될 수 있다. 예컨대, 관리 모드로 실행되는 동안 보안 모드에 대한 액세스를 허용하는 클라우드 저장 애플리케이션은 보안 데이터에 대한 액세스를 획득하기 위하여 사용되는 관리 계정과 연관될 수 있다. 요청된 데이터는 관리 계정에 연관되어 저장될 수 있다. 일 실시예에서, 제 1 저장 프로토콜은 저장된 요청된 데이터가 디바이스 관리자(524)에 의해 관리될 수 있음을 정의할 수 있다.
[00158] 따라서, 애플리케이션이 관리 모드로 실행중인 동안, 앞서 설명된 바와같이, 데이터는 제 1 프로토콜에 따라 저장될 수 있다. 애플리케이션이 비관리 모드로 실행중인 동안, 앞서 설명된 바와같이, 데이터는 제 2 프로토콜에 따라 저장될 수 있다.
[00159] 일부 실시예들에서, 저장 타입 및/또는 저장 위치는 사용중인 동작 모드에 따를 수 있다. 예컨대, 저장 프로토콜 또는 정책은 데이터가 클라우드-기반 스토리지에 저장될 것을 특정할 수 있다. 저장 프로토콜 또는 정책은 동작 모드에 기초하여, 기업 또는 비기업 클라우드 스토리지가 사용되어야 함을 추가로 특정할 수 있다. 관리 모드에 있을 때, 데이터는 미리 정의된 레벨의 보안이 제공되는 기업 또는 다른 클라우드 스토리지에 기업 또는 정책에 의해 선택된 대로 세이브될 수 있다. 대안적으로, 관리 모드에 있을 때, 데이터는 예컨대 사용자에 의해 선택된 덜 보안적인 클라우드 저장 서비스 또는 위치에 세이브되거나 또는 저장될 수 있다. 예시적인 실시예들은 하이브리드 저장 정책들을 포함할 수 있으며, 하이브리드 저장 정책들에서, 모바일 디바이스 또는 애플리케이션의 특정 환경들에 기초하여, 데이터는 앱이 비관리 모드로 실행중일 때 국부적으로 저장될 수 있으며, 데이터는 앱이 관리 모드로 실행중일 때 클라우드 스토리지에 저장될 수 있으며, 그 반대의 경우도 마찬가지다.
[00160] 도 15의 프로세스는 단계(1506)로부터 단계(1508)로 진행할 수 있으며, 단계(1508)에서, 애플리케이션의 모드를 디스에이블하기 위한 신호가 수신된다. 예컨대, 애플리케이션의 관리 모드를 디스에이블하기 위한 신호가 수신될 수 있다. 일 실시예에서, 디바이스 관리자(524)는 등록된 모바일 디바이스를 모니터링하며, 모바일 디바이스에 대한 상태를 검출하며, 모바일 디바이스상에 설치된 애플리케이션의 관리 모드를 디스에이블하기 위한 신호를 송신할 수 있다. 예컨대, 디바이스 관리자(524)는 등록된 모바일 디바이스가 탈옥/정착됨을 검출할 수 있으며, 검출에 기초하여 애플리케이션의 관리 모드를 디스에이블할 것을 결정할 수 있다. 또 다른 실시예에서, 디바이스 관리자(524)는 블랙 리스트 애플리케이션이 등록된 모바일 디바이스상에 설치되었음을 검출할 수 있으며, 검출에 기초하여 애플리케이션의 관리 모드를 디스에이블할 것을 결정할 수 있다.
[00161] 또 다른 실시예에서, 디바이스 관리자(524)는 애플리케이션과 연관된 관리 계정이 만료되거나 또는 제거되었음을 검출할 수 있으며, 검출에 기초하여 애플리케이션의 관리 모드를 디스에이블할 것을 결정할 수 있다. 예컨대, 관리 모드로 실행되는 동안 보안 데이터에 대한 액세스를 허용하는 클라우드 저장 애플리케이션은 보안 데이터에 대한 액세스를 획득하기 위하여 사용되는 관리 계정과 연관될 수 있다. 디바이스 관리자(524)는 관리 계정이 만료되었거나 또는 제거되었음을 검출할 수 있으며, 검출에 기초하여 클라우드 저장 애플리케이션의 관리 모드를 디스에이블하기 위한 신호를 송신할 수 있다. 일 실시예에서, 애플리케이션의 관리 모드를 디스에이블하기 위한 신호가 수신될 때, 애플리케이션은 관리 모드로 실행되지 않는 애플리케이션으로 변환될 수 있다.
[00162] 일 실시예에서, 애플리케이션의 관리 모드를 디스에이블하기 위한 수신된 신호에 기초하여, 제 1 프로토콜에 따라 저장된 데이터가 선택적으로 제거될 것이 결정될 수 있다. 예컨대, 제 1 프로토콜에 따라 저장된 데이터는 디스에이블될 관리 모드와 연관될 수 있으며, 제 1 프로토콜에 따라 저장된 데이터는 관리 모드를 디스에이블하는 부분으로서 선택적으로 제거될 수 있다.
[00163] 도 15의 프로세스는 단계(1508)로부터 단계(1510)로 진행할 수 있으며, 단계(1510)에서, 프로토콜에 따라 모바일 디바이스상에 저장된 데이터의 위치가 결정된다. 예컨대, 디바이스 관리자(524)는 등록된 모바일 디바이스를 모니터링할 수 있으며, 제 1 프로토콜에 따라 저장되는 데이터의 위치를 결정할 수 있다. 제 1 프로토콜에 따라 저장된 데이터는 제 1 모드로 실행되는 특정 애플리케이션, 예컨대 관리 모드로 실행되는 애플리케이션과 연관된 데이터를 포함할 수 있다. 일 실시예에서, 위치 결정된 데이터는 애플리케이션에 대한 기업 데이터를 포함할 수 있다.
[00164] 일 실시예에서, 제 1 프로토콜에 따라 저장된 데이터는 계정에 기초하여 위치가 결정될 수 있다. 예컨대, 계정은 관리 계정과 연관될 수 있다. 애플리케이션은 관리 모드로 실행될 수 있으며, 저장된 데이터는 관리 계정과 연관될 수 있다. 이러한 실시예에서, 제 1 프로토콜에 따라 저장된 데이터는 관리 계정과 연관될 수 있으며, 제 1 프로토콜에 따라 저장된 데이터는 관리 계정에 기초하여 위치가 결정될 수 있다.
[00165] 또 다른 실시예에서, 제 1 프로토콜에 따라 저장된 데이터는 저장 컨테이너에 기초하여 위치가 결정될 수 있다. 예컨대, 도 5의 보안 데이터 컨테이너(528)와 같은 보안 저장 컨테이너는 제 1 프로토콜에 따라 저장된 데이터와 연관될 수 있다. 애플리케이션은 관리 모드로 실행될 수 있으며, 제 1 프로토콜에 따라 저장된 데이터는 보안 데이터 컨테이너에 저장될 수 있다. 이러한 실시예에서, 제 1 프로토콜에 따라 저장된 데이터는 보안 데이터 컨테이너에 저장될 수 있으며, 제 1 프로토콜에 따라 저장된 데이터는 보안 저장 컨테이너의 저장에 기초하여 위치가 결정될 수 있다.
[00166] 또 다른 실시예에서, 제 1 프로토콜에 따라 저장된 데이터는 암호화에 기초하여 위치가 결정될 수 있다. 예컨대, 제 1 프로토콜에 따라 저장된 데이터는 제 1 키를 사용하는 암호화와 같은 특정 암호화를 사용하여 암호화될 수 있다. 애플리케이션은 관리 모드로 실행될 수 있으며, 제 1 프로토콜에 따라 저장된 데이터는 특정 암호화에 기초하여 암호화될 수 있다. 이러한 실시예에서, 제 1 프로토콜에 따라 저장된 데이터는 데이터에 대한 암호화에 기초하여 위치가 결정될 수 있다. 일례로, 제 1 키는 디바이스 관리자(524)와 연관될 수 있다.
[00167] 도 15의 프로세스는 단계(1510)로부터 단계(1512)로 진행할 수 있으며, 단계(1512)에서, 위치 결정된 데이터가 선택적으로 제거될 수 있다. 예컨대, 디바이스 관리자(524)는 등록된 모바일 디바이스를 모니터링하고, 등록된 모바일 디바이스상에서 제 1 프로토콜에 따라 저장된 데이터의 위치를 결정하며 선택적으로 위치 결정된 데이터를 제거할 수 있다. 일 실시예에서, 위치 결정된 데이터를 선택적으로 제거하는 것은 모바일 디바이스상에 저장된 임의의 다른 데이터를 제거하지 못한다. 예컨대, 위치 결정된 데이터가 애플리케이션에 대한 기업 데이터를 포함하는 경우에, 애플리케이션에 대한 개인 데이터는 제거되지 않을 수 있다. 대안적으로, 제 1 프로토콜에 따라 저장된 데이터에 대한 액세스는 디바이스가 재등록하거나 또는 애플리케이션이 관리 모드로 다시 실행될 수 있을 때까지 로크되거나 또는 차단될 수 있다.
[00168] 도 16에서, 다수의 모드들로 실행될 수 있는 애플리케이션에 대한 계정을 관리하기 위한 예시적인 방법 단계들의 흐름도가 도시된다. 도 16의 프로세스는, 관리 모드로 실행되는 애플리케이션이 기업 자원들에 액세스할 수 있게 구성하기 위하여, 설치된 애플리케이션이 다수의 모드들로 실행될 수 있다는 것을 검출할 때에 사용될 수 있다. 게다가, 자원들은 특정 이벤트들에 기초하여 사전에 프로비저닝될 수 있으며 (예컨대, 새로운 종업원이 회사 생활을 시작하고 자원들은 새로운 종업원 절차들의 부분으로서 사전에 프로비저닝될 수 있으며), 따라서 관리 앱들의 처음 실행을 가속시킬 수 있다. 도 16은 단계(1602)에서 시작할 수 있으며, 단계(1602)에서, 모바일 디바이스는 새로운 애플리케이션들에 대해 모니터링된다. 예컨대, 앞서 설명된 바와같이, 디바이스 관리자(524)는 등록된 모바일 디바이스, 예컨대 모바일 디바이스(502)를 모니터링할 수 있다. 디바이스 관리자는 모바일 디바이스상에 설치된 애플리케이션을 모니터링할 수 있다. 일 실시예에서, 디바이스 관리자는 새로운 애플리케이션들의 설치를 위하여 모바일 디바이스를 주기적으로 모니터링할 수 있다.
[00169] 도 16의 프로세스는 단계(1602)로부터 단계(1604)로 진행할 수 있으며, 단계(1604)에서, 관리 모드 및 비관리 모드로 실행될 수 있는 애플리케이션이 모바일 디바이스상에 설치된 것이 검출된다. 예컨대, 디바이스 관리자(524)는 등록된 모바일 디바이스를 모니터링할 수 있으며, 관리 모드 및 비관리 모드로 실행될 수 있는 애플리케이션이 모바일 디바이스상에 설치됨을 결정할 수 있다. 디바이스 관리자는 애플리케이션과 연관된 메타-데이터에 기초하여 또는 임의의 다른 적절한 검출 방식에 기초하여, 설치된 애플리케이션이 관리 모드 및 비관리 보드로 실행될 수 있음을 검출할 수 있다.
[00170] 도 16의 프로세스는 단계(1604)로부터 단계(1606)로 진행할 수 있으며, 단계(1606)에서, 자원은 검출된 애플리케이션과 통신하도록 프로비저닝된다. 예컨대, 게이트웨이 서버(예컨대, 게이트웨이 서버(560))와 같은 자원은 애플리케이션이 관리 모드로 실행중일 때 검출된 애플리케이션과 통신하도록 프로비저닝될 수 있다.
[00171] 일 실시예에서, 관리는 클라우드 저장 자원을 포함할 수 있다. 클라우드 저장 자원은 기업 데이터와 같은 보안 데이터를 저장할 수 있다. 이러한 예에서, 클라우드 저장 자원은 관리 모드로 실행되는 검출된 애플리케이션과 통신하도록 프로비저닝될 수 있으며, 따라서 관리 모드로 실행되는 검출된 애플리케이션은 프로비저닝 이후에 클라우드 저장 자원에 저장된 보안 데이터에 액세스할 수 있다.
[00172] 일 실시예에서, 자원을 프로비저닝하는 것은 애플리케이션에 대한 계정을 생성하는 것을 포함할 수 있다. 이러한 실시예에서, 도 16의 프로세스는 단계(1604)로부터 단계(1606)로 진행할 수 있으며, 단계(1606)에서, 모바일 디바이스로부터의 식별 정보와 연관되는 애플리케이션에 대한 계정이 생성된다. 예컨대, 등록된 모바일 디바이스는 모바일 디바이스와 연관되고 그리고/또는 모바일 디바이스의 사용자와 연관된 식별 정보를 가질 수 있다. 일 실시예에서, 식별 정보는 기업에 대한 액티브 디렉토리에 대한 로그인 및 패스워드와 같은 기업 크리덴셜을 포함할 수 있다. 다른 실시예에서, 식별 정보는 기업과 연관된 토큰을 포함할 수 있다. 예컨대, 등록된 모바일 디바이스는 등록된 모바일 디바이스 및/또는 등록된 모바일 디바이스에 대한 사용자를 식별하는 기업 서버로부터 토큰, 예컨대 SAML(Security Assertion Markup Language) 토큰 또는 임의의 다른 적절한 토큰을 수신할 수 있다. 식별 정보는 임의의 다른 적절한 식별 정보를 포함할 수 있다. 디바이스 관리자(예컨대, 디바이스 관리자(524))는 토큰과 같은, 모바일 디바이스상의 식별에 액세스할 수 있거나 또는 모바일 디바이스는 식별 정보를 제공할 수 있다.
[00173] 일 실시예에서, 식별 정보와 연관되는, 관리 모드 및 비관리 모드로 실행될 수 있는 애플리케이션에 대한 계정이 생성될 수 있다. 이러한 예에서, 식별 정보는 사용자 크리덴셜들, 예컨대 기업 크리덴셜들, 토큰 또는 임의의 다른 적절한 식별 정보를 포함할 수 있다. 일 실시예에서, 애플리케이션에 대해 식별 정보와 연관된 계정이 이미 존재하지 않는다는 결정에 기초하여 계정이 생성될 수 있다. 예컨대, 서버는 식별 정보에 기초하여 애플리케이션에 대한 계정을 탐색할 수 있으며, 계정은 서버가 계정의 검색을 실패하는 것에 기초하여 생성될 수 있다.
[00174] 일 실시예에서, 생성된 계정은 관리 모드로 실행되는 애플리케이션과 통신하도록 구성되는 자원과 연관될 수 있다. 예컨대, 관리 모드로 실행되는 애플리케이션들과 통신하도록 구성되는 클라우드 저장 자원과 생성된 계정이 연관될 수 있다.
[00175] 도 16의 프로세스는 단계(1606)로부터 단계(1608)로 진행할 수 있으며, 단계(1608)에서, 계정은 식별 정보에 기초하여 식별될 수 있다. 예컨대, 사용자, 예컨대 기업과 연관된 사용자에 대한 계정은 식별 정보, 예컨대 사용자에 대한 크리덴셜들에 기초하여 식별될 수 있다. 식별된 계정은 기업 액티브 디렉토리 계정, 기업 자원 권리들과 연계된 계정 또는 임의의 다른 적절한 기업 계정을 포함할 수 있다. 일 실시예에서, 기업 자원들은, 앞서 설명된 바와같이, 식별된 계정들에 사인 온(sign on)함으로써, 등록된 모바일 디바이스상에서 액세스될 수 있다.
[00176] 도 16의 프로세스는 단계(1608)로부터 단계(1610)로 진행할 수 있으며, 단계(1610)에서, 생성된 계정은 식별된 계정과 링크될 수 있다. 예컨대, 관리 모드 및 비관리 모드로 실행될 수 있는 애플리케이션에 대해 생성된 계정은 액티브 디렉토리 계정과 같은 기업 계정과 링크될 수 있다. 링크를 사용하여, 관리 모드로 실행되는 애플리케이션은 식별된 계정에 대한 액세스 권리들에 기초하여 시스템 자원들에 액세스할 수 있다. 예컨대, 관리 모드로 실행되는 애플리케이션과 통신하도록 구성되는 자원이 클라우드 저장 자원을 포함하는 경우에, 관리 모드로 실행되는 애플리케이션은 링크에 기초하여 클라우드 저장 자원의 보안 데이터에 액세스할 수 있다.
[00177] 일 실시예에서, 도 16에 따라 관리 모드로 실행될 수 있는 애플리케이션에 대한 계정이 생성된 이후에, 애플리케이션은 생성된 계정에 기초하여 보안 데이터에 액세스할 수 있다. 예컨대, 사용자는 관리 모드로 실행되는 애플리케이션과 사용자에 대한 크리덴셜, 예컨대 로그인 및 패스워드 또는 토큰을 사용하여, 생성된 계정에 로그인할 수 있다. 게이트웨이 서버(560)와 같은 서버는 관리 모드로 실행되는 애플리케이션이 사용자에게 제공된 크리덴셜들에 기초하여 생성된 계정에 로그인하도록 할 수 있다. 애플리케이션은 기업 데이터, 예컨대 사용자에 대한 이메일 또는 보안 문서들에 대한 액세스를 요청할 수 있다. 서버는 링크된 계정에 기초하여 애플리케이션에 대한 액세스를 허락할 수 있다. 예컨대, 링크된 계정은 사용자에 대한 액세스 권리들을 포함하는 계정 및/또는 액티브 디렉토리 계정을 포함할 수 있다. 애플리케이션은 링크된 계정에 포함되는 액세스 권리들에 따라 기업 데이터에 액세스하도록 허락될 수 있다.
[00178] 일 실시예에서, 애플리케이션은 BYOD(bring your own device)을 포함할 수 있으며, 디바이스 관리자(524)는 애플리케이션을 변경하고 그리고/또는 구성할 수 있다. 예컨대, 변경 및/또는 구성은 애플리케이션이 관리 모드로 실행될 수 있도록 애플리케이션을 조절하는 것을 포함할 수 있다. 예컨대, 애플리케이션은 애플리케이션이 관리 모드로 실행되는 동안 애플리케이션에 의해 저장된 데이터가 암호화되거나 또는 보안 데이터 컨테이너에 저장되도록 변경 및/또는 구성될 수 있다. 또 다른 예에서, 애플리케이션은 애플리케이션이 관리 모드로 실행중인 동안 애플리케이션이 하나 이상의 보안 자원들(예컨대, 게이트웨이 서버(560))과 통신할 수 있도록 변경 및/또는 구성될 수 있다. 이러한 예에서, 앞서 설명된 바와같이, 보안 자원은 관리 모드로 실행되는 애플리케이션과 통신하도록 프로비저닝된 클라우드 저장 자원을 포함할 수 있다.
[00179] 일 실시예에서, 애플리케이션 스토어는 다수의 동작 모드들로 실행될 수 있는 애플리케이션을 제공할 수 있다. 애플리케이션 스토어는 다운로드가능한 애플리케이션들을 모바일 디바이스들에 제공할 수 있다. 예컨대, 모바일 디바이스는 다운로드가능한 애플리케이션들의 리스트를 요청할 수 있으며, 애플리케이션 스토어는 요청된 리스트를 제공할 수 있다. 이후, 모바일 디바이스는 애플리케이션 스토어로부터 리스트된 애플리케이션들 중 하나를 다운로드하여 다운로드된 애플리케이션을 설치할 수 있다.
[00180] 일 실시예에서, 애플리케이션 스토어는 애플리케이션의 복수의 버전들을 제공할 수 있으며, 다수의 동작 모드들로 실행될 수 있는 버전을 제공할 수 있다. 예컨대, 앞서 설명된 바와같이, 애플리케이션 스토어는 관리 모드 또는 비관리 모드로 실행될 수 있는 애플리케이션의 버전을 제공할 수 있다.
[00181] 도 17에서, 다수의 모드들로 실행될 수 있는 다운로드가능 애플리케이션을 제공하기 위한 예시적인 방법 단계들의 흐름도가 일 실시예에 따라 도시된다. 도 17은 단계(1702)에서 시작할 수 있으며, 단계(1702)에서, 다운로드가능 애플리케이션들에 대한 요청이 수신된다. 예컨대, 모바일 디바이스(502)와 같은 모바일 디바이스는 애플리케이션 스토어로부터 다운로드가능 애플리케이션의 리스트를 요청할 수 있다.
[00182] 도 17의 프로세스는 단계(1702)로부터 단계(1704)로 진행할 수 있으며, 단계(1704)에서, 모바일 디바이스가 다수의 모드들로 애플리케이션을 실행하도록 구성되는지의 여부가 결정된다. 예컨대, 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행하도록 구성되는지의 여부가 결정될 수 있다.
[00183] 일 실시예에서, 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행할 수 있는 애플리케이션 관리 프레임워크로 구성될 수 있는지의 여부가 결정될 수 있다. 모바일 디바이스가 애플리케이션 관리 프레임워크(614)와 같은 애플리케이션 관리 프레임워크로 구성되는지의 여부가 결정될 수 있다.
[00184] 일 실시예에서, 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행할 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하는 것은 애플리케이션 관리 프레임워크와 연관된 관리 애플리케이션이 모바일 디바이스상에 설치됨을 검출하는 것을 포함할 수 있다. 예컨대, 애플리케이션 관리 프레임워크(614)와 같은 애플리케이션 관리 프레임워크와 연관되는 클라이언트 에이전트(604)와 같은 관리 애플리케이션이 모바일 디바이스상에 설치되는지의 여부가 검출될 수 있다. 클라이언트 에이전트(604)와 같은 애플리케이션이 모바일 디바이스상에 설치됨을 검출하는 것은 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행할 수 있는 애플리케이션 관리 프레임워크로 구성된다는 결정을 허용할 수 있다.
[00185] 일 실시예에서, 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행할 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하는 것은 모바일 디바이스가 애플리케이션 관리 프레임워크와 연관된 디바이스 관리자에 의해 관리된다는 것을 검출하는 것을 포함할 수 있다. 예컨대, 애플리케이션 관리 프레임워크(614)와 같은 애플리케이션 관리 프레임워크와 연관되는 디바이스 관리자(524)와 같은 디바이스 관리자가 모바일 디바이스를 관리하는지의 여부가 검출될 수 있다. 디바이스 관리자(524)와 같은 디바이스 관리자가 모바일 디바이스를 관리한다는 것을 검출하는 것은 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행할 수 있는 애플리케이션 관리 프레임워크로 구성된다는 결정을 허용할 수 있다.
[00186] 도 17의 프로세스는 단계(1704)로부터 단계(1706)로 진행할 수 있으며, 단계(1706)에서, 다운로드가능한 애플리케이션들의 리스트는 결정에 기초하여 모바일 디바이스에 송신될 수 있다. 예컨대, 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행할 수 있는 애플리케이션 관리 프레임워크로 구성되는 것으로 결정될 때, 관리 모드 및 비관리 모드로 실행가능한 애플리케이션의 제 1 버전을 포함하는 다운로드가능 애플리케이션들의 리스트가 제공될 수 있다. 다른 예에서, 모바일 디바이스가 관리 모드 및 비관리 모드로 애플리케이션을 실행할 수 있는 애플리케이션 관리 프레임워크로 구성되지 않는 것으로 결정될 때, 관리 모드 및 비관리 모드로 실행가능한 애플리케이션의 제 1 버전을 제외하는 다운로드가능 애플리케이션들의 리스트가 제공될 수 있다. 예컨대, 앞서 설명된 바와같이, 애플리케이션은 파일 공유 애플리케이션을 포함할 수 있으며, 파일 공유 애플리케이션의 제 1 버전은 관리 모드 및 비관리 모드 모두에서 실행가능한 애플리케이션을 포함할 수 있다.
[00187] 일 실시예에서, 관리 모드 및 비관리 모드로 실행가능한 애플리케이션의 제 1 버전은 모바일 디바이스상의 애플리케이션 관리 프레임워크, 예컨대 애플리케이션 관리 프레임워크(614)와 연관될 수 있다. 애플리케이션의 제 1 버전은 모바일 디바이스에 의해 구현되는 애플리케이션 관리 프레임워크와의 연관성에 기초하여 선택될 수 있다. 예컨대, 애플리케이션 스토어는 관리 모드 및 비관리 모드로 실행가능한 애플리케이션의 복수의 버전들을 포함할 수 있으며, 애플리케이션의 제 1 버전은 애플리케이션 관리 프레임워크에 의한 실행 및/또는 관리를 위하여 제 1 버전이 구성되기 때문에 리스팅을 위해 선택될 수 있다. 주어진 모바일 디바이스의 애플리케이션 관리 프레임워크에 기초하여 애플리케이션의 적절한 버전을 선택함으로써, 단일 애플리케이션 스토어는 디바이스에 의해 구현되는 애플리케이션 관리 프레임워크와 관계없이 다양한 모바일 디바이스들에 애플리케이션을 제공할 수 있다. 따라서, 각각의 애플리케이션 관리 프레임워크 제공자는 전용 애플리케이션 스토어를 유지할 필요가 없으며, 애플리케이션 개발자들은 단순히 애플리케이션의 하나 이상의 버전들을 분배를 위한 단일 애플리케이션 스토어에 적용할 수 있다.
[00188] 일 실시예에서, 관리 모드 및 비관리 모드로 실행가능한 애플리케이션의 제 1 버전은 디바이스 관리자(524)와 같은 모바일 디바이스를 관리하는 디바이스 관리자와 연관될 수 있다. 애플리케이션의 제 1 버전은 디바이스 관리자와의 연관성에 기초하여 선택될 수 있다. 예컨대, 애플리케이션 스토어는 관리 모드 및 비관리 모드로 실행가능한 애플리케이션의 복수의 버전들을 포함할 수 있으며, 애플리케이션의 제 1 버전은 모바일 디바이스를 관리하는 디바이스 관리자와의 연관성에 기초하여 리스팅을 위해 선택될 수 있다.
[00189] 일 실시예에서, 다운로드가능 애플리케이션들의 리스트에 기초하여, 모바일 디바이스는 애플리케이션을 다운로드하여 설치할 수 있다. 예컨대, 리스트가 관리 모드 및 비관리 모드로 실행가능한 애플리케이션의 버전을 포함하는 실시예에서, 모바일은 애플리케이션의 버전을 다운로드하여 애플리케이션의 버전을 설치할 수 있다. 이후, 모바일 디바이스는 관리 모드 또는 비관리 모드로, 설치된 애플리케이션을 실행할 수 있다.
[00190] 또 다른 실시예에서, 등록된 모바일 디바이스상에 설치된 애플리케이션이 외부 애플리케이션을 포함할 수 있다. 예컨대, 등록된 모바일 디바이스는 기업 애플리케이션 스토어와 같은, 등록된 모바일 디바이스에 대한 디바이스 관리자(예컨대, 디바이스 관리자(524))와 연계된 기업 소스보다 오히려, 범용 애플리케이션 스토어와 같은, 모바일 디바이스의 디바이스 관리자(예컨대, 디바이스 관리자(524))와 연계되지 않는 외부 소스로부터 애플리케이션을 수신할 수 있다. 일 실시예에서, 외부 애플리케이션은 기업 애플리케이션 스토어와 연관되지 않은 범용 애플리케이션을 포함할 수 있다.
[00191] 일 실시예에서, 외부 애플리케이션은 기업 계정 및/또는 기업 서버에 사인 온할 것을 요청할 수 있다. 기업 계정은 기업을 위한 액티브 디렉토리와 연관된 계정과 같은, 기업과 연관된 계정을 포함할 수 있다. 예컨대, 외부 애플리케이션은 이메일 클라이언트를 포함할 수 있으며, 이메일 클라이언트는 기업 이메일 계정에 사인 온할 것을 요청할 수 있다. 또 다른 예에서, 외부 애플리케이션은 클라우드 저장 애플리케이션을 포함할 수 있으며, 클라우드 저장 애플리케이션은 게이트웨이 서버와 같은 기업 자원들에 대한 액세스를 허용하는 서버에 사인 온할 것을 요청할 수 있다.
[00192] 일 실시예에서, 도 5의 등록된 모바일 디바이스(502)와 같은 등록된 모바일 디바이스는 외부 애플리케이션이 설치되게 할 수 있으며, 외부 애플리케이션은 도 5의 게이트웨이 서버(560)와 같은 서버에 기업 계정에 액세스하기 위한 요청을 제출할 수 있다. 이는 BYOA(bring your own application) 실시예의 예를 포함할 수 있다.
[00193] 일 실시예에서, 관리 모바일 디바이스상에 설치된 BYOA(bring your own application)는 모바일 디바이스를 관리하는 디바이스 관리자에 의해 변경 및/또는 구성될 수 있다. 예컨대, 모바일 디바이스(502)상에 설치된 BYOA(bring your own application)는 디바이스 관리자(524)에 의해 변경될 수 있다. 변경 및/또는 구성은 애플리케이션이 관리 모드로 실행될 수 있도록 애플리케이션을 조절하는 것을 포함할 수 있다. 예컨대, 애플리케이션은 애플리케이션이 관리 모드로 실행중인 동안 애플리케이션에 의해 저장된 데이터가 암호화되거나 또는 보안 데이터 컨테이너에 저장되도록 변경 및/또는 구성될 수 있다. 또 다른 예에서, 애플리케이션은 애플리케이션이 관리 모드로 실행중인 동안 애플리케이션이 하나 이상의 보안 자원들(예컨대, 게이트웨이 서버(560))과 통신할 수 있도록 변경 및/또는 구성될 수 있다.
[00194] 비록 요지가 구성적 특징들 및/또는 방법적 동작들에 특정한 언어로 설명되었을지라도, 첨부된 청구항들에서 정의된 요지가 반드시 앞서 설명된 특정 특징들 또는 동작들로 제한되는 것이 아니라는 것이 이해되어야 한다. 오히려, 앞서 설명된 특정 특징들 및 동작들은 하기의 청구항들의 예시적인 구현들로서 설명되며, 다른 실시예들이 실시될 수 있다. 예컨대, 다양한 다른 실시예들이 하기의 설명을 포함하나 이에 제한되지 않는다.
[00195] 일 실시예는 모바일 디바이스상에서, 관리 모드인 제 1 모드로 애플리케이션을 실행하는 단계; 모바일 디바이스상에서, 비관리 모드인 제 2 모드로 애플리케이션을 실행하는 단계 ― 상기 애플리케이션은 상기 애플리케이션이 제 1 모드로 실행중일 때와 상호 배타적인 시간에 제 2 모드로 실행됨 ―; 애플리케이션과 연관된 데이터를 저장하기 위한 요청을 수신하는 단계; 애플리케이션이 관리 모드로 실행중일 때 제 1 프로토콜에 따라 데이터를 저장하는 단계; 및 애플리케이션이 비관리 모드로 실행중일 때 제 2 프로토콜에 따라 데이터를 저장하는 단계를 포함하는 방법을 포함할 수 있다. 이러한 실시예에서, 제 1 프로토콜은 제 1 데이터 컨테이너에 데이터를 저장하는 것을 포함할 수 있으며, 제 2 프로토콜은 제 1 데이터 컨테이너와 상호 배타적인 제 2 데이터 컨테이너에 데이터를 저장하는 것을 포함할 수 있다. 이러한 실시예는 애플리케이션이 비관리 모드로 실행될 때 제 1 데이터 컨테이너에 액세스하는 것을 제약하는 단계를 더 포함할 수 있다. 이러한 실시예는 데이터를 저장하기 전에 제 1 키로 그 데이터를 암호화하는 것을 포함하는 제 1 프로토콜 및 데이터를 저장하기 전에 제 2 키로 데이터를 암호화하는 것 및 암호해독된 데이터를 저장하는 것 중 적어도 하나를 포함하는 제 2 프로토콜을 더 포함할 수 있다. 일부 경우들에서, 관리 모드로 실행되는 애플리케이션은 그 애플리케이션으로부터 분리되고 복수의 애플리케이션들에 적용가능한 하나 이상의 정책 파일들에 따라 디바이스 관리자에 의해 관리된다. 일부 양상들은 또한 애플리케이션의 관리 모드를 디스에이블하기 위한 신호를 디바이스 관리자로부터 수신하는 단계를 포함할 수 있다. 이러한 상황이 발생할 때, 실시예는, 수신된 신호에 응답하여, 제 1 프로토콜에 따라 저장된 데이터의 위치를 결정하고 위치 결정된 데이터를 선택적으로 제거할 수 있다. 제 1 프로토콜에 따라 저장된 데이터의 위치를 결정하는 것은 애플리케이션과 연관된 관리 계정을 결정하는 단계 및 관리 계정에 기초하여 데이터의 위치를 결정하는 단계를 포함할 수 있다. 일부 경우들에서, 제 1 프로토콜에 따라 저장된 데이터의 위치를 결정하는 단계는 제 1 프로토콜에 따라 데이터를 저장하는 컨테이너의 위치를 결정하는 단계를 더 포함한다. 일부 양상들에서, 제 1 프로토콜에 따라 저장된 데이터의 위치를 결정하는 단계는 제 1 프로토콜과 연관된 암호화 키를 결정하는 단계; 및 결정된 암호화 키에 기초하여 데이터의 위치를 결정하는 단계를 더 포함한다. 일부 실시예들에서, 디바이스 관리자는 모바일 디바이스상에 설치된 블랙 리스트 애플리케이션을 식별하는 것에 응답하여 관리 모드를 디스에이블한다. 디바이스 관리자는 애플리케이션과 연관된 관리 계정이 만료되었음을 검출하는 것에 응답하여 관리 모드를 디스에이블할 수 있다. 디바이스 관리자는 모바일 디바이스가 탈옥 또는 정착되었음을 검출하는 것에 응답하여 관리 모드를 디스에이블할 수 있다. 일부 경우들에서, 위치 결정된 데이터를 선택적으로 제거하는 단계는 모바일 디바이스상에 저장된 애플리케이션과 연관된 개인 데이터를 제거하지 않는다.
[00196] 다른 실시예는 프로세서를 포함하는 컴퓨팅 디바이스를 포함할 수 있으며, 컴퓨팅 디바이스는 제 1 모드로 애플리케이션을 실행하며 ― 제 1 모드는 애플리케이션으로부터 분리되고 컴퓨팅 디바이스상에서 실행되는 다수의 애플리케이션들의 동작들을 관리하기 위하여 사용가능한 하나 이상의 정책 파일들의 제어하에서 동작하는 관리 모드임 ―; 제 2 모드로 애플리케이션을 실행하며 ― 상기 애플리케이션은 상기 애플리케이션이 제 1 모드로 실행중일 때와 상호 배타적인 시간에 제 2 모드로 실행됨 ―; 애플리케이션과 연관된 데이터를 저장하기 위한 요청을 수신하며; 그리고 애플리케이션이 제 1 모드로 실행중일 때 제 1 프로토콜에 따라 데이터를 저장하고 애플리케이션이 제 2 모드로 실행중일 때 제 2 프로토콜에 따라 데이터를 저장하도록 구성된다. 일부 양상에서, 제 1 프로토콜은 제 1 데이터 컨테이너에 데이터를 저장하는 것을 포함하며, 제 2 프로토콜은 제 1 데이터 컨테이너와 상이한 제 2 데이터 컨테이너에 데이터를 저장하는 것을 포함한다. 일부 실시예들에서, 컴퓨팅 디바이스는 애플리케이션이 비관리 모드로 실행될 때 제 1 데이터 컨테이너에 액세스하는 것을 제약하도록 추가로 구성된다. 일부 실시예들에서, 제 1 프로토콜은 데이터를 저장하기 전에 제 1 키로 그 데이터를 암호화하는 것을 포함하며, 제 2 프로토콜은 데이터를 저장하기 전에 제 2 키로 데이터를 암호화하는 것 및 암호해독된 데이터를 저장하는 것 중 적어도 하나를 포함한다. 일부 실시예들에서, 제 1 모드는 제 1 관리 모드이며, 제 2 모드는 제 1 관리 모드와 상이한 적어도 하나의 정책 파일에 따라 관리되는 제 2 관리 모드이다.
[00197] 또 다른 실시예는 컴퓨터-실행가능 명령들을 저장한 하나 이상의 비-일시적 컴퓨터-판독가능 저장 매체를 포함할 수 있으며, 명령들은 데이터 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 시스템으로 하여금, 제 1 모드로 애플리케이션을 실행하며 ― 제 1 모드는 관리 모드임 ―; 제 2 모드로 애플리케이션을 실행하며 ― 제 2 모드는 비관리 모드이며, 상기 애플리케이션은 상기 애플리케이션이 제 1 모드로 실행중일 때와 상호 배타적인 시간에 제 2 모드로 실행됨 ―; 애플리케이션과 연관된 데이터를 저장하기 위한 요청을 수신하며; 애플리케이션이 관리 모드로 실행중일 때 제 1 프로토콜에 따라 데이터를 저장하고 애플리케이션이 비관리 모드로 실행중일 때 제 2 프로토콜에 따라 데이터를 저장하도록 한다.
[00198] 또 다른 예시적인 실시예에서, 방법은 새로운 소프트웨어 애플리케이션이 모바일 디바이스상에서 설치됨을 결정하기 위하여 모바일 디바이스를 주기적으로 모니터링하는 단계; 애플리케이션이 제 1 모드 및 제 2 모드 모두에서 실행될 수 있음을 검출하는 단계 ― 제 1 모드는 애플리케이션으로부터 분리되고 컴퓨팅 디바이스상에서 실행되는 다수의 애플리케이션들의 동작들을 관리하기 위하여 사용가능한 하나 이상의 정책 파일들의 제어하에서 동작하는 관리 모드임 ―; 자원이, 단지 애플리케이션이 제 1 모드로 실행중일 때만 애플리케이션과 통신하고 애플리케이션이 제 2 모드로 실행중일 때 애플리케이션과 통신하지 않게 구성되도록 애플리케이션과 통신하도록 그 자원을 프로비저닝하는 단계를 포함할 수 있다. 일부 양상들에서, 자원은 보안 데이터를 저장하는 클라우드 저장 자원을 포함한다. 일부 양상들에서, 자원을 프로비저닝하는 단계는 애플리케이션이 제 1 모드로 실행중인 동안 애플리케이션이 클라우드 데이터 저장 자원에 저장된 보안 데이터에 액세스하도록 클라우드 데이터 저장 자원을 프로비저닝하는 단계를 포함한다. 일부 양상들에서, 모바일 디바이스는 디바이스 관리자에 의해 관리되며, 디바이스 관리자는 하나 이상의 정책 파일들을 운영한다. 일부 양상들에서, 자원을 프로비저닝하는 단계는 모바일 디바이스로부터 식별 정보와 연관된 애플리케이션에 대한 자원을 가진 계정을 생성하는 단계; 식별 정보에 기초하여 관리 계정의 위치를 결정하는 단계; 및 생성된 계정에 관리 계정을 링크하는 단계를 더 포함한다. 일부 양상들에서, 제 2 모드는 제 1 모드와 상이한 하나 이상의 정책 파일들의 제어하에서 동작하는 제 2 관리 모드이다. 일부 양상들에서, 제 1 모드는 제 1 사용자 역할과 연관되며, 제 2 모드는 제 1 사용자 역할과 상이한 제 2 사용자 역할과 연관된다. 일부 양상들에서, 제 1 모드는 제 1 직장 환경 타입과 연관되며, 제 2 모드는 제 2 직장 환경 타입과 연관된다. 일부 양상들에서, 방법은 애플리케이션이 제 1 모드로 실행중임을 검출하는 단계; 및 애플리케이션이 생성된 계정에 기초하여 보안 데이터에 액세스하도록 허용하는 단계를 포함한다. 일부 양상들에서, 방법은 제 1 모드로 실행되는 애플리케이션으로부터의 요청을 수신하는 단계 ― 요청은 보안 데이터에 액세스하기 위한 요청을 포함함 ―; 및 생성된 계정에 기초하여 보안 데이터에 대한 애플리케이션 액세스를 승인하는 단계를 포함한다. 일부 양상들에서, 애플리케이션은 기업에 의해 디바이스에 분배된다.
[00199] 또 다른 예시적인 실시예에서, 프로세서를 가진 디바이스는 새로운 소프트웨어 애플리케이션이 모바일 디바이스상에서 설치됨을 결정하기 위하여 모바일 디바이스를 주기적으로 모니터링하며; 애플리케이션이 제 1 모드 및 제 2 모드 모두에서 실행될 수 있음을 검출하며 ― 제 1 모드는 애플리케이션으로부터 분리되고 컴퓨팅 디바이스상에서 실행되는 다수의 애플리케이션들의 동작들을 관리하기 위하여 사용가능한 하나 이상의 정책 파일들의 제어하에서 동작하는 관리 모드임 ―; 자원이, 단지 애플리케이션이 제 1 모드로 실행중일 때만 애플리케이션과 통신하고 애플리케이션이 제 2 모드로 실행중일 때 애플리케이션과 통신하지 않게 구성되도록 애플리케이션과 통신하도록 그 자원을 프로비저닝하도록 구성된다. 일부 양상들에서, 자원은 보안 데이터를 저장하는 클라우드 저장 자원을 포함한다. 일부 양상들에서, 자원을 프로비저닝하는 것은 애플리케이션이 제 1 모드로 실행중인 동안 애플리케이션이 클라우드 데이터 저장 자원에 저장된 보안 데이터에 액세스하도록 클라우드 데이터 저장 자원을 프로비저닝하는 것을 포함한다. 일부 양상들에서, 모바일 디바이스는 디바이스 관리자에 의해 관리되며, 디바이스 관리자는 하나 이상의 정책 파일들을 운영한다. 일부 양상들에서, 자원을 프로비저닝하는 것은 모바일 디바이스로부터 식별 정보와 연관된 애플리케이션에 대한 자원을 가진 계정을 생성하는 것; 식별 정보에 기초하여 관리 계정의 위치를 결정하는 것; 및 생성된 계정에 관리 계정을 링크하는 것을 더 포함한다. 일부 양상들에서, 제 2 모드는 제 1 모드와 상이한 하나 이상의 정책 파일들의 제어하에서 동작하는 제 2 관리 모드이다. 일부 양상들에서, 제 1 모드는 제 1 사용자 역할과 연관되며, 제 2 모드는 제 2 사용자 역할과 연관된다. 일부 양상들에서, 디바이스는 애플리케이션이 제 1 모드로 실행중임을 검출하고; 그리고 애플리케이션이 생성된 계정에 기초하여 보안 데이터에 액세스하도록 추가로 구성된다.
[00200] 또 다른 예시적인 실시예에서, 하나 이상의 비-일시적 컴퓨터-판독가능 저장 매체는 컴퓨터-실행가능 명령들을 저장하며, 컴퓨터 -실행가능 명령들은, 데이터 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 시스템으로 하여금, 새로운 소프트웨어 애플리케이션이 모바일 디바이스상에서 설치됨을 결정하기 위하여 모바일 디바이스를 주기적으로 모니터링하는 것; 애플리케이션이 제 1 모드 및 제 2 모드 모두에서 실행될 수 있음을 검출하는 것 ― 제 1 모드는 애플리케이션으로부터 분리되고 컴퓨팅 디바이스상에서 실행되는 다수의 애플리케이션들의 동작들을 관리하기 위하여 사용가능한 하나 이상의 정책 파일들의 제어하에서 동작하는 관리 모드임 ―; 및 자원이, 단지 애플리케이션이 제 1 모드로 실행중일 때만 애플리케이션과 통신하고 애플리케이션이 제 2 모드로 실행중일 때 애플리케이션과 통신하지 않게 구성되도록 애플리케이션과 통신하도록 그 자원을 프로비저닝하는 것을 수행하도록 한다.

Claims (20)

  1. 방법으로서,
    모바일 디바이스로부터, 다운로드가능한 애플리케이션들의 리스트에 대한 요청을 수신하는 단계;
    애플리케이션 관리 프레임워크(application management framework)와 연관되며 상기 모바일 디바이스의 동작 상태를 모니터링하도록 구성된 디바이스 관리자에 의해 상기 모바일 디바이스가 관리되는지의 여부를 검출하는 것에 의해, 상기 모바일 디바이스가, 비관리 모드(unmanaged mode) 및 관리 모드(managed mode) 모두로 애플리케이션을 실행시킬 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하는 단계; 및
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하는 단계를 포함하고,
    상기 애플리케이션 관리 프레임워크가 가용(capable)으로 결정될 때, 상기 리스트는 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 제 1 버전을 포함하는 것이고,
    상기 애플리케이션 관리 프레임워크가 비가용으로 결정될 때, 상기 리스트는 상기 애플리케이션의 상기 제 1 버전을 제외하고, 상기 비관리 모드로 실행가능하고 상기 관리 모드로 실행 불가능한 상기 애플리케이션의 제 2 버전을 포함하는 것인, 방법.
  2. 제 1 항에 있어서,
    상기 모바일 디바이스가, 비관리 모드 및 관리 모드 모두로 애플리케이션을 실행시킬 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하는 상기 단계는, 애플리케이션 관리 프레임워크와 연관된 관리 애플리케이션(managed application)이 상기 모바일 디바이스상에 설치됨을 검출하는 단계를 더 포함하는 것인, 방법.
  3. 제 1 항에 있어서,
    상기 다운로드가능한 애플리케이션의 상기 제 1 버전은 상기 애플리케이션 관리 프레임워크와 연관되는 것인, 방법.
  4. 제 3 항에 있어서,
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하는 상기 단계는, 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 복수의 버전들 중에서 상기 애플리케이션의 상기 제 1 버전을 선택하는 단계를 더 포함하는 것이고,
    상기 애플리케이션의 상기 제 1 버전은 상기 애플리케이션 관리 프레임워크와의 연관성에 기초하여 선택되는 것인, 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 다운로드가능한 애플리케이션의 상기 제 1 버전은 상기 디바이스 관리자와 연관되는 것인, 방법.
  7. 제 6 항에 있어서,
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하는 상기 단계는, 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 복수의 버전들 중에서 상기 애플리케이션의 상기 제 1 버전을 선택하는 단계를 더 포함하는 것이고,
    상기 애플리케이션의 상기 제 1 버전은 상기 디바이스 관리자와의 연관성에 기초하여 선택되는 것인, 방법.
  8. 제 1 항에 있어서,
    상기 애플리케이션의 상기 제 1 버전은, 관리 애플리케이션으로서 동작하도록, 상기 모바일 디바이스의 사용자를 고용한 기업에 의해 수정된 비관리 애플리케이션을 포함하는 것인, 방법.
  9. 컴퓨팅 디바이스로서,
    프로세서를 포함하고,
    상기 컴퓨팅 디바이스는 적어도,
    모바일 디바이스로부터, 다운로드가능한 애플리케이션들의 리스트에 대한 요청을 수신하고;
    애플리케이션 관리 프레임워크와 연관되며 상기 모바일 디바이스의 동작 상태를 모니터링하도록 구성된 디바이스 관리자에 의해 상기 모바일 디바이스가 관리되는지의 여부를 검출하는 것에 의해, 상기 모바일 디바이스가, 비관리 모드 및 관리 모드 모두로 애플리케이션을 실행시킬 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하며;
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하도록 구성되는 것이고,
    상기 애플리케이션 관리 프레임워크가 가용으로 결정될 때, 상기 리스트는 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 제 1 버전을 포함하는 것이고,
    상기 애플리케이션 관리 프레임워크가 비가용으로 결정될 때, 상기 리스트는 상기 애플리케이션의 상기 제 1 버전을 제외하고, 상기 비관리 모드로 실행가능하고 상기 관리 모드로 실행 불가능한 상기 애플리케이션의 제 2 버전을 포함하는 것인, 컴퓨팅 디바이스.
  10. 제 9 항에 있어서,
    상기 모바일 디바이스가, 비관리 모드 및 관리 모드 모두로 애플리케이션을 실행시킬 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하는 것은, 애플리케이션 관리 프레임워크와 연관된 관리 애플리케이션이 상기 모바일 디바이스상에 설치됨을 검출하는 것을 더 포함하는 것인, 컴퓨팅 디바이스.
  11. 제 9 항에 있어서,
    상기 다운로드가능한 애플리케이션의 상기 제 1 버전은 상기 애플리케이션 관리 프레임워크와 연관되는 것인, 컴퓨팅 디바이스.
  12. 제 11 항에 있어서,
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하는 것은, 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 복수의 버전들 중에서 상기 애플리케이션의 상기 제 1 버전을 선택하는 것을 더 포함하는 것이고,
    상기 애플리케이션의 상기 제 1 버전은 상기 애플리케이션 관리 프레임워크와의 연관성에 기초하여 선택되는 것인, 컴퓨팅 디바이스.
  13. 삭제
  14. 제 9 항에 있어서,
    상기 다운로드가능한 애플리케이션의 상기 제 1 버전은 상기 디바이스 관리자와 연관되는 것인, 컴퓨팅 디바이스.
  15. 제 14 항에 있어서,
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하는 것은, 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 복수의 버전들 중에서 상기 애플리케이션의 상기 제 1 버전을 선택하는 것을 더 포함하는 것이고,
    상기 애플리케이션의 상기 제 1 버전은 상기 디바이스 관리자와의 연관성에 기초하여 선택되는 것인, 컴퓨팅 디바이스.
  16. 제 9 항에 있어서,
    상기 애플리케이션의 상기 제 1 버전은, 관리 애플리케이션으로서 동작하도록, 상기 모바일 디바이스의 사용자를 고용한 기업에 의해 수정된 비관리 애플리케이션을 포함하는 것인, 컴퓨팅 디바이스.
  17. 컴퓨터-실행가능 명령들을 저장한 하나 이상의 비-일시적인 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은, 데이터 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 상기 시스템으로 하여금,
    모바일 디바이스로부터, 다운로드가능한 애플리케이션들의 리스트에 대한 요청을 수신하는 것;
    애플리케이션 관리 프레임워크와 연관되며 상기 모바일 디바이스의 동작 상태를 모니터링하도록 구성된 디바이스 관리자에 의해 상기 모바일 디바이스가 관리되는지의 여부를 검출하는 것에 의해, 상기 모바일 디바이스가, 비관리 모드 및 관리 모드 모두로 애플리케이션을 실행시킬 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하는 것; 및
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하는 것을 수행하도록 하며,
    상기 애플리케이션 관리 프레임워크가 가용으로 결정될 때, 상기 리스트는 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 제 1 버전을 포함하는 것이고,
    상기 애플리케이션 관리 프레임워크가 비가용으로 결정될 때, 상기 리스트는 상기 애플리케이션의 상기 제 1 버전을 제외하고, 상기 비관리 모드로 실행가능하고 상기 관리 모드로 실행 불가능한 상기 애플리케이션의 제 2 버전을 포함하는 것인, 하나 이상의 비-일시적인 컴퓨터-판독가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 모바일 디바이스가, 비관리 모드 및 관리 모드 모두로 애플리케이션을 실행시킬 수 있는 애플리케이션 관리 프레임워크로 구성되는지의 여부를 결정하는 것은, 애플리케이션 관리 프레임워크와 연관된 관리 애플리케이션이 상기 모바일 디바이스상에 설치됨을 검출하는 것을 더 포함하는 것인, 하나 이상의 비-일시적인 컴퓨터-판독가능 저장 매체.
  19. 제 18 항에 있어서,
    상기 다운로드가능한 애플리케이션의 상기 제 1 버전은 상기 애플리케이션 관리 프레임워크와 연관되는 것인, 하나 이상의 비-일시적인 컴퓨터-판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 모바일 디바이스에, 다운로드가능한 애플리케이션들의 리스트를 전송하는 것은, 상기 비관리 모드 및 상기 관리 모드 모두로 실행가능한 상기 애플리케이션의 복수의 버전들 중에서 상기 애플리케이션의 상기 제 1 버전을 선택하는 것을 더 포함하는 것이고,
    상기 애플리케이션의 상기 제 1 버전은 상기 애플리케이션 관리 프레임워크와의 연관성에 기초하여 선택되는 것인, 하나 이상의 비-일시적인 컴퓨터-판독가능 저장 매체.
KR1020157031149A 2013-03-29 2013-09-17 다수의 동작 모드들을 가진 애플리케이션용 데이터 관리 KR101730984B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201361806557P 2013-03-29 2013-03-29
US61/806,557 2013-03-29
US13/886,889 US9280377B2 (en) 2013-03-29 2013-05-03 Application with multiple operation modes
US13/886,889 2013-05-03
US201361861758P 2013-08-02 2013-08-02
US201361861736P 2013-08-02 2013-08-02
US61/861,736 2013-08-02
US61/861,758 2013-08-02
US14/021,227 2013-09-09
US14/021,227 US10284627B2 (en) 2013-03-29 2013-09-09 Data management for an application with multiple operation modes
PCT/US2013/060047 WO2014158222A1 (en) 2013-03-29 2013-09-17 Data management for an application with multiple operation modes

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177010876A Division KR101992740B1 (ko) 2013-03-29 2013-09-17 다수의 동작 모드들을 가진 애플리케이션용 데이터 관리

Publications (2)

Publication Number Publication Date
KR20160019410A KR20160019410A (ko) 2016-02-19
KR101730984B1 true KR101730984B1 (ko) 2017-04-27

Family

ID=55448790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157031149A KR101730984B1 (ko) 2013-03-29 2013-09-17 다수의 동작 모드들을 가진 애플리케이션용 데이터 관리

Country Status (2)

Country Link
KR (1) KR101730984B1 (ko)
WO (1) WO2014158222A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6688485B2 (ja) 2016-07-15 2020-04-28 株式会社リコー サービス提供システム、サービス授受システム、サービス提供方法、及びプログラム
KR102286512B1 (ko) * 2019-10-21 2021-08-05 주식회사 시큐센 클라우드 기반 앱 보안 서비스 방법
CN114826705A (zh) * 2022-04-12 2022-07-29 国网湖北省电力有限公司信息通信公司 一种基于独立成分分析方法的apt攻击判定方法、***及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120129503A1 (en) 2010-11-19 2012-05-24 MobileIron, Inc. Management of Mobile Applications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020192B2 (en) * 2003-02-28 2011-09-13 Michael Wright Administration of protection of data accessible by a mobile device
US9936333B2 (en) * 2010-08-10 2018-04-03 Microsoft Technology Licensing, Llc Location and contextual-based mobile application promotion and delivery
EP2523107B1 (en) * 2011-04-19 2018-11-07 LG Electronics Inc. Mobile terminal and system for managing applications using the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120129503A1 (en) 2010-11-19 2012-05-24 MobileIron, Inc. Management of Mobile Applications

Also Published As

Publication number Publication date
WO2014158222A1 (en) 2014-10-02
WO2014158222A8 (en) 2015-10-15
KR20160019410A (ko) 2016-02-19

Similar Documents

Publication Publication Date Title
US10965734B2 (en) Data management for an application with multiple operation modes
US10701082B2 (en) Application with multiple operation modes
KR101992740B1 (ko) 다수의 동작 모드들을 가진 애플리케이션용 데이터 관리
US9838398B2 (en) Validating the identity of an application for application management
KR101769527B1 (ko) 기업 애플리케이션 스토어의 제공
KR101738400B1 (ko) 콘텍스트와 모바일 디바이스 로킹
WO2015105499A1 (en) Providing mobile application management functionalities
KR101730984B1 (ko) 다수의 동작 모드들을 가진 애플리케이션용 데이터 관리

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant