基于云存储的数据优化调度方法与流程

文档序号:11234695阅读:447来源:国知局

本发明涉及分布式存储,特别涉及一种基于云存储的数据优化调度方法。



背景技术:

在云计算服务模式下,租户将数据和应用托管至云平台,云服务的透明性使租户失去对数据的控制,由于服务器可信性不易评估,因此,数据安全问题成为云平台下租户的首要担忧。云计算是根据租户的服务请求对数据进行相关操作,因此,租户和云之间的身份认证是保证数据不被非法租户冒名访问的前提。租户通过身份认证后,可以使用云提供的数据存储和计算服务。租户将大量数据存储到云平台并委托服务器对数据进行计算,本地并不存储数据的副本,当租户发现数据完整性被破坏时,只能寄希望于服务器的灾备机制。对于在计算服务中的动态数据,由于云计算具有多租户的特点,租户通过服务进程对数据访问和计算,共享访问的进程载体成为权限的集中点,共享漏洞威胁需采取针对租户维度的权限隔离机制。如果发生了数据安全事件,租户如何对服务器追踪是一个关键问题,目前的机制需要云服务的细节,较难实现。另外由于缺乏可信基础机制,安全机制可能被攻击、篡改,无法发挥作用。



技术实现要素:

为解决上述现有技术所存在的问题,本发明提出了一种基于云存储的数据优化调度方法,包括:

对云计算平台中的部分节点进行可信重构,基于外接可信智能卡和安全hypervisor建立信任传递机制,保证云计算平台上部署的其它安全模块具有可信的执行环境;

云平台根据租户的身份及其所需的服务,为租户定制服务使用策略,一旦租户通过身份认证,则按照预定义安全策略使用云服务;

对于计算任务,云平台接口将租户计算任务的描述文件提交给集群控制器,当集群控制器将虚拟机镜像文件调度到不可信节点时,如果租户虚拟机镜像文件被加密,则禁止开启租户虚拟机;

对于数据存储或操作任务,云平台接口将租户存储任务的描述文件交给存储控制器;存储控制器对数据服务器发送指令,进行数据的存储、取回或读写;租户将数据存储至云平台之前,首先利用云存储系统的分布式存储模块对数据进行预处理,当租户要确认云中存储数据的安全性时,再次调用分布式存储模块来验证。

优选地,所述方法还包括:对动态数据的计算任务,集群控制器根据各主节点的资源状态信息将任务分散调度到空闲的主节点上,由云存储系统的软件虚拟化模块防止动态数据的隐私性和完整性被破坏。

优选地,所述安全云存储系统包括tpm计算平台,所述tpm计算平台由外接可信智能卡为起点对服务器的节点建立信任链,构建基于虚拟化架构计算平台,为认证、数据保护的执行提供可信基础。

优选地,所述安全云存储系统还包括跨域认证模块,用于基于已有的租户身份证书和私有云来实现租户与公有云的双向认证。

优选地,所述安全云存储系统的分布式存储模块,用于提供对静态存储数据的完整性验证和数据恢复功能,并在数据泄露时追踪发生泄露的服务器。

优选地,所述安全云存储系统的软件虚拟化模块用于通过追踪应用程序中的隐私数据、操作系统中的隐私文件,实现对租户动态数据的保护。

优选地,所述安全云存储系统还包括身份管理agent,用于与tpm计算平台的节点进行交互,对可信节点的身份进行管理,并对租户身份信息进行管理和保护。

本发明相比现有技术,具有以下优点:

本发明提出了一种基于云存储的数据优化调度方法,为数据安全存储机制的正确执行提供了保障。

附图说明

图1是根据本发明实施例的基于云存储的数据优化调度方法的流程图。

具体实施方式

下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。

本发明的一方面提供了一种基于云存储的数据优化调度方法。图1是根据本发明实施例的基于云存储的数据优化调度方法流程图。

