一种usb设备安全挂载和卸载的方法、设备和存储介质
技术领域
1.本发明属于usb物理设备管理技术领域,尤其涉及一种usb设备安全挂载和卸载的方法、设备和存储介质。
背景技术:2.openstack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。openstack为私有云和公有云提供可扩展的弹性的云计算服务,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。作为iaas层的云操作系统,openstack为虚拟机提供并管理三大类资源:计算、存储和网络。主要的服务有nova(计算服务)、cinder(存储服务)、neutron(网络服务)、glance(镜像服务)和keystone(认证和权限管理服务)。
3.nova是openstack最核心的服务,主要负责维护和管理云环境的计算资源。nova的架构比较复杂,包含很多组件。这些组件以子服务(后台deamon进程)的形式运行,可以分为以下几类:
4.1)nova-api是整个nova组件的门户,接收和响应客户的api调用。所有对nova的请求都首先由nova-api处理。nova-api向外界暴露若干httprestapi接口。
5.2)nova-scheduler虚机调度服务,负责决定在哪个计算节点上运行虚机。
6.3)nova-conductor计算节点访问数据库时的一个中间层,负责查询、更新数据库的服务。出于安全性和伸缩性的考虑,nova-compute并不会直接访问数据库,而是委托给nova-conductor服务完成对数据库信息进行创建、修改及查询。
7.4)nova-compute是管理虚机的核心服务,在计算节点上运行。通过调用hypervisorapi实现节点上的instance的生命周期管理。openstack对虚机的操作,最后都是交给nova-compute来完成的。nova-compute与hypervisor一起实现openstack对虚机生命周期的管理。
8.libvirt是目前使用最为广泛的管理kvm虚拟机的应用程序接口。它作为管理虚拟化平台的开源api、后台程序和管理工具,可以用于管理kvm、xen、vmware esx,qemu和其他虚拟化技术。以qemu-kvm作为hypervisor为例,通过调用libvirtapi可以实现查询计算节点插入的usb设备,并将指定的usb设备实时挂载到虚拟机,实现usb设备挂载、卸载等基本功能。
9.对于云平台中运行的虚拟机,常常会存在虚机内软件需要插入加密狗认证、需要usb设备或移动硬盘传输保密数据等需求,基于此类问题,对于openstack为基础的云平台现在并不支持对usb设备的动态挂载和卸载,同时存在当多个用户同时挂载usb设备时,无法保证本用户的usb设备不会被其他用户恶意挂载,从而对用户的usb设备数据造成了极大的数据泄露风险,还存在本用户的usb设备被其他用户恶意卸载的安全隐患。
技术实现要素:10.本发明针对现有技术中的不足,提供一种usb设备安全挂载和卸载的方法、设备和
存储介质。
11.第一方面,本发明提供一种usb设备安全挂载和卸载的方法,包括:
12.获取查询usb设备列表的api请求;
13.获取挂载指定挂载usb设备的api请求;
14.如果请求指定挂载usb设备在usb设备列表中,则获取请求指定挂载usb设备的全部参数和访问密码;
15.如果指定挂载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力挂载指定挂载usb设备;
16.获取卸载指定卸载usb设备的api请求;
17.如果请求指定卸载usb设备在usb设备列表中,则获取请求卸载指定卸载usb设备的全部参数和访问密码;
18.如果指定卸载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力卸载指定卸载usb设备。
19.进一步地,所述获取查询usb设备列表的api请求,包括:
20.获取虚拟机所在的宿主机的id;
21.调用查询usb设备列表的api接口;
22.当服务器收到用户请求后,检验入参的合法性;
23.nova-api侧通过同步调用的方式将请求发送至nova-compute服务组件进行处理,并准备接收处理后的结果;
24.nova-compute服务组件在接收到同步调用请求后,通过调用底层虚拟化的能力获取当前主机中的usb设备信息;其中usb设备信息包括:dev_id、bus、device、product_id和vendor_id;
25.如果获取到usb设备信息,nova-compute服务组件同步返回成功信息和宿主机的所有usb设备信息至api服务组件;
26.如果未获取到usb设备信息,nova-compute服务组件同步返回失败信息和失败原因描述至api服务组件。
27.进一步地,所述如果指定挂载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力挂载指定挂载usb设备,包括:
28.获取指定action;所述指定action为attach_usb_devices;
29.在请求体中指定挂载usb设备的参数;所述挂载usb设备的参数包括:dev_id、bus、device、product_id和vendor_id;
30.调用挂载usb设备的api接口;
31.当服务器收到用户请求后,检验入参的合法性;
32.nova-api侧更新虚拟机的任务状态为正在挂载usb设备,并通过同步调用的方式将请求发送至nova-conduct服务组件进行处理,并准备接收处理后的结果;
33.nova-conduct服务组件在接收到同步调用的请求后,对指定挂载usb设备的属主进行验证;
34.如果指定usb设备参数,则校验指定挂载usb设备的访问密码;
35.如果访问密码正确,则返回验证通过的信息;
36.nova-conductor服务组件通过同步远程调用的方式将请求发送至nova-compute服务组件进行处理,并准备接收处理后的结果;
37.nova-compute服务组件在接收到该同步远程调用请求后,将发送通知到消息队列,通过调用底层虚拟化的能力挂载指定挂载usb设备。
38.进一步地,如果未指定usb设备参数,则
39.获取宿主机锁,以使同一时刻只允许一个用户挂载新插入的usb设备;
40.提示用户将usb设备插入宿主机usb口;
41.检测新的usb设备;
42.将新的usb设备设置使用密码;
43.释放宿主机锁,返回验证通过的信息。
44.进一步地,如果未获取宿主机锁,则向用户提示宿主机中的其它虚机正在进行usb挂载操作,并在目标时间后重新进行usb挂载操作。
45.进一步地,如果指定挂载usb设备挂载成功,nova-compute服务组件同步返回成功信息和已挂载的usb设备的信息;
46.如果指定挂载usb设备挂载失败,nova-compute服务组件同步返回失败信息和失败原因信息。
47.进一步地,所述如果指定卸载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力卸载指定卸载usb设备,包括:
48.获取指定action;所述指定action为detach_usb_devices;
49.在请求体中指定卸载usb设备的参数;所述卸载usb设备的参数包括:dev_id、bus、device、product_id和vendor_id;
50.调用卸载usb设备的api接口;
51.当服务器收到用户请求后,检验入参的合法性;
52.nova-api侧更新虚拟机的任务状态为正在卸载usb设备,并通过同步调用的方式将请求发送至nova-conduct服务组件进行处理,并准备接收处理后的结果;
53.nova-conduct服务组件在接收到同步调用的请求后,对指定卸载usb设备的属主进行验证;
54.如果usb设备的访问密码存在且校验通过,则返回验证通过的信息;
55.如果未指定访问密码或密码校验失败,则返回验证失败的信息;
56.nova-conductor服务组件通过同步调用的方式将请求发送至nova-compute服务组件进行处理,并准备接收处理后的结果;
57.nova-compute服务组件在接收到同步调用请求后,将发送通知到消息队列,通过调用底层虚拟化的能力卸载指定卸载usb设备。
58.进一步地,如果指定卸载usb设备卸载成功,nova-compute服务组件同步返回成功信息和已卸载的usb设备的信息;
59.如果指定卸载usb设备卸载失败,nova-compute服务组件同步返回失败信息和失败原因信息。
60.第二方面,本发明提供一种计算机设备,包括处理器和存储器;其中,处理器执行存储器中保存的计算机程序时实现权利要求1-8任一项所述的usb设备安全挂载和卸载的
方法的步骤。
61.第三方面,本发明提供一种计算机可读存储介质,用于存储计算机程序;计算机程序被处理器执行时实现权利要求1-8任一项所述的usb设备安全挂载和卸载的方法的步骤。
62.本发明提供一种usb设备安全挂载和卸载的方法、设备和存储介质,其中方法包括获取查询usb设备列表的api请求;获取挂载指定挂载usb设备的api请求;如果请求指定挂载usb设备在usb设备列表中,则获取请求指定挂载usb设备的全部参数和访问密码;如果指定挂载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力挂载指定挂载usb设备;获取卸载指定卸载usb设备的api请求;如果请求指定卸载usb设备在usb设备列表中,则获取请求卸载指定卸载usb设备的全部参数和访问密码;如果指定卸载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力卸载指定卸载usb设备。本发明当多个用户同时挂载usb设备时,保护用户的usb设备不被其他用户的虚拟机挂载;当用户正在使用usb设备时,保护用户的usb设备不被其他用户恶意卸载;当用户的usb设备处于卸载状态却未及时从接口中拔出时,保护用户的usb设备的数据安全。
附图说明
63.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
64.图1为本发明实施例提供的一种usb设备安全挂载和卸载的方法的流程图;
65.图2为本发明实施例提供的usb设备安全挂载的流程图;
66.图3为本发明实施例提供的usb设备安全卸载的流程图。
具体实施方式
67.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
68.在一实施例中,如图1所示,本发明实施例部分提供一种usb设备安全挂载和卸载的方法,包括:
69.步骤101,获取查询usb设备列表的api请求。
70.本步骤中,调用查询usb设备列表的api接口时,用户需指定要查询的主机的id,即虚拟机所在的宿主机的id。
71.当服务器收到用户请求后,检验入参的合法性。
72.nova-api侧通过同步调用的方式将请求发送至nova-compute服务组件进行处理,并准备接收处理后的结果。
73.nova-compute服务组件在接收到同步调用请求后,通过调用底层虚拟化的能力获取当前主机中的usb设备信息;其中usb设备信息包括:dev_id、bus、device、product_id和vendor_id。
74.如果获取到usb设备信息,nova-compute服务组件同步返回成功信息和宿主机的
所有usb设备信息至api服务组件,表明查询usb设备信息成功。
75.如果未获取到usb设备信息,nova-compute服务组件同步返回失败信息和失败原因描述至api服务组件,表明查询usb设备信息失败。
76.步骤102,获取挂载指定挂载usb设备的api请求。
77.步骤103,如果请求指定挂载usb设备在usb设备列表中,则获取请求指定挂载usb设备的全部参数和访问密码。
78.步骤104,如果指定挂载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力挂载指定挂载usb设备。
79.本步骤中,如图2所示,调用挂载usb设备的api接口时,用户需指定action为attach_usb_devices;在请求体中指定挂载的usb设备的参数,包括:dev_id、bus、device、product_id和vendor_id,这些参数可通过查询usb设备列表的api获取。如果挂载usb设备的参数未指定,则表示挂载的usb设备还未插入主机中;如果挂载的usb设备的部分参数缺失,则无法完成挂载操作。同时,如果指定了usb设备参数,则需在请求体中同时指定usb设备的访问密码,以此来确保usb设备被安全挂载;具体的,
80.获取指定action;所述指定action为attach_usb_devices。
81.在请求体中指定挂载usb设备的参数;所述挂载usb设备的参数包括:dev_id、bus、device、product_id和vendor_id。
82.调用挂载usb设备的api接口。
83.当服务器收到用户请求后,检验入参的合法性。
84.nova-api侧更新虚拟机的任务状态为正在挂载usb设备,并通过同步调用的方式将请求发送至nova-conduct服务组件进行处理,并准备接收处理后的结果。
85.nova-conduct服务组件在接收到同步调用的请求后,对指定挂载usb设备的属主进行验证。
86.如果指定usb设备参数,则校验指定挂载usb设备的访问密码。
87.如果访问密码正确,则返回验证通过的信息。
88.如果未指定usb设备参数,则获取宿主机锁,以使同一时刻只允许一个用户挂载新插入的usb设备。其中,宿主机锁是有有效持有时间,超过有效持有时将自动释放宿主机锁,并取消本次挂载流程。
89.提示用户将usb设备插入宿主机usb口。
90.检测新的usb设备。
91.将新的usb设备设置使用密码。
92.释放宿主机锁,返回验证通过的信息。
93.如果未获取宿主机锁,则向用户提示宿主机中的其它虚机正在进行usb挂载操作,并在目标时间(例如60s)后重新进行usb挂载操作。
94.nova-conductor服务组件通过同步远程调用的方式将请求发送至nova-compute服务组件进行处理,并准备接收处理后的结果。
95.nova-compute服务组件在接收到该同步远程调用请求后,将发送通知到消息队列,表明开始进行usb设备的挂载操作,通过调用底层虚拟化的能力挂载指定挂载usb设备,从而实现usb设备的挂载。
96.同时,nova-compute服务组件会持续监测usb设备的挂载状态:
97.如果指定挂载usb设备挂载成功,nova-compute服务组件同步返回成功信息和已挂载的usb设备的信息。
98.如果指定挂载usb设备挂载失败,nova-compute服务组件同步返回失败信息和失败原因信息。
99.步骤105,获取卸载指定卸载usb设备的api请求。
100.步骤106,如果请求指定卸载usb设备在usb设备列表中,则获取请求卸载指定卸载usb设备的全部参数和访问密码。
101.步骤107,如果指定卸载usb设备的全部参数和访问密码均正确,则调用底层虚拟化的能力卸载指定卸载usb设备。
102.本步骤中,如图3所示,调用卸载usb设备api接口时,用户需指定action为detach_usb_devices,在请求体中指定卸载的usb设备的参数,包括dev_id、bus、device、product_id和vendor_id,这些参数可通过查询虚拟机的usb设备列表获取。
103.如果卸载的usb设备的部分参数缺失,则无法完成卸载操作。同时,需在请求体中同时指定usb设备的访问密码,以此来确保usb设备被安全卸载。具体的,
104.获取指定action;所述指定action为detach_usb_devices。
105.在请求体中指定卸载usb设备的参数;所述卸载usb设备的参数包括:dev_id、bus、device、product_id和vendor_id。
106.调用卸载usb设备的api接口。
107.当服务器收到用户请求后,检验入参的合法性。
108.nova-api侧更新虚拟机的任务状态为正在卸载usb设备,并通过同步调用的方式将请求发送至nova-conduct服务组件进行处理,并准备接收处理后的结果。
109.nova-conduct服务组件在接收到同步调用的请求后,对指定卸载usb设备的属主进行验证。
110.如果usb设备的访问密码存在且校验通过,则返回验证通过的信息。
111.如果未指定访问密码或密码校验失败,则返回验证失败的信息。
112.nova-conductor服务组件通过同步调用的方式将请求发送至nova-compute服务组件进行处理,并准备接收处理后的结果。
113.nova-compute服务组件在接收到同步调用请求后,将发送通知到消息队列,表明开始进行usb设备的卸载操作,通过调用底层虚拟化的能力卸载指定卸载usb设备。
114.同时,nova-compute服务组件会持续监测usb设备的卸载状态:
115.如果指定卸载usb设备卸载成功,nova-compute服务组件同步返回成功信息和已卸载的usb设备的信息,表明usb设备卸载成功。
116.如果指定卸载usb设备卸载失败,nova-compute服务组件同步返回失败信息和失败原因信息,表明usb设备卸载失败。
117.在另一实施例中,本发明实施例还提供了一种计算机设备,包括处理器和存储器;其中,处理器执行存储器中保存的计算机程序时实现前述实施例公开的usb设备安全挂载和卸载的方法。
118.关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再
进行赘述。
119.在另一实施例中,本发明实施例还提供一种计算机可读存储介质,用于存储计算机程序;计算机程序被处理器执行时实现前述公开的usb设备安全挂载和卸载的方法。
120.关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
121.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的设备、存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
122.本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
123.以上结合具体实施方式和范例性实例对本发明进行了详细说明,不过这些说明并不能理解为对本发明的限制。本领域技术人员理解,在不偏离本发明精神和范围的情况下,可以对本发明技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本发明的范围内。本发明的保护范围以所附权利要求为准。