CN107636667B - 在设备中创建多个工作空间的***及方法 - Google Patents
在设备中创建多个工作空间的***及方法 Download PDFInfo
- Publication number
- CN107636667B CN107636667B CN201680028995.XA CN201680028995A CN107636667B CN 107636667 B CN107636667 B CN 107636667B CN 201680028995 A CN201680028995 A CN 201680028995A CN 107636667 B CN107636667 B CN 107636667B
- Authority
- CN
- China
- Prior art keywords
- message
- target application
- application
- managed
- translator
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
Abstract
实施例涉及包括可由计算设备执行的托管应用程序和工作空间管理器的***。工作空间管理器从托管应用程序获取组件调用消息,并确定组件调用消息是否意图调用由工作空间管理器管理的工作空间中的公共组件。响应于确定组件调用消息是否意图调用由工作空间管理器管理的工作空间中的公共组件,工作空间管理器向托管应用程序提供指令。
Description
相关申请的交叉引用
本申请要求享有于2015年5月21日提交的美国非临时专利申请号14/718,733的权益,该申请的全部内容通过引用并入本文。
本申请与两者均于2015年5月21日提交的美国非临时专利申请号14/718,694和14/718,727相关。
背景技术
企业,诸如商号和其他组织,通常会制定安全策略,其防止未经授权的用户访问企业计算资源。例如,一些安全策略要求用户必须提供的凭据,该凭据在授权用户访问企业数据之前必须被认证。
当用户操作设备以访问企业资源时,设备可以包括执行各种类型功能的若干应用程序。例如,设备可以包括网页浏览器应用程序、电子邮件应用程序、文字处理器应用程序和游戏应用程序。通常情况下,这些应用程序是从与客户端设备的用户或提供企业资源的企业无关联的应用程序开发商获得的。一些企业担心安装在设备上的应用程序可能会引入安全漏洞,其可能被利用以辅助未经授权的用户访问企业资源。
为了增强安装在设备中的应用程序的安全性,一些企业向应用程序开发商提供软件开发工具包(SDK)。这些SDK为应用程序开发商提供了一个开发环境,其辅助将安全库集成到应用程序中,以便开发商可以向应用程序添加安全和管理功能。使用SDK,应用程序开发商可以修改其应用程序的源代码,以包括由SDK提供的安全库。但是,必须重建并重新分配修改后的代码。
在另一种方法中,可以通过称为“包装(wrapping)”的过程来增强应用程序的安全性。为了包装应用程序,应用程序首先被解编译。安全库被***到解编译的应用程序中,然后使用添加的安全库来编译应用程序。但是,包装需要访问以修改和重新打包应用程序。
附图说明
参考以下附图可以更好地理解本公开的许多方面。附图中的组件不一定按比例绘制,而是重点放在明确地说明本公开的原理。此外,在附图中,遍及若干视图,相同的参考标号表示相应的部分。
图1是联网的环境的示例的图。
图2是目标应用程序包的示例的图。
图3是托管应用程序包的示例的图。
图4是客户端设备的示例的图。
图5是示出由企业计算环境中的托管应用程序生成器实现的功能的示例的流程图。
图6是示出由客户端设备中的托管应用程序实现的功能的示例的流程图。
图7是示出由托管应用程序中的执行器实现的功能的示例的流程图。
图8-9是示出由托管应用程序中的翻译器实现的功能的示例的流程图。
图10是示出由客户端设备中的工作空间管理器实现的功能的示例的流程图。
图11-12是示出由托管应用程序中的翻译器实现的功能的示例的流程图。
图13-14是示出由客户端设备中的工作空间管理器实现的功能的示例的流程图。
具体实施方式
本公开涉及增强可以安装在客户端设备中的应用程序的安全性。在一些示例中,企业计算环境可以获得通过应用程序库分发的目标应用程序的应用程序包(applicationpackage)。企业计算环境可以基于目标应用程序的应用程序包生成托管应用程序包,并将托管应用程序包提供给客户端设备。托管应用程序包可以安装在客户端设备中以创建托管应用程序(managed application)。当托管应用程序在客户端设备中被执行时,托管应用程序中的加载器可以启动客户端设备中的目标应用程序的执行。
托管应用程序可以包括执行器(enforcer),其确定目标应用程序是否按照由企业计算环境指定的合规规则(compliance rule)而执行。例如,托管应用程序中的执行器可以检测到目标应用程序正在尝试删除特定文件。如果合规规则禁止目标应用程序执行此操作,则执行器可以禁止执行操作,并且还可以通知管理员客户端设备106已尝试执行未经授权的操作。
在一些示例中,工作空间管理器还可以在客户端设备中执行并创建虚拟工作空间,其中来自另一工作空间的资源与由工作空间管理器创建的工作空间隔离。例如,工作空间管理器可以创建并管理企业工作空间,其与客户端设备中的个人工作空间隔离。由于客户端设备中存在多个工作空间,所以特定应用程序的多个实例可以在客户端设备中执行。此外,不在企业工作空间中运行的组件(诸如其他应用程序)可以被禁止访问企业工作空间中的资源。
在下面的讨论中,描述了***及其组件的示例,随后是这些***的操作的示例。
参考图1,示出了联网的环境100的示例。联网的环境100可以包括企业计算环境103、客户端设备106和应用程序分发器计算环境109,其通过网络113进行数据通信。网络113可以包括互联网、一个或更多个内联网、外联网、广域网(WAN)、局域网(LAN)、有线网络、无线网络或两个或更多个这样的网络的任意组合。网络113可以包括卫星网络、有线电视网络、以太网和电话网络。
企业计算环境103可以是由企业(诸如商号或其他组织)操作的计算环境。企业计算环境103可以包括提供计算能力的计算设备(诸如服务器计算机)。可选地,企业计算环境103可以包括布置在一个或更多个服务器库(bank)或计算机库中的多个计算设备。例如,其中企业计算环境103包括多个计算设备,所述计算设备可以位于单个安装中,或者所述计算设备可以分布在多个不同的地理位置之间。
在一些示例中,企业计算环境103可以包括计算设备,其一起形成宿主计算资源或网格计算资源。在其他示例中,企业计算环境103可以作为弹性计算资源操作,其中计算相关资源(诸如处理资源、网络资源和存储资源)的分配容量随时间而变化。在其他示例中,企业计算环境103可以包括或操作为一个或更多个虚拟化的计算机实例,其可以被执行以实施本文所描述的功能。
企业计算环境103可以执行各种***。此外,企业计算环境103可访问的数据存储116可以存储各种数据。例如,企业计算环境103可以包括管理***119,其可以监视和管理与企业计算环境103相关联的多个客户端设备106的操作。特别地,管理***119可以管理和监督多个客户端设备106的操作,该多个客户端设备106登记在由管理***119辅助的管理服务中。在一个示例中,雇主可以操作管理***119以确保其雇员的客户端设备106按照各种安全策略进行操作。通过雇主确保其雇员的客户端设备106按照安全策略进行操作,雇主可以控制和限制对与雇主以及客户端设备106的用户相关联的资源的访问。管理***119还可以辅助访问电子邮件、日历数据、联系人信息和与企业相关联的其他企业资源。
管理***119还可以包括托管应用程序包生成器123。如下面将进一步详细描述的,托管应用程序包生成器123可以从应用程序分发器计算环境109获得应用程序包126,诸如目标应用程序包126a,然后可以基于目标应用程序包126a生成托管应用程序包126b。虽然图1中将托管应用程序包生成器123示出为在企业计算环境103中实现,但在替代的示例中,客户端设备106可以实现托管应用程序包生成器123,使得客户端设备106可以基于目标应用程序包126a生成托管应用程序包126b。
图1所示的数据存储116代表多个数据存储116,其可以访问企业计算环境103的组件。存储在数据存储116中的数据可以包括企业数据133和合规规则136。存储在数据存储116中的企业数据133可以包括与操作企业计算环境103的企业相关联的信息。例如,企业数据133可以包括人事记录、会计记录、文字处理文档、电子表格和与企业相关联的其他数据。
合规规则136可以指定客户端设备106中的组件是否被禁止执行一个或更多个动作。例如,合规规则136可以指定客户端设备106中的组件是否被允许请求访问特定设备组件,诸如照相机、全球定位***(GPS)或网络接口。作为另一示例,合规规则136可以指定客户端设备106中的组件是否被允许执行特定操作,诸如其中内容被复制或粘贴的剪贴板操作。作为可以禁止的操作的另一示例,合规规则136可以指定客户端设备106中的组件是否被允许请求删除文件。
一些合规规则136可以指定基于各种条件(诸如客户端设备106的时间或位置)而允许动作。例如,合规规则136可以指定仅当客户端设备106位于特定地理边界内或通过特定网络接入点连接到网络113时,才允许特定动作。
应用程序分发器计算环境109可以是由分配应用程序包126的实体操作的计算环境。在一些示例中,应用程序包126可以包括ANDROID应用程序包(APK)文件。操作应用程序分发器计算环境109并分配应用程序包126的实体可以隶属或可以不隶属于操作企业计算环境103的企业或客户端设备106的用户。企业计算环境103可以包括计算设备(诸如服务器计算机),其为企业计算环境103提供计算能力。
应用程序分发器计算环境109可以包括应用程序库139,应用程序包126存储于其中。在一些示例中,应用程序库139可以是公共库,其可以被设备(诸如客户端设备106和企业计算环境103中的设备)访问。在其他示例中,应用程序库139可以是私用库,其可以仅由特定设备(诸如客户端设备106或企业计算环境103中已采用应用程序分发器计算环境109注册服务的其他设备)访问。
客户端设备106代表可以耦合到网络113的多个客户端设备106。客户端设备106可以包括基于处理器的计算机***,诸如台式计算机、膝上型计算机、个人数字助理、手机、上网本或平板电脑。客户端设备106还可以包括输出设备(诸如显示器和音频扬声器)以及一个或更多个输入设备(诸如鼠标、键盘、触摸板或触摸屏),其辅助用户与客户端设备106进行交互和用户控制客户端设备106。
客户端设备106可以包括托管应用程序141。另外,客户端设备106可以包括操作***143,其辅助托管应用程序129和客户端设备106中的其他组件的执行。当客户端设备106执行各种组件时,操作***143可以管理客户端设备106的硬件和软件资源。此外,操作***143可以提供在客户端设备106中执行应用程序的虚拟机。例如,在执行托管应用程序141时,操作***143可以创建虚拟机的实例,其为应用程序解释可执行文件(诸如字节码)。在一些示例中,操作***143可以包括ANDROID操作***,其可以提供DALVIK虚拟机、ANDROIDRUNTIME(ART)或另一个虚拟机或解释器的实例,用于解释JAVA字节码并执行本地代码,诸如编译的C/C++代码。
操作***143还可以提供各种类型的***,诸如进程间通信组件。进程间通信组件可以辅助客户端设备106内的应用程序、服务和***彼此通信。
托管应用程序141可以是在客户端设备106中安装托管应用程序包126b时在客户端设备106中创建的应用程序。托管应用程序141可以启动客户端设备106中目标应用程序146的执行,并且确定目标应用程序146是否正在按照已被指派给客户端设备106的合规规则136来执行。如下面将进一步详细描述的,从客户端设备106的用户的角度来看,托管应用程序129的操作可以看起来与目标应用程序146的操作相同,除了如果某些功能违反了合规规则136,则托管应用程序141可以限制目标应用程序146的这些功能之外。目标应用程序146可以被执行,并且不修改在执行期间控制的目标应用程序146。在一些示例中,目标应用程序146不需要使用SDK或被包装,以按照合规规则136来执行。
为了启动目标应用程序146的执行,托管应用程序可以包括加载器149。如下面将进一步详细描述的,加载器可以使目标应用程序146开始在客户端设备106中执行。加载器149可以对目标应用程序146透明地执行。
为了确定目标应用程序146是否按照合规规则136操作,托管应用程序129可以包括执行器153。如下面将进一步详细描述的,执行器153可以拦截来自和去往目标应用程序146的消息并解析消息以确定目标应用程序146是否正在请求要执行的特定动作。此外,执行器153可以确定所请求的动作是否违反合规规则136。执行器153可以对目标应用程序146透明地执行。
如果执行器153确定已违反合规规则136,则执行器153还可以启动补救措施。补救措施的示例包括丢弃请求要执行的禁止动作的消息、通知客户端设备106的用户违反合规规则136、通知企业计算环境103的管理员违反合规规则136以及擦除客户端设备106中的数据。
参考图2,示出了用于目标应用程序146的目标应用程序包126a的示例,其可由应用程序库139分发并由托管应用程序包生成器123获取。在一些示例中,目标应用程序包126a可以包括APK文件。目标应用程序包126a可以包括目标应用程序可执行文件203、目标应用程序资源文件206和目标应用程序清单文件209。
目标应用程序可执行文件203可以包括可在客户端设备106中执行的目标应用程序146的代码。例如,目标应用程序可执行文件203可以包括字节码(诸如编译的JAVA字节码)或本地代码(诸如编译的C/C++代码)。客户端设备106中的虚拟机可以解释可执行文件中的字节码,并且本地代码可以通过与客户端设备106中的***库进行交互来执行。
目标应用程序资源文件206可以包括可用于执行目标应用程序146的资源。目标应用程序资源文件206中的一些资源可以是公共资源。就这点而言,公共资源可以是由目标应用程序146以外的组件使用的资源,例如***服务。例如,公共资源可以包括在设备的主屏幕中渲染的启动器图标。由于目标应用程序146以外的组件可以使用启动器图标,所以启动器图标可以是公共资源。
目标应用程序清单文件209可以包括目标应用程序146的配置信息。在涉及ANDROID操作***的一些示例中,目标应用程序清单文件209可以包括AndroidManifest.xml文件。目标应用程序清单文件209可以描述目标应用程序146的功能以及用于执行目标应用程序146的资源和权限(permission)。例如,除了用于执行目标应用程序146的各种组件的标识符之外,目标应用程序清单文件209还可以包括目标应用程序146的标识符。
参考图3,示出了可由托管应用程序包生成器123生成的托管应用程序141的托管应用程序包126b的示例。在涉及ANDROID操作***的示例中,托管应用程序包126b可以包括APK文件。托管应用程序包生成器123可以包括托管应用程序可执行文件303、托管应用程序资源文件306和托管应用程序清单文件309。
托管应用程序可执行文件303可以包括可在客户端设备106中执行的托管应用程序141的代码。例如,托管应用程序可执行文件303可以包括加载器可执行文件313和执行器可执行文件316,其分别执行加载器149和执行器153的功能。此外,托管应用程序可执行文件303可以包括用于启动器组件的可执行文件,其使得在托管应用程序141开始执行时创建加载器149和执行器153。加载器可执行文件313、执行器可执行文件316和启动器组件可以包括可由客户端设备106中的虚拟机解释的字节码或者可通过与客户端设备106中的***库进行交互来执行的本地代码。
托管应用程序资源文件306可以包括可用于执行托管应用程序141的资源。例如,托管应用程序资源文件306可以包括分别用于执行加载器149和执行器153的加载器资源319和执行器资源323。此外,托管应用程序资源文件306可以包括目标应用程序公共资源326,其可以包括目标应用程序资源文件206中的公共资源。例如,目标应用程序146的启动器图标可被包括在托管应用程序资源文件306中。
托管应用程序清单文件309可以包括分别用于加载器149和执行器15的加载器清单数据329和执行器清单数据333。此外,托管应用程序清单文件309可以包括目标应用程序清单数据336。目标应用程序清单数据336可以包括来自目标应用程序清单文件209的所有数据,其包括目标应用程序146的资源和权限的标识。
托管应用程序清单文件309还可以为托管应用程序141定义启动器组件。启动器组件可以加载托管应用程序141的加载器149和执行器153。对于涉及ANDROID操作***的示例,托管应用程序清单文件309可以是AndroidManifest.xml文件,并且所述AndroidManifest.xml文件在android中可以将启动器组件定义为:android.app.Application类别的子类别:<application>标签的名称属性。
接下来,描述创建托管应用程序包126b的托管应用程序包生成器123的示例。在以下描述中,托管应用程序包126b尚未生成,并且托管应用程序129尚未安装在客户端设备106中。
为了开始生成托管应用程序包126b,托管应用程序包生成器123可以从应用程序库139获得目标应用程序包126a。在一些示例中,托管应用程序包生成器123可以响应于来自客户端设备106的用户的请求而获得目标应用程序包126a。例如,如果客户端设备106的用户想要在客户端设备106上安装目标应用程序146,则用户可以提交对企业计算环境103的请求以获得目标应用程序包126a并且可以生成相应的托管应用程序包126b。在其他示例中,托管应用程序包生成器123可以响应于来自企业计算环境103的管理员的请求而获得目标应用程序包126a。
在托管应用程序包生成器123已经获得目标应用程序146的应用程序包126之后,托管应用程序包生成器123可以生成用于托管应用程序包126b的托管应用程序可执行文件303、托管应用程序资源文件306和托管应用程序清单文件309。所述托管应用程序可执行文件303、托管应用程序资源文件306和托管应用程序清单文件309可以包括上述各个组件。
在托管应用程序包生成器123已经生成托管应用程序可执行文件303、托管应用程序资源文件306和托管应用程序清单文件309之后,托管应用程序包生成器123可以将这些文件打包到托管应用程序包126b中。然后,管理***119可以将托管应用程序包126b与目标应用程序包126a一起发送到客户端设备106。在一个示例中,管理***119可以响应于从客户端设备106接收到对托管应用程序包126b的请求,而将托管应用程序包126b与目标应用程序包126a一起发送到客户端设备106。在其他示例中,管理***119可以自动响应于各种动作(诸如来自企业计算环境103的管理员的请求),将托管应用程序包126b与目标应用程序包126a一起发送到客户端设备106。在一个这样的示例中,管理***119可以自动响应于来自企业计算环境103的管理员的请求,将托管应用程序包126b和目标应用程序包126a推送到客户端设备106。
接下来,描述托管应用程序141的安装和操作的示例。一旦客户端设备106已经获得托管应用程序包126b和目标应用程序包126a,客户端设备106可以将目标应用程序包126a存储在本地存储中,并安装托管应用程序包126b,从而生成托管应用程序141。当客户端设备106安装托管应用程序141时,可以从托管应用程序包126b的托管应用程序资源文件306中提取用于目标应用程序146的启动器图标。客户端设备106可以包括在主屏幕的用户界面中或在代表安装在客户端设备106中的应用程序的其他用户界面中渲染启动器图标。因为目标应用程序146的启动器图标可以被包括在代表所安装的应用程序的用户界面中,所以目标应用程序146可以看起来安装在客户端设备106中,即使它是已被安装在客户端设备106中的托管应用程序141。
用户可以使托管应用程序141以各种方式开始执行。在一个示例中,用户可以使用输入设备(诸如触摸屏或触摸板)来选择包括在客户端设备106的主屏幕中的启动器图标。当用户选择启动器图标时,操作***143可以开始执行托管应用程序141。为此,操作***143可以实例化托管应用程序141通过其执行的虚拟机。在涉及ANDROID操作***的一些示例中,操作***143可以创建DALVIK虚拟机的实例,其执行托管应用程序141。
当托管应用程序141开始执行时,托管应用程序141可以首先执行启动器组件,其加载加载器149和执行器153。对于涉及ANDROID操作***的示例,在执行特定应用程序的其他组件之前,操作***143可以首先实例化在android中定义的android.app.Application类别的子类别:
AndroidManifest.xml文件中的<application>标签的名称属性。因此,涉及ANDROID操作***的示例中的启动器组件可以包括在android中定义的android.app.Application类别的子类别:<application>标签的名称属性,使得操作***143在托管应用程序141的其他组件之前开始执行启动器组件。当启动器组件执行时,启动器组件可以使加载器149和执行器153开始执行。
一旦托管应用程序141中的加载器149开始执行,加载器149可以将目标应用程序146加载到客户端设备106中的存储器中。例如,加载器149可以加载目标应用程序可执行文件203中的可执行文件并辅助目标应用程序146访问目标应用程序资源文件206中的资源。对于涉及ANDROID操作***的示例,加载器149可以通过创建类加载器对象(如全局
java.lang.ClassLoader对象)来加载目标应用程序146的可执行文件,所述类加载器对象通过dalvik.system.DexClassLoader类加载器来加载目标应用程序146的目标应用程序可执行文件203中包含的可执行文件。另外,加载器149可以使用android.app.LoadedApk.getClassLoader方法来将全局java.lang.ClassLoader对象返回到目标应用程序146。
为了辅助目标应用程序146访问目标应用程序资源文件206中的资源,加载器149可以拦截来自目标应用程序146的请求目标应用程序资源文件206中的资源的消息,并将指向目标应用程序包126a的存储位置的路径返回到目标应用程序146。在涉及ANDROID操作***的示例中,目标应用程序146可以通过发出android.app.ResourceManager.getTopLevelResources调用来请求目标应用程序资源文件206中的资源。在这些示例中,加载器149可以拦截该调用并将目标应用程序包126a的存储位置返回到目标应用程序146,所述存储位置可以包括客户端设备106的“/数据/应用程序/”目录。这样,加载器149可以启动目标应用程序146的执行,并且目标应用程序146可以在执行期间访问目标应用程序包126a中的资源。
当目标应用程序146正在执行时,目标应用程序146可以自己请求处理信息。例如,在涉及ANDROID操作***的示例中,目标应用程序146可以发出android.app.Activity.getApplication、android.app.Service.getApplication或android.app.ContexImpl.getApplicationContext调用。在一些示例中,加载器149可以拦截来自目标应用程序146的用于处理信息的请求,并且向目标应用程序146返回标识目标应用程序146的对象。如果加载器149没有拦截这样的处理信息请求,则操作***143可以返回标识已加载了加载器149和执行器153的启动器组件的对象,这可能导致目标应用程序146发生故障。因此,拦截对处理信息的请求并返回标识目标应用程序146的对象可以辅助目标应用程序146的预期执行。
目标应用程序146在客户端设备106中执行时,托管应用程序141的执行器153可以监视目标应用程序146的执行,并且可以确定目标应用程序146是否违反已经被分配给客户端设备106的任何合规规则。为了监视目标应用程序146的执行并强制执行(enforce)合规规则136,执行器153可以拦截从目标应用程序146发送的消息,并且可以解析消息以标识目标应用程序146是否正在试图执行违反合规规则136的动作。如果执行该动作的请求没有违反合规规则136,则执行器153可以将该请求转发到操作***143。否则,如果执行动作的请求确实违反了合规规则136,则执行器可以丢弃该请求。以这种方式,执行器153可以防止目标应用程序146执行禁止的动作。
作为涉及ANDROID操作***的示例,目标应用程序146可以发出具有作为调用参数的特定文件的标识符的java.io.File.delete调用。执行器153可以拦截该调用并确定目标应用程序146正试图删除所标识的文件。执行器153然后可以将所请求的动作与合规规则136进行比较,以确定目标应用程序146是否被允许删除该文件。如果执行器153确定目标应用程序146被允许删除该文件,则执行器153可以将java.io.File.delete调用转发到操作***143,并且操作***143可以删除所标识的文件。否则,如果执行器153确定目标应用程序146不被允许删除该文件,则执行器153可以向目标应用程序146返回“错误(false)”对象,其向目标应用程序146指示所请求的操作失败。以这种方式,如果目标应用程序146不被允许删除该文件,则执行器153可以阻止目标应用程序146删除文件。
在一些示例中,执行器153可以实现挂钩函数(hooking function)以拦截来自目标应用程序146的请求,并且可以强制执行合规规则136。对于涉及ANDROID操作***的示例,如果目标应用程序146使用通过虚拟机执行的JAVA字节码来请求执行动作,则执行器可以找到与该请求相对应的JAVA方法对象,并将方法对象的访问标志从本地访问标志更改为非本地访问标志。此外,执行器153可以修改JAVA方法的本地代码指针,使得该指针指向挂钩函数的地址。基于请求是否违反合规规则136,指针所指向的挂钩函数可以调用目标应用程序146请求的JAVA方法或拒绝该请求。
如果目标应用程序146使用本地代码来请求执行动作,则执行器153可以通过修改可由本地代码调用的特定目标函数的地址来实现挂钩函数。这种目标函数的示例包括游戏引擎函数和仿真引擎函数。当加载器149将目标应用程序146的本地代码加载到存储器中时,执行器153可以定位本地代码的全局偏移表(GOT),其包括目标函数的地址列表。对于GOT中的每个目标函数,执行器153可以确定该函数是否遵从合规规则136。如果目标函数遵从合规规则136,则执行器153可以用挂钩函数替换目标函数,所述挂钩函数可允许或拒绝本地代码请求执行的动作。
在一些示例中,如果执行器153检测到目标应用程序146正在尝试执行违反合规规则136的动作,则执行器也可以发起动作。例如,执行器153可以向管理***119发送消息,以向企业计算环境103的管理员通知目标应用程序146已经尝试执行违反合规规则136的动作。另外,执行器153可以在客户端设备106中生成消息,以向客户端设备106的用户通知目标应用程序146已经尝试执行违反合规规则136的动作。另外,执行器153可以执行保护动作,例如锁定客户端设备106或从客户端设备106擦除数据。此外,如果执行器153检测到目标应用程序146已经尝试执行违反合规规则136的动作,则执行器153可以使目标应用程序146遵从附加的合规规则136。
参考图4,示出了客户端设备106的另一示例,本文中称为客户端设备106a。图4所示的客户端设备106a可以包括操作***143、工作空间管理器403和托管应用程序141的另一示例,本文中称为托管应用程序141a。
工作空间管理器403可以在客户端设备106中创建和管理工作空间。在一些示例中,工作空间可以被视为虚拟环境,在其中资源与其他工作空间隔离。例如,工作空间管理器403可以创建和管理企业工作空间,在其中企业组件(诸如企业数据和应用程序)与由操作***143的沙盒组件(sandbox component)创建和管理的个人工作空间隔离地操作。如下面将进一步详细描述的,工作空间管理器403可以在工作空间管理器403创建的工作空间中监视和管理组件(诸如应用程序)。
托管应用程序141a可以包括类似于托管应用程序141的组件。例如,托管应用程序141a可以包括加载器149、执行器153和目标应用程序146。此外,托管应用程序141a可以包括翻译器406。如下面将进一步详细描述的,翻译器406可以拦截和修改来自和去往目标应用程序146的消息。另外,翻译器406可以与工作空间管理器403通信。
接下来,提供工作空间管理器403和翻译器406的操作的示例。以下描述假设工作空间管理器403和托管应用程序141a已经被安装并且正在客户端设备106a中执行。
在一些示例中,工作空间管理器403和翻译器406可以辅助正在客户端设备106a中执行的目标应用程序146的多个实例。例如,目标应用程序146的第一实例可以在由操作***143的沙盒组件管理的个人工作空间中执行,并且目标应用程序146的第二实例可以在托管应用程序141a的管理下在由工作空间管理器403控制的企业工作空间中执行。为此,当托管应用程序包生成器123针对托管应用程序141a创建托管应用程序包126b时,托管应用程序包生成器123可以修改托管应用程序清单文件309中的一些目标应用程序清单数据336。特别地,托管应用程序包生成器123可以重新命名托管应用程序清单文件309中的元素和属性,其与包名称、内容提供器的权限、由目标应用程序146定义的安全许可、账户类型以及非***意图动作相关联。账户类型可以是账户的类别,其可以表示网络服务的用户。非***意图动作可以是从不是操作***组件的组件请求动作的传送消息对象。
当托管应用程序141a在客户端设备106中执行并使得目标应用程序146使用上述方法中的一种或多种在企业工作空间中执行时,翻译器406可以拦截目标应用程序146和操作***143组件之间的消息。例如,翻译器可以拦截另一应用程序已经通过操作***143的进程间通信服务发送到目标应用程序146的消息。作为另一示例,翻译器可以拦截来自目标应用程序146的执行动作请求。
当翻译器406拦截目标应用程序146和操作***143的组件之间的消息时,翻译器406可以修改包名称、内容提供器的权限、由目标应用程序146定义的安全许可、账户类型以及非***意图动作的消息中的对象标识符。在各种示例中,翻译器406可以通过向标识符添加字符串或通过从标识符中移除字符串来修改这些元素的标识符。例如,如果目标应用程序146拦截由目标应用程序146发送的包含标识符“X”的消息,则翻译器406可以将字符串“com.enterprise.workspace.app.”连结到消息中的“X”标识符,使得提供给操作***143的消息的结果标识符是“com.enterprise.workspace.app.X”。作为另一示例,如果目标应用程序146拦截由操作***143的组件发送的消息,其包括标识符“com.enterprise.workspace.app.X”,则翻译器406可以从标识符中移除字符串“com.enterprise.workspace.app”,以便提供给目标应用程序146的消息的结果标识符为“X”。通过翻译器406将操作***143和目标应用程序146之间的消息中的标识符进行重命名,目标应用程序146的一个实例可以在托管应用程序141a的管理下执行,同时目标应用程序146的另一个实例在客户端设备106中执行。
在一些示例中,操作***143可以提供沙盒功能,使得一个应用程序不能访问另一应用程序的专用存储中的数据。对于涉及ANDROID操作***的示例,沙盒可以隔离应用程序之间的数据。这种沙盒功能可以防止客户端设备106的个人工作空间中的组件访问在由工作空间管理器403控制的企业工作空间中操作的目标应用程序146的数据。
在涉及ANDROID操作***的一些示例中,操作***143可以不限制个人工作空间中的组件访问存储在客户端设备106的可移除存储中的目标应用程序146的数据,诸如存储在安全数字(SD)存储卡中的数据。因为这些示例中的操作***143不限制该访问,所以翻译器406可以加密和解密存储在可移除存储中的数据,使得个人工作空间中的组件不能处理可移除存储中的目标应用程序146的数据。例如,翻译器406可以拦截来自目标应用程序146的请求,以将文件存储在客户端设备106的SD存储卡中。在拦截该请求时,翻译器406可以对该文件进行加密,然后发送请求以将加密文件存储在SD存储卡中。通过将文件的加密版本存储在可移除存储中,客户端设备106的个人工作空间中的组件不能处理文件中的内容。
翻译器406还可以拦截来自目标应用程序146的对存储在客户端设备106的SD存储卡中的文件的请求。如果文件被翻译器406加密并存储,则翻译器可以获得加密的文件然后解密该文件。然后翻译器406可以将解密的文件提供给目标应用程序146。通过拦截这些请求并加密和解密可移除存储的文件,翻译器406可以辅助目标应用程序146处理文件,同时防止客户端设备106的个人工作空间中的组件处理该文件。
在一些示例中,操作***143可以辅助客户端设备106中的一个应用程序与另一个应用程序中的组件通信和交互。对于涉及ANDROID操作***的示例,操作***143可以包括活动管理器,其辅助应用程序调用另一应用程序中的组件,诸如活动、服务、广播接收器或内容提供器。如果应用程序发送调用目标应用程序146中的组件的消息,则翻译器406可以拦截组件调用消息并将消息转发到工作空间管理器403。然后,工作空间管理器403可以确定企业工作空间中的应用程序是否源于组件调用消息。如果企业工作空间中的应用程序源于该消息,则工作空间管理器403可以指示翻译器406将消息转发到目标应用程序146。否则,如果个人工作空间中的应用程序源于该消息,则工作空间管理器403可以指示翻译器406丢弃该消息,使得目标应用程序146不接收该消息。以这种方式,翻译器406和工作空间管理器403可以防止企业工作空间之外的组件与企业工作空间中的组件进行交互或控制企业工作空间中的组件。
在一些示例中,工作空间管理器403可以提供剪贴板组件,其可以辅助在由工作空间管理器403管理的企业工作空间中的应用程序内的或其之间的剪切、复制和粘贴操作。为了实现这种剪贴板操作,翻译器406可以拦截与目标应用程序146相关联的剪贴板消息,并将消息转发到工作空间管理器403。然后工作空间管理器403可以确定目标应用程序146是否已请求执行剪切、复制或粘贴命令。如果目标应用程序146已经请求执行剪切命令,则可以从目标应用程序146中移除用户已经选择的内容,并将其存储在工作空间管理器403的剪贴板组件中以供以后使用。如果目标应用程序146已经请求执行复制命令,则可以从目标应用程序146复制用户已经选择的内容并将其存储在工作空间管理器403的剪贴板组件中以供以后使用。已经被剪切或复制的数据还可以被加密,以进一步限制仅对企业应用程序的访问。如果目标应用程序146已经请求执行粘贴命令,则剪贴板组件可以可选地将先前存储在剪贴板组件中的内容解密并提供给目标应用程序146,其可以将内容***到用户选择的位置处。由于工作空间管理器403中的剪贴板组件处理剪贴板操作请求,所以目标应用程序146不能将内容从企业工作空间复制到私有工作空间中的组件。此外,工作空间管理器403防止企业工作空间中的组件获得和复制源自私有工作空间的内容。
在一些示例中,工作空间管理器403可以提供搜索管理器,其处理由目标应用程序146请求的搜索。例如,目标应用程序146可以请求与特定搜索查询匹配的搜索结果列表。为了实现该功能,翻译器406可以拦截来自目标应用程序146的请求执行搜索的消息。翻译器406可以将该请求转发到工作空间管理器403中的搜索管理器,并且搜索管理器可以基于搜索查询生成搜索结果。搜索管理器执行的搜索可以限于搜索企业工作空间内的资源。搜索管理器可以生成搜索结果,然后将搜索结果提供给目标应用程序146。通过拦截来自目标应用程序146的搜索请求并使工作空间管理器403中的搜索管理器处理搜索,搜索组件可以仅提供企业工作空间内的资源到目标应用程序146。虽然已经给出了限制数据使用和操作的几个示例,但工作空间管理器403还可以分离和限制个人和企业工作空间之间的其他设备行为。
参考图5,示出了提供托管应用程序包生成器123的操作的一部分的示例的流程图。特别地,图5提供了托管应用程序包生成器123的示例,其获得目标应用程序包126a并针对托管应用程序141生成托管应用程序包126b。此外,图5的流程图可以视为描绘在企业计算环境103的计算设备中实现的方法的步骤的示例。
从步骤503开始,托管应用程序包生成器123可以为托管应用程序包126b创建托管应用程序可执行文件303。在一些示例中,托管应用程序可执行文件303可以是包括JAVA字节码以及本地代码的“二进制”文件。托管应用程序可执行文件303可以包括加载器可执行文件313和执行器可执行文件316。
在步骤506,托管应用程序包生成器123可以获得目标应用程序包126a。在一个示例中,托管应用程序包生成器123可以从应用程序库139获得目标应用程序包126a。如上所讨论的,目标应用程序包126a可以包括目标应用程序资源文件206,其可以包括目标应用程序的公共资源。在步骤509,托管应用程序包生成器123可以从目标应用程序包126a提取公共资源。
然后托管应用程序包生成器123可以移动到步骤513并且生成用于托管应用程序包126b的托管应用程序资源文件306。例如,托管应用程序资源文件306可以包括分别用于执行加载器149和执行器153的加载器资源319和执行器资源323。此外,托管应用程序资源文件306可以包括目标应用程序公共资源326,其可以包括从目标应用程序资源文件206提取的公共资源。例如,托管应用程序生成器123可以包括用于托管应用程序资源文件306中的目标应用程序146的启动器图标。
在步骤516,托管应用程序包生成器123可以从目标应用程序包126a中的目标应用程序清单文件290提取目标应用程序清单数据336。在步骤519中,然后托管应用程序包生成器123可以生成托管应用程序清单文件309。对于涉及ANDROID操作***的示例,托管应用程序清单文件309可以是AndroidManifest.xml文件。托管应用程序清单文件309可以包括从目标应用程序包126a提取的目标应用程序清单数据336、加载器清单数据329和执行器清单数据333。
如步骤523所示,托管应用程序包生成器123可以在托管应用程序清单文件309中定义启动器组件,其加载加载器149和执行器153。如上所讨论的,启动器组件可以是托管应用程序141的第一组件,其当托管应用程序141开始执行时被执行。对于涉及ANDROID操作***的示例,在android中可以在AndroidManifest.xml文件中将启动器组件定义为android.app.Application类别的子类别:<application>标签的名称属性。
然后,托管应用程序包生成器123可以移动到步骤526,并将托管应用程序可执行文件303、托管应用程序资源文件306和托管应用程序清单文件309打包到托管应用程序包126b中。对于涉及ANDROID操作***的示例,托管应用程序包126b可以是APK文件。在托管应用程序包生成器123生成托管应用程序包126b之后,过程结束。如上所述,然后管理***119可以将生成的托管应用程序包126b提供给客户端设备106。
参考图6,示出了提供托管应用程序141的操作的一部分的示例的流程图。特别地,图6提供了托管应用程序141执行目标应用程序146并使得目标应用程序146在客户端设备106中执行的示例。此外,图6的流程图可以被视为描绘在客户端设备106中实现的方法的步骤的示例。
从步骤603开始,托管应用程序141可以执行启动器组件,其加载执行器153和加载器149。对于涉及ANDROID操作***的示例,启动器组件可以包括android.app.Application类别的子类别,其定义在android中的AndroidManifest.xml文件中的<application>标签的名称属性中。当托管应用程序141在客户端设备106中开始执行时,该子类别可以是托管应用程序141实例化的第一组件。
如步骤606所示,托管应用程序141可以将执行器可执行文件316和加载器可执行文件313加载到客户端设备106中的存储器中。然后,托管应用程序141可以移动到步骤609并从目标应用程序可执行文件203加载目标应用程序146的可执行文件。对于涉及ANDROID操作***的示例,托管应用程序141可以通过创建类加载器对象(诸如全局java.lang.ClassLoader对象)来加载目标应用程序146的可执行文件,其通过dalvik.system.DexClassLoader类加载器加载目标应用程序可执行文件203中的可执行文件。
当目标应用程序146的可执行文件已经被加载到客户端设备106的存储器中时,目标应用程序146可以请求访问目标应用程序资源文件206中的私有资源。然而,目标应用程序146可能没有指定私有资源存储位置的信息。因此,在步骤613,托管应用程序141可以拦截对私有目标应用程序资源的这些请求,并向目标应用程序146返回到目标应用程序包126a的存储位置的路径。对于涉及ANDROID操作***的示例,到存储位置的路径可以包括客户端设备106的“/data/app/”目录。
当目标应用程序146正在执行时,目标应用程序146可以请求它本身的过程信息。对于涉及ANDROID操作***的示例,目标应用程序146可以发出android.app.Activity.getApplication、android.app.Service.getApplication或android.app.ContexImpl.getApplicationContext调用。如步骤616所示,托管应用程序141可以拦截对过程信息的请求并返回标识目标应用程序146的对象。此后,该过程结束。
参考图7,其示出了提供执行器153的操作的一部分的示例的流程图。特别地,图7提供了执行器153拦截目标应用程序146执行动作的请求并且基于指派给客户端设备106的合规规则136确定是否允许所请求的动作的示例。此外,图7的流程图可以被视为描绘在客户端设备106中实现的方法的步骤的示例。
从步骤703开始,执行器153可以拦截目标应用程序146执行动作的请求。作为涉及ANDROID操作***的示例,执行器153可以拦截目标应用程序146已发出请求删除客户端设备106中的特定文件的java.io.File.delete调用。在步骤706,执行器153可以标识目标应用程序146请求执行的动作。例如,如果执行器153已拦截了java.io.File.delete调用,则执行器153可以检测到该调用正在请求删除文件。此外,执行器153可以解析调用消息以提取该调用中的参数,其标识目标应用程序146正在请求删除的特定文件。
如步骤709所示,然后执行器153可以将该请求与指派给客户端设备106的合规规则136进行比较。在一些示例中,合规规则136可以指定客户端设备106中的组件是否被禁止执行一个或更多个动作。例如,合规规则136可以指定客户端设备106中的组件是否被允许请求访问客户端设备106中的图像库。如步骤713所示,然后执行器153可以确定目标应用程序146是否被允许执行已标识的动作。
如果执行器153确定目标应用程序146不被允许执行该动作,则执行器153可以丢弃该请求,如步骤716所示。在涉及ANDROID操作***的示例中,执行器153可以通过向目标应用程序146返回“错误”对象而丢弃该请求,所述“错误”对象向目标应用程序146指示所请求的动作已经失败。
否则,如果执行器153确定目标应用程序146被允许执行该请求,则执行器153可以将该执行该操作的请求转发到操作***143,如步骤719所示。因此,通过丢弃或转发该请求,执行器153可以确保目标应用程序按照指派给客户端设备106的合规规则136进行操作。在步骤719之后,该过程结束。
参考图8,其示出了提供翻译器406的操作的一部分的示例的流程图。特别地,图8提供了翻译器拦截目标应用程序146和操作***143之间消息的示例,以及翻译器406转发拦截的消息或被拦截消息的修改版本的示例。另外,图8的流程图可以被视为描绘在客户端设备106a中实现的方法的步骤的示例。
从步骤803开始,翻译器406可以拦截目标应用程序146和操作***143之间的消息。在一个示例中,目标应用程序146可以发送翻译器406拦截的消息。在另一示例中,操作***143可以发送翻译器406拦截的消息。
在步骤806,翻译器406可以确定所拦截的消息是否是翻译器406应当修改的消息。翻译器406应该修改的消息的示例包括消息,其包括包名称、内容提供器的权限、由目标应用程序146定义的安全许可、账户类型以及非***意图动作。如果翻译器406确定拦截的消息是翻译器406不应该修改的消息,则翻译器406可以将拦截的消息转发到原始预期的目的地,如步骤809所示。例如,如果目标应用程序146发送拦截的消息,则翻译器406可以将消息转发到操作***143。如果操作***143发送拦截的消息,则翻译器406可以将消息转发到目标应用程序146。在步骤809之后,该过程结束。
在步骤806,如果翻译器406确定拦截的消息是应该被修改的消息,则翻译器406可以移动到步骤813并修改消息。特别地,翻译器406可以修改消息中的对象标识符。例如,如果目标应用程序146拦截由目标应用程序146发送的包括对象标识符“X”的消息,则翻译器406可以将字符串“com.enterprise.workspace.app.”连结到消息中的“X”标识符,使得提供给操作***143的消息的结果对象标识符为“com.enterprise.workspace.app.X”。作为另一示例,如果目标应用程序146拦截由操作***143的组件发送的包括对象标识符“com.enterprise.workspace.app.X”的消息,则翻译器406可以从标识符中移除字符串“com.enterprise.workspace.app”,使得提供给目标应用程序146的消息的结果对象标识符为“X”。
如步骤816所示,然后翻译器406可以将修改的消息转发到原始意图的目的地。例如,如果目标应用程序146发送拦截的消息,则翻译器406可以将修改的消息转发到操作***143。如果操作***143发送拦截的消息,则翻译器406可以将消息转发到目标应用程序146。在步骤816之后,该过程结束。
参考图9,其示出了提供翻译器406的操作的一部分的另一示例的流程图。特别地,图9提供了翻译器406处理调用目标应用程序146中组件的消息的示例。此外,图9的流程图可以被视为描绘在客户端设备106a中实现的方法的步骤的示例。
从步骤903开始,翻译器406可以拦截来自操作***143的消息,其调用目标应用程序146中的组件。作为涉及ANDROID操作***的示例,该消息可以调用目标应用程序146的活动、服务、广播接收器或内容提供器。
如步骤906所示,翻译器406可将拦截的消息转发到客户端设备106a中的工作空间管理器403。然后翻译器406可以移动到步骤909并且从工作空间管理器403获得指令。由翻译器406接收的指令可以指定翻译器406是否应当丢弃所拦截的消息或将所拦截的消息转发到目标应用程序146。
在步骤913,翻译器406可以确定所接收的指令是否指定翻译器406应该丢弃拦截的消息。如果指令指定翻译器406应该丢弃所拦截的消息,则翻译器406可以移动到步骤916并丢弃该消息。否则,如果来自工作空间管理器403的指令指定翻译器406不应丢弃该消息,则翻译器406可以在步骤916将拦截的消息转发到目标应用程序146。在步骤916之后,过程结束。
参考图10,示出了提供工作空间管理器403的操作的一部分的示例的流程图。特别地,图10提供了工作空间管理器403指示翻译器406是否丢弃调用目标应用程序146中的组件的消息的示例。此外,图10的流程图可以被视为描绘在客户端设备106a中实现的方法的步骤的示例。
从步骤1003开始,工作空间管理器403可以从翻译器406获得消息。该消息可以是翻译器406在图9中的步骤906处被提供的消息。在步骤1006,工作空间管理器403确定该消息是否源自工作空间管理器403所管理的工作空间以外的工作空间。如果消息不是源自其他工作空间,则工作空间管理器403可以移动到步骤1009并指示翻译器将消息转发到目标应用程序146。
否则,如果消息确实源自其他工作空间,则工作空间管理器403移动到步骤1013并且确定该消息是否被配置为调用目标应用程序146中的组件。如果该消息未被配置为调用目标应用程序146中的组件,则工作空间管理器403可以指示翻译器406将消息转发到目标应用程序146,如步骤1009所示。
如果消息被配置为调用目标应用程序146中的组件,则工作空间管理器403可以移动到步骤1016并且指示翻译器406丢弃该消息。以这种方式,工作空间管理器403可以防止由工作空间管理器403管理的工作空间之外的组件与目标应用程序146进行交互或控制目标应用程序146。在步骤1009或步骤1016之后,过程结束。
参考图11,示出了提供翻译器406的操作的一部分的另一示例的流程图。特别地,图11提供了翻译器406加密存储在可移除存储中的数据并解密从可移除存储中检索的数据的示例。另外,图11的流程图可以被视为描绘在客户端设备106a中实现的方法的步骤的示例。
从步骤1103开始,翻译器406可以拦截来自目标应用程序146的访问客户端设备106a中的可移除存储的请求。在一个示例中,可移除存储可以包括SD存储卡。在步骤1106中,翻译器406可以确定被拦截的请求是否是将数据存储在可移除存储中的请求。
如果翻译器406确定被拦截的请求是将数据存储在可移除存储中的请求,则翻译器406可以移动到步骤1109并加密目标应用程序146已经请求存储的数据。如步骤1113所示,然后翻译器406可以将加密的数据存储在可移除存储器。在步骤1113之后,过程结束。
如果在步骤1106,翻译器406确定被拦截的请求不是存储数据的请求,则翻译器406可以移动到步骤1116并确定拦截的请求是否是从可移除存储中检索数据的请求。如果不是,则该过程在步骤1116之后结束。
否则,如果拦截的请求是来自目标应用程序146的从可移除存储中检索数据的请求,则翻译器406可以移动到步骤1119并从可移除存储中检索所请求的数据。翻译器406从可移除存储中检索的数据可以被加密,使得组件在没有解密密钥的情况下不能处理该数据。这样,如步骤1123所示,翻译器406可以解密所检索的数据。然后,翻译器406可以移动到步骤1126并将解密的数据提供给目标应用程序146。此后,过程结束。
参考图12,其示出了提供翻译器406的操作的一部分的另一示例的流程图。特别地,图12提供了翻译器406处理由目标应用程序146请求的剪贴板操作的示例。此外,图12的流程图可以被视为描绘在客户端设备106a中实现的方法的步骤的示例。
从步骤1203开始,翻译器406可以拦截从目标应用程序146发送的消息。在步骤1206,翻译器406可以确定消息是否是来自操作***143中的剪贴板组件的对内容的请求。对于涉及ANDROID操作***的示例,剪贴板组件可以包括ANDROID剪贴板管理器,并且对内容的请求可以是粘贴操作请求,其响应于用户发起粘贴操作而发布。
在步骤1206,如果翻译器406确定消息是对剪贴板内容的请求,则翻译器406可以移动到步骤1209并将该消息转发到工作空间管理器403。然后,翻译器406可以从工作空间管理器403的剪贴板组件获得剪贴板内容,如步骤1213所示。获得的剪贴板内容可以包括文本或图形内容。在步骤1216,然后翻译器406可以将在步骤1216获得的剪贴板内容提供给目标应用程序146。在步骤1216之后,过程结束。
在步骤1206,如果翻译器406确定在步骤1203拦截的消息不是对剪贴板内容的请求,则翻译器406可以移动到步骤1219并确定被拦截的消息是否是采用操作***143中的剪贴板组件存储内容的请求。这样的请求可以包括剪切或复制操作请求,其响应于用户发起剪切或复制操作而发布。如果翻译器406确定拦截的消息不是采用操作***143中的剪贴板组件存储内容的请求,则过程结束。
否则,如果翻译器406确定所拦截的消息是采用操作***143中的剪贴板组件存储内容的请求,则翻译器406可以移动到步骤1223,并将拦截的消息转发到工作空间管理器403。通过转发所拦截的将剪贴板内容存储到工作空间管理器403而不是操作***143的剪贴板组件的请求,工作空间管理器403可以存储剪贴板内容以供以后使用。
参考图13,其示出了提供工作空间管理器403的操作的一部分的示例的流程图。特别地,图14提供工作空间管理器403处理来自翻译器406的对剪贴板内容的请求的示例。另外,图13的流程图可以被视为描绘在客户端设备106a中实现的方法的步骤的示例。
从步骤1303开始,工作空间管理器403可以从翻译器406获得对剪贴板内容的请求。例如,翻译器406可以在图12的步骤1209中发送该请求。
如步骤1306所示,然后工作空间管理器403可以获得剪贴板内容,其先前由工作空间管理器403存储。然后,工作空间管理器403可以移动到步骤1309,并将剪贴板内容提供给托管应用程序141a中的翻译器406。在步骤1309之后,过程结束。
参考图14,其示出了提供工作空间管理器403的操作的一部分的另一示例的流程图。特别地,图14提供了工作空间管理器403处理来自翻译器406的存储剪贴板内容的请求的示例。另外,图14的流程图可以被视为描绘在客户端设备106a中实现的方法的步骤的示例。
从步骤1403开始,工作空间管理器403可以获得来自翻译器406的将内容存储在操作***143的剪贴板组件中的请求。例如,翻译器406可以在图12的步骤1219中发送该请求。如步骤1406所示,然后工作空间管理器403可以获得翻译器406已请求存储的内容。在一些示例中,该内容被包括在请求存储内容的消息中。
然后,工作空间管理器403可以移动到步骤1409,并将该内容存储在工作空间管理器403的剪贴板组件中。通过工作空间管理器403将内容存储在工作空间管理器403的剪贴板组件中,工作空间中未由工作空间管理器403管理的应用程序不能访问存储的内容。在步骤1409之后,过程结束。
图5-14的流程图示出了实现本文描述的组件的功能和操作的示例。本文描述的联网的环境100的组件可以以硬件、软件或硬件和软件的组合来体现。如果以软件体现,则图5-14的流程图中的每个步骤可以表示模块或代码的一部分,其包括实现指定的逻辑功能的计算机指令。计算机指令可以以源代码的形式来体现,其包含以编程语言或机器代码编写的人类可读语句,该编程语言或机器代码包括可由合适的执行***(诸如计算机***或其他***中的处理器)识别的机器指令。如果以硬件体现,则每个步骤可以表示实现指定逻辑功能的电路或多个互连电路。
虽然流程图示出了特定的执行顺序,但是应当理解,执行顺序可以不同于所示的顺序。例如,可以相对于所示的顺序来交换执行两个或更多个步骤的执行顺序。而且,连续示出的两个或更多个步骤可以同时或部分同时执行。此外,在一些示例中,可以跳过或省略流程图中所示的一个或更多个步骤。此外,为了增强实用、会计、性能测量或故障排除的目的,可以将任何数量的计数器、状态变量、警告信号量或消息添加到本文所述的逻辑流程中。所有这些变化都在本公开的范围内。
企业计算环境103、客户端设备106、客户端设备106a以及本文描述的其他组件可以各自包括至少一个处理电路。这样的处理电路可以包括一个或更多个处理器以及耦合到本地接口的一个或更多个存储设备。本地接口可以包括具有伴随地址/控制总线的数据总线。
用于处理电路的存储设备可以存储数据和组件,其可由处理电路的一个或更多个处理器执行。在一些示例中,管理***119、托管应用程序141、托管应用程序141a和工作空间管理器403可被存储在一个或更多个存储设备中并且可由一个或更多个处理器执行。此外,数据存储116可以位于一个或更多个存储设备中。
管理***119、托管应用程序141、托管应用程序141a、工作空间管理器403以及本文所描述的其他组件可以具体化在硬件中、具体化为可由硬件执行的软件组件或具体化为软件和硬件的组合。如果具体化为硬件,则本文描述的组件可以被实现为采用任何合适的硬件技术的电路或状态机。这种硬件技术包括例如一个或更多个微处理器、用于在应用一个或更多个数据信号时实现各种逻辑功能的具有逻辑门的离散逻辑电路、具有适当逻辑门的专用集成电路(ASIC)或可编程逻辑器件,诸如现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
此外,本文所描述的包括软件或计算机指令的组件中的一个或更多个或多个可以具体化在任何非暂时性计算机可读介质中,用于由指令执行***使用或与指令执行***结合使用,诸如,例如,计算机***或其他***中的处理器。这样的计算机可读介质可以包含、存储和维护由指令执行***使用或与指令执行***结合使用的软件或计算机指令。
计算机可读介质可以包括物理介质,诸如磁、光、半导体或其他合适的介质。合适的计算机可读介质的示例包括固态驱动器、磁盘驱动器、闪存和存储盘,诸如光盘(CD)。此外,本文描述的任何逻辑或组件可以以多种方式来实现和构造。例如,所描述的一个或更多个组件可以被实现为单个应用程序的模块或组件。此外,本文描述的一个或更多个组件可以在一个计算设备中或通过使用多个计算设备来执行。
上述示例仅仅是为了清楚地理解本公开的原理而提出的实现方式的示例。在本质上不脱离本公开的精神和原理的情况下,可以对上述示例进行许多变化和修改。所有这些修改和变化旨在被包括在本公开的范围内。
Claims (20)
1.一种用于在设备中创建多个工作空间的***,包括:
计算设备;
能够由所述计算设备执行的托管应用程序,其中所述托管应用程序在由工作空间管理器管理的工作空间中运行,并且所述托管应用程序包括翻译器,所述翻译器在由所述计算设备执行时,被配置为使所述计算设备至少:
拦截从在所述计算设备中执行的目标应用程序到所述计算设备的***服务的消息;
生成所述消息的修改版本;
将所述消息的所述修改版本提供给所述***服务;以及
能够由所述计算设备执行的所述工作空间管理器,其中所述工作空间管理器在由所述计算设备执行时,被配置为使所述计算设备至少:
从所述托管应用程序获取组件调用消息;
确定所述组件调用消息是否意图调用所述工作空间中的公共组件;以及
响应于确定所述组件调用消息是否意图调用所述公共组件,向所述托管应用程序提供指令。
2.根据权利要求1所述的***,其中所述指令指示所述托管应用程序丢弃所述组件调用消息,并且其中所述工作空间管理器还被配置为在确定所述组件调用消息意图调用所述公共组件时向所述托管应用程序提供所述指令。
3.根据权利要求1所述的***,其中所述指令指示所述托管应用程序将所述组件调用消息转发到目标应用程序,并且其中所述工作空间管理器还被配置为在确定所述组件调用消息不意图调用所述公共组件时向所述托管应用程序提供所述指令。
4.根据权利要求1所述的***,其中所述翻译器在由所述计算设备执行时,被配置为使所述计算设备至少:
拦截从所述***服务到所述目标应用程序的第二消息;
生成所述第二消息的修改版本;以及
将所述第二消息的所述修改版本提供给所述目标应用程序。
5.根据权利要求1所述的***,其中所述翻译器在由所述计算设备执行时,还被配置为使所述计算设备至少:
拦截对所述目标应用程序将数据存储在所述计算设备中的可移除存储中的请求;
生成所述数据的加密版本;以及
将所述数据的所述加密版本存储在所述可移除存储中。
6.根据权利要求1所述的***,其中所述翻译器在由所述计算设备执行时,还被配置为使所述计算设备至少:
拦截对所述目标应用程序从所述计算设备中的可移除存储中检索数据的请求;
获取所述数据;
生成所述数据的解密版本;以及
将所述数据的所述解密版本提供给所述目标应用程序。
7.一种用于在设备中创建多个工作空间的方法,包括:
由在托管设备中执行的托管应用程序中的翻译器拦截从在所述托管设备中执行的目标应用程序到所述托管设备的***服务的消息,其中所述托管应用程序在由工作空间管理器管理的工作空间中操作;
由所述翻译器生成所述消息的修改版本;
将所述消息的所述修改版本提供给所述***服务;
从所述托管应用程序获取组件调用消息;
确定所述组件调用消息是否意图调用由所述工作空间管理器管理的所述工作空间中的公共组件;以及
响应于确定所述组件调用消息是否意图调用所述公共组件,向所述托管应用程序提供指令。
8.根据权利要求7所述的方法,其中响应于由所述翻译器确定所述消息包括包名称,生成所述消息的所述修改版本。
9.根据权利要求7所述的方法,其中响应于由所述翻译器确定所述消息标识对内容提供器的授权,生成所述消息的所述修改版本。
10.根据权利要求7所述的方法,其中响应于由所述翻译器确定所述消息标识由所述目标应用程序定义的安全权限而生成所述消息的所述修改版本。
11.根据权利要求7所述的方法,进一步包括:
由所述翻译器拦截从所述***服务到所述目标应用程序的附加消息;
由所述翻译器基于所述附加消息生成修改的消息;以及
将所述修改的消息提供给所述目标应用程序。
12.根据权利要求11所述的方法,其中响应于由所述翻译器确定所述消息标识账户类型而生成所述修改的消息。
13.根据权利要求7所述的方法,其中响应于由所述翻译器确定所述消息标识非***意图动作而生成所述修改的消息。
14.根据权利要求7所述的方法,其中所述指令指示所述托管应用程序丢弃所述组件调用消息。
15.一种非暂时性计算机可读介质,其存储能够由计算设备执行的多个计算机指令,所述多个计算机指令被配置为使所述计算设备至少:
使托管应用程序启动对目标应用程序的执行;
拦截对目标应用程序从所述计算设备中的可移除存储检索数据的请求;
获取所述数据;
生成所述数据的解密版本;
将所述数据的所述解密版本提供给所述目标应用程序;
从所述托管应用程序获取组件调用消息;
确定所述组件调用消息是否意图调用由工作空间管理器管理的工作空间中的公共组件;以及
响应于确定所述组件调用消息是否意图调用所述公共组件,向所述托管应用程序提供指令。
16.根据权利要求15所述的非暂时性计算机可读介质,其中所述多个计算机指令还被配置为使所述计算设备至少:
拦截对所述目标应用程序将数据存储在所述可移除存储中的请求;
从所述目标应用程序获取所述数据;
基于来自所述目标应用程序的所述数据生成加密的数据;以及
将所述加密的数据存储在所述可移除存储中。
17.根据权利要求15所述的非暂时性计算机可读介质,其中所述多个计算机指令还被配置为使所述计算设备至少:
拦截从所述目标应用程序到请求剪贴板内容的剪贴板服务的消息;以及
响应于所述消息,将由所述工作空间管理器提供的内容提供给所述目标应用程序。
18.根据权利要求15所述的非暂时性计算机可读介质,其中所述多个计算机指令还被配置为使所述计算设备至少:
拦截从所述目标应用程序到请求存储剪贴板内容的剪贴板服务的消息;以及
向工作空间管理器提供所述剪贴板内容。
19.根据权利要求15所述的非暂时性计算机可读介质,其中所述多个计算机指令还被配置为使所述计算设备至少:
拦截从所述目标应用程序到***服务的消息;
生成所述消息的修改版本;以及
将所述消息的所述修改版本提供给所述***服务。
20.根据权利要求15所述的非暂时性计算机可读介质,其中所述多个计算机指令还被配置为使所述计算设备至少:
拦截从***服务到所述目标应用程序的消息;
生成所述消息的修改版本;以及
将所述消息的所述修改版本提供给所述目标应用程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/718,733 | 2015-05-21 | ||
US14/718,733 US10339302B2 (en) | 2015-05-21 | 2015-05-21 | Creating multiple workspaces in a device |
PCT/US2016/033560 WO2016187556A1 (en) | 2015-05-21 | 2016-05-20 | Creating multiple workspaces in a device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107636667A CN107636667A (zh) | 2018-01-26 |
CN107636667B true CN107636667B (zh) | 2021-10-26 |
Family
ID=57320891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680028995.XA Active CN107636667B (zh) | 2015-05-21 | 2016-05-20 | 在设备中创建多个工作空间的***及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10339302B2 (zh) |
EP (1) | EP3298534B1 (zh) |
CN (1) | CN107636667B (zh) |
WO (1) | WO2016187556A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10073720B2 (en) * | 2015-07-30 | 2018-09-11 | Airwatch, Llc | Restricted application visibility |
CN107229526B (zh) * | 2017-05-17 | 2019-03-01 | 腾讯科技(深圳)有限公司 | 群会话中的消息处理方法、装置、存储介质和计算机设备 |
CN109426733B (zh) * | 2017-08-25 | 2022-11-25 | 全球能源互联网研究院 | 一种电力移动应用数据隔离方法及*** |
CN111858094B (zh) * | 2020-07-14 | 2021-05-18 | 北京海泰方圆科技股份有限公司 | 一种数据复制粘贴方法、***及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140109078A1 (en) * | 2012-10-16 | 2014-04-17 | Citrix Systems, Inc. | Application wrapping for application management framework |
CN104246788A (zh) * | 2012-04-18 | 2014-12-24 | 迈克菲公司 | 检测并防止恶意移动应用程序的安装 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581702A (en) * | 1993-12-20 | 1996-12-03 | Intel Corporation | Computer conferencing system for selectively linking and unlinking private page with public page by selectively activating linked mode and non-linked mode for each participant |
US6151606A (en) * | 1998-01-16 | 2000-11-21 | Visto Corporation | System and method for using a workspace data manager to access, manipulate and synchronize network data |
US20030065722A1 (en) * | 2001-10-01 | 2003-04-03 | Ieperen Taco Van | Method and system for creating and managing secure shared workspaces |
US7545931B2 (en) * | 2002-04-12 | 2009-06-09 | Microsoft Corporation | Protection of application secrets |
WO2003104954A2 (en) | 2002-06-06 | 2003-12-18 | Green Border Technologies | Methods and systems for implementing a secure application execution environment using derived user accounts for internet content |
US9390395B2 (en) * | 2005-11-30 | 2016-07-12 | Oracle International Corporation | Methods and apparatus for defining a collaborative workspace |
US8225311B1 (en) | 2006-03-30 | 2012-07-17 | Emc Corporation | Deploying and distributing content management code |
WO2008073618A2 (en) * | 2006-11-06 | 2008-06-19 | Devicevm, Inc. | Instant on platform |
US20080148298A1 (en) | 2006-12-18 | 2008-06-19 | Palm, Inc. | System and Methods for Providing Granular Security for Locally Running Scripted Environments and Web Applications |
US8769268B2 (en) * | 2007-07-20 | 2014-07-01 | Check Point Software Technologies, Inc. | System and methods providing secure workspace sessions |
US8621606B1 (en) | 2007-12-31 | 2013-12-31 | Symantec Corporation | Systems and methods for identifying external functions called by untrusted applications |
US20100175104A1 (en) | 2008-03-03 | 2010-07-08 | Khalid Atm Shafiqul | Safe and secure program execution framework with guest application space |
WO2010042490A1 (en) * | 2008-10-06 | 2010-04-15 | Boston Medical Center Corporation | A single lentiviral vector system for induced pluripotent (ips) stem cells derivation |
WO2011075117A1 (en) | 2009-12-14 | 2011-06-23 | Hewlett-Packard Development Company, L.P. | Modifying computer management request |
US20120047580A1 (en) | 2010-08-18 | 2012-02-23 | Smith Ned M | Method and apparatus for enforcing a mandatory security policy on an operating system (os) independent anti-virus (av) scanner |
US8555332B2 (en) * | 2010-08-20 | 2013-10-08 | At&T Intellectual Property I, L.P. | System for establishing communications with a mobile device server |
US8683462B2 (en) | 2010-10-22 | 2014-03-25 | Adobe Systems Incorporated | Handling calls to native code in a managed code environment |
US8695060B2 (en) * | 2011-10-10 | 2014-04-08 | Openpeak Inc. | System and method for creating secure applications |
US20140053234A1 (en) * | 2011-10-11 | 2014-02-20 | Citrix Systems, Inc. | Policy-Based Application Management |
US9183380B2 (en) * | 2011-10-11 | 2015-11-10 | Citrix Systems, Inc. | Secure execution of enterprise applications on mobile devices |
US8844032B2 (en) | 2012-03-02 | 2014-09-23 | Sri International | Method and system for application-based policy monitoring and enforcement on a mobile device |
US8892876B1 (en) | 2012-04-20 | 2014-11-18 | Trend Micro Incorporated | Secured application package files for mobile computing devices |
US9027108B2 (en) * | 2012-05-23 | 2015-05-05 | Box, Inc. | Systems and methods for secure file portability between mobile applications on a mobile device |
US8656482B1 (en) | 2012-08-20 | 2014-02-18 | Bitdefender IPR Management Ltd. | Secure communication using a trusted virtual machine |
US9087191B2 (en) * | 2012-08-24 | 2015-07-21 | Vmware, Inc. | Method and system for facilitating isolated workspace for applications |
US9392077B2 (en) * | 2012-10-12 | 2016-07-12 | Citrix Systems, Inc. | Coordinating a computing activity across applications and devices having multiple operation modes in an orchestration framework for connected devices |
US9313203B2 (en) | 2013-03-15 | 2016-04-12 | Symantec Corporation | Systems and methods for identifying a secure application when connecting to a network |
WO2014190006A1 (en) | 2013-05-22 | 2014-11-27 | Apperian, Inc. | Configuration of one or more computer devices |
US9112749B2 (en) * | 2013-07-25 | 2015-08-18 | Airwatch Llc | Functionality management via application modification |
US9979751B2 (en) * | 2013-09-20 | 2018-05-22 | Open Text Sa Ulc | Application gateway architecture with multi-level security policy and rule promulgations |
CN104572059B (zh) * | 2013-10-29 | 2020-04-10 | 中兴通讯股份有限公司 | 一种修改应用名称的处理方法及装置 |
US9213830B2 (en) | 2013-12-12 | 2015-12-15 | Microsoft Technology Licensing, Llc | Managing applications in non-cooperative environments |
US20150235042A1 (en) | 2014-02-14 | 2015-08-20 | Symantec Corporation | Systems and methods for authenticating an application |
US9619216B2 (en) * | 2014-04-28 | 2017-04-11 | Citrix Systems, Inc. | Modifying an application for managed execution |
US9785425B2 (en) | 2014-09-30 | 2017-10-10 | Airwatch Llc | Managed clone applications |
US9098715B1 (en) * | 2014-10-28 | 2015-08-04 | Openpeak Inc. | Method and system for exchanging content between applications |
US9767324B2 (en) * | 2014-11-22 | 2017-09-19 | Intel Corporation | Transparent execution of secret content |
US10771553B2 (en) * | 2015-04-30 | 2020-09-08 | Quest Software Inc. | Access to disparate cloud services |
US10432592B2 (en) * | 2015-05-10 | 2019-10-01 | Citrix Systems, Inc. | Password encryption for hybrid cloud services |
-
2015
- 2015-05-21 US US14/718,733 patent/US10339302B2/en active Active
-
2016
- 2016-05-20 CN CN201680028995.XA patent/CN107636667B/zh active Active
- 2016-05-20 EP EP16797395.7A patent/EP3298534B1/en active Active
- 2016-05-20 WO PCT/US2016/033560 patent/WO2016187556A1/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104246788A (zh) * | 2012-04-18 | 2014-12-24 | 迈克菲公司 | 检测并防止恶意移动应用程序的安装 |
US20140109078A1 (en) * | 2012-10-16 | 2014-04-17 | Citrix Systems, Inc. | Application wrapping for application management framework |
Also Published As
Publication number | Publication date |
---|---|
EP3298534A4 (en) | 2019-01-23 |
US20160342802A1 (en) | 2016-11-24 |
EP3298534A1 (en) | 2018-03-28 |
US10339302B2 (en) | 2019-07-02 |
CN107636667A (zh) | 2018-01-26 |
WO2016187556A1 (en) | 2016-11-24 |
EP3298534B1 (en) | 2020-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10305937B2 (en) | Dividing a data processing device into separate security domains | |
US10171502B2 (en) | Managed applications | |
US11575714B2 (en) | Dividing a data processing device into separate security domains | |
US10614233B2 (en) | Managing access to documents with a file monitor | |
US10229283B2 (en) | Managing applications in non-cooperative environments | |
JP5528560B2 (ja) | データ配信装置、データ配信システム、クライアント装置、データ配信方法、データ受信方法、プログラムおよび記録媒体 | |
US10114932B2 (en) | Adapting a mobile application to a partitioned environment | |
US20210397727A1 (en) | Policy based clipboard access | |
CN114586010B (zh) | 对象存储服务的输出路径中对象过滤代码的按需执行 | |
US11675914B2 (en) | Secure information storage | |
US10223526B2 (en) | Generating packages for managed applications | |
US20210306304A1 (en) | Method and apparatus for distributing confidential execution software | |
US10776520B2 (en) | System and method for proxy-based data access mechanism in enterprise mobility management | |
CN107636667B (zh) | 在设备中创建多个工作空间的***及方法 | |
WO2022068322A1 (en) | Software access through heterogeneous encryption | |
Löhr et al. | Trusted virtual domains on OpenSolaris: Usable secure desktop environments | |
US11882123B2 (en) | Kernel level application data protection | |
Cho et al. | Potential privacy vulnerabilities in android data sharing between applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |