用于使数据安全的系统和方法与流程

文档序号:13350687阅读:283来源:国知局
用于使数据安全的系统和方法与流程

版权通告

本专利文献的公开的一部分含有受版权保护的材料。版权所有者不反对任何人拓制本专利文献或专利公开在专利商标局的专利文件或记录中出现的内容,否则无论如何都保留全部版权。

本公开大体上涉及数据处理,且更具体地说,涉及对数据进行加密和解密。



背景技术:

背景章节中所论述的主题不应仅仅由于其在背景章节中被提及而被假定为现有技术。类似地,背景章节中所提及的或与背景章节的主题相关联的问题不应被假定为先前已在现有技术中得以认识。背景章节中的主题仅仅表示不同的途径,其本身也可以是发明。

参考所公开的技术进行以下详细描述。描述优选的实施方案以说明所公开的技术,而非限制其范围,所述范围是由权利要求书限定。所属领域的一般技术人员将认识到对所述描述的多种等效变化。

用于使存储在存储区域(例如数据库、数据存储库等等)中的数据(例如客户数据)安全的现有途径可基于非对称或对称密码。就非对称密码来说,使用一对密钥—公钥和私钥。可使用公钥来对客户数据进行加密且使用对应私钥来对客户数据进行解密。使用非对称密钥对的公钥来对数据进行加密通常是极慢的。代替地,可接受的实践是使用对称密钥来对数据进行加密。对称密钥自身是用公钥而加密,由此克服非对称密钥密码的性能问题。



技术实现要素:

对于一些实施例,用于使多租户数据库环境中的客户数据安全的方法和系统包含:将经加密的第一密钥片段存储在第一存储区域中;以及将经加密的第二密钥片段存储在不同于第一存储区域的第二存储区域中。对第一存储区域的访问与对第二存储区域的访问相互排斥。第一密钥片段和第二密钥片段已使用密钥集而加密。基于接收到对派生主密钥的请求,使用密钥集和与硬件安全模块(hsm)相关联的密钥来对经加密的第一密钥片段和经加密的第二密钥片段进行解密。使用经解密的第一密钥片段和经解密的第二密钥片段来派生主密钥。主密钥可存储在内存高速缓冲存储器中且用于对客户数据进行加密或对经加密的客户数据进行解密。

在审阅以下图式、详细描述和权利要求书时可见到本发明的其它方面和优点。

附图说明

所包含的图式是出于说明性目的,且仅用以提供所公开技术的可能结构和过程步骤的实例。这些图式决不限制所属领域的技术人员在不脱离本公开的精神和范围的情况下可对实施例作出的任何形式和细节改变。

图1展示可与本发明的一些实施例一起使用的实例计算系统102的图解。

图2展示可与本发明的一些实施例一起使用的实例网络环境200的图解。

图3a展示根据一些实施例的可用于派生主密钥以用于对客户数据进行加密和解密的密钥片段的实例。

图3b说明根据一些实施例的主密钥与客户之间的实例关系。

图3c说明根据一些实施例的使用hsm的加密的实例。

图4a说明根据一些实施例的使用密钥释放(keyrelease)的加密的实例。

图4b说明根据一些实施例的多个密钥释放的实例。

图5说明根据一些实施例的使用密钥释放中的密钥来实施加密的实例。

图6a展示根据一些实施例而执行的用于处理对客户数据的请求的实例过程的流程图。

图6b展示根据一些实施例而执行的用于对客户数据进行加密的实例过程的流程图。

图7a展示根据一些实施例而执行的用于执行加密的实例过程的流程图。

图7b展示根据一些实施例而执行的用于产生主密钥的实例过程的流程图。

图8a展示根据一些实施例的说明适用环境的架构组件的系统图800。

图8b展示根据一些实施例的进一步说明适用环境的架构组件的系统图。

图9展示根据一些实施例的说明多租户数据库环境的架构的系统图910。

图10展示根据一些实施例的进一步说明多租户数据库环境的架构的系统图910。

具体实施方式

在此章节中描述根据一个或多个实施例的系统和方法的应用。提供这些实例是仅仅为了添加上下文并辅助理解本公开。因此,对于所属领域的技术人员来说将显而易见,可在没有这些特定细节中的一些或全部的情况下实践本文中所描述的技术。在其它情况下,尚未详细地描述众所周知的过程步骤以免不必要地混淆本公开。其它应用是可能的,使得以下实例不应被视为限定或限制范围或设置。

在以下详细描述中,参考附图,所述附图形成所述描述的一部分且其中借助于说明而展示特定实施例。尽管足够详细地描述这些实施例以使所属领域的技术人员能够实践本公开,但应理解,这些实例并非限制性的,使得在不脱离本公开的精神和范围的情况下可使用其它实施例且可作出改变。

如本文中所使用,术语“多租户数据库系统”是指数据库系统的硬件和软件的各种元件可被一个或多个客户共享的那些系统。举例来说,给定应用程序服务器可同时处理对大量客户的请求,且给定数据库表可存储用于数目潜在多得多的客户的行。

可在例如基于软件的系统、数据库系统、多租户环境等等的任何计算机实施系统的上下文中实施所描述的主题。此外,可结合彼此协作和通信的两个或多于两个单独且不同的计算机实施系统来实施所描述的主题。可以许多方式实施一个或多个实施例,所述方式包含:作为过程、设备、系统、装置、方法、计算机可读媒体,例如含有计算机可读指令或计算机程序代码的计算机可读存储媒体;或作为包括计算机可用媒体的计算机程序产品,所述计算机可用媒体中体现有计算机可读程序代码。

一般来说,多租户数据库环境可包含被配置成存储与组织或客户相关联的数据的多个数据库。数据(也被称作客户数据)在由客户存储时可能未加密。客户数据在使用非对称或对称密码而处于静态时可能被加密。经加密的客户数据保护其免于任何未授权用户的访问。虽然可能重要的是对客户数据进行加密,但可能需要使解密密钥(私钥或对称密钥)安全。解密密钥可存储在仅某些授权人员(例如数据库管理员)可访问的存储区域中。当客户想要检索客户数据时,可使用解密密钥来对经加密的客户数据进行解密。可接着将经解密的客户数据传输给客户。经加密的客户数据可存储在与多租户数据库环境相关联的任何存储区域中,所述存储区域包含基于云的存储区域、非基于云的存储区域,或其它形式的存储实施方案。

一种用于保护解密密钥的技术是使用硬件安全模块(hsm)。hsm提供机载安全密钥产生以及机载密钥存储和管理。hsm可用于产生非对称密钥对。hsm可将hsm私钥保持在其存储装置中,使得hsm私钥无法被任何人提取。hsm私钥可用于对已使用对应hsm公钥而加密的数据进行解密。可能需要口令来使用安装在系统中的hsm。hsm可以是经由通用串行总线(usb)端口而连接的usb装置,或hsm可以是经由系统板而安装的卡装置,或hsm可以是网络附接装置。

所公开的实施例可包含一种用于对多租户数据库环境中的客户数据进行加密和解密的方法。所述方法包含基于包含第一密钥片段和第二密钥片段的两个密钥片段来产生对称密钥。可使用随机数产生器来产生第一密钥片段和第二密钥片段,且可至少使用硬件安全模块(hsm)中的密钥来使第一密钥片段和第二密钥片段安全。将对称密钥存储在内存高速缓冲存储器中。可使用对称密钥来对客户数据进行加密。当客户请求客户数据时,可使用对称密钥来对经加密的客户数据进行解密。

所公开的实施例可包含一种用于使客户数据安全的设备,且包含:处理器;以及一系列或多系列经存储指令,所述指令在由处理器执行时,致使所述处理器将经加密的第一密钥片段存储在第一存储区域中,将经加密的第二密钥片段存储在不同于第一存储区域的第二存储区域中,其中对第一存储区域的访问与对第二存储区域的访问相互排斥,且其中第一密钥片段和第二密钥片段已使用密钥集而加密。所述指令进一步致使所述处理器基于接收到对派生主密钥的请求而使用密钥集和与硬件安全模块(hsm)相关联的密钥来对经先前加密的第一密钥片段和经先前加密的第二密钥片段进行解密。使用经解密的第一密钥片段和经解密的第二密钥片段来派生主密钥。将主密钥存储在内存高速缓冲存储器中。

所公开的实施例可包含一种机器可读媒体,其携载用于使客户数据安全的一系列或多系列指令,所述指令在由一个或多个处理器执行时,致使所述一个或多个处理器将经加密的第一密钥片段存储在第一存储区域中,将经加密的第二密钥片段存储在不同于第一存储区域的第二存储区域中,其中对第一存储区域的访问与对第二存储区域的访问相互排斥,且其中第一密钥片段和第二密钥片段已使用密钥集而加密。基于接收到对派生主密钥的请求,所述指令在由一个或多个处理器执行时进一步致使所述一个或多个处理器使用密钥集和与硬件安全模块(hsm)相关联的密钥来对经先前加密的第一密钥片段和经先前加密的第二密钥片段进行解密,使用经解密的第一密钥片段和经解密的第二密钥片段来派生主密钥,以及将主密钥存储在内存高速缓冲存储器中。

所公开的实施例可涉及对计算机实施系统中的客户数据进行加密和解密或使所述客户数据安全。可在例如基于软件的系统、数据库系统、多租户环境等等的任何计算机实施系统的上下文中实施所描述的主题。此外,可结合彼此协作和通信的两个或多于两个单独且不同的计算机实施系统来实施所描述的主题。可以许多方式实施一个或多个实施方案,所述方式包含:作为过程、设备、系统、装置、方法、计算机可读媒体,例如含有计算机可读指令或计算机程序代码的计算机可读存储媒体;或作为包括计算机可用媒体的计算机程序产品,所述计算机可用媒体中体现有计算机可读程序代码。

计算机系统

图1是可与本发明的一些实施例一起使用的实例计算系统的图解。计算系统102可由客户或组织用来传输客户数据以存储在与多租户数据库环境相关联的存储区域中。举例来说,多租户数据库环境可与由salesforce.com®提供的业务相关联。计算系统102还可用于从存储区域检索客户数据。

计算系统102仅是例如移动计算系统的合适计算系统的一个实例,且并不意图提出关于本设计的使用或功能性的范围的任何限制。计算系统102也不应被解释为具有与所说明组件中的任一组件或其组合相关的任何相依性或要求。本设计可用许多其它通用或专用计算系统进行操作。可适合供本设计使用的众所周知的计算系统、环境和/或配置的实例包含但不限于个人计算机、服务器计算机、手持式装置或笔记本电脑装置、多处理器系统、基于微处理器的系统、机顶盒、可编程消费型电子装置、小型计算机、大型计算机、包含上述系统或装置中的任一个的分布式计算环境等等。举例来说,计算系统102可被实施为移动计算系统,例如被配置成用由加利福尼亚州库比蒂诺市的苹果公司开发的操作系统(例如ios)或由加利福尼亚州山景城的谷歌公司开发的操作系统(例如安卓)来运行的移动计算系统。

可在由计算机执行的计算系统可执行指令(例如程序模块)的一般上下文中描述本发明的一些实施例。通常,程序模块包含执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等等。所属领域的技术人员可以将本文中的描述和/或图实施为计算机可执行指令,其可以体现在下文所论述的任何形式的计算机器可读媒体上。

还可以在分布式计算环境中实践本发明的一些实施例,在分布式计算环境中,由经由通信网络而链接的远程处理装置执行任务。在分布式计算环境中,程序模块可位于包含存储器存储装置的本地和远程计算机存储媒体两者中。

参看图1,计算系统102可包含但不限于具有一个或多个处理核心的处理单元120、系统存储器130和将包含系统存储器130的各种系统组件耦合到处理单元120的系统总线121。系统总线121可以是使用多种总线架构中的任一个的若干类型的总线结构中的任一个,包含存储器总线或存储器控制器、外围总线和局部总线。借助于实例而非限制,此类架构包含工业标准架构(isa)总线、微信道架构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)现场总线和外围组件互连(pci)总线,也被称作夹层(mezzanine)总线。

计算系统102通常包含多种计算机可读媒体。计算机可读媒体可以是可由计算系统102访问且包含易失性和非易失性媒体、可装卸式和非可装卸式媒体两者的任何可用媒体。借助于实例而非限制,计算机可读媒体可存储例如计算机可读指令、数据结构、程序模块或其它数据的信息。计算机存储媒体包含但不限于ram、rom、eeprom、闪存器或其它存储器技术、cd-rom、数字多功能光盘(dvd)或其它光盘存储装置、卡盒式磁带、磁带、磁盘存储装置或其它磁性存储装置,或可用于存储所要信息且可由计算系统102访问的任何其它媒体。通信媒体通常体现计算机可读指令、数据结构或程序模块。

系统存储器130可包含呈易失性和/或非易失性存储器形式的计算机存储媒体,例如只读存储器(rom)131和随机存取存储器(ram)132。含有例如在启动期间帮助在计算系统102内的元件之间传送信息的基本例程的基本输入/输出系统(bios)133通常存储在rom131中。ram132通常含有可由处理单元120立即访问和/或目前正由处理单元120操作的数据和/或程序模块。借助于实例而非限制,图1还说明操作系统134、应用程序135、其它程序模块136和程序数据137。

计算系统102还可包含其它可装卸式/非可装卸式、易失性/非易失性计算机存储媒体。仅借助于实例,图1还说明从非可装卸式非易失性磁性媒体进行读取或向非可装卸式非易失性磁性媒体进行写入的硬盘驱动器141、从可装卸式非易失性磁盘152进行读取或向可装卸式非易失性磁盘152进行写入的磁盘驱动器151,和从可装卸式非易失性光盘156(例如cdrom或其它光学媒体)进行读取或向可装卸式非易失性光盘156进行写入的光盘驱动器155。可在示范性操作环境中使用的其它可装卸式/非可装卸式、易失性/非易失性计算机存储媒体包含但不限于usb驱动器和装置、卡盒式磁带、闪存卡、数字多功能光盘、数字录像带、固态ram、固态rom等等。硬盘驱动器141通常经由例如接口140的非可装卸式存储器接口而连接到系统总线121,且磁盘驱动器151和光盘驱动器155通常通过例如接口150的可装卸式存储器接口而连接到系统总线121。

上文所论述且图1所说明的驱动器和其关联计算机存储媒体为计算系统102提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,举例来说,将硬盘驱动器141说明为存储操作系统144、应用程序145、其它程序模块146和程序数据147。应注意,这些组件可与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。此处向操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的数字识别以说明其至少是不同的副本。

用户可经由输入装置将命令和信息键入到计算系统102中,所述输入装置是例如键盘162、麦克风163和指针装置161,例如鼠标、轨迹球或触摸板或触摸屏。其它输入装置(未展示)可包含操纵杆、游戏板、扫描仪等等。这些和其它输入装置常常经由与系统总线121耦合的用户输入接口160而连接到处理单元120,但可以通过例如并行端口、游戏端口或通用串行总线(usb)的其它接口和总线结构而连接。监视器191或其它类型的显示装置也经由例如视频接口190的接口而连接到系统总线121。除监视器之外,计算机还可包含例如扬声器197和打印机196的其它外围输出装置,所述外围输出装置可经由输出外围接口190而连接。

计算系统102可使用到例如远程计算机180的一个或多个远程计算机的逻辑连接而在联网环境中操作。远程计算机180可以是个人计算机、手持式装置、服务器、路由器、网络pc、对等装置或其它常见网络节点,且通常包含上文关于计算系统102所描述的元件中的许多或全部。图1所描绘的逻辑连接包含局域网(lan)171和广域网(wan)173,但还可包含其它网络。此类联网环境在办公室、全企业计算机网络、内联网和因特网中是常见的。

当在lan联网环境中使用时,计算系统102可经由网络接口或适配器170而连接到lan171。当在wan联网环境中使用时,计算系统102通常包含调制解调器172或用于在例如因特网的wan173上建立通信的其它构件。可以在内部或在外部的调制解调器172可经由用户输入接口160或其它适当机构而连接到系统总线121。在联网环境中,关于计算系统102所描绘的程序模块或其部分可存储在远程存储器存储装置中。借助于实例而非限制,图1将远程应用程序185说明为驻留在远程计算机180上。将了解,所展示的网络连接是示范性的,且可使用在计算机之间建立通信链路的其它构件。

应注意,可在例如关于图1所描述的计算系统的计算系统上实行本发明的一些实施例。然而,可在服务器、专用于消息处置的计算机、手持式装置或分布式系统上实行本发明的一些实施例,在所述分布式系统中,可在分布式计算系统的不同部分上实行本设计的不同部分。

可与系统总线121耦合的另一装置是电源,例如蓄电池或直流(dc)电源)和交流(ac)适配器电路。dc电源可以是蓄电池、燃料电池,或需要周期性地再充电的类似dc电源。通信模块(或调制解调器)172可采用无线应用程序协议(wap)来建立无线通信信道。通信模块172可实施无线联网标准,例如在1999年由ieee公布的电气电子工程师学会(ieee)802.11标准,ieee标准802.11-1999。

移动计算系统的实例可以是笔记本电脑、平板计算机、上网本、智能手机、个人数字助理,或具有机载处理能力和无线通信能力的其它类似装置,所述类似装置是由直流(dc)电源供电,所述dc电源将dc电压供应到移动计算系统且仅仅在移动计算系统内并且需要周期性地再充电,例如燃料电池或蓄电池。

网络

图2展示可与本发明的一些实施例一起使用的实例网络环境的图解。网络环境200包含计算系统205和212。计算系统205和212中的一个或多个可以是移动计算系统。计算系统205和212可经由蜂窝连接或经由wi-fi路由器(未展示)而连接到网络250。网络250可以是因特网。计算系统205和212可经由网络250而与一个或多个服务器计算系统255和260耦合。

计算系统205可与客户相关联,且可包含客户应用程序模块208。用户可使用客户计算系统205和客户应用程序模块208来连接到服务器计算系统255(也被称作应用程序服务器255)且与服务器计算系统255通信以及登录到应用程序257(例如salesforce.com®应用程序)中。用户可将客户数据传输到应用程序服务器255,且可向应用程序服务器255请求客户数据。

应用程序服务器255可与被配置成存储客户数据的数据库270耦合。应用程序服务器255可与实体(例如salesforce.com®)相关联。实体可产生用于密码的密钥对。密钥对包含公钥273和私钥(未展示)。私钥是不可公开得到的,而是由实体(也被称作密钥持有者)保密。可借助于认证中心(ca)发布的数字证书而使任何人都可得到公钥273。证书也是ca对所述证书中所含有的公钥属于所述证书中所提到的实体的确认或证实。举例来说,客户可下载证书并取得公钥273以对客户数据进行加密以传输到应用程序服务器255。仅实体(或私钥的持有者)可对已使用公钥273而加密的客户数据进行解密。

应用程序服务器255可与被配置有密码应用程序模块214的密码计算系统212耦合。密码应用程序模块214可被配置成产生用于一个或多个密钥释放的公钥、私钥、对称密钥和密钥片段,如关于图4a所描述。

应用程序服务器255可与文件系统271耦合。文件系统271可被配置成存储各种经加密的密钥,包含由密码计算系统212产生的密钥。

应用程序服务器255可与被配置有hsm266的服务器计算系统260(也被称作hsm服务器260)耦合。hsm266可与hsm公钥267和hsm私钥268相关联。hsm服务器260可包含hsm应用程序模块265,hsm应用程序模块265被配置成与hsm266交互以及执行各种加密和解密操作。举例来说,hsm应用程序模块265可使用hsm私钥268来对先前使用对应hsm公钥267而加密的数据进行解密。可能需要口令来访问hsm266。

出于负载均衡目的,可存在连接到负载均衡器(未展示)的多个应用程序服务器255和多个hsm服务器260。所有应用程序服务器255可能需要知道可在任何特定时间与之交谈的hsm服务器260。

对于一些实施例,文件系统271可与hsm服务器260的本地文件系统同步。这可使hsm服务器260能够访问数据并将数据存储在文件系统271中,如同文件系统271是本地文件系统一样。对于一些实施例,hsm服务器260可仅对由应用程序服务器255传输的询问作出响应。这可防止任何未授权用户访问与hsm服务器260相关联的数据或业务。举例来说,应用程序服务器255可能需要对其使用共享的机密发送到hsm服务器260的每一请求进行数字签名。

密钥片段

图3a展示根据一些实施例的可用于派生主密钥以用于对客户数据进行加密和解密的密钥片段的实例。可使用随机数产生器来产生第一密钥片段302和第二密钥片段304。举例来说,随机数产生器可产生256位长的密钥片段。对于一些实施例,第一密钥片段302可由应用程序服务器255(图2所展示)产生,且第二密钥片段304可由密码计算系统212(图2所展示)产生。对于一些实施例,第一密钥片段302和第二密钥片段304两者都可由应用程序服务器255产生。这可帮助改进主密钥308的派生的性能。对于一些实施例,第一密钥片段302和第二密钥片段304两者都可由hsm服务器260产生。这可帮助改进所派生的主密钥308的性能和安全性。第一密钥片段302对于每个客户可以是唯一的。第二密钥片段304可与特定密钥释放相关联,如关于图4a所描述。

第一密钥片段302可由应用程序服务器255处理。这可包含致使第一密钥片段302被加密并存储在数据库270中。第二密钥片段304可由hsm服务器260处理。这可包含致使第二密钥片段304基于hsm服务器260与文件系统271之间的数据同步而被加密并存储在文件系统271中。将经加密的第一密钥片段302和经加密的第二密钥片段304存储在可访问性限于某些人员的不同区域中会保护第一密钥片段302和第二密钥片段304免于未授权人员的访问。举例来说,仅一群授权人员可能能够从数据库270访问第一密钥片段302,且仅另一群授权人员可能能够从文件系统271访问第二密钥片段304,但任一群授权人员都不能够访问数据库270和文件系统271两者。所述访问可被视为相互排斥。对于一些实施例,仅应用程序服务器255可从数据库270访问第一密钥片段302,且仅hsm服务器260可从文件系统271访问第二密钥片段304。

对于一些实施例,代替使用第一密钥片段302,可使用客户产生的第一密钥片段303。参看图3a,被展示有客户产生的第一密钥片段303的点线意指传达替代选项。可使用256位随机数产生器来产生客户产生的第一密钥片段303。可使用客户自己的私钥(未展示)来对客户产生的第一密钥片段303进行加密,且随后由应用程序服务器255使用客户自己的公钥来对客户产生的第一密钥片段303进行解密。或者,可使用实体的公钥273(图2所展示)来对客户产生的第一密钥片段303进行加密,且随后使用实体的私钥来对客户产生的第一密钥片段303进行解密。可接着由应用程序服务器255以类似于应用程序服务器255处理第一密钥片段302的方式接收并处理经解密的客户产生的第一密钥片段303。

使用客户产生的第一密钥片段303的一个优点为,其使客户能够一定程度地控制主密钥308的派生(并因此控制客户数据的安全性)。即使客户产生的第一密钥片段303被破解,也仍可使第二密钥片段304安全。尽管以下论述提及系统产生的第一密钥片段302(或简称为第一密钥片段302),但应理解,第一密钥片段可以是系统产生的或客户产生的。

主密钥派生

主密钥派生模块306可被配置成执行将经解密的第一密钥片段302与经解密的第二密钥片段304组合以派生主密钥308的操作。对于一些实施例,所述操作可包含经由安全算法运行多次循环(例如10,000次循环)。主密钥308可以是对称密钥。主密钥派生模块306可被配置成执行基于口令的密钥派生函数2(pbkdf2)算法。pbkdf2算法可将伪随机函数(例如密码哈希、密码)连同加密盐值(saltvalue)一起应用于输入口令或通行短语,并多次重复所述过程以派生主密钥308。可使用随机数产生器来产生加密盐且在pbkdf2算法中使用加密盐。加密盐可由hsm服务器260产生。

主密钥308是唯一的,且仅与一个客户相关联。这是因为主密钥派生模块306使用两个密钥片段—第一密钥片段302和第二密钥片段304—其中至少第一密钥区段302对于每个客户是唯一的。对于一些实施例,主密钥派生模块306可包含在hsm服务器260中。一旦派生主密钥308,就可对主密钥308进行加密并将其传输到应用程序服务器255。举例来说,主密钥308的加密可基于使用ca公钥273。这可在主密钥308经由网络250(图2所展示)行进到应用程序服务器255时保护主密钥308。可接着由应用程序服务器255使用ca私钥272来对经加密的主密钥308进行解密。

主密钥308可暂时存储在应用程序服务器255的内存高速缓冲存储器307中。处于内存高速缓冲存储器307中会使有可能由应用程序服务器255而非任何未授权用户快速地访问主密钥308。

可注意到,只要主密钥派生模块306接收相同的第一密钥片段302和第二密钥片段304,就会产生相同的主密钥308。如果将应用程序服务器255断电且接着重新通电,那么内存高速缓冲存储器307中的主密钥308可能会丢失,但可由主密钥派生模块306派生。

图3b说明根据一些实施例的主密钥与客户之间的实例关系。在此实例中,存在两个客户315和325。在操作期间,客户315可将其客户数据320传输到应用程序服务器255。应用程序服务器255接着使用对于客户315是唯一的主密钥322来对客户数据320进行加密以及产生经加密的客户数据324。接着将经加密的客户数据324保存在数据库270中。随后,当客户315请求其客户数据时,从数据库270检索经加密的客户数据324,由应用程序服务器255使用主密钥322来对经加密的客户数据324进行解密,且将经解密的客户数据320传输给客户315。

类似地,客户325可将其客户数据330传输到应用程序服务器255。应用程序服务器255接着使用对于客户325是唯一的主密钥332来对客户数据330进行加密以及产生经加密的客户数据334。接着将经加密的客户数据334保存在数据库270中。随后,当客户325请求其客户数据时,从数据库270检索经加密的客户数据334,由应用程序服务器255使用主密钥332来对经加密的客户数据334进行解密,且将经解密的客户数据330传输给客户325。

当应用程序服务器255需要访问主密钥322或332时,应用程序服务器255可检查以查明主密钥322或332是否存在于内存高速缓冲存储器307中。如果主密钥322或332存在内存高速缓冲存储器307,那么由应用程序服务器255访问和使用主密钥322或332。如果主密钥322或332不存在于内存高速缓冲存储器307中,那么应用程序服务器255可请求主密钥派生模块306派生主密钥322或332。

图3c说明根据一些实施例的使用hsm的加密的实例。由于主密钥322或332的派生是基于相应第一密钥片段323或333和相应第二密钥片段324或334,故需要保护第一密钥片段323、333和第二密钥片段324、334。对于一些实施例,可使用hsm350的公钥351来对第一密钥片段323和第二密钥片段324进行加密。类似地,可使用hsm355的公钥356来对第一密钥片段333和第二密钥片段334进行加密。经加密的第一密钥片段323和333可存储在数据库270中。经加密的第二密钥片段324和334可存储在文件系统271中。对于一些实施例,可使用两个不同的hsm来对第一密钥片段323和第二密钥片段324进行加密和解密。举例来说,可使用公钥351来对第一密钥片段323进行加密且接着使用私钥352来对第一密钥片段323进行解密,而可使用公钥356来对第二密钥片段324进行加密且接着使用私钥357来对第二密钥片段324进行解密。

当有必要派生主密钥322时,主密钥派生模块306可从应用程序服务器255接收经加密的第一密钥片段323。主密钥派生模块306可从文件系统271查询经加密的第二密钥片段324。主密钥派生模块306可使用hsm350的私钥352来对经加密的第一密钥片段323和经加密的第二密钥片段324两者进行解密,且接着使用第一密钥片段323和第二密钥片段324来派生主密钥322。一旦派生主密钥322,就可将主密钥322传输到应用程序服务器255,存储在内存高速缓冲存储器307中,且用于对客户数据进行加密或对经加密的客户数据(例如图3b所展示的客户数据320)进行解密。类似地,当有必要派生主密钥332时,主密钥派生模块306可从应用程序服务器255接收经加密的第一密钥片段333。主密钥派生模块306可从文件系统271查询经加密的第二密钥片段334。主密钥派生模块306可使用hsm355的私钥357来对经加密的第一密钥片段333和经加密的第二密钥片段334两者进行解密,且接着使用第一密钥片段333和第二密钥片段334来派生主密钥332。一旦派生主密钥332,就可将主密钥332传输到应用程序服务器255,存储在内存高速缓冲存储器307中,且用于对客户数据330进行加密或对经加密的客户数据(例如图3b所展示的客户数据330)进行解密。

可注意到,主密钥322和332的派生取决于hsm350和355的可用性,这是因为仅hsm350的私钥352可用于对先前已使用hsm350的公钥351而加密的密钥片段进行解密。类似地,仅hsm355的私钥357可对先前已使用hsm355的公钥356而加密的密钥片段进行解密。如果hsm350出故障,那么hsm355的私钥357不能用于对先前已使用hsm350的公钥351而加密的任何密钥片段进行解密。类似地,如果hsm355出故障,那么hsm350的私钥352不能用于对先前已使用hsm355的公钥356而加密的任何密钥片段进行解密。也许有可能的是,hsm350或hsm355可能是单点故障,这是因为主密钥和客户与特定hsm以及其公钥和私钥相关联。

也许有可能应用冗余以通过增加hsm的数目来减少单点故障,使得也用冗余hsm的公钥来对密钥片段进行加密。可接着将多个经加密的密钥片段存储在数据库270中。然而,由于必须记住用于对特定的经加密的密钥片段进行解密的特定hsm,故此途径可复杂。使用公钥来对客户数据进行加密可能具有一些限制,这是因为公钥不能用于对大于其密钥大小的数据进行加密。因而,可支持的客户的数目可能会受到限制。

图4a说明根据一些实施例的使用密钥释放的加密的实例。密钥释放可用于实现客户不与特定hsm相关联的加密,从而使有可能支持许多客户。对于一些实施例,密码计算系统212可被配置成产生具有多个密钥(或种子)的密钥集410。密钥集410可与密钥释放相关联。可存在一个或多个密钥释放。密钥集410可用于任何客户。当存在多个密钥释放时,每个密钥释放与其自己的密钥集410相关联。

密钥集410可包含每次释放的(per-release)私钥412、每次释放的公钥413、每次释放的对称密钥414和每次释放的密钥片段415。每次释放的密钥片段415可用作类似于第二密钥片段304(图3a所展示)的第二密钥片段以派生主密钥308。由于对于每个客户存在不同的第一密钥片段302,故将对于每个客户派生不同的主密钥308,即使将相同的每次释放的密钥片段415用作第二密钥片段304也如此。

图4b说明根据一些实施例的多个密钥释放的实例。密钥释放的数目可以是无限的。举例来说,多个密钥释放可包含密钥释放492、494、496和498。用于密钥释放492的密钥集可包含公钥、私钥、对称密钥和密钥片段。类似地,图4b中展示用于密钥释放494、496和498的密钥集。密钥释放可周期性地改变。举例来说,可将密钥释放492设置为按季度活动,接着是密钥释放494、496和498。对于一些实施例,客户可具有使用或改变为特定密钥释放的选项。举例来说,即使密钥释放494是当前活动的密钥释放,客户也可请求将密钥释放498用作当前活动的密钥释放。对于一些实施例,任何可用的密钥释放可用作活动的密钥释放。

对于一些实施例,密码计算系统212可将密钥集410(图4a所展示)中的密钥导出到hsm服务器260。可使用hsm266的公钥267来对密钥集410中的密钥中的每一个进行加密,且将其传输到hsm服务器260。hsm服务器260可使用hsm266的私钥268(图2所展示)来对所述密钥进行解密。这可在将密钥集410中的密钥传输到hsm分隔260时保护所述密钥的完整性。

hsm服务器260可将每次释放的私钥412、每次释放的公钥413、每次释放的对称密钥414和每次释放的密钥片段415存储在文件系统271中。也可用密钥集410来导出密钥释放信息(或种子信息),例如与密钥释放492相关联的信息。密钥释放信息可用于确定正确的密钥以从文件系统271进行检索来派生主密钥308。

对于一些实施例,密钥集410可被配置为地理特定的,使得每次释放的密钥片段415可仅用于为处于特定地理位置的客户派生主密钥308。举例来说,地理特定代码可以是每次释放的密钥片段415的部分,使得仅位于相同地理位置的hsm服务器255可以处理每次释放的密钥片段415。

图5说明根据一些实施例的使用密钥释放中的密钥来实施加密的实例。在此实例中,使用密钥释放492以及hsm350和355的公钥351、356和私钥352、357来说明加密。如框550和552中所展示,可使用密钥释放492的公钥来对第一密钥片段570和第二密钥片段580进行加密。在此实例中,将密钥释放492的密钥片段用作第二密钥片段580。可接着将经加密的第一密钥片段570存储在数据库270(图2所展示)中。可接着将经加密的第二密钥片段580存储在文件系统271中。

如框554中所展示,使用密钥释放492的对称密钥来对密钥释放492的私钥(其可用于对第一密钥片段570和第二密钥片段580进行解密)进行加密。如框556和558中所展示,使用hsm350的公钥351和hsm355的公钥356(图3c所展示)来对密钥释放492的对称密钥(其用于对密钥释放492的私钥进行加密)自身进行加密。密钥释放492的经加密的私钥(框554中所展示)和密钥释放492的经加密的对称密钥(框556和558中所展示)可存储在文件系统271中。

对于一些实施例,可使用密钥释放492的对称密钥来对第一密钥片段570和第二密钥片段580进行加密,以及对经加密的第一密钥片段570和经加密的第二密钥片段580进行解密。可接着将经加密的第一密钥片段570存储在数据库270(图2所展示)中。可接着将经加密的第二密钥片段580存储在文件系统271中。

当需要派生主密钥308时,应用程序服务器255可将经加密的第一密钥片段570传输到hsm服务器260。应用程序服务器255还可向hsm服务器260指示相关密钥释放是密钥释放492。hsm服务器260可从文件系统271检索经加密的第二密钥片段580。hsm服务器260需要密钥释放492的私钥来对经加密的第一密钥片段570和经加密的第二密钥片段580进行解密。

如上文所描述,使用密钥释放492的对称密钥来对密钥释放492的私钥进行加密。为了对密钥释放492的经加密的私钥进行解密,hsm服务器260需要确定密钥释放492的对称密钥。hsm服务器260可使用hsm350和其私钥352或hsm355和其私钥357来对密钥释放492的经加密的对称密钥进行解密。hsm服务器260接着使用密钥释放492的经解密的对称密钥来对密钥释放492的经加密的私钥进行解密。通过使用密钥释放492的经解密的私钥,hsm服务器260可对经加密的第一密钥片段570和经加密的第二密钥片段580进行解密并派生主密钥308。

当存在多个hsm服务器(例如hsm服务器260)和多个应用程序服务器(例如应用程序服务器255)时,任何hsm服务器260可使用此途径来取得密钥释放492的私钥,且可处理来自任何应用程序服务器255的请求。代替使用hsm350的公钥351(如图3c所展示)来对第一密钥片段570和第二密钥片段580进行加密,使用密钥释放492的公钥来对第一密钥片段570和第二密钥片段580进行加密。这是间接级别,其允许hsm350或355使用其私钥352或356来对密钥释放492的对称密钥进行解密以取得第一密钥片段570和第二密钥片段580。

可注意到,因为使用hsm350和355的公钥351、356来对密钥释放492的对称密钥进行加密,所以可使用hsm350的私钥352或hsm355的私钥357来对密钥释放492的经加密的对称密钥进行解密。如果hsm350出故障,那么可使用hsm355来检索密钥释放492的经解密的对称密钥。如果添加新hsm,那么使用新hsm的公钥来对密钥释放492的对称密钥进行加密。因此,如果存在十个hsm,那么将通过使用十个hsm的公钥来对密钥释放492的对称密钥进行加密,且可将十个经加密的对称密钥存储在文件系统271中。

可使用十个hsm中的任一个的私钥来对密钥释放492的适当的经加密的对称密钥进行解密。可能没有必要知道所有参与的hsm的私钥以对适当的经加密的对称密钥进行解密。只要可获得密钥释放492的经解密的对称密钥,就可获得密钥释放492的经解密的私钥。在使用密钥释放492的经解密的私钥的情况下,可获得经解密的第一密钥片段570和经解密的第二密钥片段580以派生必要的主密钥。此途径会去除单点故障。对于一些实施例,也许有可能使用同一hsm的私钥和公钥来对与不同客户相关联的对称密钥进行加密和解密。

可注意到,当密钥释放从密钥释放492改变为密钥释放494时,每次释放的密钥片段会改变(从密钥释放492的密钥片段改变为密钥释放494的密钥片段)。因为密钥释放494的密钥片段用作第二密钥片段480,所以这可导致派生不同的主密钥。对于一些实施例,客户可与多个主密钥相关联(基于不同的密钥释放),但每次对于所述客户仅存在一个活动的主密钥。可能仍需要其它主密钥来对先前用那些相同的主密钥而加密的客户数据进行解密。如果与主密钥相关联的第一密钥片段570或第二密钥片段580中的任一个丢失或毁坏,那么也许没有可能对先前用所述相同的主密钥而加密的客户数据进行解密。具有多个释放可对客户数据的保护增加另一安全级别,这是由于使用来自某一密钥释放的同一密钥集来对所有客户数据进行加密可能并非如此安全。

对于一些实施例,密码计算系统212可被配置成存储其对于每个密钥释放产生的密钥(例如每次释放的对称密钥、每次释放的密钥片段等等)。密码计算系统212可包含hsm215(图2所展示)以使用hsm215的公钥来对密钥释放中的密钥进行加密以及使用hsm215的私钥来对那些密钥进行解密。对密码计算系统212的访问可仅限于某些授权人员。对于一些实施例,在将密钥释放中的密钥导出到hsm服务器260之后,密码计算系统212可切换为脱机状态(例如通过断电或通过与网络断开连接)。处于脱机状态可防止未授权用户访问密码计算系统212。

流程图

图6a展示根据一些实施例而执行的用于处理对客户数据的请求的实例过程的流程图。过程600可由应用程序服务器255(图2所展示)执行,并使用包含在密钥释放492(图4b所展示)和hsm350(图3c所展示)中的密钥加以描述。用户可经由应用程序接口(api)或用户接口(ui)而使用客户计算系统205来进行请求。在框602处,由应用程序服务器255接收请求。客户数据可存储在数据库270中,且客户数据可能已用与客户相关联的主密钥308而加密。在框604处,应用程序服务器255可从数据库270查询客户数据。

在框606处,应用程序服务器255可检查以查明主密钥308是否存在于应用程序服务器255的内存高速缓冲存储器307中。如果发现主密钥308,那么所述过程可进行到框608,在框608处,使用主密钥308来对客户数据进行解密。在框610处,将经解密的客户数据传输给用户。

根据框606,如果应用程序服务器255无法在内存高速缓冲存储器307中发现主密钥308,那么需要派生主密钥308。这会要求应用程序服务器255从数据库270查询经加密的第一密钥片段302,如框612中所展示。第一密钥片段302先前已使用密钥释放492的公钥而加密。应用程序服务器255将经加密的第一密钥片段302传输到hsm服务器260并请求派生主密钥308。应用程序服务器255还可将其它信息传输到hsm服务器260。这可包含客户识别信息、密钥释放信息。

在框614处,hsm服务器260可从文件系统271查询第二密钥片段304。第二密钥片段304先前已使用密钥释放492的公钥而加密。

在框616处,可由hsm服务器260中的主密钥派生模块306(图3所展示)执行主密钥308的产生。主密钥派生模块306可使用经解密的第一密钥区段302和经解密的第二密钥区段304来派生主密钥308并将其存储在内存高速缓冲存储器307中。可通过使用hsm350的私钥和密钥释放492的对称密钥来获得经解密的第一密钥区段302和经解密的第二密钥区段304。所述过程接着继续到框608和框610,在框608处对客户数据进行解密,且在框610处将客户数据传输给客户。

图6b展示根据一些实施例而执行的用于对客户数据进行加密的实例过程的流程图。过程650可由应用程序服务器255(图2所展示)执行,并使用包含在密钥释放492(图4b所展示)和hsm350(图3c所展示)中的密钥加以描述。在框652处,由应用程序服务器255接收客户数据。在框654处,将客户数据存储在数据库270中。

在框656处,应用程序服务器255可检查以查明主密钥308是否存在于应用程序服务器255的内存高速缓冲存储器307中。如果发现主密钥308,那么所述过程可进行到框658,在框658处,使用主密钥308来对客户数据进行加密且将客户数据存储在数据库270中。

根据框656,如果应用程序服务器255无法在内存高速缓冲存储器307中发现主密钥308,那么需要派生主密钥308。这会要求应用程序服务器255从数据库270查询经加密的第一密钥片段302,如框660中所展示。第一密钥片段302先前已使用密钥释放492的公钥而加密。应用程序服务器255将经加密的第一密钥片段302传输到hsm服务器260并请求派生主密钥308。应用程序服务器255还可将其它信息传输到hsm服务器260。这可包含客户识别信息、密钥释放信息。

在框662处,hsm服务器260可从文件系统271查询第二密钥片段304。第二密钥片段304先前已使用密钥释放492的公钥而加密。

在框664处,可由hsm服务器260中的主密钥派生模块306(图3所展示)执行主密钥308的产生。主密钥派生模块306可使用经解密的第一密钥区段302和经解密的第二密钥区段304来派生主密钥308并将其存储在内存高速缓冲存储器307中。可通过使用hsm350的私钥和密钥释放492的对称密钥来获得经解密的第一密钥区段302和经解密的第二密钥区段304。所述过程接着继续到框658,在框658处,对客户数据进行加密。

图7a展示根据一些实施例而执行的用于执行加密的实例过程的流程图。过程700可由hsm服务器260(图2所展示)执行,并使用包含在密钥释放492(图4b所展示)和hsm350(图3c所展示)中的密钥加以描述。在框705处,由hsm服务器260接收密钥释放492中的密钥。密钥释放492中的密钥可能已由密码计算系统212(图2所展示)产生。在框710处,hsm服务器260可使用密钥释放492的公钥来对第一密钥片段302和第二密钥片段304(其与密钥释放492的密钥片段相同)进行加密并将其存储在文件系统271中。在框715处,hsm服务器260用密钥释放492的对称密钥来对密钥释放492的私钥进行加密并将其存储在文件系统271中。在框720处,hsm服务器260用hsm350的hsm公钥来对密钥释放492的对称密钥进行加密并将其存储在文件系统271中。

图7b展示根据一些实施例而执行的用于产生主密钥的实例过程的流程图。过程750可由hsm服务器260(图2所展示)执行,并使用包含在密钥释放492(图4b所展示)和hsm350(图3c所展示)中的密钥加以描述。

在框755处,hsm服务器260可接收对派生主密钥308的请求。所述请求可由应用程序服务器255发起。

在框760处,hsm服务器260可从应用程序服务器255接收经加密的第一密钥片段302和密钥释放信息。第一密钥片段302先前已使用密钥释放492的公钥而加密。hsm服务器260可从文件系统271检索经加密的第二密钥片段304。第二密钥片段304先前已使用密钥释放492的公钥而加密。

在框765处,hsm服务器260可从文件系统271检索密钥释放492的经加密的对称密钥。密钥释放492的经加密的对称密钥先前已使用hsm350的公钥351而加密。

在框770处,可接着使用hsm350的私钥352来对密钥释放492的对称密钥进行解密。

在框775处,可使用密钥释放492的经解密的对称密钥来对密钥释放492的私钥进行解密。密钥释放492的私钥先前已使用密钥释放492的对称密钥而加密。

在框780处,可使用密钥释放492的经解密的私钥来对第一密钥片段302和第二密钥片段304进行解密。第一密钥片段302和第二密钥片段304先前已使用密钥释放492的公钥而加密。

在框785处,可接着由主密钥派生模块306使用经解密的第一密钥片段302和经解密的第二密钥片段304来派生主密钥308。

图8a展示根据一些实施例的说明点播业务环境的架构组件的系统图800。位于云804(或因特网)中的客户机可经由一个或多个边缘路由器808和812而与点播业务环境通信。边缘路由器可经由防火墙816而与一个或多个核心交换机820和824通信。核心交换机可与负载均衡器828通信,负载均衡器828可在例如舱(pod)840和844的不同舱上分布服务器负载。可各自包含一个或多个服务器和/或其它计算资源的舱840和844可执行数据处理和用于提供点播业务的其它操作。可经由舱交换机832和836来进行与舱的通信。点播业务环境的组件可经由数据库防火墙848和数据库交换机852而与数据库存储系统856通信。

如图8a和图8b所展示,访问点播业务环境可包括在多种不同硬件和/或软件组件之间传输的通信。另外,点播业务环境800是实际点播业务环境的简化表示。举例来说,虽然图8a和图8b中仅展示每种类型的一个或两个装置,但点播业务环境的一些实施例可包含每种类型的一个到多个装置。并且,点播业务环境无需包含图8a和图8b所展示的每个装置,或可包含图8a和图8b中未展示的额外装置。

此外,可在同一物理装置上或在不同硬件上实施点播业务环境800中的装置中的一个或多个。可使用硬件或硬件与软件的组合来实施一些装置。因此,如本文中所使用的例如“数据处理设备”、“机器”、“服务器”和“装置”的术语并不限于单个硬件装置,而是包含被配置成提供所描述功能性的任何硬件和软件。

云804意图是指一个数据网络或多个数据网络,常常包含因特网。位于云804中的客户机可与点播业务环境通信以访问由点播业务环境提供的业务。举例来说,客户机可访问点播业务环境以检索、存储、编辑和/或处理信息。

在一些实施例中,边缘路由器808和812在云804与点播业务环境800的其它组件之间路由数据包。边缘路由器808和812可采用边界网关协议(bgp)。bgp是因特网的核心路由协议。边缘路由器808和812可维持指定因特网上的自治系统之间的网络可达性的ip网络或‘前缀’的表。

在一个或多个实施例中,防火墙816可保护点播业务环境800的内部组件免于因特网流量。防火墙816可基于一组规则和其它准则而阻止、准许或拒绝访问点播业务环境800的内部组件。防火墙816可充当数据包筛选器、应用程序网关、状态筛选器、代理服务器或任何其它类型的防火墙中的一个或多个。

在一些实施例中,核心交换机820和824是在点播业务环境800内传送数据包的大容量交换机。核心交换机820和824可被配置为在点播业务环境内的不同组件之间快速地路由数据的网络桥。在一些实施例中,两个或多于两个核心交换机820和824的使用可提供冗余和/或减小时延。

在一些实施例中,舱840和844可执行核心数据处理和由点播业务环境提供的业务功能。每个舱可包含各种类型的硬件和/或软件计算资源。参考图8b更详细地论述舱架构的实例。

在一些实施例中,可经由舱交换机832和836来进行舱840与舱844之间的通信。舱交换机832和836可例如经由核心交换机820和824来促进舱840和844与位于云804中的客户机之间的通信。并且,舱交换机832和836可促进舱840和844与数据库存储装置856之间的通信。

在一些实施例中,负载均衡器828可将工作负载分布在舱840与舱844之间。在舱之间均衡点播业务请求可辅助改进资源的使用、增加吞吐量、减少响应时间和/或减少开销。负载均衡器828可包含多层交换机以分析和转发流量。

在一些实施例中,对数据库存储装置856的访问可由数据库防火墙848防护。数据库防火墙848可充当在协议堆栈的数据库应用程序层处操作的计算机应用程序防火墙。数据库防火墙848可保护数据库存储装置856免于应用程序攻击,例如结构查询语言(sql)注入、数据库恶意软件(rootkit)和未授权信息公开。

在一些实施例中,数据库防火墙848可包含使用一种或多种形式的反向代理业务以在将流量传递到网关路由器之前代理流量的主机。数据库防火墙848可检视数据库流量的内容并阻止某些内容或数据库请求。数据库防火墙848可在tcp/ip堆栈顶上的sql应用程序级上工作,从而管理应用程序到数据库或sql管理接口的连接,以及拦截数据包且强迫其行进到数据库网络或应用程序接口或从数据库网络或应用程序接口行进。

在一些实施例中,可经由数据库交换机852来进行与数据库存储系统856的通信。多租户数据库系统856可包含多于一个硬件和/或软件组件以用于处置数据库查询。因此,数据库交换机852可将由点播业务环境的其它组件(例如舱840和844)传输的数据库查询引导到数据库存储系统856内的正确组件。在一些实施例中,数据库存储系统856是由许多不同组织共享的点播数据库系统。点播数据库系统可采用多租户途径、虚拟化途径,或任何其它类型的数据库途径。参考图9和图10更详细地论述点播数据库系统。

图8b展示根据一个实施例的说明舱844的架构的系统图。舱844可用于将业务呈现给点播业务环境800的用户。在一些实施例中,每个舱可包含多种服务器和/或其它系统。舱844包含一个或多个内容批处理服务器864、内容搜索服务器868、查询服务器872、fileforce服务器876、访问控制系统(acs)服务器880、批处理服务器884和应用程序服务器888。并且,舱844包含数据库实例890、快速文件系统(qfs)892和索引器894。在一个或多个实施例中,可经由交换机836来传输舱844中的服务器之间的一些或所有通信。

在一些实施例中,应用程序服务器888可包含专用于执行过程(例如程序、例程、脚本)的硬件和/或软件框架以用于支持由点播业务环境800经由舱844提供的应用程序的建构。一些此类过程可包含用于提供本文中所描述的业务的操作。内容批处理服务器864可在舱内部的请求。这些请求可以长时间运行,和/或不与特定客户相联系。举例来说,内容批处理服务器864可处置与日志挖掘、清除工作和维护任务相关的请求。

内容搜索服务器868可提供查询和索引器功能。举例来说,由内容搜索服务器868提供的功能可允许用户搜索存储在点播业务环境中的内容。fileforce服务器876可管理存储在fileforce存储装置878中的请求信息。fileforce存储装置878可存储例如文献、图像和基本大型对象(blob)的信息。通过使用fileforce服务器876来管理对信息的请求,可减小数据库上的图像覆盖面积。

可使用查询服务器872来从一个或多个文件系统检索信息。举例来说,查询系统872可从应用程序服务器888接收对信息的请求,且接着将信息查询传输到位于舱外部的nfs896。舱844可共享被配置为多租户环境的数据库实例890,在所述多租户环境中,不同组织共享对同一数据库的访问。另外,由舱844呈现的业务可能需要各种硬件和/或软件资源。在一些实施例中,acs服务器880可控制对数据、硬件资源或软件资源的访问。

在一些实施例中,批处理服务器884可处理批处理工作,所述批处理工作用于在指定时间运行任务。因此,批处理服务器884可将指令传输到例如应用程序服务器888的其它服务器以触发批处理工作。在一些实施例中,qfs892可以是可从加利福尼亚州圣克拉拉的sunmicrosystems®得到的开放源文件系统。qfs可充当快速访问文件系统以用于存储并访问在舱844内可用的信息。qfs892可支持一些卷管理能力,从而允许将许多磁盘一起分组成文件系统。可将文件系统元数据保持在一组单独的磁盘上,这可适用于流式处理不能容许长时间磁盘寻道的应用程序。因此,qfs系统可与一个或多个内容搜索服务器868和/或索引器894通信以识别、检索、移动和/或更新存储在网络文件系统896和/或其它存储系统中的数据。

在一些实施例中,一个或多个查询服务器872可与nfs896通信以检索和/或更新存储在舱844外部的信息。nfs896可允许位于舱844中的服务器访问信息,从而以类似于访问本地存储装置的方式经由网络来访问文件。在一些实施例中,可经由负载均衡器820将来自查询服务器822的查询传输到nfs896,负载均衡器820可经由在点播业务环境中可用的各种资源来分布资源请求。nfs896还可与qfs892通信以更新存储在nfs896上的信息和/或将信息提供到qfs892以供位于舱844内的服务器使用。

在一些实施例中,舱可包含一个或多个数据库实例890。数据库实例890可将信息传输到qfs892。当将信息传输到qfs时,所述信息可供舱844内的服务器使用而无需额外的数据库调用。在一些实施例中,可将数据库信息传输到索引器894。索引器894可提供在数据库890和/或qfs892中可用的信息的索引。可将索引信息提供到fileforce服务器876和/或qfs892。

图9展示根据一些实施例的可使用点播数据库业务的环境910的框图。环境910包含点播数据库业务916。用户系统912可以是由用户用来访问数据库用户系统的任何机器或系统。举例来说,用户系统912中的任一个可以是手持式计算系统、移动电话、笔记本电脑、工作站,和/或计算系统的网络。如图9和图10所说明,用户系统912可经由网络914而与点播数据库业务916交互。

例如系统916的点播数据库业务是如下所述的数据库系统:所述数据库系统可用于不必牵涉到构建和/或维持所述数据库系统的外部用户,但实际上在所述用户需要所述数据库系统时可供所述用户使用(例如按所述用户的需求)。一些点播数据库业务可将来自所存储的一个或多个租户的信息存储到共同数据库图像的表中以形成多租户数据库系统(mts)。因此,“点播数据库业务916”和“系统916”将在本文中可互换地使用。数据库图像可包含一个或多个数据库对象。关系数据库管理系统(rdbms)或等效物可对照数据库对象执行信息的存储和检索。应用程序平台918可以是允许系统916的应用程序运行的框架,例如硬件和/或软件,例如操作系统。在实施方案中,点播数据库业务916可包含应用程序平台918,应用程序平台918实现创建、管理和执行由点播数据库业务的提供者、经由用户系统912访问点播数据库业务的用户或经由用户系统912访问点播数据库业务的第三方应用程序开发者开发的一个或多个应用程序。

图9中展示用于系统916的元件的一个布置,包含网络接口920、应用程序平台918、用于租户数据923的租户数据存储装置922、用于可由系统916和可能多个租户访问的系统数据925的系统数据存储装置924、用于实施系统916的各种功能的程序代码926,以及用于执行mts系统过程和租户特定过程(例如运行应用程序作为应用程序托管业务的部分)的过程空间928。可在系统916上执行的额外过程包含数据库标引过程。

用户系统912的用户在其相应容量方面可能不同,且特定用户系统912的容量可完全由当前用户的权限(权限级别)确定。举例来说,在呼叫中心代理人正使用特定用户系统912来与系统916交互的情况下,用户系统912的容量被分配给所述呼叫中心代理人的容量。然而,在管理员使用正所述用户系统来与系统916交互时,所述用户系统的容量被分配给所述管理员。在具有层次型典范的系统中,处于一个权限级别的用户可能能够访问可由较低权限级别的用户访问的应用程序、数据和数据库信息,但可能不能够访问可由处于较高权限级别的用户访问的某些应用程序、数据库信息和数据。因此,取决于用户的安全或权限级别,不同用户可具有关于访问和修改应用程序和数据库信息的不同能力。

网络914是彼此通信的装置的任何网络或网络组合。举例来说,网络914可以是以下中的任何一个或其任何组合:局域网(lan)、广域网(wan)、电话网、无线网络、点对点网络、星形网络、令牌环网、中枢网或其它适当配置。因为当前使用的最常见类型的计算机网络是传送控制协议和因特网协议(tcp/ip)网络(例如因特网),所以所述网络将用于本文中的许多实例中。然而,应理解,尽管tcp/ip是经常实施的协议,但在一些实施例中所使用的网络并不受到如此限制。

用户系统912可使用tcp/ip而与系统916通信,且在较高网络级别下使用其它常见因特网协议来通信,所述常见因特网协议是例如http、ftp、afs、wap等等。在使用http的实例中,用户系统912可包含用于将http消息发送到系统916处的http服务器和从系统916处的http服务器接收http消息的http客户端,通常被称作“浏览器”。此类http服务器可被实施为系统916与网络914之间的单独网络接口,但同样或代替地可使用其它技术。在一些实施例中,系统916与网络914之间的接口包含负载共享功能性,例如用于均衡负载并在多个服务器上均匀地分布传入的http请求的轮循机制http请求分布器。至少对于正访问所述服务器的用户来说,多个服务器中的每一个能够访问mts的数据;然而,代替地可使用其它替代配置。

在一些实施例中,图9所展示的系统916实施基于网站的客户关系管理(crm)系统。举例来说,在一些实施例中,系统916包含应用程序服务器,所述应用程序服务器被配置成实施并执行crm软件应用程序以及将相关数据、代码、表单、网页和其它信息提供到用户系统912和从用户系统912提供相关数据、代码、表单、网页和其它信息,且被配置成将相关数据、对象和网页内容存储到数据库系统和从数据库系统检索相关数据、对象和网页内容。就多租户系统来说,用于多个租户的数据可存储在同一物理数据库对象中,然而,租户数据通常被布置成使得一个租户的数据保持与其它租户的数据逻辑地分开,使得一个租户不能够访问另一租户的数据,除非此类数据被明确地共享。在某些实施例中,系统916实施不同于crm应用程序或除crm应用程序之外的应用程序。举例来说,系统916可向租户提供对多个被托管(标准和自定义)应用程序的访问。可能包含或可能不包含crm的用户(或第三方开发者)应用程序可由应用程序平台918支持,应用程序平台918管理以下操作:创建应用程序,将应用程序存储到一个或多个数据库对象中,以及在系统916的过程空间中的虚拟机中执行应用程序。

每个用户系统912可包含台式个人计算机、工作站、笔记本电脑、pda、蜂窝电话,或任何启用无线访问协议(wap)的装置,或能够直接或间接介接到因特网或其它网络连接的任何其它计算系统。用户系统912通常在蜂窝电话、pda或其它无线装置等等的情况下运行http客户端,例如浏览程序,例如微软的internetexplorer®浏览器、mozilla的firefox®浏览器、opera的浏览器,或启用wap的浏览器,从而允许用户系统912的用户(例如多租户数据库系统的订户)经由网络914从系统916访问、处理并查看所述用户可用的信息、页面和应用程序。

每个用户系统912还通常包含一个或多个用户接口装置,例如键盘、鼠标、轨迹球、触摸板、触摸屏、手写笔等等,以用于结合由系统916或其它系统或服务器提供的页面、表单、应用程序和其它信息而在显示器(例如监视器屏幕、lcd显示器等等)上与由浏览器提供的图形用户界面(gui)交互。举例来说,用户接口装置可用于访问由系统916托管的数据和应用程序以及对经存储数据执行搜索,且以其它方式允许用户与可呈现给用户的各种gui页面交互。如上文所论述,实施例适合供因特网使用,因特网是指网络的特定全球互联网。然而,应理解,可使用其它网络来代替因特网,例如内联网、外联网、虚拟专用网(vpn)、非基于tcp/ip的网络、任何lan或wan等等。

根据一些实施例,操作者可使用例如浏览器的应用程序来配置每个用户系统912和其所有组件,所述应用程序包含使用例如intelpentium®处理器等等的中央处理单元而运行的计算机代码。类似地,操作者可使用应用程序来配置系统916(和mts的额外实例,其中存在多于一个mts)和其所有组件,所述应用程序包含使用例如处理器系统917的中央处理单元和/或多个处理器单元而运行的计算机代码,所述中央处理单元可包含intelpentium®处理器等等。

计算机程序产品实施方案包含机器可读存储媒体,其上/其中存储有可用于对计算机编程以执行本文中所描述的实施例的过程中的任一个的指令。优选地下载用于操作和配置系统916以相互通信并处理如本文中所描述的网页、应用程序以及其它数据和媒体内容的计算机代码并将其存储在硬盘上,但整个程序代码或其部分还可存储在例如rom或ram的任何其它易失性或非易失性存储器媒体或装置中,或提供在能够存储程序代码的任何媒体上,所述媒体是例如任何类型的旋转媒体,包含软盘、光盘、数字多功能光盘(dvd)、紧凑光盘(cd)、微型驱动器和磁光盘,以及磁卡或光卡、纳米系统(包含分子存储器ic),或适合于存储指令和/或数据的任何类型的媒体或装置。另外,可使用任何通信媒体和协议(例如tcp/ip、http、https、以太网等等)经由传输媒体(例如经由因特网或从另一服务器)从软件安装源传输并下载或经由任何其它常规网络连接(例如外联网、vpn、lan等等)传输整个程序代码或其部分。还将了解,可以可在客户端系统和/或服务器或服务器系统上执行的任何编程语言来实施用于实施实施例的计算机代码,所述编程语是例如c、c++、html、任何其它标记语言、java™、javascript®、activex®、例如vbscript的任何其它脚本语言,且可使用众所周知的许多其它编程语言。(java™是sunmicrosystems®公司的商标)。

根据一些实施例,每个系统916被配置成将网页、表单、应用程序、数据和媒体内容提供到用户(客户端)系统912以支持由用户系统912作为系统916的租户而进行的访问。因而,系统916提供安全机构以使每个租户的数据保持分开,除非数据被共享。如果使用多于一个mts,那么所述mts可彼此极接近(例如在位于单个建筑或校园中的服务器集群中),或所述mts可分布在彼此远离的位置处(例如一个或多个服务器位于城市a,且一个或多个服务器位于城市b)。如本文中所使用,每个mts可包含在本地或横越一个或多个地理位置而分布的逻辑和/或物理连接的服务器。另外,术语“服务器”意指包含计算系统(包含处理硬件和过程空间)以及关联存储系统和数据库应用程序(例如oodbms或rdbms),这在所属领域中是众所周知的。

还应理解,“服务器系统”和“服务器”常常在本文中可互换地使用。类似地,本文中所描述的数据库对象可被实施为单数据库、分布式数据库、分布式数据库的集合、具有冗余联机或脱机备份或其它冗余的数据库等等,且可包含分布式数据库或存储网络和关联处理智能。

图10还展示根据一些实施例的进一步说明系统916和各种互连件的环境910的框图。图10展示用户系统912可包含处理器系统912a、存储器系统912b、输入系统912c和输出系统912d。图10展示网络914和系统916。图10还展示系统916可包含租户数据存储装置922、租户数据923、系统数据存储装置924、系统数据925、用户接口(ui)1030、应用程序接口(api)1032、pl/soql1034、保存例程1036、应用程序设置机构1038、应用程序服务器10001到1000n、系统过程空间1002、租户过程空间1004、租户管理过程空间1010、租户存储区域1012、用户存储装置1014和应用程序元数据1016。在其它实施例中,环境910可能不具有与上文所列出的那些元件相同的元件,和/或可具有代替上文所列出的那些元件或除上文所列出的那些元件之外的其它元件。

上文已在图9中论述用户系统912、网络914、系统916、租户数据存储装置922和系统数据存储装置924。关于用户系统912,处理器系统912a可以是处理器的任何组合。存储器系统912b可以是一个或多个存储器装置、短期存储器和/或长期存储器的任何组合。输入系统912c可以是输入装置的任何组合,所述输入装置是例如键盘、鼠标、轨迹球、扫描仪、相机和/或到网络的接口。输出系统912d可以是输出装置的任何组合,所述输出装置是例如监视器、打印机和/或到网络的接口。如图10所展示,系统916可包含(图9的)网络接口920,网络接口920被实施为一组http应用程序服务器1000、应用程序平台918、租户数据存储装置922和系统数据存储装置924。还展示系统过程空间1002,其包含个别租户过程空间1004和租户管理过程空间1010。每个应用程序服务器1000可被配置为租户数据存储装置922和其中的租户数据923以及系统数据存储装置924和其中的系统数据925以为用户系统912的请求服务。可将租户数据923划分成个别租户存储区域1012,租户存储区域1012可以是数据的物理布置和/或逻辑布置。在每个租户存储区域1012内,可对于每个用户类似地分配用户存储装置1014和应用程序元数据1016。举例来说,可将用户的最近使用(mru)项目的副本存储到用户存储装置1014。类似地,可将用于作为租户的整个组织的mru项目的副本存储到租户存储区域1012。ui1030提供用户接口,且api1032将到系统916驻留过程的应用程序员接口提供给用户系统912处的用户和/或开发者。租户数据和系统数据可存储在例如oracle™数据库的各种数据库中。

应用程序平台918包含应用程序设置机构1038,应用程序设置机构1038支持应用程序开发者创建并管理应用程序,所述应用程序可作为元数据而由保存例程1036保存到租户数据存储装置922中,以作为例如由租户管理过程1010管理的租户过程空间1004而供订户执行。可使用提供对api1032的编程语言样式接口扩展的pl/soql34来对此类应用程序的调用进行编码。2007年9月21日申报的克雷格魏斯曼的标题为“用于允许经由多租户点播数据库业务来访问所开发的应用程序的方法和系统(methodandsystemforallowingaccesstodevelopedapplicationsviaamulti-tenanton-demanddatabaseservice)”的共同转让的第7,730,478号美国专利中论述一些pl/soql语言实施例的详细描述,所述美国专利特此以全文引用的方式且出于所有目的而并入本文中。可通过系统过程来检测对应用程序的调用,所述系统过程达成以下操作:检索用于订户的应用程序元数据1016,进行调用,以及将元数据作为虚拟机中的应用程序而执行。

每个应用程序服务器1000可以经由不同的网络连接而以可通信方式耦合到数据库系统,例如能够访问系统数据925和租户数据923。举例来说,一个应用程序服务器10001可经由网络914(例如因特网)而耦合,另一应用程序服务器1000n-1可经由直接网络链路而耦合,且另一应用程序服务器1000n可通过又一不同的网络连接而耦合。传送控制协议和因特网协议(tcp/ip)是用于在应用程序服务器1000与数据库系统之间通信的典型协议。然而,可取决于所使用的网络互连件而使用其它传输协议来优化系统。

在某些实施例中,每个应用程序服务器1000被配置成处置对与作为租户的任何组织相关联的任何用户的请求。因为需要能够在任何时间出于任何原因而从服务器池添加和去除应用程序服务器,所以用户和/或组织与特定应用程序服务器1000优选地不存在服务器亲合性。因此,在一些实施例中,将实施负载均衡功能的接口系统(例如f5big-ip负载均衡器)以可通信方式耦合在应用程序服务器1000与用户系统912之间以将请求分布到应用程序服务器1000。在一些实施例中,负载均衡器使用最少连接算法(leastconnectionsalgorithm)来将用户请求路由到应用程序服务器1000。还可使用负载均衡算法的其它实例,例如轮循机制和观察响应时间。举例来说,在某些实施例中,来自同一用户的三个连续请求可命中三个不同应用程序服务器1000,且来自不同用户的三个请求可命中同一应用程序服务器1000。以此方式,系统916是多租户的,其中系统916处置横越不同用户和组织的不同对象、数据和应用程序的存储和对所述不同对象、数据和应用程序的访问。

作为存储的实例,一个租户可以是雇用销售人员的公司,其中每个呼叫中心代理人使用系统916来管理其销售过程。因此,用户可维持联系人数据、销售线索数据、客户跟踪数据、性能数据、目标和进展数据等等,所有所述数据都适用于所述用户的个人销售过程(例如在租户数据存储装置922中)。在mts布置的实例中,由于可由仅仅具有网络访问的用户系统维持和访问用以进行访问、查看、修改、报告、传输、计算等等的所有数据和应用程序,故用户可根据许多不同用户系统中的任一个来管理他或她的销售工作和周期。举例来说,如果呼叫中心代理人正拜访客户且所述客户在其门厅具有因特网访问,那么呼叫中心代理人可在等待所述客户到达门厅时获得关于关于所述客户的关键更新。

虽然每个用户的数据可与其它用户的数据分开而不管每个用户的雇主,但一些数据可以是全组织数据共享的,或可由作为租户的给定组织的多个用户或所有用户访问。因此,可存在由系统916管理的一些数据结构,所述数据结构在租户级下被管理,而其它数据结构可在用户级下被管理。因为mts可支持包含可能的竞争者的多个租户,所以mts应具有使数据、应用程序和应用程序用途保持分开的安全协议。并且,因为许多租户可选择访问mts而非维持其自己的系统,所以冗余、正常运行时间和备份是可实施在mts中的额外功能。除用户特定数据和租户特定数据之外,系统916还可维持可由多个租户使用的系统级数据,或其它数据。此类系统级数据可包含可在租户之间共享的行业报告、新闻、过帐等等。

在某些实施例中,用户系统912(其可以是客户机/系统)与应用程序服务器1000通信以请求并更新来自系统916的系统级和租户级数据,系统916可能需要将一个或多个查询发送到租户数据存储装置922和/或系统数据存储装置924。系统916(例如系统916中的应用程序服务器1000)自动地产生被设计成访问所要信息的一个或多个sql语句(例如sql查询)。系统数据存储装置924可产生查询计划以从数据库访问所请求的数据。

每个数据库可大体上被视为对象的集合,例如一组逻辑表,所述逻辑表含有符合于预定义类别的数据。“表”是数据对象的一种表示,且可在本文中用于根据一些实施例来简化对象和自定义对象的概念描述。应理解,“表”和“对象”在本文中可互换地使用。每个表大体上含有被逻辑地布置为可查看架构中的列或字段的一个或多个数据类别。表的每一行或记录含有用于由字段定义的每个类别的数据的实例。举例来说,crm数据库可包含用基本联系人信息的字段来描述客户的表,所述基本联系人信息是例如姓名、地址、电话号码、传真号码等等。另一表可描述采购订单,包含信息字段,例如客户、产品、售价、日期等等。在一些多租户数据库系统中,可提供标准实体表以供所有租户使用。对于crm数据库应用程序,此类标准实体可包含帐户、联系人、销售线索和机会数据的表,每个表含有预定义字段。应理解,词语“实体”还可在本文中与“对象”和“表”可互换地使用。

在一些多租户数据库系统中,可允许租户创建和存储自定义对象,或可允许租户例如通过对标准对象创建自定义字段(包含自定义索引字段)而自定义标准实体或对象。魏斯曼等人的标题为“多租户数据库系统中的自定义实体和字段(customentitiesandfieldsinamulti-tenantdatabasesystem)”的第7,779,039号美国专利教示用于在多租户数据库系统中创建自定义对象以及自定义标准对象的系统和方法,所述美国专利特此以全文引用的方式且出于所有目的而并入本文中。在一些实施例中,举例来说,所有自定义实体数据行存储在单个多租户物理表中,所述单个多租户物理表可含有每组织多个逻辑表。在一些实施例中,用于单个客户的多个“表”实际上可存储在一个大表中和/或与其它客户的数据存储在同一表中。

本公开的这些和其它方面可由各种类型的硬件、软件、固件等等实施。举例来说,本公开的一些特征可至少部分地由包含用于执行本文中所描述的各种操作的程序指令、状态信息等等的机器可读媒体实施。程序指令的实例包含例如由编译器产生的机器代码和含有可由计算机使用解释器执行的较高级别代码的文件两者。机器可读媒体的实例包含但不限于:磁性媒体,例如硬盘、软盘和磁带;光学媒体,例如cd-rom光盘;磁光媒体;以及被特定地配置成存储并执行程序指令的硬件装置,例如只读存储器装置(“rom”)和随机存取存储器(“ram”)。

虽然参考在具有针对能够支持多个租户的点播数据库业务提供前端的应用程序服务器的系统中实施业务云控制台的实施方案而描述一个或多个实施例和技术,但所述一个或多个实施例和技术并不限于多租户数据库,也不限于对应用程序服务器的部署。在不脱离所要求的实施例的范围的情况下,可使用其它数据库架构(即,oracle®、ibm的db2®等等)来实践实施例。

以上实施例中的任一个可以单独地使用或以任何组合而彼此一起使用。尽管可能已因可在本说明书中的一处或多处论述或暗指的现有技术的各种缺陷而促成各种实施例,但所述实施例未必处理这些缺陷中的任一个。换句话说,不同实施例可处理可在本说明书中论述的不同缺陷。一些实施例可能仅部分地处理一些缺陷或仅仅处理可在本说明书中论述的一个缺陷,且一些实施例可能不会处理这些缺陷中的任一个。

虽然本文中已描述各种实施例,但应理解,这些实施例是仅借助于实例而非限制予以呈现。因此,本申请的广度和范围不应受到本文中所描述的实施例中的任一实施例限制,而应仅根据以下且稍后提交的权利要求书和其等效物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1