本发明的方法通过为租户提供全面的数据安全保护的安全云存储系统来实现,首先构建基于安全机制的tpm计算平台,在该平台之上对租户对数据的访问进行安全高效的身份认证,提供对存储的数据的保护机制和验证机制,并且提供多租户之间细粒度的数据隔离和控制。为标记体系和数据流规则进行形式化建模、数据对象标记和追踪控制的实现机制。在代码层,实现符合安全策略的执行点定位和监控;在操作系统层,基于统一的安全策略模型提供对上层应用的支撑,将租户信息作为应用上下文语义传递至操作系统层,实现了细粒度的数据控制和保护。

安全云存储系统包括tpm计算平台、跨域认证模块、分布式存储模块、软件虚拟化模块以及身份管理agent。首先由外接可信智能卡为起点对服务器的节点建立信任链,构建基于虚拟化架构的tpm计算平台,为认证、数据保护的执行提供可信基础;跨域认证模块基于已有的租户身份证书和私有云,实现租户与公有云的双向认证;分布式存储模块提供对静态存储数据的完整性验证和数据恢复功能,并在数据泄露时追踪发生泄露的服务器;软件虚拟化模块通过追踪应用程序中的隐私数据、操作系统中的隐私文件,实现对租户动态数据的保护;身份管理agent与tpm计算平台的节点进行交互,对可信节点的身份进行管理,并对租户身份信息进行管理和保护。

云平台根据租户的身份及其所需的服务,为租户定制服务使用策略,一旦租户通过身份认证,则按照预定义安全策略使用云服务。服务器首先对云计算平台中的部分节点进行可信重构,基于外接可信智能卡和安全hypervisor建立信任传递机制,保证云计算平台上部署的其它安全模块具有可信的执行环境,不会被恶意代码破坏。以下结合租户使用服务的流程,说明安全云存储系统的工作流程:

当租户要使用云服务时,输入口令进行身份认证,由跨域认证模块和身份管理agent实现租户和云之间的双向认证。

双向身份认证通过后,租户通过云平台接口提交自己的任务需求,当租户提交了任务需求后,该任务涉及到的对计算资源或存储资源的使用需要由租户策略服务器进行授权。如果租户任务的所有操作均被允许,则根据服务请求的类型分别进行处理。对于计算任务,云平台接口将对租户计算任务的描述文件提交给集群控制器,由于租户虚拟机镜像文件被加密,即使集群控制器将虚拟机镜像文件调度到不可信节点,也无法开启租户虚拟机。对于数据存储或操作任务,云平台接口将租户存储任务的描述文件交给存储控制器。

对存储或访问静态数据的任务,存储控制器对数据服务器发送指令,进行数据的存储、取回或读写等操作。租户将数据存储至云平台之前,首先利用分布式存储模块对数据进行预处理。当租户要确认云中存储数据的安全性时,再次调用分布式存储模块来验证。

对动态数据的计算任务,集群控制器将根据各主节点的资源状态信息将任务分散调度到空闲的主节点上,并负责网络的配置,计算任务下发后,数据在虚拟机中被计算,软件虚拟化模块防止动态数据的隐私性和完整性被云应用安全漏洞或其他恶意租户破坏。

对于可信重构,采用智能卡设备作为可信平台控制模块,为可信计算功能提供了硬件基础。多系统引导装载程序在引导前,对xen的源码和dom0的源码进行编译。在加载xen形式的vmm时,多系统引导装载程序将顺序执行如下的命令,包括设置根设备,装载vmm系统内核映像,为dom0的内核映射装载一个初始的ramdisk映像,并为宿主操作系统的安全区域设置初始参数,所执行的命令及顺序与配置文件中的一致。相关的设备驱动和配置文件都存储于所述ramdisk。为了实现vmm对应用软件可执行代码的度量,对hypervisor进行可信重构,增加程序执行检测模块。该模块提供了一组钩子函数接口,将度量功能实现为钩子函数,包括加载新程序并跳转执行,将要装入的可执行文件的路径名转换成该执行文件所在的索引节点,这样,内核函数直接使用索引节点到磁盘存取可执行文件。因此,程序执行检测模块将函数指针指向实现度量功能的钩子函数,在可执行文件要加载前,钩子函数被调用从而产生相应的度量值,度量验证的依据是可信程序列表。验证通过后,找到可执行代码文件的节点。然后装入可执行程序并运行。当租户可执行代码被篡改时,程序执行检测模块在加载时根据路径定位代码内容,并计算代码的散列值,计算所得的散列值与所述可信程序列表中的预期散列值不同,禁止对该进程的加载和运行。

跨域认证模块包括租户端认证模块、身份管理认证模块和云平台认证模块。租户使用跨域认证模块实现与云之间双向认证的流程描述如下:

在注册阶段,租户生成自己的口令,调用租户端认证模块生成口令验证原语,租户端认证模块将租户的身份id以及口令验证原语传递至身份管理认证模块,该模块将租户的身份信息与其口令验证原语绑定,存储在数据库中。

在认证阶段,当租户想要访问公有云时,首先调用租户端认证模块向云平台认证模块发送认证请求,认证请求中包含了其所属身份管理认证模块的身份。公有云生成自己的口令,调用云平台认证模块生成口令验证原语,云平台认证模块将云的身份id、口令验证原语以及前述租户的消息传递至租户所属身份管理认证模块,请求身份管理认证模块实现其与租户间的双向认证。身份管理认证模块收到云的协议消息后,对双方进行身份认证,并回复认证消息给云平台认证模块,由该模块验证租户身份的合法性。若云平台认证模块对租户的身份验证通过,则可获得正确的会话密钥,并回复认证消息给租户端认证模块。租户端认证模块验证云身份的合法性,云身份验证通过后,租户接受会话密钥。如果租户和云之间的双向认证通过,则双方之间建立一个共享会话密钥。租户和云服务提供商之间使用该会话密钥用于安全通信,该密钥只用于一次安全会话,以提高安全性。如果任一实体接收到一定数量恶意交互的内容后,将会将口令字禁用或锁定,防止攻击者进行试探。

分布式存储模块提供一般的文件存取接口和基本的容错能力,支持对数据的远程完整性证明并能够确定出错的数据区块;将数值型数据与服务器的身份绑定在一起,一旦发生数据泄露事故,可以追踪服务器。采用身份管理agent的认证服务器保护租户的身份信息,并生成身份验证码作为租户的存储凭证;在数据值型数据中嵌入租户的版权信息,在数据泄露时,通过租户版权信息对服务器进行追踪定位。

在分布式存储模块中,租户创建隐私文件库和版权数据库,对隐私文件库进行预处理,隐藏文件内容并实现文件的拆分和冗余存储,对版权数据库进行水印嵌入:以实现对数据版权的保护。基于两种类型的数据,将副本保护模块部署在客户端,完整性验证模块、追踪定位模块分别部署在客户端和云服务器端,文件存取模块部署在身份管理agent。副本保护模块将租户隐私文件进行拆分再冗余存储,保证文件在发生一定损坏时能够全部恢复。文件存取模块用于保护租户的身份信息,通过为租户生成存储凭证即存储认证码来防止外部攻击者获得更多的数据区块从而重构出租户的数据文件。租户侧的完整性验证模块生成对数据文件的公开验证标识,并在挑战应答协议中生成挑战值并发送至文件存取模块,收到返回的响应值后进行验证,输出完整性验证结果。在数据完整性被破坏时,利用租户为数据区块生成的文件名来确定错误区块。服务器侧的完整性验证模块,在挑战应答协议中生成对挑战值的响应,并将其返回给文件存取模块,还对确认错误区块的请求作为响应。租户侧的追踪定位模块与云平台追踪定位模块协商生成水印密钥,用于将版权数据库与服务器身份绑定,然后基于嵌入提取算法在租户的版权数据库中重复嵌入版权水印。

在数据预处理及存储流程中,对于隐私文件库,租户使用分布式存储模块对数据文件进行多副本的预处理,并将文件存储至云平台,具体流程如下:

step1租户将隐私文件分为k块,然后调用副本保护模块,生成要存储的n个数据区块以及区块的名称didi,副本保护模块将生成的数据区块名称传递至身份管理agent的文件存取模块。

step2身份管理agent的文件存取模块根据租户身份和数据区块名称信息生成该租户的存储认证码midi,并建立用户标示符uid和mid的映射表,将mid分别传递至租户和分布式存储服务器。

step3租户将midi和数据区块传递至分布式存储服务器,分布式存储服务器验证midi是否是合法的,如果合法,则将数据区块和midi写入隐私数据库表的相应列中。

对于版权数据库,租户调用分布式存储模块向数据库嵌入版权信息,并与服务器身份绑定,流程如下:

step1租户调用租户侧追踪定位模块与云平台追踪定位模块协商生成水印密钥(en,he),并将该密钥与服务器的身份绑定,租户将协商结果发送至远程可信机构备份。

step2租户调用租户侧追踪定位模块,基于原始水印和密钥,生成n个版权水印,将版权水印作为版权信息嵌入到数据库中,然后将版权数据库传递至云平台。

当租户要确认存储在云平台的数据是否完整时,完整性验证业务。流程如下:

step1租户生成数据文件的公开验证标识。

step2租户调用客户端完整性验证模块,生成一个挑战值,将挑战值和要验证的文件区块文件名didi传递至身份管理agent的文件存取模块。

step3文件存取模块查询得到数据区块的midi,将挑战值和midi传递至云平台完整性验证模块。

step4云平台完整性验证模块访问隐私数据库表获得租户数据区块,并根据挑战值计算响应值,将响应值和midi传递至身份管理agent的文件存取模块。

step5租户端完整性验证模块对响应值进行验证,如果通过,则一轮验证过程结束;如果未通过,可进行后续出错区块的确认过程。

step6如果完整性验证未通过,租户端完整性验证模块再次请求返回对didi的错误区块确认响应值,文件存取模块查询得到midi,要求服务器端完整性验证模块生成对midi对应数据内容的响应值,将该响应值返回租户端完整性验证模块。

step7租户基于响应值和自己预处理阶段生成didi中的参数,确认出错的数据区块,由租户下载未损坏的k个数据份额,调用副本保护模块重构得到数据文件。

如果租户发现文件泄露,则使用分布式存储模块确认该数据库存储在哪个服务器的基础设施,流程如下:

租户下载泄露的数据库文件,调用云平台追踪定位模块提取数据库文件中的版权水印,生成(en’,he’),对原始水印密钥(en,he)和(en’,he’)的相似度进行比较,如果相似度大于一定的阈值,则判定水印存在,确定服务器发生数据泄露。

在软件虚拟化模块中,数据流的源和目的实体的一方为主体线程,另外一方为是线程或数据对象,或是操作系统的抽象资源。

设线程p要读一个隐私文件f(文件的创建者为其分配安全标记),执行如下流程:

step1线程p对隐私数据d的读操作请求被隐私数据监控模块截获,判定上述操作是否符合数据流策略;

step2首先到指定位置的标记库中获取主体p(即其所在特许安全类的标记)和数据d的隐私性和完整性标记。

step3将标记发送至数据流策略判定执行模块并发送策略判定请求。

step4数据流策略判定模块获取主体线程p的能力;

step5基于数据d的标记,以及线程p的能力和标记进行数据流策略检测;

step6判定p要读一个隐私数据d的操作是否符合数据流规则,并返回策略判定结果。

最后,根据策略判定结果决定是否允许线程p读隐私数据d。

软件虚拟化模块还用于追踪租户的隐私数据,并根据安全策略控制数据的传递。一方面,软件虚拟化模块实现程序数据对象级别的细粒度标记和追踪,进程地址空间内不同租户的数据也能进行有效的追踪和隔离,即代码层的数据流控制。开发者只需将基于标记的策略以固定的程序结构添加到已有的应用中。代码要操作租户的隐私数据时,基于最小特权原则被赋予特定的主体权限,进行标记追踪及策略判定,只有符合安全策略才执行对隐私数据进行操作。另一方面,进行虚拟机操作系统层面的安全增强,提供对上层应用中与数据流控制相关api的支撑,将租户信息作为系统调用的参数传递至操作系统层,并对文件系统进行标记和保护,控制主体与系统资源间的数据传递。

在软件虚拟化模块中,被标记的对象包括java程序中的隐私数据对象、操作系统中的操作系统抽象资源以及主体线程。对象的隐私性和完整性标签建立后不允许变更,如果需要变更对象的标记,只能复制产生一个新的对象,并依照数据流约束规则为其分配变更后的安全标记。主体的标记可以变更,下面分别描述代码层和操作系统层数据流控制的工作原理。

本发明的方法基于java语言进行细粒度的标记和追踪。在jvm中加入代码层数据流控制机制,在进程的地址空间内执行安全策略,支持动态的类加载和多线程。当操作系统要设置相应的访问控制机制时,只允许jvm进程可以访问数据。

jvm内存中的栈区存储全部对象在内存分配时,某些隐私对象按照租户的策略被分配隐私性和完整性标记,栈对象的标记被定义数组类型。具有安全标记的对象存放在内存栈中的独立空间内,对象的头部中有指向其隐私性和完整性标记的指针。对象的标记在过程中是不可变更的,避免因为对象标记变更造成信息的隐蔽通道。本发明引入的代码层的数据流控制机制并不对所有的对象均进行标记,只在处理租户隐私数据的程序处加入标记和策略描述,将新增的标记和数据流控制策略以代码段的形式显式添加到已有的应用中,以控制线程与栈对象间以及栈对象间的数据传递,统称为特许安全类。

为了控制程序对标记数据的操作,在应用程序中进行相应的修改。在为对象分布栈内存时,添加设置标记的相关操作。对标记对象有读或写等操作时,要判断操作中的数据流向是否符合策略规则,只有符合安全策略的操作才被允许。

对于操作系统层的数据流控制,操作系统层对上层jvm提供与数据流控制相关的系统调用,将应用上下文传递至操作系统层,使操作系统线程能够根据细粒度的保护策略实现对数据的保护,在应用层和操作系统层实现统一的安全策略模型。

同一个租户对jvm中栈对象的标记和对操作系统资源的标记相互兼容,以使操作系统才能根据代码层的标记追踪提供支撑。操作系统资源抽象的标记是64位的整型值,存储在各种资源抽象的扩展属性域中。线程作为主体,具有对标记的添加或删除能力。操作系统将线程对于标记的能力集合存储在性能数据库中。

软件虚拟化模块对管道的消息缓冲区进行了标记,并对进程间的通信进行控制。只有进程的标记与管理消息缓冲区的标记之间符合数据传递规则时,才允许进程读管道中的数据或向管道中写数据。

为了使分布式文件存储支持安全数据流控制,在名字节点和数据节点上运行操作系统层。将隐私性和完整性标记写入结构体节点数据结构,将该数据结构存储在名字节点服务器上。然后在每个数据节点上将数据块所属文件的安全标记放入块的数据结构内。将分布式文件存储安全标记与本地安全标记存在的映射关系也存储在块的数据结构中。

客户端对文件的操作要依据预定义安全数据流控制策略。在创建标记文件时,对租户客户端来说,将数据存储到分布式文件系统,并提供文件的安全标记。当客户端创建一个标记文件时,需要执行以下流程:

step1客户端赋予存储这些文件的名字节点和数据节点某些能力集合,这些能力集合允许分布式文件存储节点创建标记文件,由名字节点在文件系统命名空间中创建该文件。

step2客户端向名字节点查询一个空区块,然后将数据流入该区块所在的数据节点。

step3数据节点收到客户端的数据后,将数据写入本地文件系统并通知名字节点。

step4如果名字节点要将区块复制到其他数据节点,则名字节点首先赋予这些节点相应的能力。

当有文件读写操作时,客户端首先与名字节点交互,由名字节点进行策略检测,如果客户端的标记与文件名的标记之间不符合数据传递的策略,则拒绝操作请求;如果标记间允许数据传递,则名字节点向客户端提供该文件所在数据节点的列表。数据节点在收到客户端的读写操作请求时也要对客户端的权限进行验证。

如果文件包括多个属性域,则为域标记与域名之间建立映射表,操作某个域的客户端只需具有对相应域标记的操作权限即可对标记数据进行访问和操作。一旦主体通过了云计算系统的身份认证,可执行操作包括:创建一个标签,同时也获得了对该标签的所有操作特权;赋予其他主体对于该标签的能力;在其能力范围内添加或删除对象的标签。

为使本发明达到较高安全性,在代码层模型中融入了最小特权,避免超级租户的误操作带来的安全隐患。此外,公共服务进程以当前租户的特权来处理其操作请求。当租户a提出对其隐私数据的操作时,该请求经由云计算系统中的安全通道被线程获得,该线程对所有租户均是授权的。该线程首先需要认证租户的身份,一旦认证了租户的身份,通过租户上下文信息,该线程将其权限传递为租户a主体的权限。一旦线程被主体授权执行对隐私数据的操作,则它具有对a的隐私数据标签t的双重能力,并能够将对t的能力赋予其它主体。如果代码中出现错误或者恶意攻击令线程读用户b的隐私数据,其隐私性标签为s,则判断线程的主体的能力,根据线程的主体不具备相关能力而禁止对用户b的隐私操作。

对隐私数据的操作完全封装在特许安全类中。特许安全类外部的线程无法获得对共享数据对象的内部指针,为了操作某个共享的隐私数据对象,当前线程必须通过显式授权获得相应的主体权限。当线程执行完成代码段中的操作后,必须显式撤销当前主体的权限,标记和能力集合恢复为空。另外,解密和加密这两种特权操作被限定在创建标签的主体其特许安全类中,以免造成对租户数据的破坏。

主体标记变换遵循数据传递规则的约束。新主体运行的特许安全类要嵌套在先前主体的特许安全类之中,而且主体之间的转换过程要遵循以下原则,即变换后的主体其标记和能力都不高于先前的主体。

如果特许安全类具有隐私性标记,则在特许安全类中被写的变量不能再被特许安全类外部的程序读。即该变量具有与特许安全类—致的隐私性标记,不能被不具备该隐私性标记的主体读取。如果特许安全类具有完整性标记,则在该特许安全类外部被写过的变量不能在该特许安全类中被读。换句话说,在特许安全类外部被写的变量,认为其完整性已经被破坏,不能流入完整性高的特许安全类。

代码层在出现内存栈对象读写操作的地方添加检测机制,在jvm实时运行时检测主体对数据对象的访问是否遵循安全数据流规则。在特许安全类内部,检测机制要加载被访问对象的隐私性和完整性标记,基于当前特许安全类的标记和能力,当前主体的标记和能力来判定对主体是否有权执行针对数据对象的访问操作。在特许安全类外部,检测机制要检测被访问的对象是否标记为空。

本地操作系统文件系统的标记与分布式文件存储之间存在的映射关系存储在文件区块的结构体信息中。

除了对操作系统抽象进行标记之外,操作系统层还对上层与数据流控制相关的api提供相应的系统调用。将租户权限的应用语义作为系统调用的参数传递至操作系统层,使线程获得特许安全类中特定主体的权限,就能以该主体的权限执行细粒度的数据传递控制。

综上所述,本发明提出了一种基于云存储的数据优化调度方法,为数据安全存储机制的正确执行提供了保障。

显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

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