CN113779625A - 一种数据访问的方法、装置、电子设备及存储介质 - Google Patents
一种数据访问的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113779625A CN113779625A CN202111014870.0A CN202111014870A CN113779625A CN 113779625 A CN113779625 A CN 113779625A CN 202111014870 A CN202111014870 A CN 202111014870A CN 113779625 A CN113779625 A CN 113779625A
- Authority
- CN
- China
- Prior art keywords
- tenant
- data
- identification
- sql statement
- data access
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000000977 initiatory effect Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 238000002955 isolation Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Abstract
本公开提供了一种数据访问的方法、装置、电子设备及存储介质,其中,该方法包括:获取从用户访问请求中解析得到的客户端所属租户的租户标识;基于租户标识,生成在对应租户数据下进行数据访问的操作指令信息;基于操作指令信息,得到用户访问请求对应的数据访问结果。本公开实施例基于操作指令信息可以访问的是与租户标识相关的租户数据,这使得单一租户仅能访问对应的租户数据,避免不同租户之间交叉访问,确保了各租户的数据安全。
Description
技术领域
本公开涉及多租户技术领域,具体而言,涉及一种数据访问的方法、装置、电子设备及存储介质。
背景技术
多租户技术作为一种软件架构技术,是指在服务提供商的服务器上运行软件的实例,由该实例为多个租户尤其是中小型客户提供服务。然而,在多租户模式下,由于软硬件服务资源是共享的,生成和使用的数据也是多租户共享,从而多租户之间的数据会相互干扰,进而导致业务错误的问题。因此,需要对多租户数据进行安全隔离。
发明内容
本公开实施例至少提供一种数据访问的方法、装置、电子设备及存储介质。
第一方面,本公开实施例提供了一种数据访问的方法,所述方法包括:
获取从用户访问请求中解析得到的客户端所属租户的租户标识;
基于所述租户标识,生成在对应租户数据下进行数据访问的操作指令信息;
基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果。
采用上述数据访问的方法,在获取到客户端所属租户的租户标识的情况下,可以生成在对应租户数据下进行数据访问的操作指令信息,进而可以基于操作指令信息,得到用户访问请求对应的数据访问结果,这里,基于操作指令信息可以访问的是与租户标识相关的租户数据,这使得单一租户仅能访问对应的租户数据,不同租户之间无法交叉访问,确保了各租户的数据安全。
在一种可能的实施方式中,所述基于所述租户标识,生成在对应租户数据下进行数据访问的操作指令信息,包括:
响应所述用户访问请求包括初始SQL语句,基于所述初始SQL语句以及所述租户标识,生成添加有租户标识的目标SQL语句;
将所述目标SQL语句确定为所述操作指令信息;
所述基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果,包括:
基于所述目标SQL语句,从目标数据库中访问得到所述数据访问结果。
这里,可以在确定用户访问请求包括初始SQL语句的情况下,生成添加有租户标识的目标SQL语句,继而基于目标SQL语句进行数据库方式的数据访问,确保了数据访问的安全性。
在一种可能的实施方式中,基于所述初始SQL语句以及所述租户标识,生成添加有租户标识的目标SQL语句,包括:
基于所述租户标识生成针对所述客户端所属租户的标识字段;
基于所述标识字段以及所述初始SQL语句,得到所述目标SQL语句。
在一种可能的实施方式中,所述基于所述标识字段以及所述初始SQL语句,得到所述目标SQL语句,包括:
确定所述初始SQL语句中是否包含预设目标字段;
若是,则将所述标识字段添加在所述预设目标字段之后,得到所述目标SQL语句。
这里,可以在确定初始SQL语句中包含预设目标字段的情况下,确定可以在目标查询字段之后添加的标识字段,该标识字段针对的是客户端所属租户,进而使得目标SQL语句可以是指向客户端所属租户的租户数据的访问,确保了数据安全。
在一种可能的实施方式中,所述获取从用户访问请求中解析得到的客户端所属租户的租户标识之前,所述方法还包括:
创建与各个租户标识所指示租户对应的索引文件信息;所述索引文件信息关联有对应租户的租户数据;
所述基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果,包括:
基于所述操作指令信息中包含的租户标识,查找所述租户标识关联的租户数据,并将查找到的所述租户数据确定为所述数据访问结果。
这里,可以预先建立索引文件与租户数据之间的关联,由于索引文件是指向租户标识所指示租户创建的,不同租户所指向的索引文件也不相同,因而可以在接收到用户访问请求的情况下,基于租户标识查询相应的租户数据,进而实现指向目标租户的数据查询,进一步确保了数据安全。
在一种可能的实施方式中,在获取从用户访问请求中解析得到的客户端所属租户的租户标识之后,所述方法还包括:
通过调用预设线程存储类,对获取的所述租户标识进行存储。
在一种可能的实施方式中,所述通过调用预设线程存储类,对获取的所述租户标识进行存储,包括:
在对所述客户端鉴权通过后,通过调用预设线程存储类,对获取的所述租户标识进行存储。
这里,可以是在鉴权通过的情况下,再进行租户标识的存储以进一步确保数据访问的安全性。
在一种可能的实施方式中,按照如下步骤对所述客户端鉴权:
对所述用户访问请求进行解析,得到发起所述用户访问请求的客户端的用户权限信息;
基于得到的所述用户权限信息确定所述客户端是否具备与所述用户权限信息对应的操作权限;
若是,则鉴权通过;若否,则鉴权不通过。
第二方面,本公开实施例还提供了一种数据访问的装置,所述装置包括:
获取模块,用于获取从用户访问请求中解析得到的客户端所属租户的租户标识;
生成模块,用于基于所述租户标识,生成在对应租户数据下进行数据访问的操作指令信息;
访问模块,用于基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果。
第三方面,本公开实施例还提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如第一方面及其各种实施方式任一所述的数据访问的方法的步骤。
第四方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面及其各种实施方式任一所述的数据访问的方法的步骤。
关于上述数据访问的装置、系统、电子设备、及计算机可读存储介质的效果描述参见上述数据访问的方法的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种数据访问的系统的示意图;
图2示出了本公开实施例所提供的一种数据访问的方法的流程图;
图3示出了本公开实施例所提供的一种数据访问的装置的示意图;
图4示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,相关技术中的多租户数据隔离主要可以由数据库方式来实现。具体可以采用如下三种方式:其一是采用独立数据库,也即,一个租户对应一个数据库,这种方式的数据隔离级别最高,但成本也是最高的;其二是采用共享数据库结合共享数据表的方式,即所有租户的数据都在同一张表里。这种方式的优点是成本低,缺点是数据隔离级别低,租户数据不能完全得到有效保护;其三是共享数据库结合独立数据表的方式,即租户共享一个数据库,但每个租户对应一个数据表。该方式为租户的数据安全提供了一定的保障,同时又降低了成本。在数据的共享、安全隔离和成本之间取得平衡。
然而,不管是采用上述那种数据库方式,在实现的过程中,均需要对所有租户数据表里添加租户ID字段,这将大大增加开发人员的工作量,除此以外,该方式还需要在SQL语句中添加租户ID字段作为过滤条件,如果并未增加这一过滤条件,可能使得一个租户访问到另一个租户的数据,导致数据泄露。
基于上述研究,本公开提供了一种基于租户标识自动生成的操作指令信息、实现多租户数据隔离的数据访问的方案,确保了各租户的数据安全。
为便于对本实施例进行理解,接下来首先对本公开实施例提供的数据访问的系统进行详细介绍。如图1所示,上述系统包括:网关101和访问服务器102;
网关101,用于接收用户访问请求;对用户访问请求进行解析,得到发起用户访问请求的客户端所属租户的租户标识。
访问服务器102,用于解析得到的客户端所属租户的租户标识;基于租户标识,生成在对应租户数据下进行数据访问的操作指令信息;基于操作指令信息,得到用户访问请求对应的数据访问结果。。
本公开实施例提供的系统中,其网关101在接收到用户访问请求的情况下,可以首先对用户访问请求进行解析,得到发起用户访问请求的客户端所属租户的租户标识,这样,访问服务器102可以获取网关101解析得到的租户标识,并基于租户标识生成操作指令信息,基于这一操作指令信息,可以自动访问与租户标识对应的租户数据,避免了数据泄露,确保了各租户的数据安全。
本公开实施例中的网关101作为一种网络互连设备,可以在网络层以上实现网络互连,这里,在用户意图对业务层进行数据访问之前,网关101首先可以捕捉到用户发起的用户访问请求。在网关101层直接进行用户角色鉴权,业务层不再进行校验,这将在确保校验准确度的情况下,降低业务层的运算量,使得整个系统的性能达到最优化。
针对访问服务器102而言,基于不同的操作指令信息生成方式所对应的数据访问方式也不同。这里的操作指令信息可以是基于拦截的结构化查询语言(Structured QueryLanguage,SQL)语句生成的,也可以是基于预先构建的索引文件信息确定的,本公开实施例对此不做具体的限制。
以SQL语句生成方式而言,本公开实施例中的访问服务器102可以是以SQL插件的形式部署在业务层和待访问数据库之间,可以运行在MyBatis这一持久层框架上。这样,在拦截到业务执行过程中的产生的初始SQL语句的情况下,可以基于初始SQL语句以及网关101解析出的租户标识生成目标SQL语句,也即,本公开实施例可以通过SQL插件对SQL语句动态添加租户身份标识(Identity Document,ID)条件,这样生成的添加有租户ID的目标SQL语句可以访问的是对应租户的租户数据,实现了租户数据的安全隔离,整个过程无需开发人员手工编码,省时省力。
以索引文件信息确定方式而言,本公开实施例中的访问服务器102可以预先构建与租户标识所指示租户对应的索引文件信息,并在操作指令信息中包含有索引文件信息的情况下,可以访问对应关联的租户数据,实现了租户数据的安全隔离,整个过程无需开发人员手工编码,省时省力。
需要说明的是,上述实现数据访问操作除了可以是上述访问服务器102,还可以是其它具备上述数据访问功能的电子设备,本公开实施例对此不做具体的限制。接下来以访问服务器102进行示例说明。
本公开实施例中的访问服务器102作为实现租户数据安全隔离的关键模块,接下来可以对该访问服务器102所执行的数据访问的方法进行详细介绍。
参见图2所示,为本公开实施例提供的数据访问的方法的流程图,方法包括步骤S201~S204,其中:
S201:获取从用户访问请求中解析得到的客户端所属租户的租户标识;
S202:基于租户标识,生成在对应租户数据下进行数据访问的操作指令信息;
S203:基于操作指令信息,得到用户访问请求对应的数据访问结果。
这里,为了便于理解本公开实施例提供的数据访问的方法,接下来对该方法的应用场景进行简单说明。上述数据访问的方法主要可以应用于需要进行多租户数据隔离访问的任何业务系统应用中,例如,可以应用于企业办公系统。
考虑到现有利用数据库方式实现多租户隔离访问的方案中,由于需要对所有数据中的租户数据表里添加租户ID字段,费时费力,且如果并未增加租户ID字段这一过滤条件,可能使得一个租户访问到另一个租户的数据,导致数据泄露。正是为了解决上述问题,本公开实施例才提供了一种基于租户标识自动生成的操作指令信息实现多租户数据隔离的数据访问的方案,以实现多租户数据的安全访问。
其中,租户标识可以是从网关获取的。本公开实施例中的网关可以从用户访问请求中解析得到客户端所属租户的租户标识。这里的用户访问请求中可以是携带有令牌(token)信息的,有关解析操作可以是针对token的解析。
上述token信息可以是服务端生成的一串字符串,作为客户端进行请求的一个标识。在用户第一次登陆后,服务端生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
本公开实施例中,基于对token的解析可以确定发起用户访问请求的客户端所属租户的租户标识,除此之外,还可以解析到相关用户权限信息,例如,身份ID,可以访问的数据内容等。
需要说明的是,为了确保发起用户访问请求的客户端是否具有相应的身份权限和访问权限,这里的租户标识可以是网关在对客户端鉴权通过后所存储的有关租户的标识。
基于上述解析出的租户标识,本公开实施例提供的数据访问的方法可以生成在对应租户数据下进行数据访问的操作指令信息,并根据生成的操作指令信息自动的实现数据访问。由于这里的操作指令信息指向的是租户标识对应的租户数据,这样可以通过执行操作指令信息访问到相应租户的租户数据,确保了多租户数据的安全访问。
基于上述描述内容,这里的操作指令信息可以是基于拦截的SQL语句生成的,也可以是基于预先构建的索引文件信息确定的,接下来将分别通过如下两个方面进行具体说明。
第一方面,本公开实施例可以按照如下步骤实现基于操作指令信息的数据访问:
步骤一、响应用户访问请求包括初始SQL语句,基于初始SQL语句以及租户标识,生成添加有租户标识的目标SQL语句;
步骤二、将目标SQL语句确定为操作指令信息;
步骤三、基于目标SQL语句,从目标数据库中访问得到数据访问结果。
本公开实施例中,对于业务执行过程中产生的初始SQL语句可以进行拦截。这里的初始SQL语句可以是在业务执行过程中自动生成的SQL语句,例如,可以是查找数据的SQL查询语句,还可以是删除数据的SQL删除语句,基于不同业务需求可以产生不同的SQL语句,这里不做具体的限制。
针对当前发起用户访问请求的客户端而言,为了确保该客户端只能对所属租户的租户数据进行操作,在执行SQL语句发起访问操作之前,可以基于初始SQL语句以及租户标识,生成添加有租户标识的目标SQL语句,进而可以通过执行这一目标SQL语句访问到相应租户的租户数据,确保了多租户数据的安全访问。
在生成目标SQL语句的过程中,可以是基于标识字段来实现,具体可以包括如下步骤:
步骤一、基于租户标识生成针对客户端所属租户的标识字段;
步骤二、基于标识字段以及初始SQL语句,得到目标SQL语句。
这里,可以在获取到初始SQL语句的情况下,将标识字段和初始SQL语句进行组合,以得到目标SQL语句。
此外,本公开实施例提供的数据访问的方法,还可以先确定初始SQL语句中是否包含预设目标字段,而后在确定包含预设目标字段的情况下,将标识字段添加在预设目标字段之后,得到目标SQL语句。
这里的目标查询字段可以是“where”字段。在从初始SQL语句获得where条件的表达式的情况下,可以将生成的标识字段添加在where字段之后以得到目标SQL语句。
在具体应用中,为了便于建立索引,可以将生成的标识字段添加在第一个位置。例如,初始SQL语句为“select*from xxx_table where task_id=1”,目标SQL语句可以是“select*from xxx_table where tenant_id=1and task_id=1”,这里的“tenant_id=1”对应生成的标识字段。
第二方面,本公开实施例可以按照如下步骤实现基于操作指令信息的数据访问:
步骤一、基于操作指令信息中包含的租户标识,查找租户标识关联的租户数据;
步骤二、将查找到的租户数据确定为数据访问结果。
这里,可以预先将业务执行过程中产生的租户数据与创建的索引文件信进行关联。由于不同的索引文件信息是基于不同的租户来创建的,这样,在一个租户所包含客户端发起用户访问请求的情况下,可以是基于租户所对应的索引文件信息关联的租户数据来响应上述用户访问请求。
可知的是,本公开实施例预先建立了针对租户的索引文件,一个租户就创建一个索引文件,该索引文件下的所有文档均是该租户的数据,一个租户进行数据查询的过程中只会操作对应的索引文件,所以访问不到其他租户的数据,更进一步的确保了多租户数据的安全访问,与此同时,基于索引文件可以快速查找到对应的租户数据,查询效率更快。
本公开实施例中的网关可以是在针对token进行解析并获得租户ID的情况下,将包括租户ID的用户信息保存在ThreadLocal里,后续可以通过调用ThreadLocal得到当前用户的租户ID。这里的ThreadLocal即是一种预设线程存储类,也即,通过调用预设线程存储类,可以快速获取网关分配的租户标识并进行存储。
本公开实施例中,可以是在对客户端鉴权通过后,再进行有关租户标识的存储以确保数据访问的安全性。其中,可以按照如下步骤进行鉴权:
步骤一、对用户访问请求进行解析,得到发起用户访问请求的客户端的用户权限信息;
步骤二、基于得到的用户权限信息确定客户端是否具备与用户权限信息对应的操作权限;
步骤三、若是,则鉴权通过;若否,则鉴权不通过。
这里,可以通过调用身份识别与访问管理(Identity and Access Management,IAM)单元对客户端进行鉴权,在鉴权通过后可以存储发起用户访问请求的客户端所属租户的租户标识,以便访问服务器在意图实现多租户数据隔离访问的情况下,可以及时的获取到租户标识,从而自动的实现多租户数据的隔离,避免了数据泄露。
这里的IAM模块可以基于网关解析得到的用户权限信息进行鉴权。IAM单元预先可以保存有各个用户的角色权限数据。在具体应用中,每一个租户域对应IAM单元的一个产品线,也就是一个保护资源域,保护资源域下有用户权限信息(包含身份权限信息和数据访问权限信息)。这样,在网关解析到当前发起用户访问请求的客户端的用户权限信息的情况下,可以基于信息比对确定当前用户是否具备对应的操作权限。
本公开实施例中的IAM模块可以是基于角色的访问控制(Role-Based AccessControl,RBAC)模型实现的,统一实现租户下的用户的权限控制。为了便于进行多租户的用户权限管理,这里可以保存有用户、租户、组织机构根节点、以及用户权限信息之间的映射关系,通过这一映射关系,可以针对任一租户下的各个用户,确定为每个用户设定的操作权限。在当前用户的用户访问请求指向的操作权限不在设定的操作权限的情况下,鉴权无法通过,反之,鉴权可以通过。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与数据访问的方法对应的数据访问的装置,该数据访问的装置设置在上述数据访问的系统中的访问服务器中。由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据访问的方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图3所示,为本公开实施例提供的一种数据访问的装置的示意图,装置包括:获取模块301、生成模块302和访问模块303;其中:
获取模块301,用于获取从用户访问请求中解析得到的客户端所属租户的租户标识;
生成模块302,用于基于租户标识,生成在对应租户数据下进行数据访问的操作指令信息;
访问模块303,用于基于操作指令信息,得到用户访问请求对应的数据访问结果。
采用上述数据访问的装置,在获取到客户端所属租户的租户标识的情况下,可以生成在对应租户数据下进行数据访问的操作指令信息,进而可以基于操作指令信息,得到用户访问请求对应的数据访问结果,这里,基于操作指令信息可以访问的是与租户标识相关的租户数据,这使得单一租户仅能访问对应的租户数据,不同租户之间无法交叉访问,确保了各租户的数据安全。
在一种可能的实施方式中,生成模块302,用于按照如下步骤基于租户标识,生成在对应租户数据下进行数据访问的操作指令信息:
响应用户访问请求包括初始SQL语句,基于初始SQL语句以及租户标识,生成添加有租户标识的目标SQL语句;
将目标SQL语句确定为操作指令信息;
访问模块303,用于按照如下步骤基于操作指令信息,得到用户访问请求对应的数据访问结果:
基于目标SQL语句,从目标数据库中访问得到数据访问结果。
在一种可能的实施方式中,生成模块302,用于按照如下步骤基于初始SQL语句以及租户标识,生成添加有租户标识的目标SQL语句:
基于租户标识生成针对客户端所属租户的标识字段;
基于标识字段以及初始SQL语句,得到目标SQL语句。
在一种可能的实施方式中,生成模块302,用于按照如下步骤基于标识字段以及初始SQL语句,得到目标SQL语句:
确定初始SQL语句中是否包含预设目标字段;
若是,则将标识字段添加在预设目标字段之后,得到目标SQL语句。
在一种可能的实施方式中,上述装置还包括:
创建模块305,用于创建与各个租户标识所指示租户对应的索引文件信息;索引文件信息关联有对应租户的租户数据:
访问模块303,用于按照如下步骤基于操作指令信息,得到用户访问请求对应的数据访问结果:
基于操作指令信息中包含的租户标识,查找租户标识关联的租户数据,并将查找到的租户数据确定为数据访问结果。
在一种可能的实施方式中,装置还包括:
存储模块304,用于在获取从用户访问请求中解析得到的客户端所属租户的租户标识之后,通过调用预设线程存储类,对获取的租户标识进行存储。
在一种可能的实施方式中,存储模块304,用于按照如下步骤通过调用预设线程存储类,对获取的租户标识进行存储:
在对客户端鉴权通过后,通过调用预设线程存储类,对获取的租户标识进行存储。
在一种可能的实施方式中,存储模块304,用于按照如下步骤对客户端鉴权:
对用户访问请求进行解析,得到发起用户访问请求的客户端的用户权限信息;
基于得到的用户权限信息确定客户端是否具备与用户权限信息对应的操作权限;
若是,则鉴权通过;若否,则鉴权不通过。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供了一种电子设备,如图4所示,为本公开实施例提供的电子设备结构示意图,包括:处理器401、存储器402、和总线403。存储器402存储有处理器401可执行的机器可读指令(比如,图3中的装置中获取模块301、生成模块302和访问模块303对应的执行指令等),当电子设备运行时,处理器401与存储器402之间通过总线403通信,机器可读指令被处理器401执行时执行如下处理:
获取从用户访问请求中解析得到的客户端所属租户的租户标识;
基于租户标识,生成在对应租户数据下进行数据访问的操作指令信息;
基于操作指令信息,得到用户访问请求对应的数据访问结果。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据访问的方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据访问的方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (11)
1.一种数据访问的方法,其特征在于,所述方法包括:
获取从用户访问请求中解析得到的客户端所属租户的租户标识;
基于所述租户标识,生成在对应租户数据下进行数据访问的操作指令信息;
基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述租户标识,生成在对应租户数据下进行数据访问的操作指令信息,包括:
响应所述用户访问请求包括初始SQL语句,基于所述初始SQL语句以及所述租户标识,生成添加有租户标识的目标SQL语句;
将所述目标SQL语句确定为所述操作指令信息;
所述基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果,包括:
基于所述目标SQL语句,从目标数据库中访问得到所述数据访问结果。
3.根据权利要求2所述的方法,其特征在于,所述基于所述初始SQL语句以及所述租户标识,生成添加有租户标识的目标SQL语句,包括:
基于所述租户标识生成针对所述客户端所属租户的标识字段;
基于所述标识字段以及所述初始SQL语句,得到所述目标SQL语句。
4.根据权利要求3所述的方法,其特征在于,所述基于所述标识字段以及所述初始SQL语句,得到所述目标SQL语句,包括:
确定所述初始SQL语句中是否包含预设目标字段;
若是,则将所述标识字段添加在所述预设目标字段之后,得到所述目标SQL语句。
5.根据权利要求1所述的方法,其特征在于,所述获取从用户访问请求中解析得到的客户端所属租户的租户标识之前,所述方法还包括:
创建与各个租户标识所指示租户对应的索引文件信息;所述索引文件信息关联有对应租户的租户数据;
所述基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果,包括:
基于所述操作指令信息中包含的租户标识,查找所述租户标识关联的租户数据,并将查找到的所述租户数据确定为所述数据访问结果。
6.根据权利要求1-5任一所述的方法,其特征在于,在获取从用户访问请求中解析得到的客户端所属租户的租户标识之后,所述方法还包括:
通过调用预设线程存储类,对获取的所述租户标识进行存储。
7.根据权利要求6所述的方法,其特征在于,所述通过调用预设线程存储类,对获取的所述租户标识进行存储,包括:
在对所述客户端鉴权通过后,通过调用预设线程存储类,对获取的所述租户标识进行存储。
8.根据权利要求7所述的方法,其特征在于,按照如下步骤对所述客户端鉴权:
对所述用户访问请求进行解析,得到发起所述用户访问请求的客户端的用户权限信息;
基于得到的所述用户权限信息确定所述客户端是否具备与所述用户权限信息对应的操作权限;
若是,则鉴权通过;若否,则鉴权不通过。
9.一种数据访问的装置,其特征在于,所述装置包括:
获取模块,用于获取从用户访问请求中解析得到的客户端所属租户的租户标识;
生成模块,用于基于所述租户标识,生成在对应租户数据下进行数据访问的操作指令信息;
访问模块,用于基于所述操作指令信息,得到所述用户访问请求对应的数据访问结果。
10.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至8任一所述的数据访问的方法的步骤。
11.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至8任一所述的数据访问的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111014870.0A CN113779625A (zh) | 2021-08-31 | 2021-08-31 | 一种数据访问的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111014870.0A CN113779625A (zh) | 2021-08-31 | 2021-08-31 | 一种数据访问的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113779625A true CN113779625A (zh) | 2021-12-10 |
Family
ID=78840267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111014870.0A Pending CN113779625A (zh) | 2021-08-31 | 2021-08-31 | 一种数据访问的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113779625A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114760134A (zh) * | 2022-04-18 | 2022-07-15 | 成都星云智联科技有限公司 | 一种多租户隔离方法及相关装置 |
WO2023125480A1 (zh) * | 2021-12-27 | 2023-07-06 | 华为技术有限公司 | 访问对象的鉴权方法、装置及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108093026A (zh) * | 2017-11-17 | 2018-05-29 | 阿里巴巴集团控股有限公司 | 多租户请求的处理方法及装置 |
CN109063077A (zh) * | 2018-07-24 | 2018-12-21 | 新华三大数据技术有限公司 | 一种基于弹性搜索的数据访问方法及装置 |
CN110765489A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海环融联易信息科技服务有限公司 | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 |
CN111400676A (zh) * | 2020-02-28 | 2020-07-10 | 平安国际智慧城市科技股份有限公司 | 基于共享权限的业务数据处理方法、装置、设备和介质 |
CN112364110A (zh) * | 2020-11-17 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 元数据管理方法、装置、设备及计算机存储介质 |
CN112905630A (zh) * | 2021-03-31 | 2021-06-04 | 浙江太美医疗科技股份有限公司 | 数据操作方法、服务器和计算机可读介质 |
-
2021
- 2021-08-31 CN CN202111014870.0A patent/CN113779625A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108093026A (zh) * | 2017-11-17 | 2018-05-29 | 阿里巴巴集团控股有限公司 | 多租户请求的处理方法及装置 |
CN109063077A (zh) * | 2018-07-24 | 2018-12-21 | 新华三大数据技术有限公司 | 一种基于弹性搜索的数据访问方法及装置 |
CN110765489A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海环融联易信息科技服务有限公司 | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 |
CN111400676A (zh) * | 2020-02-28 | 2020-07-10 | 平安国际智慧城市科技股份有限公司 | 基于共享权限的业务数据处理方法、装置、设备和介质 |
CN112364110A (zh) * | 2020-11-17 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 元数据管理方法、装置、设备及计算机存储介质 |
CN112905630A (zh) * | 2021-03-31 | 2021-06-04 | 浙江太美医疗科技股份有限公司 | 数据操作方法、服务器和计算机可读介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023125480A1 (zh) * | 2021-12-27 | 2023-07-06 | 华为技术有限公司 | 访问对象的鉴权方法、装置及系统 |
CN114760134A (zh) * | 2022-04-18 | 2022-07-15 | 成都星云智联科技有限公司 | 一种多租户隔离方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346625B2 (en) | Automated mechanism to analyze elevated authority usage and capability | |
US8782762B2 (en) | Building data security in a networked computing environment | |
CN107147728B (zh) | 一种对象存储系统多租户的管理方法 | |
US9998474B2 (en) | Secure assertion attribute for a federated log in | |
US9148426B2 (en) | Securely identifying host systems | |
CN111181975B (zh) | 一种账号管理方法、装置、设备及存储介质 | |
US11962511B2 (en) | Organization level identity management | |
JP2017521769A (ja) | ログインアカウントのプロンプト | |
CN103701801A (zh) | 一种资源访问控制方法 | |
US10333918B2 (en) | Automated system identification, authentication, and provisioning | |
CN113779625A (zh) | 一种数据访问的方法、装置、电子设备及存储介质 | |
US20190286849A1 (en) | Data anonymization | |
CN107315950B (zh) | 一种云计算平台管理员权限最小化的自动化划分方法及访问控制方法 | |
US11924210B2 (en) | Protected resource authorization using autogenerated aliases | |
US20140150066A1 (en) | Client based resource isolation with domains | |
CN113392415A (zh) | 数据仓库的访问控制方法、系统和电子设备 | |
WO2020000716A1 (zh) | 大数据分析系统、服务器、数据处理方法、程序和存储介质 | |
CN112910904A (zh) | 多业务系统的登录方法及装置 | |
US20180083940A1 (en) | System to resolve multiple identity crisis in indentity-as-a-service application environment | |
Kumar et al. | BEAAS: Blockchain enabled attribute-based access control as a service | |
US11586696B2 (en) | Enhanced web browsing | |
CN116886428A (zh) | 服务认证方法、系统及相关设备 | |
US11947694B2 (en) | Dynamic virtual honeypot utilizing honey tokens and data masking | |
CN115905206A (zh) | 多租户数据隔离方法、装置、设备及存储介质 | |
CN113127906A (zh) | 基于c/s架构的统一权限管理平台、方法及存储介质 |
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 |