WO2023015776A1 - 一种虚拟机管理方法、装置、设备及可读存储介质 - Google Patents

一种虚拟机管理方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
WO2023015776A1
WO2023015776A1 PCT/CN2021/134197 CN2021134197W WO2023015776A1 WO 2023015776 A1 WO2023015776 A1 WO 2023015776A1 CN 2021134197 W CN2021134197 W CN 2021134197W WO 2023015776 A1 WO2023015776 A1 WO 2023015776A1
Authority
WO
WIPO (PCT)
Prior art keywords
label
virtual machine
group
category
selinux
Prior art date
Application number
PCT/CN2021/134197
Other languages
English (en)
French (fr)
Inventor
刘凯
徐峥
范益
闫利华
霍文
Original Assignee
苏州浪潮智能科技有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 苏州浪潮智能科技有限公司 filed Critical 苏州浪潮智能科技有限公司
Priority to US18/270,229 priority Critical patent/US11922205B2/en
Publication of WO2023015776A1 publication Critical patent/WO2023015776A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

一种虚拟机管理方法、装置、设备及可读存储介质,该虚拟机管理方法应用于私有云,包括:获取SELinux标签;SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素(S101);将SELinux标签中除Category之外的其他元素设置为默认值(S102);按照预设的Category变量组合给Category赋不同值,以得到多个不重复的标签组(S103);将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离(S104)。该方案给虚拟机配置相同或不同标签组,从而实现不同虚拟机的隔离或互通,能够实现虚拟机之间的精确隔离。

Description

一种虚拟机管理方法、装置、设备及可读存储介质
本申请要求在2021年8月11日提交中国专利局、申请号为202110916334.3、发明名称为“一种虚拟机管理方法、装置、设备及可读存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,特别涉及一种虚拟机管理方法、装置、设备及可读存储介质。
背景技术
随着云计算技术的快速发展,为传统信息化建设提供了突破性的解决方案。与计算有关的部署方式可以分为:公有云、私有云、社区云、混合云。其中,私有云是为一个客户单独使用而构建的,具备对数据、安全性和服务质量的有效控制,一个私有云平台通常负责管理成百上千台虚拟机,虚拟机之间的有效隔离不仅可以使系统稳定的运行,也是保障整个系统安全的重要措施,否则一台虚拟机被攻击后,极有可能导致整个系统都面临被攻击的风险。
目前,一般针对私有云中的各个虚拟机使用物理隔离,即:使部署于同一物理机上的虚拟机互通,而部署于不同物理机上的虚拟机互相隔离。但此种隔离方式不够细致,无法对同一物理机上的不同虚拟机进行资源的精确隔离。
例如:在CN104580505A公开的方案中,利用VLAN tag进行租户隔离。但是,VLAN是基于物理机在网络层面对虚拟机进行隔离,并且,同一VLAN中的不同虚拟机不能相互隔离,因此VLAN的隔离粒度较大,不能控制单个虚拟机之间隔离或互通。由于VLAN隔离只是在网络表面上进行隔离,因此安全等级较低。一旦VLAN中一个虚拟机被入侵,与这个虚拟机位于同一台物理服务器上的其他虚拟机也可能被入侵。可见,CN104580505A使用的VLAN隔离手段针对网络层面和物理机,且隔离或连通的粒度较大、安全等级有待提高。
在CN109101322A公开的方案中,利用标签Selinux安全机制给虚拟机进程和镜像打配对标签,使得非配对的进程和镜像不能启动,同时持有非配对标签的进程不进行访问镜像标签的文件和设备,实现安全隔离。但是,由该方案中的“虚拟机1启动时为该进程分配一个唯一的标签system_u:system_r:svirt_t:s1。虚拟机2启动时为该进程分配一个唯一的标签system_u:system_r:svirt_t:s2”可看出,该方案给虚拟机1和虚拟机2配置的标签尾部是s1和s2,对应Sensitivity元素。可见该方案是基于Selinux中的“Sensitivity(级别)”进行隔离。采用级别隔离是不完全的隔离,因为级别用于控制标签的级别大小,存 在包含关系,即:级别大的对级别小的是有访问和控制权限的。如:公司内的上级对普通员工具有管理权限。
因此,如何对私有云中的虚拟机进行细粒度管理,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种虚拟机管理方法、装置、设备及可读存储介质,以对私有云中的虚拟机进行细粒度管理。其具体方案如下:
第一方面,本申请提供了一种虚拟机管理方法,应用于私有云,包括:
获取SELinux标签;所述SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素;
将所述SELinux标签中除所述Category之外的其他元素设置为默认值;
按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组;
将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离。
优选地,所述预设的Category变量组合中的变量个数的取值范围为[1,1024];每个变量的赋值范围为[0,1023],且后一变量的赋值大于前一变量的赋值。
优选地,所述按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组,包括:
采用递增策略或随机策略按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组。
优选地,还包括:
存储多个不重复的标签组。
优选地,所述将各个标签组配置于私有云中的虚拟机,包括:
从创建虚拟机的请求中提取标签配置开关的标识信息,以及待配置标签组的ID;
若基于所述标识信息确定所述标签配置开关开启,且基于所述ID确定所述待配置标签组可用,则将所述待配置标签组添加至创建虚拟机所用的基础参数文件中,并基于所述基础参数文件创建虚拟机。
优选地,还包括:
若基于所述ID确定所述待配置标签组不可用,则返回虚拟机创建失败的通知消息或跳转至标签组创建接口。
优选地,还包括:
删除配置有目标标签组的目标虚拟机后,将该目标虚拟机与该目标标签组解绑。
优选地,还包括:
建立所述ID与创建所得的虚拟机之间的映射关系,并将所述映射关系存储至映射表。
优选地,还包括:
基于所述ID查询所述映射关系、以及所述映射关系所关联的标签组和虚拟机。
优选地,还包括:
删除配置有目标标签组的目标虚拟机后,解除并删除该目标虚拟机与该目标标签组之间的映射关系。
第二方面,本申请提供了一种虚拟机管理装置,应用于私有云,包括:
获取模块,用于获取SELinux标签;所述SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素;
设置模块,用于将所述SELinux标签中除所述Category之外的其他元素设置为默认值;
创建模块,用于按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组;
配置模块,用于将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的虚拟机管理方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的虚拟机管理方法。
通过以上方案可知,本申请提供了一种虚拟机管理方法,应用于私有云,包括:获取SELinux标签;所述SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素;将所述SELinux标签中除所述Category之外的其他元素设置为默认值;按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组;将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离。
可见,本申请使用SELinux标签管理私有云中的各个虚拟机。具体的,将SELinux标签中除Category之外的其他元素设置为默认值,按照预设的Category变量组合给SELinux标签中的Category赋不同值,从而可得到多个不重复的标签组;然后将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离。可见,本申请给虚拟机配置相同或不同标签组,从而实现不同虚拟机的隔离或互通。该方案无需关注需要隔离的虚拟机是部署于同一物理机,还是部署于不同物理机,仅需给需要隔离的虚拟机配置不同标签组即可,能够实现虚拟机之间的精确隔离,即:实现了私有云中的虚拟机的细粒度管理。
相应地,本申请提供的一种虚拟机管理装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种虚拟机管理方法流程图;
图2为本申请公开的一种虚拟机管理装置示意图;
图3为本申请公开的一种电子设备示意图;
图4为本申请公开的一种标签组创建流程图;
图5为本申请公开的一种虚拟机配置流程图;
图6为本申请公开的一种隔离虚拟机的系统示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,一般针对私有云中的各个虚拟机使用物理隔离,即:使部署于同一物理机上的虚拟机互通,而部署于不同物理机上的虚拟机互相隔离。但此中隔离方式不够细致,无法对同一物理机上的不同虚拟机进行资源的精确隔离。为此,本申请提供了一种虚拟机管理方案,能够对私有云中的虚拟机进行细粒度管理。
参见图1所示,本申请实施例公开了一种虚拟机管理方法,应用于私有云,包括:
S101、获取SELinux标签;SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素。
其中,SELinux(Security-Enhanced Linux)是在Linux开源社区下开发的一个强访问控制(MAC,Mandatory Access Control)的安全子系统。其目的是为了让各个服务进程都受到约束,使其仅获取到应获取的资源。具体为进程和文件设置标签,每个标签由User(用户)、Role(角色)、Type(类型)、Sensitivity(级别)、Category(分类)5个安全元素组成。
S102、将SELinux标签中除Category之外的其他元素设置为默认值。
S103、按照预设的Category变量组合给Category赋不同值,以得到多个不重复的标签组。
在一种具体实施方式中,预设的Category变量组合中的变量个数的取值范围为[1,1024];每个变量的赋值范围为[0,1023],且后一变量的赋值大于前一变量的赋值。
若Category变量组合中的变量个数为2,则Category变量组合为:C 1,C 2。其中,Category变量组合中单个变量的取值范围为:c0-c1023,即:C 1可取值c0-c1023,C 2也可取值c0-c1023。
Category变量组合中的变量个数越多,可得的标签组也就越多。给Category变量组合中的各个变量赋值时,需要注意:在一个确定的Category变量组合中,后一变量的赋值应大于前一变量的赋值。以C 1,C 2这一Category变量组合为例,当C 1=c0时,C 2可取值c1-c1023,则Category可取值为:c0,c1、c0,c2、c0,c3、c0,c4、……、c0,c1023;当C 1=c1 时,C 2可取值c2-c1023,则Category可取值为:c1,c2、c1,c3、c1,c4、c1,c5、……、c1,c1023。以此类推,可创建得到523776个不重复的标签组。
一般地,在一个私有云中,Category变量组合中的变量个数为一个固定值。不同私有云中的Category变量组合中的变量个数可以不同。
在一种具体实施方式中,按照预设的Category变量组合给Category赋不同值,以得到多个不重复的标签组,包括:采用递增策略或随机策略按照预设的Category变量组合给Category赋不同值,以得到多个不重复的标签组。其中,递增策略优于随机策略,因为当前所得的标签组不能与已经存在的标签组重复,故每次创建一个标签组后,都需要检查该标签组是否已经存在。而采用递增策略即可省略标签组查重过程,也就省去防重复判断时间,因此可提高效率。
在本实施例中,得到多个不重复的标签组后,存储这些标签组,以备后续给虚拟机进行配置。
S104、将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离。
在一种具体实施方式中,将各个标签组配置于私有云中的虚拟机,包括:从创建虚拟机的请求中提取标签配置开关的标识信息,以及待配置标签组的ID;若基于标识信息确定标签配置开关开启,且基于ID确定待配置标签组可用,则将待配置标签组添加至创建虚拟机所用的基础参数文件中,并基于基础参数文件创建虚拟机。
若基于ID确定待配置标签组不可用,则返回虚拟机创建失败的通知消息或跳转至标签组创建接口。若基于标识信息确定标签配置开关关闭,则直接基于基础参数文件创建虚拟机,也即:基础参数文件中不包括待配置标签组。
需要说明的是,虚拟机与其配置的标签组具有映射关系,因此在一种具体实施方式中,若删除配置有目标标签组的目标虚拟机后,则将该目标虚拟机与该目标标签组解绑,也即:解除二者之间的映射关系。
可见,本实施例使用SELinux标签管理私有云中的各个虚拟机。具体的,将SELinux标签中除Category之外的其他元素设置为默认值,按照预设的Category变量组合给SELinux标签中的Category赋不同值,从而可得到多个不重复的标签组;然后将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离。可见,本实施例给虚拟机配置相同或不同标签组,从而实现不同虚拟机的隔离或互通。该方案无需关注需要隔离的虚拟机是部署于同一物理机,还是部署于不同物理机,仅需给需要隔离的虚拟机配置不同标签组即可,能够实现虚拟机之间的精确隔离,即:实现了私有云中的虚拟机的细粒度管理。
基于上述实施例,需要说明的是,创建所得的多个不重复的标签组可以记录在标签组数据表中,创建所得的各个虚拟机的虚拟机实例可以记录在虚拟机实例表中。若某一个虚拟机在创建时配置了某一个标签组,则建立该标签组的ID与该虚拟机之间的映射关系,并将映射关系存储至映射表。也即:在将待配置标签组添加至创建虚拟机所用的基础参数 文件中,并基于基础参数文件创建虚拟机后,建立待配置标签组的ID与创建所得的虚拟机之间的映射关系,并将映射关系存储至映射表。
当然,基于标签组的ID可以在映射表中查询相应映射关系,基于标签组的ID也可以在标签组数据表中查询相应标签组,基于标签组的ID也可以在虚拟机实例表中查询相应虚拟机(即:查询与该ID有关联关系的虚拟机)。也即:基于ID查询映射关系、以及映射关系所关联的标签组和虚拟机。
相应的,删除配置有目标标签组的目标虚拟机后,解除该目标虚拟机与该目标标签组之间的映射关系,并从映射表中删除该映射关系。
下面对本申请实施例提供的一种虚拟机管理装置进行介绍,下文描述的一种虚拟机管理装置与上文描述的一种虚拟机管理方法可以相互参照。
参见图2所示,本申请实施例公开了一种虚拟机管理装置,应用于私有云,包括:
获取模块201,用于获取SELinux标签;SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素;
设置模块202,用于将SELinux标签中除Category之外的其他元素设置为默认值;
创建模块203,用于按照预设的Category变量组合给Category赋不同值,以得到多个不重复的标签组;
配置模块204,用于将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离。
在一种具体实施方式中,预设的Category变量组合中的变量个数的取值范围为[1,1024];每个变量的赋值范围为[0,1023],且后一变量的赋值大于前一变量的赋值。
在一种具体实施方式中,创建模块具体用于:
采用递增策略或随机策略按照预设的Category变量组合给Category赋不同值,以得到多个不重复的标签组。
在一种具体实施方式中,还包括:
存储模块,用于存储多个不重复的标签组。
在一种具体实施方式中,配置模块具体用于:
从创建虚拟机的请求中提取标签配置开关的标识信息,以及待配置标签组的ID;
若基于标识信息确定标签配置开关开启,且基于ID确定待配置标签组可用,则将待配置标签组添加至创建虚拟机所用的基础参数文件中,并基于基础参数文件创建虚拟机。
在一种具体实施方式中,配置模块还用于:
若基于ID确定待配置标签组不可用,则返回虚拟机创建失败的通知消息或跳转至标签组创建接口。
在一种具体实施方式中,还包括:
映射关系建立模块,用于建立ID与创建所得的虚拟机之间的映射关系,并将映射关系存储至映射表。
在一种具体实施方式中,还包括:
查询模块,用于基于ID查询映射关系、以及映射关系所关联的标签组和虚拟机。
在一种具体实施方式中,还包括:
解绑模块,用于删除配置有目标标签组的目标虚拟机后,解除并删除该目标虚拟机与该目标标签组之间的映射关系。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种虚拟机管理装置,该装置给虚拟机配置相同或不同标签组,从而实现不同虚拟机的隔离或互通。该方案无需关注需要隔离的虚拟机是部署于同一物理机,还是部署于不同物理机,仅需给需要隔离的虚拟机配置不同标签组即可,能够实现虚拟机之间的精确隔离,即:实现了私有云中的虚拟机的细粒度管理。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种虚拟机管理方法及装置可以相互参照。
参见图3所示,本申请实施例公开了一种电子设备,包括:
存储器301,用于保存计算机程序;
处理器302,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种虚拟机管理方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的虚拟机管理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
结合下述实施例,对上文提及的标签组创建过程,和给虚拟机配置标签组的过程进行详细介绍。在本实施例中,标签组也称为SELinux标签组。
1、标签组创建过程。
设计标签组生成-存储-分配流程,通过在私有云操作系统的虚拟计算管理组件中增加标签组功能模块,并提供标签组的增加、删除和查找接口,从而实现对标签组的管理;同时,通过设置是否启用标签组的功能开关,实现对标签组的灵活控制。
私有云操作系统:又称云计算中心操作系统、云OS,是架构于基础硬件(服务器、存储、网络等)和基础软件(单机操作系统、数据库等)基础上的软硬件资源综合管理系统。通常由虚拟计算管理组件、分布式文件系统、业务/资源调度管理、基础软硬件管理等构成。私有云操作系统包括采用KVM技术实现的云操作系统,例如openstack。
虚拟计算管理组件:私有云操作系统中的核心组件之一,负责云平台中虚拟机生命周期的管理,本实施例通过在虚拟计算管理组件中添加接口和功能模块代码来实现相应功能。
具体的,在虚拟计算管理组件中添加标签组模块的主要步骤:
步骤1、在虚拟计算管理组件的数据库中新增标签组数据表,该标签组数据表用于存储创建的所有标签组。
其中,各个标签组可以与相应虚拟机实例建立映射关联关系,以给相应虚拟机配置标签组。一个虚拟机对应一个虚拟机实例。一个标签组可配置给多个虚拟机。配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离
在步骤1中,虚拟计算管理组件的数据库中新增2个表:标签组数据表(instance_seclabel_groups)、标签组和虚拟机实例的映射表(instance_seclabel_group_member)。其中,映射表中标签组和虚拟机实例的映射关系,可由用户灵活指定。
其中,标签组数据表可参见表1。
表1
字段名称 类型 备注
uuid String(36) 唯一标识
id Int(11) 自增长
created_at DateTime 新建时间
updated_at DateTime 更新时间
User_id String(255) 用户uuid
projectd_id String(255) 租户(项目)uuid
label_category String(64) Selinux C级标签,CXXX,CXXX
name String(255) Selinux标签组名称
其中,映射表可参见表2。
表2
字段名称 类型 备注
id Int(11) 自增长
created_at DateTime 新建时间
updated_at DateTime 更新时间
Instance_uuid String(36) 实例uuid
group_id String(255) Selinux标签组id
在表2中,Instance_uuid(实例uuid)即指定某一个虚拟机实例,Selinux标签组id即指定某一个标签组。
步骤2、按照虚拟计算管理组件的接口风格,新增一套管理标签组的接口,包括:新增、查找、删除接口等。
在步骤2中,管理标签组的接口包括新增标签组(/os-seclabel-groups)请求方式为Post、分页查找标签组(/os-seclabel-groups)请求方式为Get、根据ID单个查找标签组 (/os-seclabel-groups/{group_id})请求方式为Get、根据ID删除标签组(/os-seclabel-groups/{group_id})请求方式为Delete。其中,新增标签组即:创建标签组。
其中,新增、查找、删除接口的接口信息如表3所示,包括:新增(/os-seclabel-groups)、分页查找(/os-seclabel-groups)、根据id单个查找(/os-seclabel-groups/{group_id})、删除(/os-seclabel-groups/{group_id})。
表3
接口 请求方式 接口说明
/os-seclabel-groups Post 新增
/os-seclabel-groups Get 分页查找
/os-seclabel-groups/{group_id} Get 根据id单个查找
/os-seclabel-groups/{group_id} Delete 根据id单个删除
其中,新增接口的请求参数格式为:
Figure PCTCN2021134197-appb-000001
可见,只需要新建SELinux标签组名称(name),就可实现标签组新增。
新增成功后,接口返回值为:
Figure PCTCN2021134197-appb-000002
其中,label_category的值为Category的赋值。SELinux标签的前4个元素User、Role、Type、Sensitivity保持默认值分别为system_u、system_r、svirt_tcg_t、s0,给Category赋值为c100,c101,那么可得SELinux标签组:system_u:system_r:svirt_tcg_t:s0:c100,c101。
步骤3、创建标签组的逻辑设计中,可选择随机或者递增的策略生成标签组。
具体的,新增标签组的过程包括:将SELinux标签中的User(用户)、Role(角色)、Type(类型)、Sensitivity(级别)保持默认值不变(system_u:system_r:svirt_tcg_t:s0),只对Category(分类)进行赋值设置。Category的具体赋值方式可参照如下相关介绍。
请参见图4,假设Category变量组合为:C 1,C 2,,则新增SELinux标签组的过程包括:
步骤401:获取SELinux标签全局变量C 1和C 2,全局变量C 1和C 2的作用是用于记录当前已生成的标签组最大值状态,这样当新增一个标签组时,可以直接在C 1和C 2当前值的基础上递增,从而避免每次都从0开始递增产生的无效循环耗时。
其中,C 1初始值为0,C 2初始值为1,C 1的取值范围为c0-c1022,C 2的取值范围为c1-c1023,C 2大于C 1
同时定义局部变量count,count初始值为0,用于记录遍历整个标签组的循环次数。
步骤402:判断C 2的值是否大于1023;若是,则说明C 2已取到最大值,那么C 1值增加1;否则,说明C 2的值还没有取到最大,只需要将C 2的取值增加1,C 1不变。
步骤403:判断C 1的值是否大于1022;若是,则说明C 1已取到最大值,此时将C 1赋值为0,重新遍历一次,目的是:获取之前已生成的标签组被删除后的空缺值,同时将count值加1,表示遍历次数增加一次;否则,说明C 1没有取到最大值,那么C 1值增加1。之后将C 2赋值为C 1值加1。
步骤404:判断count的值是否大于1,若是,则说明已经从0开始遍历了一次,没有可用标签值,此时返回创建失败,提示用户SELinux标签组的数量已达到最大值,无法创建新的标签组;否则,说明还没有超过遍历过所有新建的标签组,那么继续执行下一步骤。
步骤405:判断已重新赋值的C 1,C 2在标签组数据表中是否存在,是则回到步骤402重新赋值;否则,说明此标签组没有被占用,那么新标签组创建成功,保存到标签组数据表,并返回标签组创建成功的消息给用户。
步骤4、分别测试标签组的新增、查找、删除接口,保证接口可被正常调用。
2、给虚拟机配置标签组的过程。
步骤1、在虚拟计算管理组件的数据库的虚拟机实例表中添加一个字段,用于保存虚拟机的SELinux标签组。
在步骤1中,虚拟机实例表是用于存储虚拟机信息的数据表,在该数据表的原有字段基础上,添加一个新的字段,用于保存该虚拟机的SELinux标签组。添加的字段为字符串类型,字段名称可任意取,建议取名为seclabel。
步骤2、在创建虚拟机的接口中添加一个请求参数,用于指定SELinux标签组id和是否开启SELinux标签组的开关信息。
在步骤2中,添加的请求参数名为seclabel。和在步骤1中添加的字段名保持一致,参数数据类型为一个json字符串,包含2个属性,一个属性名为state,表示是否开启SELinux,取值为true表示开启,false表示关闭;另一个属性名为group_id,表示SELinux标签组id,取值为已创建的SELinux标签组id。
请参见如下代码,加粗部分为新增的seclabel,参数数据类型为一个json字符串,包含state和group_id2个属性。其中,state表示是否开启SELinux标签组功能,取值为true表示开启,false表示关闭,group_id表示SELinux标签组id,取值为已创建的SELinux标签组id。
Figure PCTCN2021134197-appb-000003
Figure PCTCN2021134197-appb-000004
步骤3、创建虚拟机的接口后端获取SELinux标签组id和开关信息,当开关开启时,根据id查询SELinux标签组,把SELinux标签组配置到虚拟机的基础参数xml文件中。
在步骤3中,基础参数文件格式为:libvirt创建虚拟机接口指定的xml格式。
步骤4、调用libvirt接口,将配置好的xml文件传给libvirt,以创建带有自定义SELinux标签组的虚拟机。
在步骤4中,libvirt是操作和管理KVM虚机(Kernel-based Virtual Machine)的虚拟化API,使用C语言编写,可以由Python、Ruby、Perl、PHP、Java等语言调用。虚拟计算管理组件将处理好的xml基础参数文件传给libvirt,由libvirt操作KVM创建虚拟机。
其中,标签组配置流程如图5所示,具体步骤包括:
步骤501:从创建虚拟机的接口请求参数中获取seclabel参数,从seclabel中提取属性state和group_id值。
步骤502:判断state值是否为“true”,是则说明开启了SELinux标签组功能,需要对虚拟机设置自定义的SELinux标签;否则说明不开启SELinux标签组功能,不需要设置自定义的SELinux标签。
步骤503:根据group_id从数据库SELinux标签组表中查询其对应的标签组是否存在,存在则获取到标签值;若不存在,则返回创建虚拟机失败的信息,提示用户输入的标签组id不存在。
步骤504:获取标签值,按照libvirt对SELinux标签规定的xml格式进行配置,配置完成后的样例如下所示:
<seclabel type='static'model='selinux'relabel='yes'>
<label>system_u:system_r:svirt_tcg_t:s0:C100,C101</label>
</seclabel>
步骤505:配置虚拟机的其他参数信息,例如网络、镜像等。
步骤506:将配置完成的xml通过libvirt接口传给libvirt进行虚拟机的创建。
上述标签组创建和虚拟机配置的系统架构请参见图6。在图6中,设计实现了SELinux标签组的生成-存储-分配,实现对SELinux标签的管理,同时设置开关选项,实现对SELinux标签组功能的灵活开启和关闭。在创建虚拟机实例时。通过指定SELinux标签组id,实现标签组的指向分配和对虚拟机SELinux标签的自定义控制,合理的利用了SELinux强访问控制特性,实现了虚拟机间的精确隔离,提高了私有云平台的安全性。
可见,本实施例包括SELinux标签组创建和虚拟机配置2个模块。通过在虚拟机创建接口的请求参数中增加SELinux标签组配置参数,实现了虚拟机SELinux标签组的指向分配,从而实现了虚拟机在SELinux强访问控制层面的精确隔离,提高了整个私有云系统的安全性。
为了更清楚地介绍本申请提供的方案,下面将本申请与CN104580505A、CN109101322A进行对比。
1、本申请与CN104580505A对比。
如上文所述,CN104580505A使用的VLAN隔离手段针对网络层面,且隔离或连通的粒度较大、安全等级有待提高。
而本申请在创建虚拟机的过程中,给虚拟机配置相同或不同标签组,从而实现不同虚拟机的隔离或互通。该方案无需关注需要隔离的虚拟机是部署于同一物理机,还是部署于不同物理机,仅需给需要隔离的虚拟机配置不同标签组即可,能够实现虚拟机之间的精确隔离,即:实现了私有云中的虚拟机的细粒度管理。其中,使用SELinux标签能够对虚拟机内核层面进行隔离,也即:使单个虚拟机之间隔离或连通,故隔离或连通的粒度更细。由于本申请是基于虚拟机内核进行的底层隔离方案,因此即便某个虚拟机被入侵,由于SELinux标签可以保证强访问控制的隔离,因此不会对其他虚拟机构成威胁,安全等级更高。
可见,本申请使用的隔离手段针对虚拟机底层内核,且隔离或连通的粒度更细、安全等级更高。
2、本申请与CN109101322A对比。
如上文所述,CN109101322A基于Selinux中的“Sensitivity(级别)”进行隔离,实现的是不完全的隔离,因为级别用于控制标签的级别大小,存在包含关系。而本申请是基于Selinux中的“Category(分类)”进行隔离或互通,基于Category实现的隔离是完全隔离,因为Category所赋的值不同时,两个标签没有任何关系,级别大小是一样的,也就不存在包含关系。可见,本申请提供的各个标签组是同级别的,标签组的设计更合理,能实现不同虚拟机之间的完全隔离或互通。
再者,CN109101322A以进程、镜像作为打标签对象,且在虚拟机启动时给进程、镜像打标签,以使同时持有非配对标签的进程不进行访问镜像标签的文件和设备。而本申请以各个虚拟机作为打标签对象,且在创建虚拟机时给虚拟机打标签,以使各个虚拟机之间互通或隔离。可见,CN109101322A与本申请打标签的对象不同、实现手段和作用也都没有关联关系。
除此之外,本申请还实现了两个可控:
(1)标签组可控:实现了对标签组的管理和控制,如:对标签组进行增删改查等操作。
(2)虚拟机隔离可控:实现了灵活控制不同虚拟机隔离或互通,可以适配多种业务场景,例如:当业务需要某几个虚拟机之间资源共享,同时保证这些虚拟机与其它虚拟机保持隔离,这时只需要保证这几个虚拟机的标签组相同即可。
可见,本申请提供的方案灵活可控,且能够对各个标签组进行管理和控制。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

  1. 一种虚拟机管理方法,其特征在于,应用于私有云,包括:
    获取SELinux标签;所述SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素;
    将所述SELinux标签中除所述Category之外的其他元素设置为默认值;
    按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组;
    将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离;
    其中,所述将各个标签组配置于私有云中的虚拟机,包括:
    从创建虚拟机的请求中提取标签配置开关的标识信息,以及待配置标签组的ID;
    若基于所述标识信息确定所述标签配置开关开启,且基于所述ID确定所述待配置标签组可用,则将所述待配置标签组添加至创建虚拟机所用的基础参数文件中,并基于所述基础参数文件创建虚拟机。
  2. 根据权利要求1所述的虚拟机管理方法,其特征在于,所述预设的Category变量组合中的变量个数的取值范围为[1,1024];每个变量的赋值范围为[0,1023],且后一变量的赋值大于前一变量的赋值。
  3. 根据权利要求2所述的虚拟机管理方法,其特征在于,所述按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组,包括:
    采用递增策略或随机策略按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组。
  4. 根据权利要求1所述的虚拟机管理方法,其特征在于,还包括:
    存储多个不重复的标签组。
  5. 根据权利要求1至4任一项所述的虚拟机管理方法,其特征在于,还包括:
    若基于所述ID确定所述待配置标签组不可用,则返回虚拟机创建失败的通知消息或跳转至标签组创建接口。
  6. 根据权利要求1至4任一项所述的虚拟机管理方法,其特征在于,还包括:
    建立所述ID与创建所得的虚拟机之间的映射关系,并将所述映射关系存储至映射表。
  7. 根据权利要求6所述的虚拟机管理方法,其特征在于,还包括:
    基于所述ID查询所述映射关系、以及所述映射关系所关联的标签组和虚拟机。
  8. 根据权利要求6所述的虚拟机管理方法,其特征在于,还包括:
    删除配置有目标标签组的目标虚拟机后,解除并删除该目标虚拟机与该目标标签组之间的映射关系。
  9. 根据权利要求1所述的虚拟机管理方法,其特征在于,基于所述ID确定所述待配置标签组可用包括:
    基于所述ID确定所述待配置标签组存储在标签组数据表中。
  10. 根据权利要求5所述的虚拟机管理方法,其特征在于,基于所述ID确定所述待配置标签组不可用包括:
    基于所述ID确定所述待配置标签组未存储在标签组数据表中。
  11. 一种虚拟机管理装置,其特征在于,应用于私有云,包括:
    获取模块,用于获取SELinux标签;所述SELinux标签包括:User、Role、Type、Sensitivity和Category五个元素;
    设置模块,用于将所述SELinux标签中除所述Category之外的其他元素设置为默认值;
    创建模块,用于按照预设的Category变量组合给所述Category赋不同值,以得到多个不重复的标签组;
    配置模块,用于将各个标签组配置于私有云中的虚拟机,使得配置有相同标签组的虚拟机互通,配置有不同标签组的虚拟机相互隔离;
    其中,配置模块具体用于:
    从创建虚拟机的请求中提取标签配置开关的标识信息,以及待配置标签组的ID;
    若基于所述标识信息确定所述标签配置开关开启,且基于所述ID确定所述待配置标签组可用,则将所述待配置标签组添加至创建虚拟机所用的基础参数文件中,并基于所述基础参数文件创建虚拟机。
  12. 根据权利要求11所述的虚拟机管理装置,其特征在于,基于所述ID确定所述待配置标签组可用包括:
    基于所述ID确定所述待配置标签组存储在标签组数据表中。
  13. 一种电子设备,其特征在于,包括:
    存储器,用于存储计算机程序;
    处理器,用于执行所述计算机程序,以实现如权利要求1至10任一项所述的虚拟机管理方法。
  14. 一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述的虚拟机管理方法。
PCT/CN2021/134197 2021-08-11 2021-11-30 一种虚拟机管理方法、装置、设备及可读存储介质 WO2023015776A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/270,229 US11922205B2 (en) 2021-08-11 2021-11-30 Virtual machine management method and apparatus, device, and readable storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110916334.3 2021-08-11
CN202110916334.3A CN113377499B (zh) 2021-08-11 2021-08-11 一种虚拟机管理方法、装置、设备及可读存储介质

Publications (1)

Publication Number Publication Date
WO2023015776A1 true WO2023015776A1 (zh) 2023-02-16

Family

ID=77576646

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/134197 WO2023015776A1 (zh) 2021-08-11 2021-11-30 一种虚拟机管理方法、装置、设备及可读存储介质

Country Status (3)

Country Link
US (1) US11922205B2 (zh)
CN (1) CN113377499B (zh)
WO (1) WO2023015776A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117278635A (zh) * 2023-11-03 2023-12-22 烽台科技(北京)有限公司 工业靶场的调度方法和工业靶场系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113377499B (zh) * 2021-08-11 2021-11-19 苏州浪潮智能科技有限公司 一种虚拟机管理方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100132011A1 (en) * 2008-11-26 2010-05-27 James Morris Mechanism to Implement Security in Process-Based Virtualization
CN108205623A (zh) * 2016-12-16 2018-06-26 杭州华为数字技术有限公司 用于共享目录的方法和装置
CN109101322A (zh) * 2018-08-29 2018-12-28 山东师范大学 基于配对标签及迁移监听的虚拟化安全计算方法及系统
CN113377499A (zh) * 2021-08-11 2021-09-10 苏州浪潮智能科技有限公司 一种虚拟机管理方法、装置、设备及可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047107B2 (en) * 2012-02-29 2015-06-02 Red Hat, Inc. Applying a custom security type label to multi-tenant applications of a node in a platform-as-a-service environment
US9038128B2 (en) * 2012-02-29 2015-05-19 Red Hat, Inc. Applying security category labels to multi-tenant applications of a node in a platform-as-a-service environment
CN108345491B (zh) * 2017-01-24 2021-08-13 北京航空航天大学 云计算环境中一种跨平台的虚拟机强制访问控制方法
US10999326B1 (en) * 2018-05-30 2021-05-04 Tigera, Inc. Fine grained network security
TWI756867B (zh) * 2020-10-16 2022-03-01 財團法人工業技術研究院 在作業系統標記物件標籤及產生安全政策的方法及系統
CN112463203B (zh) * 2020-10-29 2023-05-12 苏州浪潮智能科技有限公司 一种SELinux的管理配置方法、系统、设备以及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100132011A1 (en) * 2008-11-26 2010-05-27 James Morris Mechanism to Implement Security in Process-Based Virtualization
CN108205623A (zh) * 2016-12-16 2018-06-26 杭州华为数字技术有限公司 用于共享目录的方法和装置
CN109101322A (zh) * 2018-08-29 2018-12-28 山东师范大学 基于配对标签及迁移监听的虚拟化安全计算方法及系统
CN113377499A (zh) * 2021-08-11 2021-09-10 苏州浪潮智能科技有限公司 一种虚拟机管理方法、装置、设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117278635A (zh) * 2023-11-03 2023-12-22 烽台科技(北京)有限公司 工业靶场的调度方法和工业靶场系统
CN117278635B (zh) * 2023-11-03 2024-03-19 烽台科技(北京)有限公司 工业靶场的调度方法和工业靶场系统

