CN113472745A - 一种基于selinux的openstack公有云多租户隔离方法、系统及终端 - Google Patents
一种基于selinux的openstack公有云多租户隔离方法、系统及终端 Download PDFInfo
- Publication number
- CN113472745A CN113472745A CN202110603175.1A CN202110603175A CN113472745A CN 113472745 A CN113472745 A CN 113472745A CN 202110603175 A CN202110603175 A CN 202110603175A CN 113472745 A CN113472745 A CN 113472745A
- Authority
- CN
- China
- Prior art keywords
- selinux
- tenant
- label
- virtual machine
- creating
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种基于selinux的openstack公有云多租户隔离方法、系统及终端,该方法包括:在新建租户时,增加新的selinux标签类型,并将selinux标签类型写入nova数据库;根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签;调用selinux规则包生成导入模块,将selinux标签配置到xml文件中;根据xml文件,创建或启动带有selinux标签的虚拟机。该系统包括:虚拟机标签处理模块、Selinux规则包生成导入模块和标签创建模块。该终端包括处理器以及与处理器通信连接的存储器。通过本申请,能够实现物理机资源的灵活配置,大大提高物理机资源的利用率。
Description
技术领域
本申请涉及虚拟机安全技术领域,特别是涉及一种基于selinux的openstack公有云多租户隔离方法、系统及终端。
背景技术
Openstack是一个开源的云计算资源管理平台项目,由一系列较小的、负责各方面功能的开源项目组合而成,经过十几个版本的迭代,Openstack已成为许多企业构建云服务的首选方案。
在Openstack中,一个公有云通常出于功能或业务角度的不同,而将整个虚拟机集群划分为多个较小规模的功能集群,这些划分出来的较小规模的功能集群被称为租户,英文名称为project。每个租户均管理着成百上千台运行相同业务功能的虚拟机。不同租户间的功能业务不同,对资源的访问需求也不同,但是同一个租户内的虚拟机在经过openstack分发处理后,通常运行在同一台物理机上。因此,不同业务租户的虚拟机之间如果不能进行有效隔离,就可能使得遭受攻击的虚拟机通过跨进程、跨租户的方式获得原本不属于它的访问权限,进而导致信息泄露等问题,甚至威胁主机系统的安全稳定性。因此,如何对不同租户间的虚拟机进行隔离,从而确保主机系统和虚拟机运行的安全稳定性,是个重要的技术问题。
目前对虚拟机集群进行隔离,主要是使用物理划分隔离的方法。具体地,通过开发大量的判断和划分管理逻辑,对整个物理机集群进行强制划分,然后在虚拟机分发过程中识别和读取虚拟机所属的集群信息,并将其分发至集群专属的物理机上,从而实现集群隔离。
然而,由于对于openstack来说整个物理机集群是一个完整的资源池,对其进行强制划分需要大量的的判断和划分管理逻辑开发,会占用大量的物理机资源,而且由于是强制划分,资源分配不够灵活,无法动态调整,容易出现一个集群的物理机资源盈余,而另一个集群的物理机资源吃紧的状态,使得物理机资源的利用率不够高。因此,目前对虚拟机集群进行隔离的方法无法动态调整物理机资源,使得物理机资源的利用率较低。
发明内容
本申请提供了一种基于selinux的openstack公有云多租户隔离方法、系统及终端,以解决现有技术中对虚拟机集群进行隔离的方法无法动态调整物理机资源,使得物理机资源的利用率较低的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种基于selinux的openstack公有云多租户隔离方法,所述方法以租户为单位进行虚拟机隔离,所述方法包括:
在新建租户时,增加新的selinux标签类型,并将所述selinux标签类型写入nova数据库;
根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签,所述创建或启动虚拟机请求中包含:selinux标签类型、用于表示是否开启selinux标签的开关信息以及当前租户ID,所述开关信息包括:开启状态和关闭状态;
调用selinux规则包生成导入模块,将所述selinux标签配置到xml文件中,所述selinux规则包生成导入模块包括客户端和服务端,所述xml文件为创建或启动虚拟机的基础参数文件;
根据所述xml文件,创建或启动带有selinux标签的虚拟机。
可选地,所述在新建租户时,增加新的selinux标签类型,并将selinux标签类型写入nova数据库,包括:
在用于创建新租户的接口中添加第一请求参数,所述第一请求参数用于指定租户使用的selinux标签类型,以及是否开启selinux标签开关信息;
在用于创建/启动虚拟机的接口中添加第二请求参数,所述第二请求参数用于指定是否开启selinux标签的开关信息。
可选地,在用于创建新租户的接口中添加第一请求参数之前,所述在新建租户时,增加新的selinux标签类型,并将所述selinux标签类型写入nova数据库的方法,还包括:
在nova数据库的租户表中添加用于保存selinux标签信息的字段。
可选地,所述创建/启动虚拟机的接口为restful接口。
可选地,所述根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签,包括:
获取开关信息;
当所述开关信息为开启状态时,根据当前租户ID查询租户表,获取与当前租户相匹配的selinux标签类型;
将所述selinux标签类型与其他预定义在代码中的selinux标签部分拼接为完整的selinux标签,并将所述完整的selinux标签定义为与当前租户相匹配的selinux标签。
可选地,所述调用selinux规则包生成导入模块,将所述selinux标签配置到xml文件中,包括:
客户端根据所述selinux标签生成一请求selinux规则包的消息,并将所述消息传递至服务端;
服务端根据所述消息和selinux标签类型,生成虚拟机selinux规则包,将所述虚拟机selinux规则包导入selinux中,并返回处理结果至客户端;
客户端根据处理结果,判断是否导入成功,并将导入结果反馈至nova节点;
当导入成功时,所述nova节点根据导入结果生成selinux标签;
将所述虚拟机selinux标签写入xml文件中;
当导入失败时,所述nova节点向xml文件中写入默认的selinux标签。
可选地,根据所述xml文件,创建或启动带有selinux标签的虚拟机的方法,包括:
调用libvirt接口,将所述xml文件传输至libvirt中;
利用所述libvirt,创建或启动带有selinux标签的虚拟机。
一种基于selinux的openstack公有云多租户隔离系统,所述系统以租户为单位进行虚拟机隔离,所述系统包括:
虚拟机标签处理模块,用于在新建租户时,增加新的selinux标签类型,并将所述selinux标签类型写入nova数据库,以及,根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的虚拟机selinux标签,其中,所述创建或启动虚拟机请求中包含:selinux标签类型、用于表示是否开启selinux标签的开关信息以及当前租户ID,所述开关信息包括:开启状态和关闭状态;
Selinux规则包生成导入模块,用于根据selinux标签生成相应的虚拟机selinux规则包,并将所述规则包导入selinux中;
标签创建模块,用于当selinux规则包生成导入模块导入成功时,根据导入结果生成selinux标签,并将所述selinux标签写入xml文件中,当导入失败时,向xml文件中写入默认的selinux标签,以及,根据所述xml文件,创建或启动带有selinux标签的虚拟机,其中,所述xml文件为创建或启动虚拟机的基础参数文件,所述标签创建模块设置于nova节点中。
可选地,所述Selinux规则包生成导入模块包括:客户端和服务端;
所述客户端,用于根据所述selinux标签信息生成一请求selinux规则包的消息,并将所述消息传递至服务端;
所述服务端,用于根据所述消息和selinux标签类型,生成虚拟机selinux规则包,将所述虚拟机selinux规则包导入selinux中,并返回处理结果至客户端;
所述客户端,还用于根据处理结果,判断是否导入成功,并将导入结果反馈至nova节点。
一种终端,所述终端包括:处理器以及与所述处理器通信连接的存储器,其中,
所述存储器中存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够执行如上任意一项所述的基于selinux的openstack公有云多租户隔离方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请提供一种基于selinux的openstack公有云多租户隔离方法,该方法主要是以租户为单位进行虚拟机隔离,同一租户内的虚拟机之间可以互相访问,但是不同租户间的虚拟机是互相隔离的。该方法在新建租户时,增加新的selinux标签类型,并将其写入nova数据库,根据用户向租户发送的创建虚拟机请求或者启动虚拟机请求,确定与当前租户相匹配的selinux标签信息,然后调用selinux规则包生成导入模块,将selinux标签配置到基础参数xml文件中,最后根据该xml文件创建或启动带有自定义selinux标签的虚拟机。
本实施例通过在公有云项目中添加自定义selinux标签,实现安全标签类型与租户之间的绑定,允许用户在新建租户、管理租户、新建虚拟机或者启动虚拟机时指定唯一的安全标签,从而实现以租户为单位的虚拟机安全隔离。由于本实施例在创建或启动虚拟机请求中包含用于表示是否开启selinux标签的开关信息,从而能够利用参数指定是否开启selinux标签,进而实现灵活控制安全标签的开启和关闭状态。在新建租户时,通过不同接口增加新的安全标签类型型号参数,且在调用selinux规则包生成导入模块时,将虚拟机selinux标签信息配置到xml文件中,这些过程中调用各种不同接口,通过合理利用selinux强访问控制特性,能够允许不同功能业务的虚拟机集群,共享共一个物理机资源,允许系统动态调节各租户间的资源配置,避免物理机资源浪费,最终实现物理机资源的灵活配置,有利于大大提高物理机资源的利用效率。
本申请还提供一种基于selinux的openstack公有云多租户隔离系统,该系统主要包括:虚拟机标签处理模块、Selinux规则包生成导入模块和标签创建模块三部分。通过虚拟机标签处理模块,在新建租户时增加新的安全标签类型型号参数,并根据用户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签,从而在公有云项目中实现selinux标签与租户之间的绑定。通过selinux规则包生成导入模块,根据selinux标签生成相应的虚拟机selinux规则包,并将所述规则包导入selinux中,从而实现selinux标签规则的生成、存储和分配。通过标签创建模块将selinux标签配置到xml文件中,并根据xml文件,创建或启动带有自定义selinux标签的虚拟机,最终建立自定义标签的虚拟机。本实施例结合selinux强访问控制工具最终实现对公有云租户间的安全隔离。由于虚拟机标签处理模块中所获取的用户发送的创建或启动虚拟机请求中包含用于表示是否开启selinux标签的开关信息,使得本系统能够实现用户在新建和管理租户,以及新建和启动虚拟机时指定唯一的安全标签,提高虚拟机运行的安全稳定性,且能够对该安全标签的开启和关闭状态进行灵活控制,提高虚拟机管理的灵活性。本实施例的虚拟机标签处理模块在进行标签处理的过程中,能够充分调用各种接口,如:创建新租户的接口、创建/启动虚拟机的接口等,根据selinux标签信息实现物理机资源的灵活配置和动态调整,避免物理机资源的不均衡和浪费,因此,该基于selinux的虚拟机隔离系统对物理机资源的利用率较高。
本申请还提供一种终端,该终端也具有如上基于selinux的openstack公有云多租户隔离方法和系统相应的技术效果,在此不再赘述。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种基于selinux的openstack公有云多租户隔离方法的流程示意图;
图2为本申请实施例所提供的一种基于selinux的openstack公有云多租户隔离系统的结构示意图;
图3为本申请实施例中虚拟机标签处理模块和Selinux规则包生成导入模块的工作原理示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
Selinux(Security-Enhanced Linux)是由美国国家安全局在Linux开源社区帮助下开发的一个强访问控制(MAC,Mandatory Access Control)的安全子系统。其目的是为了让各个服务进程都受到约束,使其仅获取到应获取的资源。Selinux为进程和文件设置标签,每个标签由User(用户)、Role(角色)、Type(类型)、Sensitivity(级别)、Category(分类)5个安全元素组成。
在Openstack中,一个公有云通常出于功能或业务角度的不同,而将整个虚拟机集群划分为多个较小规模的功能集群,这些划分出来的较小规模的功能集群被称为租户,也就是说,一个租户即为一个小规模的虚拟机集群。本发明所提供的公有云多租户隔离方法,是基于selinux的以租户为单位的虚拟机隔离方法。
为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。
实施例一
参见图1,图1为本申请实施例所提供的一种基于selinux的openstack公有云多租户隔离方法的流程示意图。由图1可知,本实施例中基于selinux的openstack公有云多租户隔离方法,主要包括如下步骤:
S1:在新建租户时,增加新的selinux标签类型,并将selinux标签类型写入nova数据库。
具体地,步骤S1包括如下过程:
S12:在用于创建新租户的接口中添加第一请求参数。
其中,第一请求参数用于指定租户使用的selinux标签类型,以及是否开启selinux标签开关信息。
步骤S12主要是改写租户管理接口的方法。以改写keystone的租户管理接口为例,接口信息如表1所示。
Restful api | 请求方式 | 接口说明 |
/v3/projects | Post | 新增租户 |
/v3/projects | Get | 查看租户列表 |
/v3/projects/{project_id} | Get | 查看指定租户详情 |
/v3/projects/{project_id} | Patch | 更新租户信息 |
/v3/projects/{project_id} | Delete | 删除租户 |
表1 keystone的租户管理接口信息
其中,新增租户接口的第一请求参数格式更改为:
新增租户接口成功后,接口返回值为:
其中,seclabel的值可由用户在创建租户时提供,也可使用其他依据租户ID或者租户名等自动生成类型的算法生成。需要注意的是:在selinux中,对类型名字有一定的格式要求,在自定义selinux标签类型传入后,实际使用时会加上“svirt_”的前缀和“_t”的后缀。该前缀可自定义,不可为数字开头,长度建议不要过长,通常不超过10个字母,该后缀为强制要求的格式。
S13:在用于创建/启动虚拟机的接口中添加第二请求参数。
其中,第二请求参数用于指定是否开启selinux标签的开关信息。本实施例中创建虚拟机的接口和启动虚拟机的接口为同一个接口,可以采用restful接口来实现。
步骤S13主要是对创建/启动虚拟机所用的数据初始化的步骤。
具体地,主要是修改nova节点,即修改nova-compute组件,在Nova create server接口添加seclabel参数,并将相关数据结构体定义、初始化、处理流程函数等内容均添加关于seclabel的处理代码。
本实施例通过两个请求参数对租户所使用的selinux标签类型进行指定,且对是否开启selinux标签的开关信息进行指定,能够灵活控制安全标签的开关状态。
进一步地,在步骤S12之前,还包括:
S11:在nova数据库的租户表中添加用于保存selinux标签信息的字段。
通过对selinux标签信息进行保存,为后续根据selinux标签创建虚拟机提供依据,确保虚拟机创建的准确性。
继续参见图1可知,在新建租户时增加新的selinux标签类型之后,执行步骤S2:根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签。
其中,创建或启动虚拟机请求中包含:selinux标签类型、用于表示是否开启selinux标签的开关信息以及当前租户ID,开关信息包括:开启状态和关闭状态。
本实施例中创建虚拟机的接口和启动虚拟机的接口为同一个接口,但是创建虚拟机的请求与启动虚拟机的请求是不同的,实际应用中,可以根据所获取的请求是创建请求还是启动请求,响应相应的请求即可。
具体地,步骤S2包括如下过程:
S21:获取开关信息。
当开关信息为开启状态时,执行步骤S22:根据当前租户ID查询租户表,获取与当前租户相匹配的selinux标签类型。
S23:将selinux标签类型与其他预定义在代码中的selinux标签部分拼接为完整的selinux标签,并将完整的selinux标签定义为与当前租户相匹配的selinux标签。
由于一个完整的selinux标签包括五部分:由User(用户)、Role(角色)、Type(类型)、Sensitivity(级别)和Category(分类)。通过步骤S22获取到的只有selinux标签类型,即:Type。通过步骤S23,将selinux标签类型与其他预定义在代码中的selinux标签部分进行拼接,即可获取到完整的selinux标签。然后,将该完整的selinux标签作为与当前租户相匹配的selinux标签。
当开关信息为关闭状态时,执行现有技术中原有的虚拟机创建或启动流程。现有技术中的虚拟机创建或启动流程中不包含selinux标签的信息,所创建/启动的虚拟机也不具备隔离功能。
本实施例在开关信息为开启状态时,通过步骤S22和S23,能够查询selinux标签信息并将其绑定到虚拟机的信息中,执行虚拟机创建/启动流程,后续接收到该selinux标签后,将其作为标记该虚拟机与其他租户虚拟机间存在不同和需要进行隔离的标志,从而实现不同租户间虚拟机的安全隔离。
继续参见图1可知,确定与当前租户相匹配的selinux标签之后,执行步骤S3:调用selinux规则包生成导入模块,将selinux标签配置到xml文件中。
其中,selinux规则包生成导入模块包括客户端和服务端,xml文件为创建或启动虚拟机的基础参数文件。本实施例中的客户端和服务端分别为:导入模块的客户端和导入模块的服务端。
具体地,步骤S3包括如下过程:
S31:客户端根据selinux标签生成一请求selinux规则包的消息,并将该消息传递至服务端。
S32:服务端根据该消息和selinux标签类型,生成虚拟机selinux规则包,将虚拟机selinux规则包导入selinux中,并返回处理结果至客户端。
S33:客户端根据处理结果,判断是否导入成功,并将导入结果反馈至nova节点。
本实施例中导入成功和导入失败执行两种不同的流程。当有消息返回即认为导入成功,当设定的时间内没有消息返回即认为导入失败。
当导入成功时,执行步骤S34:nova节点根据导入结果生成selinux标签。
S35:将虚拟机selinux标签写入xml文件中。
当导入失败时,执行步骤S36:nova节点向xml文件中写入默认的selinux标签。
本实施例中导入失败通常包括两种情况:第一种是实际的导入失败,重新导入还是失败,第二种是卡死导致的失败。第二种失败可以通过等待来解决,但是不能无限期等待,所以会设定时间,在设定的时间内不返回数据,也判定为导入失败。
当发生两种导入失败中的任意一种时,nova节点向xml文件中写入默认的selinux标签。本实施例中默认的selinux标签即libvirt原有的功能,写死在libvirt的代码中的selinux标签,不需要指定,此时默认的selinux标签仅保证基本的安全隔离功能。和步骤S34-S35所写入的自定义的selinux标签不同。
由以上步骤S31-S36可知,当客户端接收到selinux规则请求后,根据selinux标签生成一请求selinux规则包的消息传递至服务端;服务端以root权限持续运行,等待来自客户端的消息,接收到消息后,将根据指定的selinux标签生成相应的selinux规则包,并将该selinux规则包导入selinux中,然后返回处理结果。客户端根据返回结果检查selinux规则包导入是否成功,并返回对应信息给到nova节点。
调用selinux规则包生成导入模块,将selinux标签配置到xml文件中之后,执行步骤S4:根据xml文件,创建或启动带有selinux标签的虚拟机。
S41:调用libvirt接口,将xml文件传输至libvirt中。
Libvirt即为虚拟机库。
S42:利用libvirt,创建或启动带有selinux标签的虚拟机,最终实现自定义selinux标签虚拟机的创建。
实际应用中,采用本实施例中基于selinux的openstack公有云多租户隔离方法,进行虚拟机创建或启动的过程如下:
步骤1):在新建租户时,增加新的安全标签类型参数,并写入数据库。
步骤2):用户发出创建/启动虚拟机请求,请求中包含是否开启租户隔离的标签。
步骤3):nova节点获取请求后,根据租户ID查询租户表,获取该租户专用的安全标签类型。
步骤4):nova节点调用selinux规则包生成导入工具,将安全标签作为参数传递给客户端,客户端转发给服务端。
步骤5):服务端调用semodule–l|grep project_type检查规则包是否已经导入。
步骤6):服务端根据预先定义好的虚拟机规则模板,将传入的安全标签类型填充并写入规则文件中,即te文件,然后调用规则编译工具将规则文件编译为规则包,最后使用semodule–I project_type.pp导入规则。
步骤7):服务端根据导入规则的结果,在临时文件夹中生成反馈信息文件,并写入操作结果。
步骤8):客户端检查反馈信息文件,获取操作结果并反馈给nova节点。nova节点根据结果,生成对应的安全标签,写入xml中。
步骤9):将配置完成的xml通过libvirt接口传给libvirt,进行虚拟机的创建。
实施例二
在图1所示实施例的基础上参见图2,图2为本申请实施例所提供的一种基于selinux的openstack公有云多租户隔离系统的结构示意图。由图2可知,本实施例中基于selinux的openstack公有云多租户隔离系统,主要包括:虚拟机标签处理模块、Selinux规则包生成导入模块和标签创建模块三部分。
其中,虚拟机标签处理模块,用于在新建租户时,增加新的selinux标签类型,并将selinux标签类型写入nova数据库,以及,根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的虚拟机selinux标签,其中,创建或启动虚拟机请求中包含:selinux标签类型、用于表示是否开启selinux标签的开关信息以及当前租户ID,开关信息包括:开启状态和关闭状态;Selinux规则包生成导入模块,用于根据selinux标签生成相应的虚拟机selinux规则包,并将规则包导入selinux中;标签创建模块,用于当selinux规则包生成导入模块导入成功时,根据导入结果生成selinux标签,并将selinux标签写入xml文件中,当导入失败时,向xml文件中写入默认的selinux标签,以及,根据xml文件,创建或启动带有selinux标签的虚拟机,其中,xml文件为创建或启动虚拟机的基础参数文件,标签创建模块设置于nova节点中。
进一步地,Selinux规则包生成导入模块包括:客户端和服务端。客户端,用于根据selinux标签信息生成一请求selinux规则包的消息,并将消息传递至服务端;服务端,用于根据消息和selinux标签类型,生成虚拟机selinux规则包,将虚拟机selinux规则包导入selinux中,并返回处理结果至客户端;客户端,还用于根据处理结果,判断是否导入成功,并将导入结果反馈至nova节点。
虚拟机标签处理模块包括:参数添加单元和selinux标签确定单元。其中,参数添加单元用于在新建租户时,增加新的selinux标签类型,并将selinux标签类型写入nova数据库。selinux标签确定单元用于根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签。
参数添加单元又包括:第一请求参数添加子单元和第二请求参数添加子单元。其中,第一请求参数添加子单元,用于在用于创建新租户的接口中添加第一请求参数,第一请求参数用于指定租户使用的selinux标签类型,以及是否开启selinux标签开关信息;第二请求参数添加子单元,用于在用于创建/启动虚拟机的接口中添加第二请求参数,第二请求参数用于指定是否开启selinux标签的开关信息。
进一步地,参数添加单元中还包括:保存字段添加子单元,用于在nova数据库的租户表中添加用于保存selinux标签信息的字段。
selinux标签确定单元又包括:开关信息获取子单元、selinux标签类型确定子单元和拼接子单元。其中,开关信息获取子单元,用于获取开关信息;selinux标签类型确定子单元,用于当开关信息为开启状态时,根据当前租户ID查询租户表,获取与当前租户相匹配的selinux标签类型;拼接子单元,用于将selinux标签类型与其他预定义在代码中的selinux标签部分拼接为完整的selinux标签,并将完整的selinux标签定义为与当前租户相匹配的selinux标签。
标签创建模块包括:传输单元和创建/启动单元。传输单元,用于调用libvirt接口,将xml文件传输至libvirt中;创建/启动单元,用于利用libvirt,创建或启动带有selinux标签的虚拟机。
本实施例中虚拟机标签处理模块和Selinux规则包生成导入模块的工作原理示意图,可以参见图3所示。
该实施例中基于selinux的openstack公有云多租户隔离的工作原理和工作方法,可以参考图1所示的实施例,两个实施例之间可以互相参照,在此不再赘述。
实施例三
本申请还提供一种终端,该终端包括:处理器以及与处理器通信连接的存储器,其中,存储器中存储有可被处理器执行的指令,指令被处理器执行,以使处理器能够执行如上基于selinux的openstack公有云多租户隔离方法。
处理器所执行的基于selinux的openstack公有云多租户隔离方法如下:
S1:在新建租户时,增加新的selinux标签类型,并将selinux标签类型写入nova数据库;
S2:根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签,创建或启动虚拟机请求中包含:selinux标签类型、用于表示是否开启selinux标签的开关信息以及当前租户ID,开关信息包括:开启状态和关闭状态;
S3:调用selinux规则包生成导入模块,将selinux标签配置到xml文件中,selinux规则包生成导入模块包括客户端和服务端,xml文件为创建或启动虚拟机的基础参数文件;
S4:根据xml文件,创建或启动带有selinux标签的虚拟机。
以上方法的具体执行步骤和原理,可以参见图1所示的实施例一和图2所示的实施例二,在此不再赘述。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于selinux的openstack公有云多租户隔离方法,其特征在于,所述方法以租户为单位进行虚拟机隔离,所述方法包括:
在新建租户时,增加新的selinux标签类型,并将所述selinux标签类型写入nova数据库;
根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签,所述创建或启动虚拟机请求中包含:selinux标签类型、用于表示是否开启selinux标签的开关信息以及当前租户ID,所述开关信息包括:开启状态和关闭状态;
调用selinux规则包生成导入模块,将所述selinux标签配置到xml文件中,所述selinux规则包生成导入模块包括客户端和服务端,所述xml文件为创建或启动虚拟机的基础参数文件;
根据所述xml文件,创建或启动带有selinux标签的虚拟机。
2.根据权利要求1所述的一种基于selinux的openstack公有云多租户隔离方法,其特征在于,所述在新建租户时,增加新的selinux标签类型,并将selinux标签类型写入nova数据库,包括:
在用于创建新租户的接口中添加第一请求参数,所述第一请求参数用于指定租户使用的selinux标签类型,以及是否开启selinux标签开关信息;
在用于创建/启动虚拟机的接口中添加第二请求参数,所述第二请求参数用于指定是否开启selinux标签的开关信息。
3.根据权利要求2所述的一种基于selinux的openstack公有云多租户隔离方法,其特征在于,在用于创建新租户的接口中添加第一请求参数之前,所述在新建租户时,增加新的selinux标签类型,并将所述selinux标签类型写入nova数据库的方法,还包括:
在nova数据库的租户表中添加用于保存selinux标签信息的字段。
4.根据权利要求2所述的一种基于selinux的openstack公有云多租户隔离方法,其特征在于,所述创建/启动虚拟机的接口为restful接口。
5.根据权利要求1所述的一种基于selinux的openstack公有云多租户隔离方法,其特征在于,所述根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签,包括:
获取开关信息;
当所述开关信息为开启状态时,根据当前租户ID查询租户表,获取与当前租户相匹配的selinux标签类型;
将所述selinux标签类型与其他预定义在代码中的selinux标签部分拼接为完整的selinux标签,并将所述完整的selinux标签定义为与当前租户相匹配的selinux标签。
6.根据权利要求1所述的一种基于selinux的openstack公有云多租户隔离方法,其特征在于,所述调用selinux规则包生成导入模块,将所述selinux标签配置到xml文件中,包括:
客户端根据所述selinux标签生成一请求selinux规则包的消息,并将所述消息传递至服务端;
服务端根据所述消息和selinux标签类型,生成虚拟机selinux规则包,将所述虚拟机selinux规则包导入selinux中,并返回处理结果至客户端;
客户端根据处理结果,判断是否导入成功,并将导入结果反馈至nova节点;
当导入成功时,所述nova节点根据导入结果生成selinux标签;
将所述虚拟机selinux标签写入xml文件中;
当导入失败时,所述nova节点向xml文件中写入默认的selinux标签。
7.根据权利要求1所述的一种基于selinux的openstack公有云多租户隔离方法,其特征在于,根据所述xml文件,创建或启动带有selinux标签的虚拟机的方法,包括:
调用libvirt接口,将所述xml文件传输至libvirt中;
利用所述libvirt,创建或启动带有selinux标签的虚拟机。
8.一种基于selinux的openstack公有云多租户隔离系统,其特征在于,所述系统以租户为单位进行虚拟机隔离,所述系统包括:
虚拟机标签处理模块,用于在新建租户时,增加新的selinux标签类型,并将所述selinux标签类型写入nova数据库,以及,根据用户向当前租户发送的创建或启动虚拟机请求,确定与当前租户相匹配的selinux标签,其中,所述创建或启动虚拟机请求中包含:selinux标签类型、用于表示是否开启selinux标签的开关信息以及当前租户ID,所述开关信息包括:开启状态和关闭状态;
Selinux规则包生成导入模块,用于根据selinux标签生成相应的虚拟机selinux规则包,并将所述规则包导入selinux中;
标签创建模块,用于当selinux规则包生成导入模块导入成功时,根据导入结果生成selinux标签,并将所述selinux标签写入xml文件中,当导入失败时,向xml文件中写入默认的selinux标签,以及,根据所述xml文件,创建或启动带有selinux标签的虚拟机,其中,所述xml文件为创建或启动虚拟机的基础参数文件,所述标签创建模块设置于nova节点中。
9.根据权利要求8所述的一种基于selinux的openstack公有云多租户隔离系统,其特征在于,所述Selinux规则包生成导入模块包括:客户端和服务端;
所述客户端,用于根据所述selinux标签信息生成一请求selinux规则包的消息,并将所述消息传递至服务端;
所述服务端,用于根据所述消息和selinux标签类型,生成虚拟机selinux规则包,将所述虚拟机selinux规则包导入selinux中,并返回处理结果至客户端;
所述客户端,还用于根据处理结果,判断是否导入成功,并将导入结果反馈至nova节点。
10.一种终端,其特征在于,所述终端包括:处理器以及与所述处理器通信连接的存储器,其中,
所述存储器中存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够执行权利要求1至7中任意一项所述的基于selinux的openstack公有云多租户隔离方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110603175.1A CN113472745B (zh) | 2021-05-31 | 2021-05-31 | 一种基于selinux的openstack公有云多租户隔离方法、系统及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110603175.1A CN113472745B (zh) | 2021-05-31 | 2021-05-31 | 一种基于selinux的openstack公有云多租户隔离方法、系统及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113472745A true CN113472745A (zh) | 2021-10-01 |
CN113472745B CN113472745B (zh) | 2023-04-07 |
Family
ID=77871795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110603175.1A Active CN113472745B (zh) | 2021-05-31 | 2021-05-31 | 一种基于selinux的openstack公有云多租户隔离方法、系统及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113472745B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306354A1 (en) * | 2009-05-28 | 2010-12-02 | Dehaan Michael Paul | Methods and systems for flexible cloud management with power management support |
US20110295999A1 (en) * | 2010-05-28 | 2011-12-01 | James Michael Ferris | Methods and systems for cloud deployment analysis featuring relative cloud resource importance |
US20130125124A1 (en) * | 2011-09-30 | 2013-05-16 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and method for segregating tenant specific data when using mpls in openflow-enabled cloud computing |
WO2014083449A1 (en) * | 2012-11-27 | 2014-06-05 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and method for segregating tenant specific data when using mpls in openflow-enabled cloud computing |
CN104579898A (zh) * | 2015-01-26 | 2015-04-29 | 中国联合网络通信集团有限公司 | 一种租户隔离方法及系统 |
US20150139238A1 (en) * | 2013-11-18 | 2015-05-21 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-tenant isolation in a cloud environment using software defined networking |
CN108205630A (zh) * | 2016-12-20 | 2018-06-26 | 中国移动通信有限公司研究院 | 一种多用户下基于SeLinux的资源访问方法及装置 |
CN109104317A (zh) * | 2018-08-22 | 2018-12-28 | 中科曙光国际信息产业有限公司 | 基于Docker容器的大数据集群自动配置方法及装置 |
CN110704168A (zh) * | 2019-10-15 | 2020-01-17 | 浪潮云信息技术有限公司 | 一种基于Terraform管理OpenStack虚机的方法及装置 |
WO2020019839A1 (zh) * | 2018-07-25 | 2020-01-30 | 华为技术有限公司 | 一种企业云的创建方法和管理平台 |
WO2020108292A1 (zh) * | 2018-11-30 | 2020-06-04 | 北京金山云网络技术有限公司 | 虚拟私有云通信系统、系统配置方法及控制器 |
WO2020211652A1 (zh) * | 2019-04-18 | 2020-10-22 | 华为技术有限公司 | 多租户场景下的租户资源管理方法和装置 |
-
2021
- 2021-05-31 CN CN202110603175.1A patent/CN113472745B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306354A1 (en) * | 2009-05-28 | 2010-12-02 | Dehaan Michael Paul | Methods and systems for flexible cloud management with power management support |
US20110295999A1 (en) * | 2010-05-28 | 2011-12-01 | James Michael Ferris | Methods and systems for cloud deployment analysis featuring relative cloud resource importance |
US20130125124A1 (en) * | 2011-09-30 | 2013-05-16 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and method for segregating tenant specific data when using mpls in openflow-enabled cloud computing |
WO2014083449A1 (en) * | 2012-11-27 | 2014-06-05 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and method for segregating tenant specific data when using mpls in openflow-enabled cloud computing |
US20150139238A1 (en) * | 2013-11-18 | 2015-05-21 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-tenant isolation in a cloud environment using software defined networking |
CN104579898A (zh) * | 2015-01-26 | 2015-04-29 | 中国联合网络通信集团有限公司 | 一种租户隔离方法及系统 |
CN108205630A (zh) * | 2016-12-20 | 2018-06-26 | 中国移动通信有限公司研究院 | 一种多用户下基于SeLinux的资源访问方法及装置 |
WO2020019839A1 (zh) * | 2018-07-25 | 2020-01-30 | 华为技术有限公司 | 一种企业云的创建方法和管理平台 |
CN109104317A (zh) * | 2018-08-22 | 2018-12-28 | 中科曙光国际信息产业有限公司 | 基于Docker容器的大数据集群自动配置方法及装置 |
WO2020108292A1 (zh) * | 2018-11-30 | 2020-06-04 | 北京金山云网络技术有限公司 | 虚拟私有云通信系统、系统配置方法及控制器 |
WO2020211652A1 (zh) * | 2019-04-18 | 2020-10-22 | 华为技术有限公司 | 多租户场景下的租户资源管理方法和装置 |
CN110704168A (zh) * | 2019-10-15 | 2020-01-17 | 浪潮云信息技术有限公司 | 一种基于Terraform管理OpenStack虚机的方法及装置 |
Non-Patent Citations (1)
Title |
---|
王彬: "基于OpenStack的云平台管理系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113472745B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601466B2 (en) | Software deployment method and system, software deployment server and user server | |
CN101098248B (zh) | 一种基于配置描述文件实现通用网络管理的方法及系统 | |
CN108989066B (zh) | 设备管理方法及装置 | |
CN102609281B (zh) | 分布式软件补丁更新方法及系统 | |
CN103150154B (zh) | 一种应用程序插件的实现方法及装置 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN107294750B (zh) | 一种云集群能自识别的分布配置管理方法和装置 | |
CN112417051A (zh) | 容器编排引擎资源管理方法及装置、可读介质及电子设备 | |
CN102202087A (zh) | 一种标识存储设备的方法及系统 | |
CN113381870B (zh) | 报文处理方法和设备 | |
CN113051102B (zh) | 文件备份方法、装置、系统、存储介质和计算机设备 | |
CN112769706A (zh) | 组件化路由方法及系统 | |
CN113419813B (zh) | 一种基于容器平台部署裸机管理服务的方法及装置 | |
CN114565502A (zh) | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 | |
CN112565475B (zh) | 容器集群业务层添加新节点的ip地址分配方法 | |
CN112291081B (zh) | 云管理平台审计控制器集群数据的方法、系统及存储介质 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN113220432A (zh) | 多云互联方法、装置、设备、存储介质及产品 | |
CN113472745B (zh) | 一种基于selinux的openstack公有云多租户隔离方法、系统及终端 | |
CN110737506A (zh) | 一种虚拟机镜像版本管理的方法 | |
CN109951529B (zh) | 一种资源管理方法和装置 | |
CN115525396A (zh) | 基于云原生的应用管理方法及装置 | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其系统 | |
CN116760913B (zh) | k8s集群协议转换平台配置下发方法及系统 | |
CN114422372B (zh) | 一种5g专网园区拓扑发现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |