掌桥专利:专业的专利平台
掌桥专利
首页

访问对象的鉴权方法、装置及系统

文献发布时间:2024-01-17 01:13:28


访问对象的鉴权方法、装置及系统

本申请要求于2021年12月27日提交的申请号为202111607112.X、发明名称为“认证方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。

技术领域

本申请涉及数据安全技术领域,特别涉及一种访问对象的鉴权方法、装置及系统。

背景技术

多租户(multi-tenant)技术或称多重租赁技术,其主要目的是在多用户环境下共用相同的系统或程序组件,并且确保各用户间数据的隔离性和安全性。在云计算中,租户(tenant)通常是指系统或者平台的客户,以及客户在创建并使用的一系列数据,例如,账户、统计信息、用户数据、定制化的应用程序环境以及使用的计算资源、网络资源和存储资源等。由于系统或者平台会同时服务于多个租户,因此服务提供商需要保证多个租户不会互相影响,并确保各个租户的数据安全,不被其他租户获取甚至篡改。

相关技术中,为了支持多租户数据隔离,通常由服务提供商根据客户端发送的针对某一对象(数据封装的一种形式)的访问指令进行租户鉴权,以判断该客户端所属租户是否具有访问该对象的权限。例如,服务提供商存储有系统中租户和该租户可访问对象之间的映射关系表,当服务提供商接收到该租户的客户端发送的访问指令时,根据该访问指令中携带的租户信息和对象信息,通过查询映射关系表的方式,对该客户端所属租户进行租户鉴权,以判断该客户端所属租户是否具有访问该对象的权限。

然而,在上述方法中,由于租户众多,每个租户可访问的对象也有很多,因此,为了记录每个租户可访问的对象,服务提供商需要动态维护一张巨大的映射关系表,导致服务提供商的资源消耗较大,影响服务提供商的运行效率。

发明内容

本申请提供了一种访问对象的鉴权方法、装置及系统,能够在确保多租户数据的隔离性和安全性的同时,提高对象访问效率。该技术方案如下:

第一方面,提供了一种访问对象的鉴权方法,该方法包括:

计算设备中的可信组件从该计算设备中的客户端接收目标对象的对象ID和鉴权ID;

该可信组件基于该鉴权ID进行租户鉴权,当该客户端所属租户鉴权通过,则该可信组件向存储设备发送访问该目标对象的访问指令,该访问指令包括该目标对象的对象ID。

其中,该目标对象是指存储设备上存储的任一对象,对于存储设备上存储的任一对象,将该对象的标识(identification,ID)称为对象ID(object ID)。在本申请一种实现方式中,对象也称为一种数据对象,是指业务运行的应用程序中引用的任何数据结构的元素,如文件、数据、变量等。本申请对于对象的数据类型不作限定,示意性地,对象为文本类型的数据,如出行记录、消费记录、发送的消息等等;或者,对象为图像类型、音频类型;又或者,对象为网页类型的数据等等。

需要说明的是,在本申请中,该目标对象的对象ID可以是被加密的对象ID,也可以是未被加密的对象ID,其中,在该目标对象的对象ID是未被加密的对象ID的情况下,该目标对象的对象ID可以理解为该目标对象的原始对象ID,对于存储设备上存储的任一对象,该对象对应唯一的原始对象ID。

另外,在上述过程中,可信组件向存储设备发送访问指令的过程包括直接发送(不经过中间组件转发)和间接发送(经过中间组件转发)。例如,在可信组件为数据处理器(data processing unit,DPU)的情况下,可信组件向存储设备直接发送访问指令。又例如,在可信组件通过软件来实现的情况下,可信组件借助中央处理器(central processingunit,CPU)或其他芯片,向存储设备间接发送访问指令,对此不作限定。关于可信组件的可选形式会在后续进行介绍,在此不再赘述。

通过上述方式,由计算设备中的可信组件来完成访问对象的鉴权过程,在客户端请求访问目标对象的情况下,该可信组件从客户端接收该目标对象的对象ID和鉴权ID,从而根据该鉴权ID对该客户端所属租户进行租户鉴权,当该客户端所属租户鉴权通过,则基于该目标对象的对象ID访问存储设备,从而无需由存储设备进行租户鉴权,减少了存储设备的资源开销和计算量,在确保多租户数据的隔离性和安全性的同时,提高了对象访问效率。

在一种实现方式中,该可信组件从该客户端接收到的对象ID是被加密的对象ID,该访问指令所包括的对象ID是解密后的对象ID,该方法还包括:

该可信组件对从该客户端接收到的被加密的对象ID进行解密,得到用于生成该访问指令的解密后的对象ID。

其中,由于可信组件接收到的对象ID是被加密的对象ID,在解密后才能得到用于访问存储设备的对象ID,确保了对象ID的安全性。

在一种实现方式中,被加密的对象ID是由存储设备提供给客户端的,客户端不拥有解密所使用的密钥,因此客户端无法获得原始对象ID,因此也就无法篡改对象ID,从而增加了安全性。

在一种实现方式中,该鉴权ID具有客户端不可更改性。

其中,该鉴权ID用于唯一标识客户端,通过计算设备中的硬件下发,因此客户端无法篡改该鉴权ID,使得可信组件能够基于该鉴权ID对客户端所属租户进行租户鉴权,从而确保了多租户数据的隔离性和安全性。

在一种实现方式中,该客户端运行于该计算设备中的虚拟机(virtual machine,VM)或者该计算设备中的容器(container)。

其中,计算设备基于虚拟机技术或容器技术来运行客户端,为多租户数据的隔离性和安全性提供了技术支撑。

在一种实现方式中,该可信组件为下述任意一种:

数据处理器DPU、至少一个中央处理器CPU中所运行的虚拟机监视器Hypervisor以及至少一个CPU中所运行的可信执行环境(trusted execution environment,TEE)。

其中,可信组件能够采用以上任一种形式来实现,从而确保客户端无法更改可信组件的操作,保证多租户数据的隔离性和安全性。

在一种实现方式中,该可信组件为DPU,该鉴权ID是该DPU提供给该客户端所属租户的虚拟功能(virtual function,VF)的VF ID。

在一种实现方式中,该客户端运行于VM中,该鉴权ID是该VM的VM ID,该可信组件从该客户端接收到的该鉴权ID由该VM添加;或者

该客户端运行于容器中,该鉴权ID是该容器的容器ID,该可信组件从该客户端接收到的该鉴权ID由该容器添加。

在一种实现方式中,该可信组件从该客户端还接收到租户ID,其中,该可信组件基于该鉴权ID进行租户鉴权的步骤,具体包括:

该可信组件查询与该鉴权ID对应的租户ID,当查询到的租户ID与该可信组件从该客户端接收到的租户ID匹配,则鉴权通过。

通过上述方式,在可信组件从客户端还接收到租户ID的情况下,由于鉴权ID具有客户端不可更改性,因此可信组件能够基于该鉴权ID查询到该客户端真实的租户ID,从而将查询到的真实的租户ID与从客户端接收到的租户ID进行比对,实现鉴权过程,确保了多租户数据的隔离性与安全性。

现有技术中需要在存储设备存储租户ID与对象ID的对应关系,由于对象ID数量非常大,因此这个对应关系的数据量也非常大。这种方式不但占用了存储设备大量的存储空间,而且在确认租户对对象的权限时效率低。本申请中,只需要对2个租户ID进行比较即可确定租户的权限,因此为了鉴权而存储的数据量大大减少,使得查询数据量大大减少,提高了查询效率;而且查询过程由计算设备(而不是存储设备)执行,进一步节约了存储设备的存储空间,减少了对存储设备运行资源的占用。

在一种实现方式中,该可信组件从该客户端还接收到第一消息认证码(messageauthentication code,MAC),其中,该可信组件基于该鉴权ID进行租户鉴权的步骤,具体包括:

该可信组件查询与该鉴权ID对应的密钥;

该可信组件生成第二MAC,该第二MAC与查询到的该密钥和从该客户端接收到的目标对象的对象ID相关;

当该第一MAC与该第二MAC匹配,则鉴权通过。

通过上述方式,在可信组件从客户端还接收到第一MAC的情况下,由于鉴权ID具有客户端不可更改性,因此可信组件能够基于该鉴权ID查询到该客户端所属租户的真实密钥,从而根据查询到的真实密钥生成第二MAC,将该第二MAC与从客户端接收到的第一MAC进行比对,实现鉴权过程,确保了多租户数据的隔离性和安全性。此外,使用鉴权ID的方式,存储设备也不需要存储租户ID与对象ID的对应关系,因此为了鉴权而需要的存储空间大大减少,使得查询数据量大大减少,提高了查询效率。而且查询过程由计算设备(而不是存储设备)执行,进一步节约了存储设备的存储空间,减少了对存储设备运行资源的占用。

在一种实现方式中,该方法还包括:

该存储设备生成该第一MAC,该第一MAC与该存储设备记录的该密钥和该存储设备记录的该目标对象的对象ID相关;

该存储设备发送该第一MAC给该客户端。

通过上述方式,由存储设备生成第一MAC,将其发送给客户端,便于可信组件在从客户端接收到该第一MAC时,进行租户鉴权,确保了多租户数据的隔离性和安全性。

在一种实现方式中,该可信组件从该客户端接收到的对象ID是未被加密的对象ID,该方法还包括:

该存储设备创建该目标对象的对象ID;

该存储设备发送该目标对象的对象ID给该客户端。

在一种实现方式中,该可信组件对从该客户端接收到的对象ID是被加密的对象ID,其中,可信组件向存储设备发送访问该目标对象的访问指令的步骤,具体包括:

该可信组件对被加密的对象ID解密,得到解密后的对象ID;

该可信组件生成访问指令,该访问指令包括解密后的对象ID;

该可信组件向该存储设备发送该访问指令。

其中,在这一过程中,该解密后的对象ID也可以理解为目标对象的原始对象ID。

在一种实现方式中,该可信组件对从该客户端接收到的被加密的对象ID进行解密的步骤,具体包括:

该可信组件查询与该鉴权ID对应的密钥;

该可信组件使用该密钥对从该客户端接收到的被加密的对象ID解密。

在一种实现方式中,该可信组件从该客户端接收到的对象ID是被加密的对象ID,该方法还包括:

该存储设备创建该目标对象的对象ID,对该目标对象的对象ID加密,生成被加密的对象ID;

该存储设备发送被加密的对象ID给该客户端。

通过上述方式,由存储设备对创建好的目标对象的对象ID加密,得到被加密的对象ID,使得客户端只能通过被加密的对象ID来访问该存储设备,客户端无法知悉真正的原始对象ID,因此可以避免客户端通过伪造对象ID来恶意访问,提高了多租户数据的隔离性和安全性。

在一种实现方式中,该可信组件从该客户端接收到的对象ID是被加密的对象ID,该访问指令所包括的对象ID是解密后的对象ID;该被加密的对象ID和该解密后的对象ID的长度相同。

通过这种方式,将被加密的对象ID和解密后的对象ID的长度设置为相同长度,无需更改计算设备中客户端的应用程序接口(application programming interface,API),扩展了访问对象的鉴权方法的适用性。

第二方面,本申请一种实现方式提供了一种访问对象的鉴权装置,该装置包括:

接收模块,用于从该计算设备中的客户端接收目标对象的对象ID和鉴权ID;

鉴权模块,用于基于该鉴权ID进行租户鉴权,当该客户端所属租户鉴权通过,则向存储设备发送访问该目标对象的访问指令,该访问指令包括该目标对象的对象ID。

在一种实现方式中,该装置从该客户端接收到的对象ID是被加密的对象ID,该访问指令所包括的对象ID是解密后的对象ID,该装置还包括解密模块,用于:

对从该客户端接收到的被加密的对象ID进行解密,得到用于生成该访问指令的解密后的对象ID。

在一种实现方式中,该鉴权ID具有客户端不可更改性。

在一种实现方式中,该客户端运行于该计算设备中的虚拟机VM或者该计算设备中的容器。

在一种实现方式中,该装置应用于下述任意一种:数据处理器DPU、至少一个中央处理器CPU中所运行的虚拟机监视器Hypervisor以及至少一个CPU中所运行的可信执行环境TEE。

在一种实现方式中,该装置应用于DPU,该鉴权ID是该DPU提供给该客户端所属租户的虚拟功能VF的VF ID。

在一种实现方式中,该客户端运行于VM中,该鉴权ID是该VM的VM ID,该装置从该客户端接收到的该鉴权ID由该VM添加;或者该客户端运行于容器中,该鉴权ID是该容器的容器ID,该装置从该客户端接收到的该鉴权ID由该容器添加。

在一种实现方式中,该装置从该客户端还接收到租户ID,其中,该鉴权模块,用于:

查询与该鉴权ID对应的租户ID,当查询到的租户ID与该装置从该客户端接收到的租户ID匹配,则鉴权通过。

在一种实现方式中,该装置从该客户端还接收到第一消息认证码MAC,其中,该鉴权模块,用于:

查询与该鉴权ID对应的密钥;

生成第二MAC,该第二MAC与查询到的该密钥和从该客户端接收到的目标对象的对象ID相关;

当该第一MAC与该第二MAC匹配,则鉴权通过。

在一种实现方式中,该解密模块,用于:

查询与该鉴权ID对应的密钥;

使用该密钥对从该客户端接收到的被加密的对象ID解密。

应理解,上述访问对象的鉴权装置能够实现与上述第一方面所示方法中可信组件类似的功能,并拥有相应的有益效果。

第三方面,本申请一种实现方式提供了一种DPU,该DPU包括处理芯片和接口,该接口用于从计算设备的客户端接收指令,发送指令给存储设备,该处理芯片用于实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的计算设备中可信组件的功能。

第四方面,本申请一种实现方式提供了一种计算设备,该计算设备包括至少一个处理器和至少一个DPU,该至少一个处理器用于实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的计算设备中客户端的功能,该至少一个DPU用于实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的计算设备中可信组件的功能。

第五方面,本申请一种实现方式提供了一种计算设备,该计算设备包括至少一个处理器和存储器,该存储器用于存储程序代码,该至少一个处理器用于调用该程序代码以实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的计算设备的功能。

第六方面,本申请一种实现方式提供了一种对象存储系统,该对象存储系统包括计算设备和存储设备,该计算设备用于实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的计算设备的功能,该存储设备用于实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的存储设备的功能。

第七方面,本申请一种实现方式提供了一种计算机可读存储介质,该计算机可读存储介质用于存储程序代码,该程序代码用于实现上述第一方面或第一方面的任意一种可能的实现方式中所涉及的计算设备的功能,或者,实现如第一方面或第一方面的任意一种可能的实现方式中所涉及的存储设备的功能。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(hard disk drive,HDD)、固态硬盘(solid state drive,SSD)。

第八方面,本申请一种实现方式提供了一种计算机程序产品,当该计算机程序产品在计算设备上运行时,使得该计算设备实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的计算设备的功能,或者,当该计算机程序产品在存储设备上运行时,使得该存储设备实现如上述第一方面或第一方面的任意一种可能的实现方式中所涉及的存储设备的功能。该计算机程序产品可以为一个软件安装包,在需要实现前述计算设备或者存储设备的功能的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。

附图说明

图1是一种应用场景的示意图;

图2是一种实施环境的示意图;

图3是本申请实施例提供的一种计算设备的硬件结构示意图;

图4是本申请实施例提供的一种存储设备的硬件结构示意图;

图5为本申请实施例提供的一种访问对象的鉴权方法的流程示意图;

图6是本申请实施例提供的一种创建第二ID的示意图;

图7是本申请实施例提供的另一种创建第二ID的示意图;

图8是本申请实施例提供的另一种创建第二ID的示意图;

图9是本申请实施例提供的另一种创建第二ID的示意图;

图10是本申请实施例提供的另一种创建第二ID的示意图;

图11是本申请实施例提供的另一种创建第二ID的示意图;

图12是本申请实施例提供的一种基于鉴权ID进行租户鉴权的示意图;

图13是本申请实施例提供的一种基于鉴权ID进行租户鉴权的示意图;

图14是本申请实施例提供的一种访问对象的鉴权过程的示意图;

图15是本申请实施例提供的一种访问对象的鉴权装置的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

为了方便理解,下面先对本申请涉及的关键术语和关键概念进行说明。

多租户(multi-tenant)技术,也称多重租赁技术,其主要目的是在多用户环境下共用相同的系统或程序组件,并且确保各用户间数据的隔离性。在一些实施例中,一个支持多租户技术的系统需要在设计上对它的数据和配置进行虚拟分区,从而使系统的每个租户(或称组织)都能够使用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。

租户(tenant),在多租户技术中通常是指系统或者平台的客户,以及客户在创建并使用的一系列数据,例如,账户、统计信息、用户数据、定制化的应用程序环境以及使用的计算资源、网络资源和存储资源等。

对象存储(object storage),也称为基于对象的存储(object-based storage)是指将数据封装到大小可变的“对象”中,并赋予这些对象唯一标识,即对象ID(object ID)。

键-值(key-value)存储,是指一种以键-值对的形式来存储数据的存储系统。以任一数据A为例,该数据A为value,该数据A的唯一标识为key。

虚拟机(virtual machine,VM),是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。示意性地,在实体机中能够完成的工作在虚拟机中都能够实现,每个虚拟机都有独立的硬盘和操作系统,用户可以像使用实体机一样对虚拟机进行操作。

容器(container)技术,是一种虚拟化技术,是指将单个操作系统的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。

单根I/O虚拟化(single root I/O virtualization,SR-IOV)技术,是一种基于硬件的虚拟化解决方案,能够提高I/O(输入/输出)性能和可伸缩性。SR-IOV标准允许在虚拟机之间高效共享快速外设组件互连(peripheral component Interconnect express,PCIe)设备,并且是在硬件中实现的。

PCIe标准中定义了把PCIe设备以虚拟功能(VF)的方式提供服务。

消息认证码(message authentication code,MAC),在密码学中是指经过特定算法后产生的一小段信息,用于检查数据的完整性,以及用于身份验证。示意性地,通过使用对称密钥来检测数据是否发生意外或被恶意修改。

带有关联数据的认证加密(authenticated encryption with associated data,AEAD),是一种同时具备保密性,完整性和可认证性的加密形式。

下面对本申请的应用场景进行介绍。

本申请提供的技术方案能够应用于基于多租户技术为多个租户提供数据服务的系统中。示意性地,图1是一种应用场景的示意图。如图1所示,该应用场景为一种用于为多个租户提供数据服务的系统,该系统包括多个租户和服务提供商(service provider),其中,服务提供商可以理解为对系统中存储设备的抽象(也可以理解为对系统中数据中心或存储节点的抽象等等),每个租户对应多个客户端。以该系统基于对象存储的方式来存储数据为例,对于该系统中存储的任一对象,该对象仅允许一个租户的多个客户端访问,当任一租户的客户端向服务提供商发送访问指令以访问某一对象时,通过对该客户端所属租户是否具有访问该对象的权限进行鉴权,避免该客户端所属租户访问其他租户的数据,来确保系统中多租户数据的隔离性和安全性。

基于上述应用场景,本申请提供了一种访问对象的鉴权方法,由计算设备中的可信组件来完成访问对象的鉴权过程,在客户端请求访问目标对象的情况下,该可信组件从客户端接收该目标对象的对象ID和鉴权ID,从而根据该鉴权ID对该客户端所属租户进行租户鉴权,当该客户端所属租户鉴权通过,则基于该目标对象的对象ID访问存储设备,从而无需由存储设备进行租户鉴权,减少了存储设备的资源开销和计算量,在确保多租户数据的隔离性和安全性的同时,提高了对象访问效率。存储设备可以是存储服务器、存储控制器,分布式存储系统、磁盘框,公有存储云、私有存储云等,对此不作限定。存储设备中有磁盘或者SSD等存储介质,存储设备拥有计算能力。

下面对本申请的实施环境进行介绍。

图2是一种实施环境的示意图。如图2所示,该实施环境包括一种对象存储系统,该系统能够基于多租户技术为多个租户提供数据服务。需要说明的是,本申请实施例是以对象存储系统为例进行说明的,但在一些场景中,该实施环境还可以是键-值存储系统等,本申请实施例对此不作限定。需要说明的是,在另一些场景中,该实施环境还可以是基于对象存储技术(或键-值存储技术)的文件存储系统或块(block)存储系统等等,本申请实施例对此不作限定。示意性地,该对象存储系统包括计算设备100和存储设备200,计算设备100和存储设备200之间通过有线网络或无线网络直接或间接地连接,在此不做限制。

计算设备100的数量可以有多个,每个计算设备100上包括至少一个客户端,一个客户端属于一个租户。对于任一个计算设备100,该计算设备100上包括的至少一个客户端可以属于同一个租户,也可以属于不同租户,一个租户可以包括多个客户端,本申请实施例对此不作限定。在一些实施例中,计算设备100基于虚拟机或容器技术来运行至少一个客户端。例如,计算设备100上运行有至少一个虚拟机,一个虚拟机用于运行一个客户端。又例如,计算设备100上运行有至少一个容器,一个容器用于运行一个客户端。在一些实施例中,计算设备100是一种既具有计算能力又具有存储能力的设备,如服务器、台式计算机等。

存储设备200用于存储至少一个对象,每个对象仅允许某个租户的至少一个客户端访问。每个对象对应唯一的原始对象ID。需要说明的是,本申请中的对象,也称为数据对象,是指业务运行的应用程序中引用的任何数据结构的元素,如文件、数据、变量等。本申请实施例对于对象的数据类型不作限定,示意性地,对象为文本类型的数据,如出行记录、消费记录、发送的消息等等;或者,对象为图像类型、音频类型;又或者,对象为网页类型的数据等等。其中,存储设备200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还能够是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content deliverynetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。存储设备200的数量可以更多或更少,本申请实施例对此不作限定。

另外,图2所示系统中计算设备100和存储设备200的数量仅为示例性地,计算设备100和存储设备200的数量可以更多或更少,对此不作限定。

在一些实施例中,上述的无线网络或有线网络使用标准通信技术和/或协议。网络包括但不限于数据中心网络(data center network)、存储区域网(storage areanetwork,SAN)、局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(wide area network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实现方式中,使用包括超级文本标记语言(Hyper Text MarkupLanguage,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还能够使用诸如安全套接字层(Secure SocketsLayer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(virtualprivate network,VPN)、网际协议安全(Internet Protocol security,IPsec)等常规加密技术来加密所有或者部分链路。在另一些实施例中,还能够使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。

下面对上述实施环境中计算设备和存储设备的硬件结构进行介绍。

图3是本申请实施例提供的一种计算设备的硬件结构示意图。如图3所示,该计算设备300包括存储器301、处理器302、可信组件303、通信接口304以及总线305。其中,存储器301、处理器302、可信组件303以及通信接口304通过总线305实现彼此之间的通信连接。

存储器301为只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。在一些实施例中,该存储器301是双倍速率同步动态随机存储器(double data rate,DDR)、动态随机存取存储器(dynamic random access memory,DRAM)或者储存级内存(storageclass memory,SCM)。其中,SCM例如为非易失性内存(non-volatile memory,NVM)或相变化内存(phase-change memory,PCM)等。在一些实施例中,存储器301由前述一种或多种存储器组成。

处理器302为网络处理器(network processor,NP)、中央处理器(centralprocessing unit,CPU)、特定应用集成电路(application-specific integratedcircuit,ASIC)或用于控制本申请方案程序执行的集成电路。该处理器302可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。该处理器302的数量可以是一个,也可以是多个。处理器302能够运行虚拟机、容器,还能运行虚拟机监视器(VMM,virtual machine monitor),VMM也称为Hypervisor。

其中,存储器301和处理器302可以分离设置,也可以集成在一起。

可信组件303为数据处理器(data processing unit,DPU)。DPU是一种以数据为中心构造的专用处理器,其采用软件定义技术路线支撑基础设施层资源虚拟化,支持存储、安全、服务质量管理等基础设施层服务。DPU能够提升整个计算设备的运行效率,降低成本。示意性地,DPU成为存储的入口,将分布式的存储和远程访问本地化。例如,在计算设备中,将存储协议处理卸载(offload)在DPU中,以实现对象访问绕过CPU(bypass CPU),降低I/O处理时延和计算设备中CPU的开销,提升性能。在一些情况下,DPU兼有网卡的功能并具有比普通网卡更强大的计算能力,因此又把DPU称为“智能网卡。”

在一些实施例中,可信组件303为VMM,也称为Hypervisor。Hypervisor是一种用来建立与执行虚拟机的软件、固件或硬件,能够允许多个操作系统和应用共享硬件。示意性地,Hypervisor是一种在虚拟环境中的“元”操作系统,他们可以访问计算设备上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护,例如,对计算设备上客户端所属租户的操作隔离。

在一些实施例中,可信组件303为可信执行环境(trusted executionenvironment,TEE)。TEE是处理器302内的一个安全区域(例如CPU内的一个安全区域),它运行在一个独立的环境中且与操作系统并行运行。例如,基于ARM安全区(ARM Trust Zone)、英特尔软件保护扩展(Intel software guard extension,Intel SGX)等技术来实现TEE。示意性地,以处理器302为CPU为例,CPU能够确保TEE中代码和数据的机密性和完整性都得到保护(换言之,运行在TEE中的代码和数据,是保密且不可篡改的),在TEE中运行的受信任应用程序可以访问计算设备中处理器和内存的全部功能。

应理解,图3中所示的可信组件303仅为一种示例性说明,在一些实施例中,可信组件303还能够设置在其他位置,例如,在可信组件303为TEE的情况下,可信组件303设置在处理器302内。又例如,在可信组件303为Hypervisor的情况下,可信组件303通过芯片来实现。另外,在一些场景下,可信组件303通过至少一段程序代码来实现,本申请实施例对此不作限定。通过以上在计算设备中配置以上任一种形式的可信组件,能够实现对计算设备中客户端所属租户的操作隔离,从而保证多租户数据的隔离性和安全性。操作隔离是指客户端无法操作可信组件,可信组件所执行的操作无法被客户端篡改,因此可信组件是“可以被信赖的”。

通信接口304使用例如收发器一类的收发模块,来实现计算设备300与其他设备或通信网络之间的通信,通信接口304例如是网卡的对外接口。例如,通过通信接口304来获取数据。

总线305可包括在计算设备300各个部件(例如,存储器301、处理器302、可信组件303、通信接口304)之间传送信息的通路。在一些实施例中,总线305为基于PCIe的总线。

图4是本申请实施例提供的一种存储设备的硬件结构示意图。如图4所示,该存储设备400可因配置或性能不同而产生比较大的差异,包括一个或一个以上的处理器401和一个或一个以上的存储器402,其中,该存储器402中存储有至少一条程序代码,该至少一条程序代码由该处理器401加载并实现下述方法实施例中存储设备的功能。当然,该存储设备400还能够具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该存储设备400还包括其他用于实现设备功能的部件,在此不做赘述。

在介绍了本申请实施例提供的对象存储系统的基础上,下面对本申请实施例提供的一种访问对象的鉴权过程进行介绍。示意性地,本申请实施例提供的访问对象的鉴权过程应用于上述图2至图4所示的对象存储系统中。

其中,在该对象存储系统中,对于存储设备上存储的任一个对象,由存储设备为该对象创建两种对象ID:

第一种是该对象的普通ID(也可以称为原始对象ID,或者未被加密的对象ID),用于存储设备内部使用,以使存储设备基于该普通ID确定该对象的存储地址。

第二种是该对象的安全ID(也可以称为安全对象ID,或者外部对象ID,又或者被加密的对象ID),用于提供给计算设备使用,以使计算设备基于该安全ID访问该对象。应理解,对普通ID使用密码学运算进行加密而得到的新ID就是安全ID。

在本申请各实施例中,对象ID是一种概称,既可能是普通ID也可能是安全ID。

下面结合图5,对本申请实施例提供的访问对象的鉴权方法进行介绍。图5为本申请实施例提供的一种访问对象的鉴权方法的流程示意图。如图5所示,该访问对象的鉴权方法应用于图2所示的对象存储系统中,下面以该系统中的计算设备100和存储设备200之间的交互为例,对该访问对象的鉴权方法进行介绍。示意性地,该方法包括下述步骤501至步骤510。

501、计算设备中的可信组件存储客户端所属租户的租户信息和鉴权ID。

在本申请实施例中,可信组件为DPU、Hypervisor或TEE,对此不作限定。客户端是指计算设备上运行的任一客户端。示意性地,可信组件从客户端接收第一注册指令,基于该第一注册指令,存储该客户端所属租户的租户信息和鉴权ID,该第一注册指令携带该客户端所属租户的租户信息。其中,鉴权ID是通过计算设备中的硬件提供的,具有客户端不可更改性,例如,计算设备的PCIe总线在传输客户端的注册指令时,将鉴权ID提供给可信组件。

在一些实施例中,客户端所属租户的租户信息包括客户端所属租户的租户ID。其中,对于计算设备中的任一客户端,该客户端所属租户的租户ID与唯一的鉴权ID关联,即,可信组件能够根据鉴权ID查询到唯一与之匹配的租户ID。在一些实施例中,客户端所属租户的租户信息还包括该客户端所属租户的密钥。其中,对于对象存储系统中的任一租户,该租户与唯一的密钥关联,即,可信组件能够根据租户ID查询到唯一与之匹配的密钥。

在一些实施例中,可信组件为DPU,该鉴权ID是DPU提供给客户端所属租户的虚拟功能VF的VF ID。示意性地,以计算设备基于SR-IOV技术运行客户端为例,DPU的接口对应至少一个VF ID,在DPU从客户端接收到第一注册指令的情况下,基于该第一注册指令对应的VF ID,将该VF ID与该第一注册指令携带的租户信息对应存储,即,将该VF ID作为该客户端所属租户的鉴权ID。

在一些实施例中,可信组件为DPU、Hypervisor或TEE,该鉴权ID是用于运行客户端的VM的VM ID,或者,该鉴权ID是用于运行客户端的容器的ID。示意性地,以计算设备基于VMware技术运行客户端为例,该客户端运行于VM中,该鉴权ID是该VM的VM ID。以计算设备基于容器技术运行客户端为例,该客户端运行于容器中,该鉴权ID是该容器的容器ID。需要说明的是,在这类情况下,可信组件存储客户端所属租户的租户信息和鉴权ID的方式与前述过程同理,在此不再赘述。

在一些实施例中,可信组件将该客户端所属租户的租户信息和鉴权ID存储于该可信组件的映射关系表中,客户端无法感知和修改,从而确保了租户信息和鉴权ID的安全性。在一些实施例中,该映射关系表存储有该计算设备上所有客户端所属租户的租户信息和鉴权ID,在另一些实施例中,该映射关系表存储有该对象存储系统中所有客户端所属租户的租户信息的鉴权ID,对此不作限定。应理解,可信组件存储的映射关系表规模较小,仅需要存储租户信息和鉴权ID之间的关系,而无需存储租户信息和对象之间的关系,从而有利于硬件实现,相应地,可信组件后续通过映射关系表查询信息所需的时间也较短,从而有效提升了对象访问效率。反观相关技术中由服务提供商进行租户鉴权的方案,服务提供商需要记录所有对象所属租户的租户信息,且系统中存储的对象数量通常较多,导致服务提供商需要动态维护一张巨大的映射关系表,既不利于硬件实现,也严重影响服务提供商的运行效率。

502、存储设备存储客户端所属租户的租户信息。

在本申请实施例中,存储设备上存储的租户信息包括客户端所属租户的租户ID。在一些实施例中,客户端所属租户的租户信息还包括该客户端所属租户的密钥。示意性地,存储设备从计算设备接收客户端的第二注册指令,基于该第二注册指令,存储该客户端所属租户的租户信息,该第二注册指令携带该客户端所属租户的租户信息。

经过上述步骤501和步骤502,在计算设备侧,计算设备的可信组件中存储了客户端所属租户的租户信息和鉴权ID,便于后续客户端访问对象的情况下,由可信组件实现租户鉴权过程。在存储设备侧,存储设备存储了客户端所属租户的租户信息,便于后续存储设备实现对象ID的创建过程。

需要说明的是,本申请实施例对于上述步骤501和步骤502的执行顺序以及客户端在计算设备和存储设备进行注册的时机不作限定。示意性地,客户端可以通过下发第一注册指令在计算设备进行注册,再通过下发第二注册指令在存储设备进行注册,也可以通过下发目标注册指令在计算设备和存储设备进行注册。

503、存储设备创建目标对象的对象ID。

在本申请实施例中,目标对象属于目标租户,该目标租户是指对该目标对象具有访问权限的租户。其中,存储设备基于计算设备发送的针对目标对象的创建指令,为该目标对象创建两种对象ID,第一种是该目标对象的普通ID(在下述实施例中称为第一ID),用于存储设备内部使用,以使存储设备基于该普通ID确定该对象的存储地址;第二种是该目标对象的安全ID(在下述实施例中称为第二ID),用于提供给计算设备使用,以使计算设备基于该安全ID访问该目标对象。

需要说明的是,区别于由客户端生成对象ID的做法,本申请中的对象ID由存储设备生成。进一步地,区别于由存储设备创建一种对象ID以提供给客户端使用的做法,本申请中由存储设备针对目标对象创建两种对象ID(普通ID和安全ID),将这两种对象ID中的安全ID提供给客户端使用,从而提高了对象ID的安全性;普通ID用于在存储设备本地对对象进行检索。下面对本步骤中存储设备创建目标对象的对象ID的具体过程进行介绍。示意性地,本步骤503包括下述步骤5031和步骤5032。

5031、存储设备从计算设备接收针对该目标对象的创建指令,创建该目标对象的第一ID。

其中,该创建指令携带目标对象和目标租户的租户ID。该目标对象的第一ID用于唯一标识该目标对象,也称为该目标对象的原始对象ID,存储设备能够基于该第一ID,确定该目标对象的存储地址。该目标租户的租户ID用于唯一标识该目标租户,例如,该目标租户的租户ID为000001。在一些实施例中,存储设备基于该目标对象的数据类型和数据内容等信息,创建该目标对象的第一ID,本申请实施例对此不作限定。

5032、存储设备基于该第一ID,创建该目标对象的第二ID。

其中,该目标对象的第二ID用于后续提供给计算设备使用,以使计算设备基于该第二ID访问该目标对象。示意性地,存储设备创建目标对象的第二ID的过程包括下述任一种:

第一种、基于目标租户的密钥,对第一ID和目标租户的租户ID加密,得到该目标对象的第二ID。

其中,存储设备创建得到的第二ID包括被加密的第一ID和被加密的租户ID。示意性地,基于前述步骤502可知,存储设备存储有该目标租户对应的密钥,存储设备查询与目标租户的租户ID对应的密钥,基于该密钥,调用第一目标算法,对第一ID和租户ID加密,得到该第二ID。示意性地,该第一目标算法为对称加密算法,例如,该第一目标算法为计数器(counter,CTR)模式、电码本(electronic codebook,ECB),输出反馈(output feedback,OFB)模式、密文块链(cipher block chaining,CBC)模式或者密文反馈(cipher feedback,CFB)模式等,对此不作限定,开发人员能够根据实际需求选择相应的加密算法来创建第二ID。

下面对这种方式下,存储设备创建第二ID的几种可选方式进行介绍。

(1)将目标租户的租户ID填充至第一ID的预设字段,得到填充后的第一ID;基于目标租户的密钥,对填充后的第一ID加密,得到第二ID。

其中,第一ID的预设字段是指第一ID的保留字段,该第一ID和该第二ID的长度相同。在一些实施例中,在第一ID包括多个预设字段的情况下,存储设备将租户ID分段填充至该第一ID的多个预设字段,得到填充后的第一ID。示意性地,参考图6,图6是本申请实施例提供的一种创建第二ID的示意图。如图6所示,该目标对象的第一ID包括预设字段res1和res2,租户ID为000001,存储设备对租户ID进行分段,得到ID1(000)和ID2(001),将ID1填充至预设字段res1,将ID2填充至预设字段res2,得到填充后的第一ID,基于目标租户的密钥,对填充后的第一ID加密,得到该第二ID。

通过这种分段填充的方式,将目标租户的租户ID填充至第一ID的不同字段,再对填充后的第一ID加密,提高了第二ID的安全性。

(2)将压缩后的第一ID填充至第一字段,将目标租户的租户ID填充至第二字段;基于目标租户的密钥,对该第一字段和该第二字段加密,得到第二ID。

其中,该第一ID和该第二ID的长度相同。示意性地,参考图7,图7是本申请实施例提供的另一种创建第二ID的示意图。如图7所示,存储设备将第一ID压缩后填充至第一字段(例如,将24个字节长度的第一ID压缩至16个字节,对此不作限定),将目标租户的租户ID填充至第二字段,基于目标租户的密钥,对该第一字段和该第二字段进行加密,得到该第二ID。

通过这种压缩再加密的方式,将第一ID压缩后,再对压缩后的第一ID和租户ID加密,提高了第一ID的安全性,而且,在后续计算设备根据该第二ID进行租户鉴权时,通过提取第二字段即可实现鉴权,简化了计算设备的鉴权过程。

(3)将目标租户的租户ID填充至第三字段;基于目标租户的密钥,对第一ID和该第三字段加密,得到第二ID。

其中,该第三字段是指在第一ID的基础上额外添加的字段,例如,将该第三字段添加到第一ID的尾部、中部或者头部等任意位置,本申请实施例对此不作限定。示意性地,参考图8,图8是本申请实施例提供的另一种创建第二ID的示意图。如图8所示,存储设备将租户ID填充至第三字段,添加到第一ID的尾部,基于目标租户的密钥,对该第一ID和该第三字段加密,得到该第二ID。

通过这种直接对第一ID添加额外字段的方式,提升了存储设备创建第二ID的速度。

需要说明的是,基于上述(1)和(2)种方式创建得到的第二ID和第一ID的长度相同,通过这种方式,无需更改计算设备中客户端的API接口,扩展了访问对象的鉴权方法的适用性。

另外,在一些实施例中,在上述加密过程中使用初始化向量进行加密的情况下,初始化向量基于下述任一种方式生成:

(1)该初始化向量与该目标租户对应,对于该目标租户具备访问权限的任一对象,该初始化向量均相同。即,一个租户对应一个初始化向量,存储设备对同一租户的所有对象创建第二ID时使用同一个初始化向量,通过这种方式,能够在确保第二ID的安全性的同时,节约计算资源。

(2)该初始化向量与该目标对象对应,对于该存储设备所创建的任一对象,该初始化向量均不相同。即,一个对象对应一个初始化向量,存储设备基于每个对象的第一ID,生成相应的初始化向量。通过这种方式,能够进一步提高第二ID的安全性。

通过上述第一种创建第二ID的方式,存储设备直接将目标租户的租户ID和第一ID进行组合后加密,在确保第二ID的安全性的同时,提高了第二ID的创建效率。而且,在第一ID和第二ID的长度相同的情况下,无需更改计算设备中客户端的API接口,扩展了访问对象的鉴权方法的适用性。

第二种、基于目标租户的密钥,对第一ID加密,得到被加密的第一ID;生成第一MAC,基于该第一MAC和被加密的第一ID,得到该目标对象的第二ID。

其中,存储设备创建得到的第二ID包括第一MAC和被加密的第一ID。示意性地,基于前述步骤502可知,存储设备存储有该目标租户对应的密钥,存储设备查询与目标租户的租户ID对应的密钥,基于该密钥,调用第二目标算法,对第一ID加密,得到被加密的第一ID;生成第一MAC,基于该第一MAC和被加密的第一ID,得到该第二ID。示意性地,该第二目标算法为AEAD算法,例如,该第二目标算法为高级加密标准-伽罗华计数器模式(advancedencryption standard-Galois/counter mode,AES-GCM)或AES-计数器与CBC-MAC混合模式(counter with CBC-MAC,CCM)等AEAD算法,本申请实施例对此不作限定。在一些实施例中,该第二目标算法为基于先加密再运算MAC(encrypt-then-MAC,EtM)的AEAD算法、基于同步加密和运算MAC(encrypt-and-MAC,E&M)的AEAD算法或者基于先运算MAC再加密(MAC-then-encrypt,MtE)的AEAD算法等,对此不作限定,

下面对这种方式下,存储设备创建第二ID的几种可选方式进行介绍。

(1)基于目标租户的密钥,对第一ID加密,得到被加密的第一ID;基于目标租户的密钥和第一ID,生成第一MAC;基于该第一MAC和被加密的第一ID,得到第二ID。

其中,该第一MAC与目标租户的密钥和第一ID相关。在一些实施例中,存储设备将第一MAC和被加密的第一ID直接组合(例如,将第一MAC添加到被加密的第一ID尾部,对此不作限定),得到第二ID。在另一些实施例中,存储设备对第一MAC和被加密的第一ID分别进行压缩后,将压缩后的第一MAC和压缩后的被加密的第一ID组合,得到第二ID,以使第二ID的长度和第一ID的长度相同,从而扩展访问对象的鉴权方法的适用性。

通过这种方式,基于第一ID生成第一MAC,使得创建得到的第二ID具备保密性、完整性和可认证性,有效提高了第二ID的安全性。

(2)基于目标租户的密钥,对第一ID加密,得到被加密的第一ID;基于目标租户的密钥、第一ID以及目标租户的租户ID,生成第一MAC;基于该第一MAC和被加密的第一ID,得到第二ID。

其中,该第一MAC与目标租户的密钥、第一ID以及目标租户的租户ID相关。基于与上述第(1)种同理的过程,存储设备可以将第一MAC和被加密的第一ID直接组合以得到第二ID,也可以将压缩后的第一MAC和压缩后的被加密的第一ID组合以得到第二ID,对此不作限定。

需要说明的是,在这一过程中,目标租户的租户ID作为附加认证数据(additionalauthenticated data,AAD)参与到第二目标算法的运算过程中,以生成上述第一MAC。示意性地,参考图9,图9是本申请实施例提供的另一种创建第二ID的示意图。如图9所示,存储设备将目标租户的租户ID作为AAD,结合第一ID和目标租户的密钥,调用AES-GCM或AES-CCM等AEAD加密算法,生成第一MAC和被加密的第一ID,将第一MAC和被加密的第一ID组合,得到第二ID。

通过这种方式,将目标租户的租户ID作为AAD来生成第一MAC,使得创建得到的第二ID的保密性、完整性和可认证性得到提升,从而进一步提高了第二ID的安全性。

通过上述第二种创建第二ID的方式,存储设备基于目标租户的密钥,在对第一ID加密的情况下,生成第一MAC,使得创建得到的第二ID具备保密性、完整性和可认证性,有效提高了第二ID的安全性。

第三种、基于目标租户的密钥,生成第三MAC,将该第一ID和第三MAC组合,得到该目标对象的第二ID。

其中,该目标对象的第二ID包括第三MAC和未被加密的第一ID。示意性地,存储设备基于目标租户的密钥,调用第三目标算法,生成第三MAC,将该第一ID和第三MAC组合,得到该第二ID。示意性地,该第三目标算法为MAC算法,例如,该第三目标算法为散列消息认证码(hash message authentication code,HMAC)算法或基于密文的消息认证码(cipher-based message authentication code,CMAC)算法等,对此不作限定。

下面对这种方式下,存储设备创建第二ID的几种方式进行介绍。

(1)基于目标租户的密钥和第一ID,生成第三MAC,将该第一ID和第三MAC组合,得到第二ID。

其中,该第三MAC与目标租户的密钥和第一ID相关。

(2)基于目标租户的密钥、第一ID以及目标租户的租户ID,生成第三MAC,将该第一ID和第三MAC组合,得到第二ID。

其中,该第三MAC与目标租户的密钥、第一ID以及目标租户的租户ID相关。

需要说明的是,基于与上述第二种创建第二ID的方式同理的过程,在该第三种创建第二ID的方式中,存储设备可以将第三MAC和第一ID直接组合以得到第二ID,也可以将压缩后的第三MAC和压缩后的第一ID组合以得到第二ID,对此不作限定。

示意性地,参考图10,图10是本申请实施例提供的另一种创建第二ID的示意图。如图10所示,存储设备基于目标租户的密钥、第一ID以及目标租户的租户ID,调用HMAC或CMAC等算法,生成第三MAC,将第三MAC添加到第一ID尾部,得到第二ID。

示意性地,参考图11,图11是本申请实施例提供的另一种创建第二ID的示意图。如图11所示,以第一ID的长度为24个字节为例,存储设备将压缩后的第一ID填充至第四字段(例如,将24个字节长度的第一ID压缩至16个字节),将压缩后的第三MAC填充至第五字段(例如,将16个字节长度的第三MAC压缩至8个字节),将第四字段和第五字段组合,得到第二ID。需要说明的是,开发人员能够根据实际需求对第一ID和/或第三MAC进行压缩,只要压缩后再组合得到的第二ID与第一ID的长度相同即可。另外,本申请实施例对于上述过程中涉及到的压缩方式不作限定。通过这种压缩的方式,进一步提高了第二ID的安全性。

通过上述第三种创建第二ID的方式,无需对第一ID加密,在确保第二ID安全性的基础上,节约了计算设备的计算资源,在后续计算设备根据该第二ID访问目标对象时,可信组件通过提取第三MAC所在字段即可实现鉴权,简化了计算设备的鉴权过程,而且,在第二ID和第一ID的长度相同的情况下,无需更改计算设备中客户端的API接口,扩展了访问对象的鉴权方法的适用性。

经过上述步骤5032,存储设备对目标对象的第一ID通过密码学运算,创建得到目标对象的第二ID,为后续计算设备在基于该第二ID访问目标对象的情况下,可信组件实现租户鉴权提供基础,确保了多租户数据的隔离性和安全性。

应理解,以上创建第二ID的各种可选方式仅为示意性地,并不构成对本申请的限定,其他凡是对目标对象的第一ID通过密码学运算来创建得到第二ID的方式,均可以应用于本申请实施例中。示意性地,存储设备调用第四目标算法,将目标租户的租户ID和第一ID组合,得到第二ID,例如,该第四目标算法是指按照预设规则,将租户ID插入第一ID的预设位置以得到第二ID。即,在这种情况下,第二ID包括未被加密的第一ID和未被加密的租户ID,本申请实施例对此不做限定。

需要说明的是,经过本步骤503,存储设备为目标对象创建了两种对象ID,其中,目标对象的第二ID是提供给计算设备使用的,因此,存储设备执行下述步骤504,发送该目标对象的第二ID给计算设备。

504、存储设备发送目标对象的对象ID给计算设备中的客户端。

在本申请实施例中,基于上述步骤503可知,存储设备创建的第二ID除包括目标对象的第一ID外,还可以包括其他信息,相应地,在本步骤中,存储设备发送目标对象的对象ID给计算设备的过程包括下述几种情况:

第一种、目标对象的第二ID包括被加密的第一ID和被加密的租户ID。即,存储设备发送被加密的第一ID和被加密的租户ID给客户端。

第二种、目标对象的第二ID包括第一MAC和被加密的第一ID。即,存储设备发送第一MAC和被加密的第一ID给客户端,该第一MAC与存储设备记录的目标租户的密钥和存储设备记录的目标对象的第一ID相关。

第三种、目标对象的第二ID包括第三MAC和未被加密的第一ID。即,存储设备发送第三MAC和未被加密的第一ID给客户端,该第三MAC与存储设备记录的目标租户的密钥和存储设备记录的目标对象的第一ID相关。

需要说明的是,结合上述步骤503和步骤504可知:

在一些实施例中,目标对象的第二ID包括被加密的第一ID,则可以将上述步骤503和504理解为“存储设备创建目标对象的对象ID,对该目标对象的对象ID加密,生成被加密的对象ID;发送被加密的对象ID给客户端”。当然,在目标对象的第二ID还包括被加密的租户ID的情况下,则上述步骤503和步骤504还包括“存储设备对目标租户的租户ID加密,发送被加密的租户ID给客户端”。在目标对象的第二ID还包括第一MAC的情况下,则上述步骤503和步骤504还包括“存储设备生成第一MAC,发送第一MAC给客户端”。

在一些实施例中,目标对象的第二ID包括未被加密的第一ID,则可以将上述步骤503和步骤504理解为“存储设备创建目标对象的对象ID,发送目标对象的对象ID给客户端”。当然,在目标对象的第二ID还包括第三MAC的情况下,则上述步骤503和步骤504还包括“存储设备生成第三MAC,发送该第三MAC给客户端”。在目标对象的第二ID还包括未被加密的租户ID的情况下,则上述步骤503和步骤504还包括“存储设备发送未被加密的租户ID给客户端”。

经过上述步骤503和步骤504,存储设备为目标对象创建两种对象ID后,将目标对象的安全ID发送给客户端,以供客户端后续访问该目标对象。进一步地,由于该安全ID是经过密码学运算对目标对象的普通ID进行处理得到的,因此在客户端基于安全ID访问该目标对象时,计算设备中的可信组件能够运用密码学运算对该安全ID进行处理以实现租户鉴权,从而确保多租户数据的隔离性和安全性。

下面以该客户端访问该目标对象为例,通过步骤505至步骤510对可信组件实现租户鉴权的过程进行介绍。

505、计算设备中的客户端向计算设备中的可信组件发送目标对象的对象ID和鉴权ID。

在本申请实施例中,客户端向可信组件发送目标对象的对象ID和鉴权ID,以请求访问该目标对象。其中,该目标对象的对象ID可以是被加密的对象ID,也可以是未被加密的对象ID,对此不做限定。在该目标对象的对象ID是未被加密的对象ID的情况下,该未被加密的对象ID也可以理解为是目标对象的原始对象ID,具体可参考上述步骤503和步骤504,在此不再赘述。

需要说明的是,在一些实施例中,客户端通过同一个指令向可信组件发送对象ID和鉴权ID,在另一些实施例中,客户端通过不同指令向可信组件发送对象ID和鉴权ID,对此不作限定。

应理解,基于前述介绍可知,鉴权ID具有客户端不可更改性,意味着用户无法更改或者伪造鉴权ID,因此具有高安全性。示意性地,客户端发送鉴权ID的一种实现方法是:在添加鉴权ID时,客户端访问目标对象的指令已经脱离了客户端的控制,因此鉴权ID无法被客户端更改。例如:客户端运行于虚拟机(或者容器等)中,在客户端生成的访问指令中不拥有鉴权ID,当这个访问指令离开客户端但尚未到达可信组件时,被虚拟机(或者容器等)在访问指令中添加鉴权ID。

506、计算设备中的可信组件从计算设备中的客户端接收目标对象的对象ID和鉴权ID。

在本申请实施例中,基于上述步骤501可知,该鉴权ID包括多种情况,例如,该鉴权ID是DPU提供给客户端所属租户的VF的VF ID;或者,该鉴权ID是VM的VM ID,由运行客户端的VM添加;又或者,该鉴权ID是容器ID,由运行客户端的容器添加,在此不再赘述。

507、计算设备中的可信组件基于该鉴权ID进行租户鉴权。

在本申请实施例中,可信组件基于该鉴权ID进行租户鉴权,当该客户端所属租户鉴权通过,则确定该客户端所属租户具有访问该目标对象的权限,可信组件执行下述步骤508以访问目标对象,当该客户端所属租户鉴权失败,则确定该客户端所属租户不具有访问该目标对象的权限,可信组件结束当前流程。

示意性地,基于上述步骤503和步骤504中存储设备创建第二ID的过程可知,存储设备提供给计算设备的第二ID可以有多种形式,因此,下面基于不同形式的第二ID,对可信组件基于该鉴权ID进行租户鉴权的过程进行介绍,该过程包括下述任一种情况:

第一种、目标对象的第二ID包括被加密的第一ID和被加密的租户ID。

其中,可信组件从该客户端接收到的对象ID是被加密的第一ID,可信组件从该客户端还接收到被加密的租户ID。示意性地,可信组件查询与该鉴权ID对应的租户ID和密钥;基于该密钥,对被加密的第一ID进行解密,得到解密后的第一ID和解密后的租户ID,当查询到的租户ID与可信组件从该客户端接收到的租户ID匹配,则鉴权通过,表明该客户端所属租户具有访问该目标对象的权限。

示意性地,参考图12,图12是本申请实施例提供的一种基于鉴权ID进行租户鉴权的示意图。如图12所示,以存储设备基于填充预设字段的方式创建第二ID为例,可信组件查询与该鉴权ID对应的租户ID和密钥,基于查询到的密钥,对该被加密的第一ID和被加密的租户ID进行解密,从预设字段res1和res2中提取ID1(000)和ID2(001),将提取出的ID1(000)和ID2(001)组合,得到解密后的租户ID000001,当查询到的租户ID与该解密后的租户ID匹配,则鉴权通过。

通过上述方式,在可信组件从客户端还接收到租户ID的情况下,由于鉴权ID具有客户端不可更改性,因此可信组件能够基于该鉴权ID查询到该客户端真实的租户ID,从而将查询到的真实的租户ID与从客户端接收到的租户ID进行比对,实现租户鉴权,确保了多租户数据的隔离性与安全性。

第二种、目标对象的第二ID包括第一MAC和被加密的第一ID。

其中,可信组件从该客户端接收到的对象ID是被加密的第一ID,可信组件从该客户端还接收到第一MAC。示意性地,可信组件查询与该鉴权ID对应的密钥;生成第二MAC,该第二MAC与查询到的该密钥和从客户端接收到的对象ID相关;当该第一MAC与该第二MAC匹配,则鉴权通过。在一些实施例中,这一过程还包括:可信组件基于该密钥,对被加密的第一ID进行解密,得到解密后的第一ID,以便后续向存储设备发送访问该目标对象的访问指令。

在一些实施例中,可信组件从该客户端接收到的第一MAC和被加密的第一ID有可能是压缩后的,基于此,可信组件提取对象ID所在字段,对提取到的字段进行解压还原以得到被加密的第一ID,可信组件提取第一MAC所在字段,对生成的第二MAC进行压缩,当提取出的第一MAC所在字段和压缩后的第二MAC匹配,则鉴权通过。

示意性地,参考图13,图13是本申请实施例提供的一种基于鉴权ID进行租户鉴权的示意图。如图13所示,以第一MAC与目标租户的密钥、第一ID以及目标租户的租户ID相关为例,可信组件查询与该鉴权ID对应的租户ID和密钥,基于该密钥,采用AES-GCM或AES-CCM等AEAD解密算法,对被加密的第一ID进行解密,得到解密后的第一ID;基于该密钥、解密后的第一ID以及查询到的租户ID,生成第二MAC,当该第一MAC和该第二MAC匹配,则鉴权通过。

通过上述方式,在可信组件从客户端还接收到第一MAC的情况下,由于鉴权ID具有客户端不可更改性,因此可信组件能够基于该鉴权ID查询到该客户端所属租户的真实密钥,从而根据查询到的真实密钥生成第二MAC,将该第二MAC与从客户端接收到的第一MAC进行比对,实现鉴权过程,确保了多租户数据的隔离性和安全性。

第三种、目标对象的第二ID包括第三MAC和未被加密的第一ID。

其中,可信组件从该客户端接收到的对象ID是未被加密的第一ID,可信组件从该客户端还接收到第三MAC。示意性地,可信组件查询与该鉴权ID对应的密钥;生成第四MAC,该第四MAC与查询到的该密钥和从客户端接收到的对象ID相关;当该第三MAC与第四MAC匹配,则鉴权通过。

在一些实施例中,可信组件从该客户端接收到的对象ID和第三MAC有可能是压缩后的,可信组件基于与上述第二种同理的过程进行租户鉴权,在此不再赘述。

需要说明的是,以上几种可信组件进行租户鉴权的过程仅为示意性地,由于存储设备创建第二ID的方式可以有多种,相应地,可信组件基于鉴权ID进行租户鉴权的方式也相应有多种,本申请实施例对此不作限定。例如,在存储设备调用第四目标算法,将目标租户的租户ID和第一ID组合,得到第二ID的情况下,第二ID中目标对象的第一ID和租户ID均未被加密,可信组件在进行租户鉴权时,查询与该鉴权ID对应的租户ID,当查询到的租户ID与从客户端接收到的租户ID匹配,则鉴权通过,本申请实施例对此不做限定。

应理解,在上述步骤507中,在可信组件基于该鉴权ID进行租户鉴权的过程中,当可信组件从客户端接收到的对象ID是被加密的第一ID,可信组件对该被加密的第一ID进行解密,得到解密后的第一ID,以便执行下述步骤508来访问目标对象,其中,可信组件中配置有解密算法,与存储设备中创建第二ID所涉及的加密算法对应;当可信组件从客户端接收到的对象ID是未被加密的第一ID,可信组件直接基于该未被加密的第一ID执行下述步骤508来访问目标对象。

另外,在一些实施例中,在可信组件鉴权通过的情况下,可信组件还能够基于目标规则,对接收到的对象ID的完整性进行校验,若校验通过,执行下述步骤508,若校验失败,则结束当前流程。例如,目标规则指示对象ID中的字段a等于字段b与字段c之和,则可信组件基于该目标规则,对该对象ID中的字段a、字段b以及字段c之间的关系进行校验,本申请实施例对于目标规则的具体形式不作限定。通过这种方式,能够进一步确保多租户数据的隔离性和安全性。

508、计算设备中的可信组件向存储设备发送访问该目标对象的访问指令,该访问指令携带该目标对象的对象ID。

在本申请实施例中,该访问指令用于访问目标对象。该访问指令中携带的目标对象的对象ID是未被加密的第一ID(也即目标对象的原始对象ID或普通ID)。

需要说明的是,结合上述步骤506至步骤508可知:

在一些实施例中,可信组件从客户端接收到的对象ID是被加密的第一ID,则可以将上述步骤506至步骤508理解为“可信组件基于鉴权ID进行租户鉴权,对从客户端接收到的被加密的对象ID进行解密,得到用于生成访问指令的解密后的对象ID,当客户端所属租户鉴权通过,则向存储设备发送访问目标对象的访问指令”。

在一些实施例中,在可信组件从客户端还接收到租户ID的情况下,则上述步骤506至步骤508中可信组件进行租户鉴权的过程,具体包括“可信组件查询与鉴权ID对应的租户ID,当查询到的租户ID与可信组件从客户端接收到的租户ID匹配,则鉴权通过”。

在一些实施例中,在可信组件从客户端还接收到第一MAC的情况下,则上述步骤506至步骤508中可信组件进行租户鉴权的过程,具体包括“可信组件查询与鉴权ID对应的密钥;生成第二MAC,第二MAC与查询到的密钥和从客户端接收到的对象ID相关;当第一MAC与第二MAC匹配,则鉴权通过”。

经过上述步骤506至步骤508,可信组件从客户端接收目标对象的对象ID和鉴权ID,基于该鉴权ID进行租户鉴权,当该客户端所属租户鉴权通过,向存储设备发送访问该目标对象的访问指令(这一过程也可以理解为可信组件将目标对象的安全ID还原成了普通ID),基于此,在该客户端所属租户鉴权通过的情况下,可信组件能够基于该目标对象的对象ID直接访问存储设备,实现了访问对象的鉴权过程。

示意性地,下面参考图14,对上述步骤506至步骤508所示的访问对象的鉴权过程进行举例说明。图14是本申请实施例提供的一种访问对象的鉴权过程的示意图。如图14所示,以可信组件为DPU为例,计算设备上包括多个客户端,在客户端1请求访问目标对象的情况下,由硬件虚拟化子系统基于SR-IOV技术将客户端1的鉴权ID(VF ID)、目标对象的对象ID(如被加密的第一ID)以及租户ID(如被加密的租户ID)下发至DPU。DPU基于该鉴权ID,由认证器(authenticator)从租户管理器(tenant manager)的映射关系表中查询与该鉴权ID对应的租户ID和密钥,其中,该认证器可以理解为DPU中用于执行访问对象的鉴权方法的组件,可以通过至少一段程序代码来实现。DPU基于查询到的密钥,对接收到的对象ID进行解密,得到解密后的对象ID(普通ID)和解密后的租户ID,当解密后的租户ID和查询到的租户ID匹配,则鉴权通过,基于该解密后的对象ID,向存储设备发送访问指令以访问该目标对象。通过这种使用鉴权ID的方式,存储设备不需要存储租户ID与对象ID的对应关系,因此为了鉴权而需要的存储空间大大减少,使得查询数据量大大减少,提高了查询效率。而且查询过程由计算设备(而不是存储设备)执行,进一步节约了存储设备的存储空间,减少了对存储设备运行资源的占用。

509、存储设备从计算设备的可信组件接收该访问指令。

510、存储设备基于访问指令携带的对象ID,获取该目标对象,向该计算设备返回该目标对象。

在本申请实施例中,存储设备基于该对象ID,确定该目标对象的存储地址,获取该目标对象,向该计算设备返回该目标对象。在一些实施例中,存储设备向该计算设备的可信组件返回该目标对象,在此不作限定。在这一过程中,由于访问对象的鉴权过程已在计算设备中完成,因此存储设备无需再对访问指令对应的租户是否具有访问权限进行鉴权,使访问对象的鉴权过程成为了一种无状态的过程,减少了存储设备的资源开销和计算量,在确保多租户数据的隔离性和安全性的同时,提高了对象访问效率和对象存储系统的可扩展性。

综上,在本申请实施例提供的访问对象的鉴权方法中,由计算设备中的可信组件来完成访问对象的鉴权过程,在客户端请求访问目标对象的情况下,该可信组件从客户端接收该目标对象的对象ID和鉴权ID,从而根据该鉴权ID对该客户端所属租户进行租户鉴权,当该客户端所属租户鉴权通过,则基于该目标对象的对象ID访问存储设备,从而无需由存储设备进行认证,减少了存储设备的资源开销和计算量,在确保多租户数据的隔离性和安全性的同时,提高了对象访问效率。

图15是本申请实施例提供的一种访问对象的鉴权装置的结构示意图。该装置可以通过软件、硬件或者两者的结合实现成为前述计算设备上可信组件的部分或者全部功能。本申请实施例提供的访问对象的鉴权装置,能够实现上述方法实施例中计算设备上可信组件所执行的步骤。如图15所示,该访问对象的鉴权装置包括接收模块1501和鉴权模块1502。

接收模块1501,用于从该计算设备中的客户端接收目标对象的对象ID和鉴权ID;

鉴权模块1502,用于基于该鉴权ID进行租户鉴权,当该客户端所属租户鉴权通过,则向存储设备发送访问该目标对象的访问指令,该访问指令包括该目标对象的对象ID。

在一些实施例中,该装置从该客户端接收到的对象ID是被加密的对象ID,该访问指令所包括的对象ID是解密后的对象ID;该装置还包括解密模块,用于:

对从该客户端接收到的被加密的对象ID进行解密,得到用于生成该访问指令的解密后的对象ID。

在一些实施例中,该鉴权ID具有客户端不可更改性。

在一些实施例中,该客户端运行于该计算设备中的虚拟机VM或者该计算设备中的容器。

在一些实施例中,该装置应用于下述任意一种:数据处理器DPU、至少一个中央处理器CPU中所运行的虚拟机监视器Hypervisor以及至少一个CPU中所运行的可信执行环境TEE。

在一些实施例中,该装置应用于DPU,该鉴权ID是该DPU提供给该客户端所属租户的虚拟功能VF的VF ID。

在一些实施例中,该客户端运行于VM中,该鉴权ID是该VM的VM ID,该装置从该客户端接收到的该鉴权ID由该VM添加;或者该客户端运行于容器中,该鉴权ID是该容器的容器ID,该装置从该客户端接收到的该鉴权ID由该容器添加。

在一些实施例中,该装置从该客户端还接收到租户ID,其中,该鉴权模块1502,用于:

查询与该鉴权ID对应的租户ID,当查询到的租户ID与该装置从该客户端接收到的租户ID匹配,则鉴权通过。

在一些实施例中,该装置从该客户端还接收到第一消息认证码MAC,其中,该鉴权模块1502,用于:

查询与该鉴权ID对应的密钥;

生成第二MAC,该第二MAC与查询到的该密钥和从该客户端接收到的目标对象的对象ID相关;

当该第一MAC与该第二MAC匹配,则鉴权通过。

在一些实施例中,该解密模块,用于:

查询与该鉴权ID对应的密钥;

使用该密钥对从该客户端接收到的被加密的对象ID解密。

需要说明的是:上述实施例提供的访问对象的鉴权装置在进行访问对象的鉴权时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的访问对象的鉴权装置与访问对象的鉴权方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本申请实施例还提供了一种对象存储系统,该系统包括计算设备和存储设备,其中,

该计算设备中的可信组件,用于:从该计算设备中的客户端接收目标对象的对象ID和鉴权ID;基于该鉴权ID进行租户鉴权,当该客户端所属租户鉴权通过,则该可信组件向存储设备发送访问该目标对象的访问指令,该访问指令包括该目标对象的对象ID。

该存储设备,用于:从计算设备的可信组件接收该访问指令,基于访问指令携带的对象ID,获取该目标对象,向该计算设备返回该目标对象。

在一些实施例中,该可信组件从该客户端接收到的对象ID是被加密的对象ID,该访问指令所包括的对象ID是解密后的对象ID;该可信组件还用于:

对从该客户端接收到的被加密的对象ID进行解密,得到用于生成该访问指令的解密后的对象ID。

在一些实施例中,该鉴权ID具有客户端不可更改性。

在一些实施例中,该客户端运行于该计算设备中的虚拟机VM或者该计算设备中的容器。

在一些实施例中,该可信组件为下述任意一种:数据处理器DPU、至少一个中央处理器CPU中所运行的虚拟机监视器Hypervisor以及至少一个CPU中所运行的可信执行环境TEE。

在一些实施例中,该可信组件为DPU,该鉴权ID是该DPU提供给该客户端所属租户的虚拟功能VF的VF ID。

在一些实施例中,该客户端运行于VM中,该鉴权ID是该VM的VM ID,该可信组件从该客户端接收到的该鉴权ID由该VM添加;或者,该客户端运行于容器中,该鉴权ID是该容器的容器ID,该可信组件从该客户端接收到的该鉴权ID由该容器添加。

在一些实施例中,该可信组件从该客户端还接收到租户ID,其中,该可信组件用于:

查询与该鉴权ID对应的租户ID,当查询到的租户ID与该可信组件从该客户端接收到的租户ID匹配,则鉴权通过。

在一些实施例中,该可信组件从该客户端还接收到第一MAC,其中,该可信组件用于:

查询与该鉴权ID对应的密钥;

生成第二MAC,该第二MAC与查询到的该密钥和从该客户端接收到的目标对象的对象ID相关;

当该第一MAC与该第二MAC匹配,则鉴权通过。

在一些实施例中,该存储设备,还用于:

生成该第一MAC,该第一MAC与该存储设备记录的该密钥和该存储设备记录的该目标对象的对象ID相关;

发送该第一MAC给该客户端。

在一些实施例中,该可信组件从该客户端接收到的对象ID是未被加密的对象ID,该存储设备还用于:

创建该目标对象的对象ID;

发送该目标对象的对象ID给该客户端。

在一些实施例中,该可信组件对从该客户端接收到的对象ID是被加密的对象ID,其中,可信组件用于:

对被加密的对象ID解密,得到解密后的对象ID;

生成访问指令,该访问指令包括解密后的对象ID;

向该存储设备发送该访问指令。

在一些实施例中,该可信组件用于:

查询与该鉴权ID对应的密钥;

使用该密钥对从该客户端接收到的被加密的对象ID解密。

在一些实施例中,该可信组件从该客户端接收到的对象ID是被加密的对象ID,该存储设备还用于:

创建该目标对象的对象ID,对该目标对象的对象ID加密,生成被加密的对象ID;

发送被加密的对象ID给该客户端。

需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的目标租户的租户ID都是在充分授权的情况下获取的。

本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一字段可以被称为第二字段,并且类似地,第二字段可以被称为第一字段。第一字段和第二字段都可以是字段,并且在某些情况下,可以是单独且不同的字段。

本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个字段是指两个或两个以上的字段。

以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,在本申请揭露的技术范围内想到的各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以程序结构信息的形式实现。该程序结构信息包括一个或多个程序指令。在计算设备上加载和执行该程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。

实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 访问请求的鉴权方法及鉴权服务器
  • 一种鉴权以及确定鉴权方式的方法、装置及电子设备
  • 基于RESTful的鉴权方法、网关及鉴权设备
  • 用户鉴权方法及装置
  • 一种接入鉴权的方法及装置
  • 数据访问的鉴权方法、装置、鉴权设备和鉴权系统
  • 业务访问、鉴权方法及对应的系统、客户端、鉴权服务器
技术分类

06120116069030