一种对象存储系统多租户的管理方法与流程

文档序号:11234844阅读:1887来源:国知局
一种对象存储系统多租户的管理方法与流程

本发明涉及计算机分布式存储领域,具体涉及一种对不同分布式存储系统提供统一的,透明的多租户管理的方法。



背景技术:

多租户作为云计算的重要特征,主要提供资源隔离、数据隔离以及服务质量隔离等功能,从而确保上层的虚拟机、容器等各种应用可以按需地、安全地使用云计算系统。因此,多租户管理在云计算系统中扮演了十分重要的角色。当前的存储多租户存在的问题主要存在几种:第一,分布式存储系统中,大部分只提供了简单的租户管理,而在实际应用中,租户的结构往往更加复杂,意味着存储系统原生的租户管理根本无法满足实际应用;第二,在云计算系统中,可能会使用不同的分布式存储系统以满足不同的场景,每个存储系统需要各自做多租户管理,存储资源的管理变得很不方便,开发运维的成本也因此增加;第三,传统的多租户技术是基于数据库实现的,所以,当租户量较大、结构复杂时,为了降低对多租户管理效率的影响,就需要做分库分表的工作,从而带来了不小的开销。因此,亟需一种解决以上问题的多租户的管理方法。



技术实现要素:

有鉴于此,本发明提供一种解决或部分解决上述问题的对象存储系统多租户的管理方法。

为达到上述技术方案的效果,本发明的技术方案为:一种对象存储系统多租户的管理方法,包含:首先进行初始化步骤,再进行具体的步骤;

一、所述初始化步骤如下:

1)初始化多租户层,多租户层包含公有存储空间和若干用户,用户可以使用公有存储空间进行存储,用户使用用户角色来表示,租户等于用户的集合,用户角色分为组织管理者、租户管理者与存储用户三种类型;组织管理者、租户管理者皆为特殊的存储用户,为存储用户的管理者,组织管理者是一个全局的管理角色,租户管理者是被组织管理者赋予租户管理权限的存储用户,租户管理者拥有存储用户的功能,拥有对租户的公有存储空间的管理权限,存储用户是存储服务的使用者,可以在分配的存储资源中使用存储系统,存储系统为分布式存储系统;

2)建立租户结构,租户结构为表示用户的结构关系的树形结构,称为组织结构树,由一个根节点、多个非叶节点以及叶节点组成,根节点组成组织结构树的根,为组织结构树的最高层,非叶节点组成组织结构树的多个中间层,叶节点组成组织结构树的最底层;根节点表示组织管理者,非叶节点表示租户管理者,叶子节点表示存储用户;

二、具体实施步骤为:

1)创建组织管理者,同时创建组织管理者的主要参数,其中包括租户结构的账号与密码、租户结构的总存储空间大小、租户的公共空间的默认大小与其的最大值与最小值、存储用户的存储空间默认大小与其的最大值与最小值,组织管理者的主要参数为全局参数,组织管理者拥有最高管理权限,最高管理权限包括:创建、修改、查询租户结构内的租户与存储用户,创建、修改、查询租户与存储用户之间的从属关系,修改、查询全局参数;从属关系直接反映在组织结构树中;

2)使用第1)步创建的组织管理者登陆,组织管理者初始化租户结构的存储池,并发送初始化租户结构的存储池请求到网关模块,其中,存储池用于存储租户结构,网关模块用于统一多租户层,组织管理者使用xml文件描述租户结构的内部结构,网关模块收到初始化租户结构的存储池请求后,解析xml文件;

3)网关模块将初始化租户结构的存储池请求转化为多个子操作请求,再将子操作请求分发到其他模块中执行,子操作请求主要包括两种类型的请求:第一种类型的请求,将组织结构树上的节点转化为创建租户的操作或创建存储用户的操作,把创建租户的操作或创建存储用户的操作发送到组织管理模块,创建的参数包括存储用户的id以及其对应的存储配额;第二种类型的请求,为了实现租户的数据隔离,需要为组织结构树里的每条路径创建权限认证码,为每次操作会生成一个操作码,操作包含读操作、写操作,通过租户在组织结构树中的路径的权限认证码和操作码的匹配,进行了租户的数据隔离;

网关模块会生成租户的权限认证信息请求发送到权限认证模块,其中,权限认证信息请求中主要请求参数包括存储用户的id以及其在组织结构树中的路径;

4)组织管理模块采用基于哈希的管理方法进行多租户管理,主要步骤为:首先,组织管理模块接收到了网关模块发来的创建租户的操作或创建存储用户的操作,创建租户的操作等于多次创建存储用户的操作,使用文件路径的形式表示存储用户在组织结构树中的路径,表示为‘/租户结构org1/一级租户tenant1/二级租户tenant2/存储用户storage_uid’,其含义为存储用户storage_uid归属于租户结构org1,组织结构为并且同时归属于一级租户tenant1和二级租户tenant2之下,一级租户tenant1为存储用户所在组织结构树的最高层的组织管理者,二级租户tenant2为存储用户所在组织结构树的中间层的租户管理者;

然后,组织管理模块会创建并维护一张存储用户信息表,存储用户信息表包括存储用户的id、存储用户的密钥以及存储用户的存储配额、存储用户的权限,其中存储用户的id使用存储用户在组织结构树中的路径表示,存储用户的权限包含存储用户可以进行存储操作的存储空间;

最后,组织管理模块将经过初始化的租户结构的存储池写入存储用户信息表;

5)权限认证模块进行初始化存储用户的权限,具体步骤如下:

5.a)权限认证模块接收到网关模块发来的权限认证信息请求后,提取其中包含的存储用户的位置,即其在组织结构树中的路径,同时为存储用户生成密钥对;

5.b)根据存储用户在组织结构树中的路径和密钥对生成存储用户的权限认证码,具体方法为:对存储用户从组织结构树的根开始的每一级子路径,若子路径不是全路径,即子路径为存储用户所在组织结构树的上层的租户,为子路径赋予读权限;若子路径已是全路径,即子路径是存储用户的私有空间,私有空间表示为不允许其他租户使用子路径,为子路径赋予读写权限,读权限、读写权限都为子路径被赋予的权限;

5.c)权限认证码生成过程为,将密钥对以及子路径被赋予的权限拼接成一个预处理字符串,然后计算预处理字符串的哈希值,具体过程为:首先,创建权限认证码生成函数,用于生成权限认证码,权限认证码生成函数遍历组织结构树中的路径中所有从第一级路径开始的所有子路径,根据5.b)步骤,如果子路径不是全路径,赋予其读权限,权限认证码为存储用户的密钥对+‘@’+子路径+‘r’,其中r表示读权限,如果子路径是全路径,赋予其读写权限,权限认证码为存储用户的密钥对+‘@’+子路径+‘rw’,其中‘rw’表示读写权限,在遍历完所有子路径后,将各级子路径生成的权限认证码都写入存储用户的权限认证表中,权限认证表为每一个存储用户都拥有的、用于存放存储用户的权限认证码;

6)完成第5)步、第6)步后,将通知网关管理模块,网关管理模块是针对网关模块的上层管理,并且会请求存储驱动模块,以为租户、存储用户在底层分布式存储系统中进行初始化,存储驱动模块会根据不同的底层分布式存储系统来调用不同的驱动,通过对应的驱动在不同的底层分布式存储系统中执行相关操作,相关操作包括创建底层分布式存储系统中的用户、设置被分配的存储配额与创建的参数;

7)完成在底层分布式存储系统中的初始化后,存储用户可以通过统一的多租户层来使用存储服务,存储用户访问底层分布式存储系统需要提供必要参数,即通过网关模块向底层分布式存储系统发送访问请求,访问请求中包含必要参数,必要参数包括存储用户的id与存储用户的密钥、访问对象路径,其中访问对象路径与存储用户在组织结构树上的路径等价;多租户层中的网关模块支持兼容标准的s3接口,存储用户可以调用s3接口,将存储用户的id与密钥作为s3接口的id与密钥参数值,将访问对象路径作为s3接口中的key参数封装请求,将key参数封装请求发送到网关模块的地址;

