CN114003877A - 多租户系统的数据访问方法、装置、介质及电子设备 - Google Patents
多租户系统的数据访问方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN114003877A CN114003877A CN202111224699.6A CN202111224699A CN114003877A CN 114003877 A CN114003877 A CN 114003877A CN 202111224699 A CN202111224699 A CN 202111224699A CN 114003877 A CN114003877 A CN 114003877A
- Authority
- CN
- China
- Prior art keywords
- tenant
- data
- query instruction
- data query
- database
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及云计算领域,应用于ESOP系统,揭示了一种多租户系统的数据访问方法、装置、计算机可读介质及电子设备。该方法包括:在多租户系统中根据与租户对应的密钥对所述租户的数据进行加密,得到所述租户的加密数据,其中,所述多租户系统中租户的密钥均不相同;接收数据查询指令,并对数据查询指令进行租户身份标识信息的合法性校验;若数据查询指令通过合法性校验,则根据数据查询指令对加密数据进行数据查询操作,得到查询结果;以发送数据查询指令的租户为目标租户,根据目标租户对应的密钥对所述查询结果进行解密操作,并将解密结果输出。此方法避免了数据被越权访问,大大提高了多租户系统中数据存储的可靠性、安全性以及容错率。
Description
技术领域
本申请涉及云计算技术领域,特别涉及一种多租户系统的数据访问方法、装置、计算机可读介质及电子设备。
背景技术
SaaS(Software-as-a-Service,软件即服务)是云计算的服务模式之一。SaaS平台供应商将应用软件统一部署在自己的服务器上,不同客户可以根据工作实际需求从SaaS平台购买其所需的服务。
然而,由于程序故障或恶意操作等原因,一个客户可能通过某些方式访问到SaaS平台中其他客户的数据,会造成数据泄露,这对SaaS平台的数据安全造成严重威胁。
发明内容
在云计算技术领域,应用于ESOP系统,提供多重安全保障,包括单项加密、多副本存储、访问控制等技术手段保证数据安全;通过身份认证、限定IP、访问控制等保证账户安全;通过公司管理员权限分级,设置多级权限范围、记录变更操作、提供修改记录查看等保证业务安全;通过多个存储服务器,保证数据安全稳定,跟踪发现系统漏洞,实时升级修复等技术手段来保证系统安全。
为了解决上述技术问题,本申请的目的在于提供一种多租户系统的数据访问方法、装置、计算机可读介质及电子设备。
根据本申请实施例的一个方面,提供了一种多租户系统的数据访问方法,所述方法包括:
在多租户系统中根据与租户对应的密钥对所述租户的数据进行加密,得到所述租户的加密数据,其中,所述多租户系统中租户的密钥均不相同;
接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验;
若所述数据查询指令通过所述合法性校验,则根据所述数据查询指令对所述加密数据进行数据查询操作,得到查询结果;
以发送所述数据查询指令的租户为目标租户,根据所述目标租户对应的密钥对所述查询结果进行解密操作,并将解密结果输出。
根据本申请实施例的一个方面,提供了一种多租户系统的数据访问装置,所述装置包括:
加密模块,被配置为在多租户系统中根据与租户对应的密钥对所述租户的数据进行加密,得到所述租户的加密数据,其中,所述多租户系统中租户的密钥均不相同;
合法性校验模块,被配置为接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验;
查询模块,被配置为若所述数据查询指令通过所述合法性校验,则根据所述数据查询指令对所述加密数据进行数据查询操作,得到查询结果;
解密模块,被配置为以发送所述数据查询指令的租户为目标租户,根据所述目标租户对应的密钥对所述查询结果进行解密操作,并将解密结果输出。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
对于本申请所提供的多租户系统的数据访问方法、装置、计算机可读介质及电子设备,该方法包括如下步骤:在多租户系统中根据与租户对应的密钥对所述租户的数据进行加密,得到所述租户的加密数据,其中,所述多租户系统中租户的密钥均不相同;接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验;若所述数据查询指令通过所述合法性校验,则根据所述数据查询指令对所述加密数据进行数据查询操作,得到查询结果;以发送所述数据查询指令的租户为目标租户,根据所述目标租户对应的密钥对所述查询结果进行解密操作,并将解密结果输出。
此方法下,通过在接收到数据查询指令之后,对数据查询指令进行租户身份标识信息的合法性校验,只有在数据查询指令通过合法性校验的情况下,才进行数据查询操作,确保了租户无法查询到其他租户的数据,避免了数据被越权访问;在此基础上,通过对多租户系统中的各个租户的数据使用特定于该租户的密钥进行加密,在得到查询结果之后,还根据发送数据查询指令的目标租户所对应的密钥对查询结果进行解密,当发送数据查询指令的租户与数据查询指令所请求查询的数据的真实租户不一致时,就无法成功对查询结果进行解密,从而进一步避免了数据被越权访问。因此,通过结合对租户的数据使用特定密钥加密和对数据查询指令进行租户身份标识信息的合法性校验两种手段,大大提高了多租户系统中数据存储的可靠性、安全性以及容错率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图;
图2示出了根据本申请的一个实施例的多租户系统的数据访问方法的流程图;
图3示出了根据本申请的一个实施例的物理隔离和数据库隔离的原理示意图;
图4示出了根据本申请的一个实施例的图2中步骤230之前步骤以及步骤230的细节的流程图;
图5示出了根据本申请的一个实施例的图2中步骤230的细节的流程图;
图6示出了根据本申请的一个实施例的图5中步骤233'之前步骤的流程图;
图7示出了根据本申请的一个实施例的多租户系统的数据访问方法的交互流程示意图;
图8示出了根据本申请的一个实施例的进行数据库权限校验以及租户身份标识信息的合法性校验的流程示意图;
图9示出了根据本申请的一个实施例的多租户系统的数据访问装置的框图;
图10示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
此外,附图仅为本申请的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
多租户系统是使用了多租户技术(multi-tenancy technology)的系统,多租户技术是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件。比如,SaaS服务便是一种典型的多租户系统。
在股权激励领域中,租户是指租用股权激励SaaS服务的上市或计划上市的公司,SaaS服务则托管了租户下具体员工的授予信息。然而,员工授予信息和员工工资一样,是高度敏感的信息,如果出现A租户因为程序故障或恶意操作能看到B租户的数据,将是重大事故,SaaS服务提供者将失去声誉甚至还要负法律责任。
在相关技术中,租户在登录后,会保存当前租户的ID到会话中。数据隔离的常见方法是在查询指令中,加入当前会话的租户ID到查询条件,使得非本租户的数据被过滤,这样就可以防止数据越权。
然而,该相关技术依然存在以下缺陷:
1、容错率低
(1)开发者编写代码由于疏忽导致查询指令的查询条件中未携带租户ID,进而导致数据越权。
(2)开发者直接操作数据库时,操作不当导致的无关租户数据受到影响,比如:租户要求将其A改成B,但由于操作不当导致将所有租户的A都改成了B。
2、数据库资源争夺
某租户由于数据量过大的操作消耗大量数据库性能,导致其他租户加载缓慢。
为此,本申请首先提供了一种多租户系统的数据访问方法,根据本申请提供的一种多租户系统的数据访问方法可以克服以上缺陷,能够大大降低出现数据越权的可能性。
本申请的实施终端可以是任何具有运算、处理以及通信功能的设备,该设备可以与外部设备相连,用于接收或者发送数据,具体可以是便携移动设备,例如智能手机、平板电脑、笔记本电脑、PDA(Personal Digital Assistant)等,也可以是固定式设备,例如,计算机设备、现场终端、台式电脑、服务器、工作站等,还可以是多个设备的集合,比如云计算的物理基础设施或者服务器集群。
可选地,本申请的实施终端可以为服务器或者云计算的物理基础设施。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。如图1所示,该系统架构100包括个人计算机110和云端120,云端120包括服务器121和数据库122,个人计算机110和云端120之间以及云端120中服务器121和数据库122之间均通过通信链路相连,可以用于发送或接收数据。云端120上部署有多租户系统,服务器121上设置的业务程序可以向外提供SaaS服务,服务器121为本实施例中的实施终端。个人计算机110的用户可以访问云端120中服务器121来使用SaaS服务,并通过服务器121将用户的数据存储到数据库122中。当本申请提供的一种多租户系统的数据访问方法应用于图1所示的系统架构中时,一个过程可以是这样的:首先,服务器121对数据库122中各个租户的数据使用特定于各个租户的密钥进行加密;接着,当个人计算机110的用户访问云端120中的服务器121,服务器121与个人计算机110建立会话并初始化与某一数据库的连接,此时,服务器121获得用户提交的查询指令;然后,服务器121判断会话的用户是否有此数据库的连接权限,如果是,服务器121继续校验查询指令是否携带租户ID以及查询指令中的租户ID是否等于会话的租户ID;接下来,如果均通过校验,则在数据库122中执行查询指令;然后,服务器121获得数据库122返回的查询结果,根据当前会话的租户ID确定对应的密钥,并对查询结果进行解密操作;最后,服务器121将解密结果返回个人计算机110的用户,这样便完成了租户对多租户系统中数据的访问过程。
本申请实施例中服务器121判断会话的用户是否有此数据库的连接权限可以通过以下一种示例进行权限判断。
S1、将采集到的用户的语音数据输入语音活动检测模型进行去噪,得到去噪数据;
S2、通过梅尔频率倒谱系数模型从去噪数据中提取声纹特征,并根据声纹特征建立与语音数据对应的声纹特征向量;
S3、将声纹特征向量输入预先训练的高斯混合模型,得到被测对象的高斯声纹向量;
S4、将高斯声纹向量与预设的标准声纹向量进行对比,生成权限判断结果;
其中,利用预先确定的距离计算公式计算当前高斯声纹向量与用户对应的预存标准声纹向量之间的距离,以通过向量之间的距离确定两个数据量之间的差别大小。
可选的,通过杰卡德距离公式计算两个向量之间的距离:
其中,计算两个集合X和Y的交集元素在X,Y的并集中所占的比例,若计算的系数值越大,则确定通过权限;若计算的系数值越小,则确定通过权限失败。
应该理解,图1中的个人计算机、服务器以及数据库的数目仅仅是示意性的。根据实现需要,可以具有任意数目的个人计算机、服务器及数据库。比如服务器121可以是多个服务器组成的服务器集群等。
需要说明的是,图1示出的仅为本申请的一个实施例,虽然在图1实施例中接收查询指令的设备、对连接权限和租户ID进行校验的设备以及对数据进行加解密的设备为同一设备,但在本申请的其他实施例中或者在具体应用时,接收查询指令的设备、对连接权限和租户ID进行校验的设备以及对数据进行加解密的设备可以为不同的设备,比如,对数据进行解密的设备可以为位于接收查询指令的设备之外的机器;虽然在图1实施例中,数据库与接收查询指令的设备为不同的设备,但在本申请的其他实施例中,数据库还可以设置为接收查询指令的设备本地。本申请实施例对此不作任何限定,本申请的保护范围也不应因此而受到任何限制。
并且,易于理解,本申请实施例所提供的多租户系统的数据访问方法一般由服务器执行,相应地,多租户系统的数据访问装置一般设置于服务器中。但是,在本申请的其它实施例中,其他类型的终端设备也可以与服务器具有相似的功能,从而执行本申请实施例所提供的多租户系统的数据访问的方案。
图2示出了根据本申请的一个实施例的多租户系统的数据访问方法的流程图。本实施例提供的租户系统的数据访问方法可以由服务器执行,可以应用于股权激励SaaS服务中。如图2所示,可以包括以下步骤:
在步骤210中,在多租户系统中根据与租户对应的密钥对租户的数据进行加密,得到租户的加密数据,其中,多租户系统中租户的密钥均不相同。
租户的数据可以是各种类型的数据,比如可以是租户的敏感信息。租户系统中租户的密钥均不相同,即,对于租户系统中的任意一个租户的密钥,无法在租户系统中找到一个其他租户与该租户的密钥相同,也就是说,每一租户对应的密钥都是特定于该租户的。A租户的密钥解不开B租户的数据。
这里的密钥既可以是对称加密算法下的密钥,也可以是非对称加密算法下的公钥或私钥。
在本申请的一个实施例中,多租户系统中与租户对应的密钥是由多租户系统为租户随机生成的。
在本申请实施例中,通过利用随机生成的密钥对租户的数据进行加密,可以提高数据存储的安全性,能够避免数据被越权访问。
在本申请的一个实施例中,多租户系统中与租户对应的密钥是定期更新的。
在本申请实施例中,通过对与租户对应的密钥进行定期更新,使得各租户的密钥不是一成不变的,即使密钥泄露也会很快失效,进一步数据被越权访问的可能性。
可以将获得的租户的加密数据存储至数据库或者其他类型的存储工具中。当加密数据被存储至数据库时,这里的数据库可以是Mysql等关系型数据库,也可以是Redis等非关系型数据库。
在本申请的一个实施例中,加密数据存储于数据库中,多租户系统中每一租户的加密数据由特定于该租户的数据库进行存储。
换而言之,多租户系统中每一租户都有对应的数据库,而且该数据库仅属于其对应的唯一租户,不同租户对应的数据库均不相同。每一租户可以对应一个或多个数据库。
在本申请实施例中,由于每个租户使用单独的数据库,可以使租户间的数据不相互影响,也减小了开发人员误操作的概率。
在本申请的一个实施例中,在多租户系统中包括一个或一个以上的独立机器租户,独立机器租户的加密数据由特定于该独立机器租户的机器进行存储。
具体而言,特定于一个独立机器租户的机器是指仅存储该独立机器租户的数据的机器。对于一个独立机器租户而言,其可以具有一个或多个特定于该独立机器租户的机器。
这里的机器可以是服务器、服务器集群等各种具备存储功能的设备。多租户系统中的租户可以全部为独立机器租户,也可以仅有一部分租户为独立机器租户。
在本申请实施例中,通过在多租户系统中为至少一个租户配置独立的机器,并由这些机器为租户单独存储数据,使租户间的数据库机器性能不相互影响。也保证了数据安全性。
在本申请的一个实施例中,独立机器租户的数据量大于多租户系统中其他租户的数据量。
可以在多租户系统中根据各租户的数据量确定出独立机器租户,比如,将具有的数据量大于预定数据量阈值的租户确定为独立机器租户,然后将独立机器租户迁移至单独的机器中。
在本申请实施例中,通过仅将数据量足够多的租户确定为独立机器租户,并为这些租户单独分配用于存储数据的机器,在使租户间的数据库机器性能不相互影响和保证数据安全性的同时,减少了机器的设置成本,实现了成本与性能之间的兼顾。
图3示出了根据本申请的一个实施例的物理隔离和数据库隔离的原理示意图。如图3所示,多租户系统中每个租户都使用单独的数据库,A租户、B租户、C租户的数据库分别为A租户数据库、B租户数据库和C租户数据库,A租户数据库和B租户数据库位于a机器上,C租户数据库单独位于b机器上,这是因为C租户的数据量较大,因此,将数据量大的租户使用单独的机器存储。
图3中还示出了公共数据库,公共数据库即为System数据库,可以存储各种除租户的加密数据之外的数据,比如可以存储与租户无关的系统配置数据,还可以存储多租户系统中各租户的数据库权限等。
请继续参阅图2,在步骤230中,接收数据查询指令,并对数据查询指令进行租户身份标识信息的合法性校验。
数据查询指令比如可以是SQL(Structured Query Language,结构化查询语言)。
本申请实施例中的合法性校验可以通过以下一种示例进行校验。
先随机选择一个用于在进行校验时,对接收的数进行除法运算的除数;看所选定的除数二进制位数(假设为a位),然后在要发送的数据位(假设为b位)后面加上a-1位“0”,然后以这个加了a-1个“0“的新数(一共是b+a-1位)以“模2除法”方式除以上面这个除数,所得到的余数就是该数的校验码;再把这个校验码附加在原数据后面,构建一个新数发送到接收端,最后在接收端再把这个新数以“模2除法”方式除以前面选择的除数,如果没有余数,则表明该数在传输过程中没出错,否则出现了差错。
图4示出了根据本申请的一个实施例的图2中步骤230之前步骤以及步骤230的细节的流程图。如图4所示,包括以下步骤:
在步骤220中,建立与租户的会话,并初始化与目标数据库的连接。
目标数据库可以是租户指定的数据库,还可以是预先设定的数据库。
步骤230具体可以包括以下步骤:
在步骤231中,当从会话接收到来自租户的数据查询指令,判断租户是否具有目标数据库的连接权限。
可以预先保存各租户对应的连接权限,具体可以根据租户ID找到对应的连接权限。租户对应的连接权限可以保存在公共数据库中。租户对应的连接权限可以根据租户请求进行调整。
在本申请的一个实施例中,当从会话接收到来自租户的数据查询指令,判断租户是否具有目标数据库的连接权限,包括:当从会话接收到来自租户的数据查询指令,判断目标数据库是否为公共库,其中,公共库为多租户系统中未存储租户的加密数据的数据库;若目标数据库不为公共库,则判断租户是否具有目标数据库的连接权限。
当目标数据库为公共库时,可以直接通过校验,并继续对数据查询指令进行租户身份标识信息的合法性校验,不用判断租户是否具有目标数据库的连接权限;此外,当目标数据库为公共库时,还可以直接根据数据查询指令进行数据查询操作,不用进行其他校验。
在步骤232中,若租户具有目标数据库的连接权限,则对数据查询指令进行租户身份标识信息的合法性校验。
在本申请实施例中,通过在对数据查询指令进行租户身份标识信息的合法性校验之前,先判断租户是否具有目标数据库的连接权限,只有在租户具有目标数据库的连接权限的情况下,才对数据查询指令进行租户身份标识信息的合法性校验,进一步降低了租户数据被非法访问的可能性,能够减小故障带来的事故。
图5示出了根据本申请的一个实施例的图2中步骤230的细节的流程图。请参照图5所示,步骤230还可以包括以下步骤:
在步骤233'中,判断数据查询指令中的租户身份标识信息与当前会话中的租户身份标识信息是否一致。
在数据查询指令中,筛选条件用于提取那些满足指定条件的记录。数据查询指令的筛选条件需要携带租户ID。会话是根据租户身份标识信息与租户建立起来的。
在本申请实施例中,通过对数据查询指令的筛选条件中携带的租户ID进行校验,大大降低了数据越权的可能性。
图6示出了根据本申请的一个实施例的图5中步骤233'之前步骤的流程图。请参见图6所示,在步骤233'之前,步骤230还可以包括以下步骤:
在步骤231'中,判断数据查询指令请求查询的数据表是否为系统表。
在数据查询指令请求查询的数据表不为系统表的情况下,执行判断数据查询指令中是否携带有租户身份标识信息的步骤,即,如果否,执行步骤232'。当数据查询指令请求查询的数据表为系统表时,可以直接通过校验,并执行数据查询指令。
在步骤232'中,判断数据查询指令中是否携带有租户身份标识信息。
如果是,则执行步骤233'。
也就是说,在数据查询指令中携带有租户身份标识信息的情况下,执行判断数据查询指令中的租户身份标识信息与当前会话中的租户身份标识信息是否一致的步骤。
在本申请实施例中,通过在判断数据查询指令中的租户身份标识信息与当前会话中的租户身份标识信息是否一致之前,先判断数据查询指令中是否携带有租户身份标识信息,由于判断数据查询指令中是否携带有租户身份标识信息所需的计算量远远小于判断数据查询指令中的租户身份标识信息与当前会话中的租户身份标识信息是否一致,因此,可以在一定程度上降低数据访问所需的计算量,从而可以节约计算开销。
如果业务程序有故障,不小心将数据库连接指向到别的租户的数据库或者是遗漏的租户ID做筛选条件,通过步骤232'和步骤233'便可以校验出异常。
请继续参见图2,在步骤240中,若数据查询指令通过合法性校验,则根据数据查询指令对加密数据进行数据查询操作,得到查询结果。
如果数据查询指令未通过合法性校验,可以抛出异常。
在步骤250中,以发送数据查询指令的租户为目标租户,根据目标租户对应的密钥对查询结果进行解密操作,并将解密结果输出。
换而言之,根据会话的租户ID查找对应的密钥。在加密数据是使用非对称加密算法加密得到的情况下,如果使用的是与目标租户对应的公钥进行加密的,那么可以利用与目标租户对应的私钥进行解密操作。
当无法对查询结果进行解密操作时,也可以抛出异常。
当发送数据查询指令的租户与数据查询指令所请求查询的数据的真实租户不一致时,就无法成功对查询结果进行解密。
图7示出了根据本申请的一个实施例的多租户系统的数据访问方法的交互流程示意图。请参见图7所示,股权激励中SaaS多租户数据隔离涉及到了用户、业务程序、数据库操作校验、加解密机器和数据等实体,具体过程如下:首先,用户执行某个操作;接着,业务程序根据会话的租户ID初始化数据库连接,并进行查询数据操作;然后,在数据库操作校验实体校验会话的租户是否有此数据库连接权限,如果是,则校验查询指令是否有当前会话的租户ID作为筛选条件,如果是,则在数据库中执行查询指令;执行完毕后,数据库向业务程序返回查询结果,使业务程序得到查询结果;然后,业务程序需要对数据进行解密,向加解密机器发送携带有数据的请求;接下来,加解密机器根据会话的租户ID准备密钥,使用密钥解密,并向业务程序返回解密结果,这样便解密完成了;最后,业务程序将解密结果返回给用户,在展示界面进行展示。如此,用户便可以得到数据访问结果了。
图8示出了根据本申请的一个实施例的进行数据库权限校验以及租户身份标识信息的合法性校验的流程示意图。请参见图8所示,包括以下流程:首先,创建租户,为租户创建一个数据库A,并保存租户A的数据库权限到公共库;然后,当租户连接数据库,先判断目标数据库是否是公共库;如果是,则通过校验,如果否,则判断当前租户是否有目标数据库权限,如果当前租户有目标数据库权限,则通过校验,如果没有,则不通过校验;接下来,在通过校验之后,校验查询指令携带租户ID做筛选条件,并在通过校验后执行查询指令。
在图8中,校验查询指令携带租户ID做筛选条件部分可以包括以下流程:首先,此时即将执行查询指令,先判断目标表是否是系统表,如果是,则通过校验,否则,判断查询指令是否携带租户ID;若查询指令未携带租户ID,则不通过校验;若查询指令携带租户ID,则继续判断查询指令中的租户ID是否等于会话的租户ID,如果是,则通过校验,如果否,则不通过校验。最后,在通过校验后执行查询指令。
综上所述,根据本申请实施例提供的多租户系统的数据访问方法,通过从机器、数据库、数据、校验多个维度来保证数据的隔离,只要有一个维度还能保持工作,数据的越权就不可能出现,从多维度进行数据越权的访问,减小了故障带来的事故。针对数据高度敏感的股权激励数据在多租户间实现了隔离,能够在最大程度上防止了数据越权、数据库资源争夺、数据相互影响。因此,相比普通的数据隔离,本申请实施例的方案拥有更高的可靠性、安全性、容错率。
本申请还提供了一种多租户系统的数据访问装置,以下是本申请的装置实施例。
图9示出了根据本申请的一个实施例的多租户系统的数据访问装置的框图。如图9所示,装置900包括:
加密模块910,被配置为在多租户系统中根据与租户对应的密钥对所述租户的数据进行加密,得到所述租户的加密数据,其中,所述多租户系统中租户的密钥均不相同;
合法性校验模块920,被配置为接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验;
查询模块930,被配置为若所述数据查询指令通过所述合法性校验,则根据所述数据查询指令对所述加密数据进行数据查询操作,得到查询结果;
解密模块940,被配置为以发送所述数据查询指令的租户为目标租户,根据所述目标租户对应的密钥对所述查询结果进行解密操作,并将解密结果输出。
图10示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图10示出的电子设备的计算机系统1000仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图10所示,计算机系统1000包括中央处理单元(Central Processing Unit,CPU)1001,其可以根据存储在只读存储器(Read-Only Memory,ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(Random Access Memory,RAM)1003中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1003中,还存储有系统操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(Input/Output,I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (11)
1.一种多租户系统的数据访问方法,其特征在于,所述方法包括:
在多租户系统中根据与租户对应的密钥对所述租户的数据进行加密,得到所述租户的加密数据,其中,所述多租户系统中租户的密钥均不相同;
接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验;
若所述数据查询指令通过所述合法性校验,则根据所述数据查询指令对所述加密数据进行数据查询操作,得到查询结果;
以发送所述数据查询指令的租户为目标租户,根据所述目标租户对应的密钥对所述查询结果进行解密操作,并将解密结果输出。
2.根据权利要求1所述的方法,其特征在于,所述加密数据存储于数据库中,所述多租户系统中每一租户的加密数据由特定于该租户的数据库进行存储。
3.根据权利要求2所述的方法,其特征在于,在接收数据查询指令之前,所述方法还包括:
建立与租户的会话,并初始化与目标数据库的连接;
所述接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验,包括:
当从所述会话接收到来自所述租户的数据查询指令,判断所述租户是否具有所述目标数据库的连接权限;
若所述租户具有所述目标数据库的连接权限,则对所述数据查询指令进行租户身份标识信息的合法性校验。
4.根据权利要求3所述的方法,其特征在于,所述当从所述会话接收到来自所述租户的数据查询指令,判断所述租户是否具有所述目标数据库的连接权限,包括:
当从所述会话接收到来自所述租户的数据查询指令,判断所述目标数据库是否为公共库,其中,所述公共库为所述多租户系统中未存储租户的加密数据的数据库;
若所述目标数据库不为公共库,则判断所述租户是否具有所述目标数据库的连接权限。
5.根据权利要求1或2所述的方法,其特征在于,在所述多租户系统中包括一个或一个以上独立机器租户,所述独立机器租户的加密数据由特定于该独立机器租户的机器进行存储。
6.根据权利要求5所述的方法,其特征在于,所述独立机器租户的数据量大于所述多租户系统中其他租户的数据量。
7.根据权利要求1所述的方法,其特征在于,所述接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验,包括:
判断所述数据查询指令中的租户身份标识信息与当前会话中的租户身份标识信息是否一致。
8.根据权利要求7所述的方法,其特征在于,在判断所述数据查询指令中的租户身份标识信息与当前会话中的租户身份标识信息是否一致之前,所述接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验,还包括:
判断所述数据查询指令请求查询的数据表是否为系统表;
如果否,则判断所述数据查询指令中是否携带有租户身份标识信息,其中,在所述数据查询指令中携带有租户身份标识信息的情况下,执行所述判断所述数据查询指令中的租户身份标识信息与当前会话中的租户身份标识信息是否一致的步骤。
9.一种多租户系统的数据访问装置,其特征在于,所述装置包括:
加密模块,被配置为在多租户系统中根据与租户对应的密钥对所述租户的数据进行加密,得到所述租户的加密数据,其中,所述多租户系统中租户的密钥均不相同;
合法性校验模块,被配置为接收数据查询指令,并对所述数据查询指令进行租户身份标识信息的合法性校验;
查询模块,被配置为若所述数据查询指令通过所述合法性校验,则根据所述数据查询指令对所述加密数据进行数据查询操作,得到查询结果;
解密模块,被配置为以发送所述数据查询指令的租户为目标租户,根据所述目标租户对应的密钥对所述查询结果进行解密操作,并将解密结果输出。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的方法。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224699.6A CN114003877A (zh) | 2021-10-20 | 2021-10-20 | 多租户系统的数据访问方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224699.6A CN114003877A (zh) | 2021-10-20 | 2021-10-20 | 多租户系统的数据访问方法、装置、介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114003877A true CN114003877A (zh) | 2022-02-01 |
Family
ID=79923514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111224699.6A Pending CN114003877A (zh) | 2021-10-20 | 2021-10-20 | 多租户系统的数据访问方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114003877A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116542797A (zh) * | 2023-05-11 | 2023-08-04 | 深圳市海德盈富信息技术策划有限公司 | 一种基于Saas平台的企业财务数据管理方法及系统 |
-
2021
- 2021-10-20 CN CN202111224699.6A patent/CN114003877A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116542797A (zh) * | 2023-05-11 | 2023-08-04 | 深圳市海德盈富信息技术策划有限公司 | 一种基于Saas平台的企业财务数据管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11973750B2 (en) | Federated identity management with decentralized computing platforms | |
EP3520319B1 (en) | Distributed electronic record and transaction history | |
AU2017240682B2 (en) | Systems and methods for providing data privacy in a private distributed ledger | |
US20200119904A1 (en) | Tamper-proof privileged user access system logs | |
US10673831B2 (en) | Systems and methods for automating security controls between computer networks | |
US10432622B2 (en) | Securing biometric data through template distribution | |
US12074990B2 (en) | Database multi-authentication method and system, terminal, and storage medium | |
CN114499916A (zh) | 安全令牌撤销 | |
CN109657492B (zh) | 数据库管理方法、介质及电子设备 | |
US8601553B1 (en) | Techniques of imposing access control policies | |
CN112464212B (zh) | 基于成熟复杂业务系统的数据权限控制改造方法 | |
US20210117533A1 (en) | Private password constraint validation | |
WO2022020686A1 (en) | Master key escrow process | |
CN114172663B (zh) | 基于区块链的业务确权方法及装置、存储介质和电子设备 | |
US11810130B2 (en) | Security policy enforcement | |
CN114422197A (zh) | 一种基于策略管理的权限访问控制方法及系统 | |
US10158623B2 (en) | Data theft deterrence | |
US20230401328A1 (en) | Protecting sensitive data dump information | |
US10218713B2 (en) | Global attestation procedure | |
CN110830428A (zh) | 区块链金融大数据处理方法及系统 | |
CN116438778A (zh) | 承担的替代身份的持久源值 | |
CN114003877A (zh) | 多租户系统的数据访问方法、装置、介质及电子设备 | |
US9424543B2 (en) | Authenticating a response to a change request | |
US11930109B2 (en) | Encrypted storage with secure access | |
JP2022141962A (ja) | データの照会と書き込み方法、装置、電子機器、読み取り可能な記憶媒体およびコンピュータプログラム |
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 |