Also Published As

Publication number Publication date
US20230393880A1 (en) 2023-12-07
CN113377499A (zh) 2021-09-10
CN113377499B (zh) 2021-11-19
US11922205B2 (en) 2024-03-05

Similar Documents

Publication Publication Date Title
US11226847B2 (en) Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US10250461B2 (en) Migrating legacy non-cloud applications into a cloud-computing environment
CN107077389B (zh) 用于在多租户应用服务器环境中使用全局运行时的系统和方法
JP6599448B2 (ja) マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するためのシステムおよび方法
US10523709B2 (en) System and method for dynamic security configuration in a multitenant application server environment
US10009225B2 (en) System and method for supporting multiple partition edit sessions in a multitenant application server environment
JP6703527B2 (ja) マルチテナントアプリケーションサーバ環境におけるパーティション識別子の決定のためのシステムおよび方法
WO2023015776A1 (zh) 一种虚拟机管理方法、装置、设备及可读存储介质
US10103946B2 (en) System and method for JMS integration in a multitenant application server environment
US20180219877A1 (en) Security-based container scheduling
JP2003099410A (ja) 複数装置管理の方法およびシステム
US9602344B1 (en) Automated establishment of access to remote services
US11550801B2 (en) Deprecating configuration profiles for cloud-based in-memory database
US10203976B2 (en) Virtual appliance management in a virtualized computing environment based on operational modes associated with virtual appliance
US20160191620A1 (en) System backup device and backup method
US9483490B1 (en) Generation of a cloud application image
CN116436968A (zh) 一种服务网格通信方法、系统、装置以及存储介质
WO2021248972A1 (zh) 默认网关管理方法、网关管理器、服务器及存储介质
US10958730B2 (en) Mapping virtual network functions
US11449395B2 (en) Backup and restore of distributed environments
US20200183714A1 (en) Common service resource application method, related device, and system
CN117909027A (zh) 层级式容器编排系统及容器编排方法
CN115495215A (zh) 一种gpu共享方法、装置、设备及介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21953381

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE