云硬盘的加密挂载方法、装置、电子设备及存储介质
技术领域
本发明涉及云计算技术,尤其涉及云硬盘的加密挂载方法、装置、电子设备及存储介质。
背景技术
目前,在对云硬盘进行加密挂载时,现有的加密技术基于设备映射机制,通常仅支持对映射式块存储设备,如存储区域网络(SAN,Storage Area Network)类型云硬盘的加密,而不支持对分布式块存储设备,如可靠的自主分布式对象存储设备(RBD,RADOS BlockDevices)类型云硬盘的加密,造成RBD类型的云硬盘无法通过加密的方式挂载至虚拟机,进而共享至云计算平台的计算资源中,从而降低了云硬盘加密挂载的兼容性。
发明内容
本发明实施例期望提供一种云硬盘的加密挂载方法、装置、电子设备及存储介质,能够同时支持对映射式块设备类型与分布式块设备类型云硬盘的加密挂载,提高云硬盘加密挂载的兼容性。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种云硬盘的加密挂载方法,应用于云计算平台中的宿主机,包括:
基于至少两种预设块设备类型,通过本地云计算客户端中的块存储服务创建第一加密格式的加密云硬盘;所述至少两种预设块设备类型包括映射式块设备类型与分布式块设备类型;所述本地云计算客户端为用于为所述宿主机提供所述云计算平台支持的服务,并通过所述宿主机上的虚拟机向所述云计算平台提供资源;
通过硬盘模拟器与虚拟机管理工具,为所述虚拟机解密所述加密云硬盘,得到所述虚拟机对应的解密云硬盘;所述硬盘模拟器支持所述第一加密格式下所述至少两种预设块设备类型的设备驱动;
将所述解密云硬盘挂载到所述虚拟机。
上述方案中,所述基于至少两种预设块设备类型,通过本地云计算客户端中的块存储服务创建第一加密格式的加密云硬盘,包括:
当所述预设块设备类型为分布式块设备类型时,通过所述本地云计算客户端中的密钥管理服务生成密钥,并将所述密钥的密钥信息保存在硬盘信息数据库中;
从所述本地云计算客户端中的密钥管理服务中获取所述密钥,通过所述块存储服务调用所述分布式块设备类型对应的设备驱动,在所述设备驱动中调用所述硬盘模拟器中的硬盘模拟工具,使用所述第一加密格式与所述密钥创建所述分布式块设备类型的虚拟加密云硬盘;
将所述虚拟加密云硬盘与所述宿主机中的实体存储资源池相关联,得到所述加密云硬盘。
上述方案中,所述基于至少两种预设块设备类型,通过本地云计算客户端中的存储服务创建第一加密格式的加密云硬盘,包括:
当所述预设块设备类型为映射式块设备类型时,通过所述本地云计算客户端中的密钥管理服务生成密钥,并将所述密钥的密钥信息保存在硬盘信息数据库中;
通过所述块存储服务创建映射式块设备类型云硬盘;
通过所述本地云计算客户端中的计算服务,发送挂载所述映射式块设备类型云硬盘到所述虚拟机的请求;所述计算服务用于对所述云计算平台上的计算资源进行管理;
根据所述硬盘信息数据库中的所述密钥信息,通过所述密钥管理服务获取密钥;
通过虚拟机管理工具生成密钥容器;
通过所述计算服务,将所述密钥保存在所述密钥容器中;
通过所述虚拟机管理工具,使用所述密钥容器更新所述虚拟机的配置信息;
根据所述第一加密格式与所述密钥,对所述映射式块设备类型云硬盘进行加密,得到所述加密云硬盘。
上述方案中,所述将所述虚拟加密云硬盘与所述宿主机中的实体存储资源池相关联,得到所述加密云硬盘之后,所述方法还包括:
通过所述本地云计算客户端中的计算服务,发送挂载所述加密云硬盘到所述虚拟机的请求;
根据所述硬盘信息数据库中的所述密钥信息,从所述密钥管理服务中取出密钥;
通过虚拟机管理工具生成密钥容器;
通过所述计算服务,将所述密钥保存在所述密钥容器中;
通过所述虚拟机管理工具,使用所述密钥容器更新所述虚拟机的配置信息。
上述方案中,所述通过所述本地云计算客户端中的密钥管理服务生成密钥,并将所述密钥的密钥信息保存在硬盘信息数据库中,包括:
通过所述块存储服务,调用所述密钥管理服务生成密钥;
通过所述密钥管理服务将所述密钥的密钥链接返回给所述块存储服务;
通过所述块存储服务从所述密钥链接中提取出所述密钥的标识信息,作为所述密钥信息保存在所述硬盘信息数据库中。
上述方案中,所述通过硬盘模拟器与虚拟机管理工具,为所述虚拟机解密所述加密云硬盘,得到所述虚拟机对应的解密云硬盘,包括:
通过所述硬盘模拟器,从所述虚拟机的配置信息中获取所述密钥容器中的密钥,使用所述密钥对所述加密云硬盘进行解密,得到所述解密云硬盘。
第二方面,本发明实施例提供了一种云硬盘的加密挂载装置,应用于云计算平台中的宿主机,所述云硬盘的加密挂载装置包括加密创建单元、解密单元以及挂载单元,其中,
所述加密创建单元,用于基于至少两种预设块设备类型,通过本地云计算客户端中的块存储服务创建第一加密格式的加密云硬盘;所述至少两种预设块设备类型包括映射式块设备类型与分布式块设备类型;所述本地云计算客户端为用于为所述宿主机提供所述云计算平台支持的服务,并通过所述宿主机上的虚拟机向所述云计算平台提供资源;
所述解密单元,用于通过硬盘模拟器与虚拟机管理工具,为所述虚拟机解密所述加密云硬盘,得到所述虚拟机对应的解密云硬盘;所述硬盘模拟器支持所述第一加密格式下所述至少两种预设块设备类型的设备驱动;
所述挂载单元,用于将所述解密云硬盘挂载到所述虚拟机。
上述装置中,所述加密创建单元,还用于当所述预设块设备类型为分布式块设备类型时,通过所述本地云计算客户端中的密钥管理服务生成密钥,并将所述密钥的密钥信息保存在硬盘信息数据库中;以及从所述本地云计算客户端中的密钥管理服务中获取所述密钥,通过所述块存储服务调用所述分布式块设备类型对应的设备驱动,在所述设备驱动中调用所述硬盘模拟器中的硬盘模拟工具,使用所述第一加密格式与所述密钥创建所述分布式块设备类型的虚拟加密云硬盘;以及将所述虚拟加密云硬盘与所述宿主机中的实体存储资源池相关联,得到所述加密云硬盘。
上述装置中,所述加密创建单元,还用于当所述预设块设备类型为映射式块设备类型时,通过所述本地云计算客户端中的密钥管理服务生成密钥,并将所述密钥的密钥信息保存在硬盘信息数据库中;以及通过所述块存储服务创建映射式块设备类型云硬盘;以及通过所述本地云计算客户端中的计算服务,发送挂载所述映射式块设备类型云硬盘到所述虚拟机的请求;所述计算服务用于对所述云计算平台上的计算资源进行管理;以及根据所述硬盘信息数据库中的所述密钥信息,通过所述密钥管理服务获取密钥;以及通过虚拟机管理工具生成密钥容器;以及通过所述计算服务,将所述密钥保存在所述密钥容器中;以及通过所述虚拟机管理工具,使用所述密钥容器更新所述虚拟机的配置信息;以及根据所述第一加密格式与所述密钥,对所述映射式块设备类型云硬盘进行加密,得到所述加密云硬盘。
上述装置中,所述将所述虚拟加密云硬盘与所述宿主机中的实体存储资源池相关联,得到所述加密云硬盘之后,所述加密创建单元,还用于通过所述本地云计算客户端中的计算服务,发送挂载所述加密云硬盘到所述虚拟机的请求;以及根据所述硬盘信息数据库中的所述密钥信息,从所述密钥信息中取出密钥;以及通过虚拟机管理工具生成密钥容器;以及通过所述计算服务,将所述密钥保存在所述密钥容器中;以及通过所述虚拟机管理工具,使用所述密钥容器更新所述虚拟机的配置信息。
上述装置中,所述加密创建单元,还用于通过所述块存储服务,调用所述密钥管理服务生成密钥;以及通过所述密钥管理服务将所述密钥的密钥链接返回给所述块存储服务;以及通过所述块存储服务从所述密钥链接中提取出所述密钥的标识信息,作为所述密钥信息,保存在所述硬盘信息数据库中。
上述装置中,所述解密单元,还用于通过所述硬盘模拟器,从所述虚拟机的配置信息中获取所述密钥容器中的密钥,使用所述密钥对所述加密云硬盘进行解密,得到所述解密云硬盘。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:处理器、存储器以及通信总线,所述存储器通过所述通信总线与所述处理器进行通信,所述存储器存储所述处理器可执行的一个或者多个程序,当所述一个或者多个程序被执行时,所述处理器执行如上述任一项所述的云硬盘的加密挂载方法。
第四方面,本发明实施例提供了一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,程序被处理器执行时实现如上述任一项所述的云硬盘的加密挂载方法。
本发明实施例提供了一种云硬盘的加密挂载方法、装置、电子设备及存储介质,该方法包括:基于至少两种预设块设备类型,通过本地云计算客户端中的块存储服务创建第一加密格式的加密云硬盘;至少两种预设块设备类型包括映射式块设备类型与分布式块设备类型;本地云计算客户端为用于为宿主机提供云计算平台支持的服务,并通过宿主机上的虚拟机向云计算平台提供资源;通过硬盘模拟器与虚拟机管理工具,为虚拟机解密加密云硬盘,得到虚拟机对应的解密云硬盘;硬盘模拟器支持第一加密格式下至少两种预设块设备类型的设备驱动;将解密云硬盘挂载到虚拟机。采用上述方案,可以通过支持第一加密格式下至少两种预设块设备类型的设备驱动的硬盘模拟器,对块存储服务创建的映射式块设备类型与分布式块设备类型的加密云硬盘进行解密,使得映射式块设备类型与分布式块设备类型的云硬盘都可以以加密的形式挂载到虚拟机,并在虚拟机上解密使用,从而提高了云硬盘加密挂载的兼容性。
附图说明
图1为本发明实施例提供的现有技术云硬盘加密挂载流程示意图;
图2为本发明实施例提供的宿主机软件架构图;
图3为本发明实施例提供的云硬盘的加密挂载方法流程图一;
图4为本发明实施例提供的云硬盘的加密挂载方法流程图二;
图5为本发明实施例提供的云硬盘的加密挂载方法流程图三;
图6为本发明实施例提供的云硬盘的加密挂载方法流程图四;
图7为本发明实施例提供的云硬盘的加密挂载方法流程图五;
图8为本发明实施例提供的云硬盘的加密挂载方法流程图六;
图9为本发明实施例提供的云硬盘的加密挂载装置结构示意图;
图10为本发明实施例提供的电子设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)OpenStack,OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。
2)Cinder服务,Cinder服务是OpenStack平台下的块存储服务,用于提供稳定的数据块存储服务。示例性的,Cinder服务能够提供创建、删除、挂载和卸载云硬盘等功能。
3)Nova服务,Nova是OpenStack最核心的服务,负责维护和管理云环境的计算资源。
4)dm-crypt LUKS,基于设备映射机制(dm,device mapper)的一种硬盘加密方法。其中,LUKS(Linux Unified Key Setup)是一种Linux硬盘分区加密标准;dm-crypt是Linux内核提供的基于设备映射机制磁盘加密功能,通过设备映射机制可以将系统中所有真实或虚拟的块设备注册到Linux内核中,凡是映射即挂载于设备映射结构下的块设备在Linux看来都是一个完整的块设备。使用dm-crypt加密后的云硬盘不能直接挂载到虚拟机,需要必须做映射才能挂载,而在做映射时要求首先对加密后的SAN存储类型云硬盘进行解密
5)Ceph,Ceph是一个可靠的、自动重均衡、自动恢复的分布式存储系统,RADOS(Reliable,Autonomic Distributed Object Store)是Ceph的核心之一。Ceph存储系统的架构没有中心节点,客户端是通过设备映射关系计算出其写入数据的位置,从而可以直接与存储节点通信,从而避免中心节点的性能瓶颈。客户端通过RBD块设备类型的块存储设备将数据存储到Ceph的集群中。
6)块存储设备,块存储设备是输入/输出设备中的一种类型,是将信息存储在固定大小的块中,每个块都有自己的地址,可以在设备的任意位置读取一定长度的数据,示例性的,硬盘、U盘,SD卡等属于典型的块设备类型。
7)RBD块设备类型,RBD块设备类型是基于RADOS对外提供的块存储协议,借助网络链路形式,将各种异构的块设备整合在一起,通过核心管理软件为物理机或者虚拟机提供虚拟化之后的统一的块存储资源的块设备类型。
8)SAN块设备类型,存储区域网络(SAN,Storage Area Network)是一种通过光纤集线器、光线路由器、光纤交换机等连接设备将磁盘阵列、磁带等存储设备与相关服务器连接起来的高速专用子网。多个SAN之间无法互通。
9)快速仿真器(QEMU,Quick Emulator),QEMU是纯软件实现的虚拟化模拟器,能够模拟虚拟机的硬件设备,并对虚拟机进行监管。
10)libvirt,Libvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具,可以提供存储和网络接口管理,以用于管理虚拟机、QEMU和其他虚拟化技术。
目前,对于云硬盘的加密挂载方法,如图1所示,宿主机节点3安装OpenStack平台客户端10,通过OpenStack平台客户端10中的Cinder服务10_1创建映射式块设备类型的云硬盘,例如SAN类型云硬盘,之后OpenStack平台客户端中的Nova服务10_2发起将SAN类型云硬盘挂载到虚拟机的请求,由于SAN类型云硬盘属于设备映射机制的云硬盘,Nova服务10_2使用dm-crypt LUKS中的加密指令LUKS Format对SAN类型云硬盘进行加密,得到加密云硬盘20;Nova服务使用dm-crypt LUKS中的解密指令LUKS Open对加密云硬盘20进行解密,并将解密云硬盘30映射到宿主机节点的/dev/mapper目录下,最后将解密云硬盘30挂载到宿主机3上的虚拟机40,为虚拟机40提供硬盘服务,进而实现将虚拟机40中的硬盘作为云计算资源的一部分实现共享存储。其中,解密云硬盘30仅对所挂载的虚拟机40为解密状态,对云计算平台中的其他虚拟机均为加密状态。
由于dm-crypt LUKS是一种基于device mapper机制的加密方法,因此目前的云硬盘加密技术只能对映射式块设备类型的SAN存储云硬盘进行加密,对于分布式块存储类型,如RBD块存储设备,无法使用dm-crypt LUKS方式进行对于类似RBD块存储设备的分布式块存储设备的加密和挂载。
本发明实施例提供的一种云硬盘的加密挂载方法,应用于云计算平台中的宿主机,如图2所示,宿主机节点1上安装有本地云计算客户端100、虚拟机200、硬盘模拟器300和虚拟机管理工具400,其中,本地云计算客户端100用于为宿主机1提供云计算平台支持的服务,在一些实施例中,本地云计算客户端100可以是开源的云计算管理平台OpenStack客户端,宿主机1可以通过安装OpenStack客户端,在宿主机上调用OpenStack中的服务和管理工具,其中,本地云计算客户端100包括块存储服务100_1,用于创建加密云硬盘500;本地云计算客户端100还包括块存储服务100_2,用于将解密后的解密云硬盘600挂载至虚拟机200;虚拟机200可以由本地云计算客户端100中的计算服务在宿主机1上创建,用于将宿主机1上的计算资源通过虚拟机200共享给云计算平台,虚拟机200存在于宿主机1中,与宿主机共同使用宿主机上的实体硬件资源,在一些实施例中,虚拟机200的硬盘以文件夹的形式存在于宿主机1上,占据宿主机1的硬盘资源;硬盘模拟器300为宿主机1上安装的软件模拟器,用于模拟出硬盘资源供虚拟机200使用,并提供设备以及用户空间管理服务;虚拟机管理工具400为宿主机1上安装的虚拟机200的管理工具,以库函数的形式存在于宿主机1上,是宿主机1上其他服务对虚拟机200进行操作的软件接口;本发明实施例中,硬盘模拟器300与虚拟机管理工具400用于实现对加密云硬盘的解密,得到解密云硬盘600。基于本发明实施例提供的宿主机软件架构,可以在宿主机上实现至少两种预设块设备类型的云硬盘的加密挂载。
图3是本发明实施例提供的方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。
S101、基于至少两种预设块设备类型,通过本地云计算客户端中的块存储服务创建第一加密格式的加密云硬盘;至少两种预设块设备类型包括映射式块设备类型与分布式块设备类型;本地云计算客户端为用于为宿主机提供云计算平台支持的服务,并通过宿主机上的虚拟机向云计算平台提供资源。
本发明实施例中,宿主机首先通过本地云计算客户端中的块存储服务,分别基于至少两种不同的预设块设备类型,在宿主机上创建以第一加密格式加密的加密云硬盘。
本发明实施例中,本地云计算客户端为用于为宿主机提供云计算平台支持的服务和管理功能,其中本地云计算客户端中的块存储服务为创建和维护块存储设备的服务,用于提供创建、删除、挂载和卸载块存储设备的功能。
在一些实施例中,本地云计算客户端可以是OpenStack客户端,块存储服务可以是OpenStack客户端中的Cinder服务。
本发明实施例中,第一加密格式可以是LUKS格式,也可以是其他加密格式,本发明实施例不做限定。
本发明实施例中,至少两种预设块设备类型包括映射式块设备类型与分布式块设备类型。
本发明实施例中,在云计算平台中,块存储设备可以根据不同的驱动方式,分为映射式块设备类型和分布式块设备类型。
本发明实施例中,映射式块设备类型为基于设备映射机制的块设备,映射式块设备类型通过在块设备的物理卷上通过设备映射机制建立逻辑卷组,在逻辑卷组中对物理卷的存储空间进行管理。在向映射式块设备中写入数据时,数据通过逻辑卷与物理卷的映射关系,将数据写入物理卷。目前的dm-crypt LU KS方式正是基于映射式块设备类型的云硬盘加密挂载方式。
在一些实施例中,映射式块设备类型可以是SAN类型。
本发明实施例中,分布式块设备类型为分散式的储存系统,分布式块设备类型通过虚拟块设备镜像以及相应的空间管理程序对虚拟块设备的存储空间进行管理,分布式块设备类型将虚拟块设备加载到物理实体的块设备上,在向分布式块设备中写入数据时,数据被正式写入磁盘之前会被分布式块设备系统截获,并通知空间管理程序将待写入的数据拷贝一份,写入虚拟块设备镜像,然后存入虚拟块设备镜像所映射的物理实体的块设备。因此,分布式块设备类型的驱动结构和组织方式与映射式块设备类型不同,不能使用dm-crypt LUKS进行加密挂载。
在一些实施例中,分布式块设备类型可以是分布式存储系统Ceph中的RB D类型。
S102、通过硬盘模拟器与虚拟机管理工具,为虚拟机解密加密云硬盘,得到虚拟机对应的解密云硬盘;硬盘模拟器支持第一加密格式下至少两种预设块设备类型的设备驱动。
本发明实施例中,为了使加密云硬盘可以被虚拟机无需解密地透明使用,而同时对其他设备保持加密状态,宿主机可以通过安装的硬盘模拟器与虚拟机管理工具,为虚拟机解密由块存储服务创建的加密云硬盘,以得到虚拟机对应的解密云硬盘。
本发明实施例中,硬盘模拟器支持第一加密格式下的至少两种预设块设备类型的设备驱动。由于硬盘模拟器中同时支持了加密的映射式块设备类型与加密的分布式块设备类型的驱动,使得计算服务可以通过调用硬盘模拟器,配合虚拟机管理工具,对至少两种预设块设备类型的加密云硬盘进行解密。当加密云硬盘类型为映射式块设备类型时,计算服务无需通过dm-crypt方法对映射式块设备类型的加密云硬盘进行解密,可以使用与分布式块设备类型相同的方法,通过硬盘模拟器对映射式块设备类型的加密云硬盘进行解密。
本发明实施例中,虚拟机管理工具用于将加密云硬盘对应的密钥保存在虚拟机。
在一些实施例中,硬盘模拟器可以是2.6版本及以上的QEMU工具;虚拟机管理工具可以是高于2.2.0版本的Libvirt工具,也可以是其他具备相同特性的软件或工具,本发明实施例不做限定。
S103、将解密云硬盘挂载到虚拟机。
本发明实施例中,宿主机节点得到解密云硬盘之后,将解密云硬盘挂载到虚拟机,成为虚拟机的硬盘资源,进而能够通过虚拟机共享给云计算平台,成为云计算平台的计算资源,从而完成云硬盘的加密挂载。
可以理解的是,本发明实施例中,可以通过支持第一加密格式下至少两种预设块设备类型的设备驱动的硬盘模拟器,对块存储服务创建的映射式块设备类型与分布式块设备类型的加密云硬盘进行解密,使得映射式块设备类型与分布式块设备类型的云硬盘都可以以加密的形式挂载到虚拟机,并在虚拟机上解密使用,从而提高了云硬盘加密挂载的兼容性。
本发明实施例中,基于图3,S101可以如图4所示,包括S201-S203,如下:
S201、当预设块设备类型为分布式块设备类型时,通过本地云计算客户端中的密钥管理服务生成密钥,并将密钥的密钥信息保存在硬盘信息数据库中。
本发明实施例中,当预设块设备类型为分布式块设备类型时,宿主机通过本地云计算客户端中的密钥管理服务生成用于对云硬盘进行加密的密钥,并将密钥的密钥信息保存在块存储服务对应的硬盘信息数据库中;
本发明实施例中,密钥管理服务可以是OpenStack中的barbican服务,用于向宿主机提供云计算平台的密钥管理功能,barbican服务可以生成、存储和管理密钥、证书等格式的数据。
本发明实施例中,硬盘信息数据库是块存储服务中用于保存云硬盘信息的数据库,S201中通过本地云计算客户端中的密钥管理服务生成密钥,并将密钥的密钥信息保存在硬盘信息数据库中可以如图5所示,包括S2011-S2023,如下:
S2011、通过块存储服务,调用密钥管理服务生成密钥。
在一些实施例中,宿主机可以通过OpenStack客户端中的Cinder服务,调用barbican服务生成用于对云硬盘进行加密的密钥。
S2012、通过密钥管理服务将密钥的密钥链接返回给块存储服务。
在一些实施例中,barbican服务生成密钥后,会将密钥连接返回给Cinder服务。
S2013、通过块存储服务从密钥链接中提取出密钥的标识信息,作为密钥信息保存在硬盘信息数据库中。
本发明实施例中,密钥信息可以是该密钥的通用唯一识别码(UUID,Uni versallyUnique Identifier)。
在一些实施例中,Cinder服务接收到barbican服务返回的密钥链接之后,从密钥链接中提取密钥信息,保存在Cinder服务的硬盘信息数据库中。
S202、从本地云计算客户端中的密钥管理服务中获取密钥,通过块存储服务调用分布式块设备类型对应的设备驱动,在设备驱动中调用硬盘模拟器中的硬盘模拟工具,使用第一加密格式与密钥创建分布式块设备类型的虚拟加密云硬盘。
本发明实施例中,在生成并保存密钥之后,宿主机会通过块存储服务调用块存储服务中分布式块设备类型对应的设备驱动,在分布式块设备类型对应的设备驱动中调用硬盘模拟器中的硬盘模拟工具,使用第一加密格式和上述生成的密钥创建分布式设备类型的虚拟加密云硬盘。
本发明实施例中,块存储服务中包含有至少两种预设块设备类型所对应的驱动,当需要创建的云硬盘为分布式块设备类型时,块存储服务调用分布式块设备类型对应的设备驱动来进行分布式块设备类型云硬盘的创建。
本发明实施例中,分布式块设备类型对应的设备驱动会调用硬盘模拟器中的硬盘模拟工具,来模拟出分布式设备类型的虚拟云硬盘,同时,硬盘模拟工具使用第一加密格式和密钥对虚拟云硬盘进行加密,最终得到分布式设备类型的虚拟加密云硬盘。
在一些实施例中,当硬盘模拟器为QEMU时,硬盘模拟工具可以是qemu-img 2.10。
S203、将虚拟加密云硬盘与宿主机中的实体存储资源池相关联,得到加密云硬盘。
本发明实施例中,宿主机通过块存储服务可以将虚拟加密云硬盘导入宿主机上映射的至少一个分布式块设备组成的分布式块设备存储资源池,从而将虚拟加密硬盘与实体分布式块设备建立关联,得到加密云硬盘。
本发明实施例中,宿主机中的实体存储资源池可以是映射至宿主机的至少一个分布式块设备组成的分布式块设备存储资源池,示例性的,宿主机中的实体存储资源池可以是宿主机后端的RBD存储池。
可以理解的是,本发明实施例中,对于分布式设备类型,可以通过块存储服务调用硬盘模拟工具模拟并加密出虚拟加密云硬盘,再将虚拟加密云硬盘导入宿主机后端的实体分布式设备存储池之后,得到真正的分布式设备类型的加密云硬盘,从而实现了对分布式块设备类型云硬盘的加密。
本发明实施例中,基于图4,S203之后,还可以如图6所示,包括S204-S208,如下:
S204、通过本地云计算客户端中的计算服务,发送挂载加密云硬盘到虚拟机的请求。
本发明实施例中,当预设块设备类型为分布式块设备类型时,宿主机完成创建加密云硬盘之后,通过本地云计算客户端中的计算服务,发送挂载加密云硬盘到虚拟机的请求。
在一些实施例中,当本地云计算客户端为OpenStack平台客户端时,计算服务可以是OpenStack中的nova服务。
S205、根据硬盘信息数据库中的密钥信息,从密钥管理服务中取出密钥。
本发明实施例中,计算服务发送加密云平台的挂载请求之后,宿主机通过计算服务,从硬件信息数据库中获取密钥信息,根据密钥信息从密钥管理服务中取出密钥。
在一些实施例中,Nova服务从硬盘信息数据库中获取密钥的UUID,根据密钥的UUID从barbican服务中取出密钥。
S206、通过虚拟机管理工具生成密钥容器。
本发明实施例中,计算服务获取到密钥之后,宿主机节点调用虚拟机管理工具生成密钥容器,用于保存密钥。
在一些实施例中,虚拟机管理工具为libvirt时,可以通过libvirt生成secre t文件,其中,secret文件的文件名可以是密钥的UUID。
S207、通过计算服务,将密钥保存在密钥容器中。
S208、通过虚拟机管理工具,使用密钥容器更新虚拟机的配置信息。
本发明实施例中,计算服务会将获取的密钥保存在密钥容器中,然后宿主机节点通过虚拟机管理工具,将密钥容器作为云硬盘信息更新到虚拟机配置文件信息中,以使解密工具可以利用密钥容器中的密钥对加密云硬盘进行解密。
在一些实施例中,在Libvirt工具生成secret文件后,Nova服务将获取到的密钥保存在secret文件中,并使用secret文件作为云硬盘信息更新虚拟机的xm l配置文件,这样虚拟机配置文件中就对应存放了加密云硬盘的密钥,可以使解密工具通过虚拟机的配置文件为该虚拟机解锁云硬盘。
可以理解的是,本发明实施例中,对于分布式设备类型的加密云硬盘,可以通过虚拟机管理工具获取密钥,并将密钥更新在虚拟机的配置信息中,从而使得硬盘模拟工具可以从虚拟机配置信息中获取密钥解密,以最终实现对分布式类型的加密云硬盘的解密。
本发明实施例中,基于图3,S101还可以如图7所示,包括S301-S308,如下:
S301、当预设块设备类型为映射式块设备类型时,通过本地云计算客户端中的密钥管理服务生成密钥,并将密钥的密钥信息保存在硬盘信息数据库中。
本发明实施例中,当预设块设备类型为映射式块设备类型时,宿主机通过本地云计算客户端中的密钥管理服务生成密钥,并将密钥的密钥信息保存在硬盘信息数据库中与S201中方法相同,需要通过块存储服务,调用密钥管理服务生成密钥;通过密钥管理服务将密钥的密钥链接返回给块存储服务;通过块存储服务从密钥链接中提取密钥信息,保存在硬盘信息数据库中。此处不再赘述。
S302、通过块存储服务块创建映射式块设备类型云硬盘。
本发明实施例中,当预设块设备类型为映射式块设备类型时,宿主机通过块存储服务块,首先指定映射式块设备类型云硬盘的加密类型,再根据加密类型创建未加密的映射式块设备类型云硬盘。
在本发明实施例中,加密类型为第一加密格式。
S303、通过本地云计算客户端中的计算服务,发送挂载映射式块设备类型云硬盘到虚拟机的请求;计算服务用于对云计算平台上的计算资源进行管理。
本发明实施例中,当预设块设备类型为映射式块设备类型时,宿主机通过本地云计算客户端中的计算服务,向云计算平台发送挂载映射式块设备类型云硬盘到虚拟机的请求的过程与S204相同,此处不再赘述。
S304、根据硬盘信息数据库中的密钥信息,通过密钥管理服务获取密钥。
本发明实施例中,当预设块设备类型为映射式块设备类型时,宿主机通过计算服务,根据硬盘信息数据库中的密钥信息,通过密钥信息获取密钥的过程与S205相同,此处不再赘述。
S305、通过虚拟机管理工具生成密钥容器。
本发明实施例中,当预设块设备类型为映射式块设备类型时,通过虚拟机管理工具生成密钥容器的过程与S206相同,此处不再赘述。
S306、通过计算服务,将密钥保存在密钥容器中。
本发明实施例中,当预设块设备类型为映射式块设备类型时,宿主机通过计算服务,将密钥保存在密钥容器中的过程与S207相同,此处不再赘述。
S307、通过虚拟机管理工具,使用密钥容器更新虚拟机的配置信息。
本发明实施例中,当预设块设备类型为映射式块设备类型时,宿主机通过虚拟机管理工具,使用密钥容器更新虚拟机的配置信息的过程与S208相同,此处不再赘述。
S308、根据第一加密格式与密钥,对映射式块设备类型云硬盘进行加密,得到加密云硬盘。
本发明实施例中,宿主机节点可以根据第一加密格式与密钥,使用dm-cry pt中的LuksFormat命令,对映射式块设备类型云硬盘进行加密,得到加密云硬盘。
可以理解的是,本发明实施例中,可以通过块存储服务创建映射式块设备类型云硬盘,在计算服务发送映射式块设备类型云硬盘的挂载请求之后对映射式块设备类型云硬盘使用传统方式进行加密,从而实现了对映射式块设备类型云硬盘的加密。
本发明实施例中,基于图6和图7,S102中通过硬盘模拟器与虚拟机管理工具,为虚拟机解密加密云硬盘,得到虚拟机对应的解密云硬盘可以如图8所示,包括S1021,如下:
S1021、通过硬盘模拟器,从虚拟机的配置信息中获取密钥容器中的密钥,使用密钥对加密云硬盘进行解密,得到解密云硬盘。
本发明实施例中,宿主机可以通过硬盘模拟器,从虚拟机的配置信息中获取密钥容器,从密钥容器中获取其中的密钥,并使用密钥对加密云硬盘进行解密,得到解密云硬盘。
本发明实施例中,为了实现对使用本发明实施例中的方法所得到的加密云硬盘的密钥,宿主机上需要预先安装支持第一加密格式下至少两种预设块设备类型的设备驱动的硬盘模拟器,以及支持创建密钥容器功能的虚拟机管理工具。
在一些实施例中,虚拟机所在宿主机上需预先安装高于2.2.0版本的Libvi rt以及高于2.6版本的QEMU。高版本的Libvirt/QEMU实现了QEMU原生的L UKS块驱动,支持对LUKS加密的RAW格式文件、块设备、以及RBD等网络设备的解密。QEMU的这一新特性使得nova可以通过高版本的Libvirt/QE MU来支持LUKS加密。
可以理解的是,本发明实施例中,无论是映射式块设备类型云硬盘还是分布式块设备类型云硬盘,都可以通过同时支持两种类型的加密云硬盘驱动的硬盘模拟器和可生成密钥容器的虚拟机管理工具来进行解密,以使解密后云硬盘可以挂载至虚拟机,从而实现了对对映射式块设备类型与分布式块设备类型云硬盘的加密挂载的支持,提高了云硬盘加密挂载的兼容性。
本发明实施例提供了一种云硬盘的加密挂载装置,应用于云计算平台中的宿主机,如图9所示,该云硬盘的加密挂载装置2包括加密创建单元20、解密单元21以及挂载单元22,其中,
所述加密创建单元20,用于基于至少两种预设块设备类型,通过本地云计算客户端中的块存储服务创建第一加密格式的加密云硬盘;所述至少两种预设块设备类型包括映射式块设备类型与分布式块设备类型;所述本地云计算客户端为用于为所述宿主机提供所述云计算平台支持的服务,并通过所述宿主机上的虚拟机向所述云计算平台提供资源。
所述解密单元21,用于通过硬盘模拟器与虚拟机管理工具,为所述虚拟机解密所述加密云硬盘,得到所述虚拟机对应的解密云硬盘;所述硬盘模拟器支持所述第一加密格式下所述至少两种预设块设备类型的设备驱动。
所述挂载单元22,用于将所述解密云硬盘挂载到虚拟机。
在一些实施例中,所述加密创建单元20,还用于当所述预设块设备类型为分布式块设备类型时,通过所述本地云计算客户端中的密钥管理服务生成密钥,并将所述密钥的密钥信息保存在硬盘信息数据库中;以及通过所述块存储服务调用所述分布式块设备类型对应的设备驱动,在所述设备驱动中调用所述硬盘模拟器中的硬盘模拟工具,使用所述第一加密格式与所述密钥创建所述分布式块设备类型的虚拟加密云硬盘;以及将所述虚拟加密云硬盘与所述宿主机中的实体存储资源池相关联,得到所述加密云硬盘。
在一些实施例中,所述加密创建单元20,还用于当所述预设块设备类型为映射式块设备类型时,通过所述本地云计算客户端中的密钥管理服务生成密钥,并将所述密钥的密钥信息保存在硬盘信息数据库中;以及通过所述块存储服务创建映射式块设备类型云硬盘;以及通过所述本地云计算客户端中的计算服务,发送挂载所述映射式块设备类型云硬盘到所述虚拟机的请求;所述计算服务用于对所述云计算平台上的计算资源进行管理;以及根据所述硬盘信息数据库中的所述密钥信息,通过所述密钥管理服务获取密钥;以及通过虚拟机管理工具生成密钥容器;以及通过所述计算服务,将所述密钥保存在所述密钥容器中;以及通过所述虚拟机管理工具,使用所述密钥容器更新所述虚拟机的配置信息;以及根据所述第一加密格式与所述密钥,对所述映射式块设备类型云硬盘进行加密,得到所述加密云硬盘。
在一些实施例中,所述将所述虚拟加密云硬盘与所述宿主机下的实体存储资源池相关联,得到所述加密云硬盘之后,所述加密创建单元20,还用于通过所述本地云计算客户端中的计算服务,发送挂载所述加密云硬盘到所述虚拟机的请求;以及根据所述硬盘信息数据库中的所述密钥信息,从所述密钥管理服务中取出密钥;以及通过虚拟机管理工具生成密钥容器;以及通过所述计算服务,将所述密钥保存在所述密钥容器中;以及通过所述虚拟机管理工具,使用所述密钥容器更新所述虚拟机的配置信息。
在一些实施例中,所述加密创建单元20,还用于通过所述块存储服务,调用所述密钥管理服务生成密钥;以及通过所述密钥管理服务将所述密钥的密钥链接返回给所述块存储服务;以及通过所述块存储服务从所述密钥链接中提取出所述密钥的标识信息,作为所述密钥信息,保存在所述硬盘信息数据库中。
在一些实施例中,所述解密单元21,还用于通过所述硬盘模拟器,从所述虚拟机的配置信息中获取所述密钥容器中的密钥,使用所述密钥对所述加密云硬盘进行解密,得到所述解密云硬盘。
本发明实施例提供了一种电子设备,应用于云计算平台的宿主机,如图10所示,该电子设备8包括:处理器54、存储器55和通信总线56,存储器55通过通信总线56与处理器54进行通信,存储器55存储处理器54可执行的一个或者多个程序,当一个或者多个程序被执行时,通过处理器54执行如前述实施例的任意一种云硬盘的加密挂载方法。
本发明实施例提供了一种存储介质,该存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器54执行,程序被处理器54执行时实现如上述任一项所述的云硬盘的加密挂载方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种配置和调度虚拟I/O模块的方法和装置