8)网关模块接收到访问请求后,提取访问请求中的存储用户的id与存储用户的密钥、访问对象路径,并生成访问模式一起作为存储请求认证发送到权限认证模块进行权限认证,访问模式包含读操作、写操作、修改操作;

9)权限认证模块进行操作权限认证,其具体步骤改进如下:

9.1)权限认证模块接收网关模块发出的存储请求认证,根据具体的存储请求认证生成一个认证操作码,具体生成过程为:首先根据访问对象路径来存储用户密钥,组成一个操作字符串,操作字符串为存储用户的密钥对+‘@’+访问对象路径+<op>,<op>为具体操作,包含访问模式中的读操作、写操作,‘r’为写操作,‘w’为读操作;

9.2)根据9.1)步生成的操作字符串,使用哈希函数计算本次存储请求认证的哈希值,即操作字符串的哈希值作为认证操作码,匹配存储用户的权限认证表,如果权限认证表中存在权限认证码与认证操作码匹配,则存储请求认证合法,否则,存储请求认证非法,将认证是否合法作为权限认证结果发送给网关模块;

10)网关模块收到权限认证模块发送的权限认证结果后,若存储请求认证非法,则通知存储用户访问失败同时返回权限认证码与操作码不匹配的描述,若存储请求认证合法,网关模块将操作字符串的具体操作转发至存储系统驱动模块来执行;

11)存储系统驱动模块根据访问请求中的必要参数、操作字符串的具体操作调用相应的底层分布式存储系统的接口来执行操作字符串的具体操作,最后将其的结果返回给存储用户。

本发明的有益成果为:本发明提供的对象存储系统多租户的管理方法,针对当今多租户在分布式存储系统中存在的问题提出了一种统一的,高效的,可定制的解决方法。该方法主要包括一个统一的对象存储多租户管理接口,一个高效的多租户管理技术以及一个可扩展的异构存储系统驱动技术,通过这三个主要的技术分别解决当前存储系统多租户功能不足,管理效率不高以及移植性扩展性差的问题。

附图说明

图1为本发明的对象存储多租户管理层的结构图;

图2为本发明的读写操作的步骤的示意图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例以及附图,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,能实现同样功能的产品属于等同替换和改进,均包含在本发明的保护范围之内。具体方法如下:

实施例1:云计算作为计算机领域一大发展趋势,慢慢被从理论研究推向了产品落地。云计算的核心思想被总结为基础架构即服务(iaas)、平台即服务(paas)、服务即服务(saas)三个层次。伴随着云计算的核心思想,相应的技术如软件定义网络(sdn)、软件定义存储(sds)等也应运而生。云计算的特性在为用户带来好处的同时,也对计算机体系架构提出了新的挑战,计算机体系架构中包含了计算,存储,网络。在新的需求下,许多产品与系统涌现出来。典型的产品与系统存在许多种,有用于虚拟机的管理的架构openstack、容器运行平台docker、容器编排工具kubernetes等。而在其中,虚拟机虚拟化与容器虚拟化是云计算时代中最核心的技术。

虚拟机虚拟化与容器虚拟化中,实现虚拟机级别虚拟化的主要技术有kvm,qemu等,其原理是对硬件资源进行隔离,而实现容器化的主要技术有lxc以及在lxc基础上实现的docker。而容器是一种轻量级的虚拟化,相对于kvm等虚拟化方案,具有更强的移植性以及更小的开销。上面两种虚拟化方式都有着不同的应用场景,其中,虚拟机虚拟化主要用于云桌面等领域,而容器虚拟化主要用于服务部署等领域。这两种类型的虚拟化都为云计算的基础。

多租户作为云计算的重要特征,主要提供资源隔离、数据隔离以及服务质量隔离等功能,从而确保上层的虚拟机、容器等各种应用可以按需地、安全地使用云计算系统。因此,多租户管理在云计算系统中扮演了十分重要的角色。在存储系统中,多租户管理涉及的方面包括租户存储位置管理、租户存储配额管理、租户权限管理、租户的创建删除修改等操作。首先,对于云计算用户而言,多租户管理保证存储用户可以正常地、安全地使用其租户内的存储资源,同时租户管理的效率也影响着整个存储系统的效率。在这一点上,租户管理主要提供的功能包括存储访问操作的权限认证,用户所属租户空间的管理等。其次,对于云计算系统管理者而言,多租户管理让管理员可以获得和管理整个存储系统的租户信息,在这点上,租户管理主要提供的功能包括租户的创建修改删除,租户存储配额的设置修改,租户权限的设置修改等。

分布式存储系统作为云计算系统的一个重要组成部分,因此,对底层分布式存储系统的管理也影响着整个云计算系统的表现。由于不同的业务需求,业界有许多分布式存储系统都被用于云计算平台中。从不同存储类型上,可以分为文件存储、对象存储、块存储三种。其中,文件存储主要提供的是一个具有统一名空间的分布式存储系统,主要用于云计算中需要共享文件的场景,典型的文件系统有hdfs,glusterfs,cephfs等。而对象存储提供一种key-value类型的存储,主要用于非结构化数据存储,如虚拟机镜像、容器镜像等,典型的对象存储系统有cephobjectstorage,swift,dynamo等。块存储直接将存储资源以块设备的方式提供给用户,其后,用户自主地管理块设备的地址空间,主要用于虚拟机、容器的数据卷挂载,典型的块存储系统有cephblockstorage,sheepdog等。

当前的存储多租户存在的问题主要有几种,其一,分布式存储系统大部分只提供简单的租户管理,而在实际应用中,租户的结构往往比较复杂,意味着存储系统原生的租户管理无法满足实际应用。其二,在云计算系统中可能会使用不同的分布式存储系统用于不同的场景,例如使用ceph做块存储的同时,又使用swift作为对象存储,这样,每个存储系统需要各自做多租户管理,这样即不方便存储资源的管理,又增大了开发运维的成本。其三,传统的多租户技术是基于数据库实现的,所以,当租户量较大,结构复杂时,为了降低对多租户管理效率的影响需要做分库分表的工作,从而带来了不小的开销。

本发明针对多租户在分布式存储系统上的现状,使用一个统一的多租户管理层来解决上述的三个问题。针对分布式存储中原生租户管理功能简单的问题,统一多租户层提供多种角色以及完整的功能以满足多租户管理需求;针对多个存储系统中统一多租户管理的问题,本发明向下提供可定制的存储驱动模块以便接入到不同的存储系统,同时服务端可以根据实际情况定制合适的存储系统驱动以满足不同的需求;向上提供统一的访问接口,是得存储用户可以方便地使用统一多租户管理以及后端存储。同时,本发明使用一种新的请求解析方法,令存储用户只需依据规则修改其请求参数,便可使用主流的接口规范,如s3接口使用了统一多租户管理模块;针对传统基于数据库的多租户管理效率不高的问题,本发明使用一种基于哈希技术的管理方式提高多租户的管理效率,即使在租户规模增大或租户结构复杂的情况下,也几乎不会影响多租户的管理效率。

实施例2:本实施例对本发明涉及的一些名词进行简要的解释。为了方便统一多租户层的管理,其中,租户层包含多种租户,实质上是用户的集合,拥有一定的公有存储空间和若干用户。将用户使用用户角色来表示。本发明把用户角色分为组织管理者、租户管理者与存储用户三种类型。前两种类型本质上都是存储用户,即一个租户中的某个或多个存储用户可以被授权为租户管理者,而组织管理者则是一个全局的管理角色。租户管理者是被组织管理者赋予租户管理权限的存储用户,除了拥有普通的存储用户的功能外,还对租户的公有空间拥有管理权限。存储用户是真正存储服务的使用者,可以在分配的存储资源中使用存储系统。

需要组织用户对该组织所属的所有存储资源包括各租户存储资源、各存储用户存储资源、以及该组织内的租户结构、租户管理者、存储用户进行管理。租户结构可以认为是一种树形结构,称为组织结构树,其中,使用非叶节点表示租户,叶子节点表示存储用户。如图1,使用对象存储多租户管理层包含网关模块、组织管理模块、权限认证模块、存储驱动模块,存储用户使用对象存储多租户管理层将需要的内容存入对象存储系统。如图2,为读写操作的具体步骤,如果需要进行读写操作,先解析读写请求,在解析读写请求的过程中获取操作类型以及操作路径,并生成本次操作的操作码,通过对比系统中的权限认证码,最后得出允许或拒绝本次读写操作。

一种对象存储系统多租户的管理方法的具体实施步骤为:

1)创建组织管理者,创建所需的主要参数包括组织账号与密码、组织总存储空间大小、租户公共空间默认大小与其的最大最小值、存储用户空间默认大小与最大最小值等全局配置。组织管理者拥有最高管理权限,其主要功能包括创建修改查询组织内租户与存储用户以及它们之间的从属关系,即组织结构树;修改查询全局配置等。

2)使用存在的组织管理者登陆,组织管理者根据其组织所需的租户结构初始化租户结构的存储池。组织管理者使用xml文件描述组织的内部结构,统一多租户层的网关模块收到初始化租户结构的存储池请求后,解析该组织结构的xml文件。

3)网关模块将初始化租户结构的存储池请求转化为多个子操作请求,再将子操作请求分发到合适的模块中执行,子操作请求主要包括两种类型的请求:第一,将组织结构树上的节点转化为创建租户操作或存储用户操作,把创建租户操作或存储用户操作的请求发送到组织管理模块,创建的参数包括租户或存储用户的id以及其对应的存储配额等;第二,为了实现租户的数据隔离,需要为组织结构树里的每条路径创建权限认证码,而每次读写等存储操作会生成一个操作码,通过访问位置的权限认证码和操作码的匹配进行了存储空间隔离。网关模块会将生成租户的权限认证信息请求发送到权限认证模块,其中,主要请求参数包括存储用户id以及该用户在组织结构树中的路径等。

4)组织管理模块接收到了网关模块发来的租户创建请求,首先,验证请求的合法性,验的证内容包括租户id的合法性、存储配额设置的合法性,其中包含的内容为不可超过组织管理者设置的最大值,同时所有租户的空间之和不能超过组织总的存储空间,如果存在不合法操作,立即中断组织初始化过程。组织管理模块每完成一个存储用户的初始化,请求权限认证模块初始化该存储用户的访问权限信息。

5)权限认证模块接收到网关模块发来的租户的权限认证信息请求后,对于每个存储用户,根据其在组织结构树中的路径,对每一级子路径都创建一个权限认证码,其中默认存储用户对其路径上的租户空间有访问权限。

6)在一个租户、存储用户成功完成组织管理模块和权限认证模块的初始化后,将通知网关管理模块,网关管理模块会请求存储驱动模块,为租户、存储用户在底层分布式存储系统中进行初始化,存储驱动模块会根据不同的存储系统来调用不同的驱动,通过对应的驱动在不同的存储系统中执行相关操作,相关操作包括创建存储系统中的用户、设置配额与相关参数等。

7)完成底层分布式存储系统中初始化后,存储用户可以通过统一租户管理层来使用存储服务。存储用户访问存储系统需要提供必要参数,即通过网关模块向存储系统发送访问请求,访问请求中包含必要参数,必要参数包括存储用户id与密钥、访问对象路径,其中访问对象路径以类似文件路径来描述。多租户统一管理层的网关模块支持兼容标准的s3接口,存储用户可以调用s3接口,将用户id与密钥作为s3接口的id与密钥参数值,将访问对象路径作为s3接口中的key参数封装请求,将key参数封装请求发送到网关模块的地址。

8)网关模块接收到存储用户的访问请求后,提取访问请求中的用户id与密钥、访问对象路径、访问模式作为存储请求认证发送到权限认证模块进行权限认证,访问模式包含读、写、修改等。

9)权限认证模块接收到存储请求认证后,首先根据用户id与密钥判断存储用户的合法性,成功后根据访问对象路径和访问模式生产本次访问的操作码,与该存储用户拥有的权限认证码进行匹配,若存在操作码与某个权限认证码相等,该访问请求合法,反之访问请求非法,将此次权限认证结果通知网关模块。

10)网关模块收到权限认证模块发送的权限认证结果后,若请求非法,则通知存储用户访问失败同时返回失败原因的描述,若请求合法,网关模块将访问请求的操作转发至存储系统驱动模块来执行相应的操作。

11)存储系统驱动模块根据访问请求中的存储系统类型、访问的类型,对象路径调用相应存储系统的接口来执行访问操作,最后将访问操作的结果返回给存储用户。

本发明上述技术方案的改进如下:

步骤4)中在传统的多租户管理中,组织管理模块基于数据库技术,本发明采用基于哈希的管理方法进行多租户管理。基于哈希的多租户管理方法主要步骤为:

4.1)首先把存储用户使用类似于文件路径的形式表示其在组织中的位置,如路径‘/org1/tenant1/tenant2/storage_uid’表示storage_uid存储用户归属于组织org1,并且同时位于一级租户tenant1和二级租户tenant2下。

4.2)然后,组织管理模块会创建并维护一张存储用户信息表,主其中要的表项包括存储用户id、用户的密钥信息以及该用户的配额、权限等基本信息,其中存储用户id使用存储用户的路径表示。

4.3)最后,组织管理模块将存储中的各个初始信息写入存储用户信息表。

步骤5)中权限认证模块初始化存储用户权限信息具体步骤改进如下:

5.1)权限认证模块接收到网关模块发来的初始化存储用户请求后,提取初始化存储用户请求中的存储用户位置,即为组织结构树中的绝对路径,同时为该存储用户生成密钥对。

5.2)根据存储用户在组织结构树中的路径和其密钥信息生成该存储用户的权限认证码,具体方法是对用户从组织结构树的根位置开始的每一级子路径,若该路径不是全路径,即该子路径为存储用户的上层租户,为该子路径赋予读权限;若子路径已是全路径,即该子路径是存储用户的私有空间,为其赋予读写权限。

5.3)权限认证码生成过程为将存储用户的密钥对、子路径赋予权限拼接成一个预处理字符串,然后计算预处理字符串的哈希值。例如,用户的绝对路径为/org1/t1/t2/t3/user1,权限认证码生成函数会遍历绝对路径的所有从第一级路径开始的所有子路径,如遍历到/org1/t1时,该绝对路径不是全路径,应赋予读权限,权限认证码为authnum=hash(“<access_key>+<secret_key>+‘@’+‘/org1/t1’+’r’”),遍历到/org1/t1/t2/t3/user1时,路径为全路径,权限认证码为authnum=hash(“<access_key>+<secret_key>+‘@’+‘/org1/t1/t2/t3/user1’+’rw’”)。在遍历完所有子路径后,将各级路径生成的权限认证码都写入该用户的权限认证表中。

步骤9)中权限认证模块进行操作权限认证的具体步骤改进如下:

9.1)权限认证模块接收网关模块发出的操作请求,根据具体的操作请求生成一个操作码,具体生成过程为:首先根据访问路径来存储用户密钥,访问类型则组成一个操作字符串,操作字符串如下:op_str=<access_key>+<secret_key>+‘@’+<path>+<op>,其中access_key和secret_key是存储用户的密钥对,path是访问的位置,用对象在存储系统中的绝对路径表示;op是请求的类型,’r’为写操作,’w’为读操作。

9.2)根据上一步生成的操作字符串,使用哈希函数计算操作的哈希值,作为本次操作请求的操作码。匹配存储用户所属组织的权限认证表,如果权限认证表中有权限认证码与操作码匹配,则该请求合法,否则,该请求非法。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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