CN112596857B - 一种SaaS多租户数据隔离的方法、装置、设备及介质 - Google Patents

一种SaaS多租户数据隔离的方法、装置、设备及介质 Download PDF

Info

Publication number
CN112596857B
CN112596857B CN202011563870.1A CN202011563870A CN112596857B CN 112596857 B CN112596857 B CN 112596857B CN 202011563870 A CN202011563870 A CN 202011563870A CN 112596857 B CN112596857 B CN 112596857B
Authority
CN
China
Prior art keywords
tenant
data
current
entity
identification
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.)
Active
Application number
CN202011563870.1A
Other languages
English (en)
Other versions
CN112596857A (zh
Inventor
任亮
傅雨梅
文齐辉
王超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhiyin Intelligent Technology Co ltd
Original Assignee
Beijing Zhiyin Intelligent Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhiyin Intelligent Technology Co ltd filed Critical Beijing Zhiyin Intelligent Technology Co ltd
Priority to CN202011563870.1A priority Critical patent/CN112596857B/zh
Publication of CN112596857A publication Critical patent/CN112596857A/zh
Application granted granted Critical
Publication of CN112596857B publication Critical patent/CN112596857B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供了一种SaaS多租户数据隔离的方法、装置、设备及介质,该方法包括:获取当前租户通过终端页面所发送的数据操作请求;数据操作请求中携带有当前租户的租户标识和数据操作指令;根据实体租户列表中每个实体租户的租户标识和当前租户的租户标识,判断当前租户是否为实体租户;若当前租户为实体租户,在当前租户的租户标识所对应的加密数据表中根据数据操作指令对数据进行操作,得到第一操作结果,将第一操作结果发送至终端页面;若当前租户为非实体租户,在通用数据表中根据数据操作指令对数据进行操作,得到第二操作结果,将第二操作结果发送至终端页面,实现了多租户数据在存储和操作上的隔离,提高了多租户数据隔离的安全性。

Description

一种SaaS多租户数据隔离的方法、装置、设备及介质
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种SaaS多租户数据隔离的方法、装置、设备及介质。
背景技术
软件即服务(Software as a Service,SaaS)是一种软件应用模式,即通过互联网提供软件服务,租户按需租用,通常一个软件可以同时服务多个租户,通过降低多个租户中每个租户的成本,可以大大降低服务交付、运维成本,实现最大化收益。多租户指服务器上运行单一应用,但是同时服务于多家企业。每一个企业的用户所使用的应用都是自定制版本。然而,在多租户模式下,由于软件堆栈是共享的,生成和使用的数据也是多租户共享,从而多租户之间的数据会相互干扰,进而导致业务错误的问题。因此,需要对多租户数据进行安全隔离。一个合格的SaaS多租户***需要满足为很多不同租户提供服务的同时需要保证各个租户之间数据相互隔离,***资源独立互不影响。
现有的基于微服务SaaS多租户***在数据和资源方面大多数只能满足在数据方面的隔离,现有的数据隔离方案中如果采用同一个实例和表进行隔离,实际上是把多个租户的数据都是存在一个数据库实例的同一个表中,通过一个租户ID标识区分,此方法存在一定的安全隐患;如果采用多个数据库实例进行数据隔离,这样会间接增加***成本和运维部署难度,且在大数据场景***中很难扩展。
发明内容
有鉴于此,本申请的目的在于提供一种SaaS多租户数据隔离的方法、装置、设备及介质,解决了现有技术中数据隔离存在一定的安全隐患,***成本和运维部署难度高,且在大数据场景***中很难扩展的问题。
第一方面,本申请实施例提供了一种SaaS多租户数据隔离的方法,所述方法包括:
获取当前租户通过终端页面所发送的数据操作请求;所述数据操作请求中携带有所述当前租户的租户标识和数据操作指令;
根据实体租户列表中每个实体租户的租户标识和所述当前租户的租户标识,判断所述当前租户是否为实体租户;
若所述当前租户为所述实体租户,则在所述当前租户的租户标识所对应的加密数据表中根据所述数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面;
若所述当前租户为非实体租户,则在通用数据表中根据所述数据操作指令对数据进行操作,得到第二操作结果,并将所述第二操作结果发送至所述终端页面。
可选的,在所述根据实体租户列表中每个实体租户的租户标识和所述当前租户的租户标识,判断所述当前租户是否为实体租户之前,所述方法还包括:
拦截所述当前租户通过所述终端页面所发送的所述数据操作请求。
可选的,所述若所述当前租户为所述实体租户,则在所述当前租户的租户标识所对应的加密数据表中根据所述数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面,包括:
解析所述数据操作指令,得到所述数据操作指令对应的数据操作语句;
将所述租户标识追加到所述数据操作语句中,得到标识追加语句;
根据所述标识追加语句确定所述当前租户的租户标识所对应的加密数据表,并根据所述标识追加语句对所述加密数据表进行操作,得到所述第一操作结果,并将所述第一操作结果发送至所述终端页面。
可选的,在所述获取当前租户通过终端页面所发送的数据操作请求之前,所述方法还包括:
获取所述当前租户的开通请求,所述开通请求中携带有所述当前租户的租户信息;
对所述租户信息进行审核,若审核无误,则根据所述租户信息生成所述当前租户对应的环境配置信息;
基于所述当前租户对应的环境配置信息配置对应的资源并为所述当前租户启动对应的终端页面。
可选的,所述基于所述当前租户对应的环境配置信息配置对应的资源并为所述当前租户启动对应的终端页面,包括:
将所述当前租户对应的环境配置信息编译到所述当前租户对应的服务镜像中;
基于所述服务对象生成对应的实例,根据所述服务镜像所对应的实例启动所述当前租户对应的终端页面,其中,所述终端页面至少包括一个所述服务镜像所对应的实例。
可选的,所述租户信息包括以下信息中的任意一种或多种:
租户企业名称、租户账号、租户联系人、租户邮箱和租户联系电话等。
可选的,所述方法还包括:
在所述为所述当前租户启动对应的终端页面的过程中,通过在线页面检测所述终端页面启动是否正常;
在所述为所述当前租户启动对应的终端页面后,通过所述在线页面对服务状态进行监控预警。
第二方面,本申请实施例还提供了一种SaaS多租户数据隔离的装置,包括:
获取模块,用于获取当前租户通过终端页面所发送的数据操作请求;所述数据操作请求中携带有当前租户的租户标识和数据操作指令;
判断模块,用于根据实体租户列表中每个实体租户的租户标识和当前租户的租户标识,判断当前租户是否为实体租户;
第一发送模块,用于若当前租户为实体租户,则在当前租户的租户标识所对应的加密数据表中根据数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面;
第二发送模块,用于若当前租户为非实体租户,则在通用数据表中根据数据操作指令对数据进行操作,得到第二操作结果,并将所述第二操作结果发送至所述终端页面。
第三方面,本申请实施例提供了一种电子设备,包括处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行上述方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。
本申请实施例提出的一种SaaS多租户数据隔离的方法,首先,获取当前租户通过终端页面所发送的数据操作请求;所述数据操作请求中携带有所述当前租户的租户标识和数据操作指令;然后,根据实体租户列表中每个实体租户的租户标识和所述当前租户的租户标识,判断所述当前租户是否为实体租户;最后,若所述当前租户为所述实体租户,则在所述当前租户的租户标识所对应的加密数据表中根据所述数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面;若所述当前租户为非实体租户,则在通用数据表中根据所述数据操作指令对数据进行操作,得到第二操作结果,并将所述第二操作结果发送至所述终端页面。
本申请实施例提供的方法,能够获取当前租户通过终端页面发送的数据操作请求,将数据操作请求中的租户标识与实体租户列表中的租户标识进行对比,当判断该租户为实体租户时,在当前租户的租户标识所对应的加密数据表中对数据进行操作,当判断该租户为非实体租户时,则在通用数据表中对数据进行操作。在数据隔离方面实现同一数据库、不同数据表的隔离方法,最大的利用了大数据应用场景中多个租户公共数据共享的需求,从而减少了资源浪费,提高SaaS产品开发效率同时降低运维成本。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种SaaS多租户数据隔离的方法的基本流程示意图;
图2为本申请实施例提供的一种详细的SaaS多租户数据隔离的方法的流程示意图;
图3为本申请实施例提供的另一种详细的SaaS多租户数据隔离的方法的流程示意图;
图4为本申请实施例提供的一种SaaS多租户数据隔离的装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
SaaS(Software as a Service,软件即服务),即通过互联网提供软件服务。当今企业级应用在SaaS化多租户场景面对挑战越来越大,特别是在金融软件服务中。经研究发现,现有的基于微服务SaaS多租户***在数据和资源方面大多数只能满足前者在数据方面的隔离,使用的方法主要分为两种:一种是多个租户共享一个数据库实例和表,通过一个租户ID实现数据隔离,多个租户数据都存放在同一个表中;第二种是每个租户使用独立数据库实例,通过不同的数据库实现各组数据隔离。
现有方案中主要存在的以下几个方面不足:现有的数据隔离方案中如果采用同一个实例和表进行隔离,这个方案实际上是把多个租户的数据都是存在一个数据库实例的同一个表中,通过一个租户ID标识区分。此方法存在一定的安全隐患,如果有恶意用户猜测出其他租户的ID进行注入攻击既可以获取其他租户数据,所以在金融场景下是绝对不允许的。第二种方案从根本解决了安全问题做到各个租户数据物理隔离,因为要用到多数据库实例,每个实例都需要用到独立的服务,这会间接增加***成本和运维部署难度。且在大数据场景***中很难扩展,如果要基于多个不同数据库去实现多实例隔离会极大提高开发成本。
现有方案中缺少一种从数据到资源一体化的租户隔离方法,大多数都是只能满足两者之一,传统方案很难满足金融企业级客户SaaS化要求。
基于此,本申请实施例提供了一种SaaS多租户数据隔离的方法,解决微服务SaaS化场景中面临的数据和资源统一隔离的问题。
请参阅图1,图1为本申请实施例提供的一种SaaS多租户数据隔离的方法的基本流程示意图。如图1中所示,本申请实施例提供的一种SaaS多租户数据隔离的方法,所述方法包括:
S101,获取当前租户通过终端页面所发送的数据操作请求;数据操作请求中携带有当前租户的租户标识和数据操作指令。
在该步骤S101中,租户指的是使用***或电脑运算资源的客户,按需订购使用SaaS应用的企业组织或者群组等。当前租户指的是正在访问SaaS服务并进行操作的租户。终端页面指的是可以接收租户向计算机输入的数据操作请求并返回计算机输出处理结果的页面,在本实施例中,终端页面可以是微服务,所述微服务指的是所述SaaS多租户数据隔离方法的解决方案,微服务可以架构在浏览器中,租户通过浏览器访问相关微服务。其中,显示终端页面的设备可以是计算机、笔记本电脑、平板电脑、手机等电子设备,可以通过浏览器访问相关微服务上所提供的SaaS服务。数据操作请求指的是租户对数据进行的增、删、改、查等操作所对应的请求,其中数据操作请求包含当前租户的租户标识和数据操作指令,租户标识指的是当前租户所对应的租户标识,当租户访问各自的终端页面时会为租户自动生成租户标识,每个租户对应一个唯一的租户标识,数据操作指令指的是租户对数据库进行的操作所对应的指令。
具体实施时,租户可以通过根据各个租户对应的独立域名访问各自的终端页面,例如租户A根据“tenantA.knowlegene.com”访问租户A的终端页面,这时可以将“tenantA”确定为租户A的租户标识,租户B根据“tenantB.knowlegene.com”访问租户B的终端页面,这时可以将“tenantB”确定为租户B的租户标识。
S102,根据实体租户列表中每个实体租户的租户标识和当前租户的租户标识,判断当前租户是否为实体租户。
在该步骤S102中,实体租户列表指的是包含所有租户的租户标识的列表,实体租户指的是已经进行开通申请的租户,该租户的租户标识在所述实体租户列表中。将当前租户的租户标识与实体租户列表中每个实体租户的租户标识进行对比,若当前租户的租户标识在实体租户列表中,则判断当前租户为实体租户。
在具体实施时,当租户进行开通申请并申请通过后,会为租户生成一个独立的访问域名,这样的租户为实体租户,并将所有进行过开通申请的租户的租户标识添加到实体租户列表中。
S103,若当前租户为实体租户,则在当前租户的租户标识所对应的加密数据表中根据数据操作指令对数据进行操作,得到第一操作结果,并将第一操作结果发送至终端页面。
在该步骤S103中,加密数据表指的是每个租户特有的数据表,分配给一个租户用于只存储该租户数据的加密数据表,该加密数据表只能被所属的租户进行访问,隔离租户数据以保障租户数据的安全。第一操作结果指的是对于实体租户的加密数据表进行数据操作后得到的操作结果。
具体实施时,当判断当前租户为实体租户,则根据该实体租户的租户标识找到对应的加密数据表,并根据数据操作指令对加密数据表中的数据进行操作,并将操作后的结果发送至实体租户的终端页面上。
S104,若当前租户为非实体租户,则在通用数据表中根据数据操作指令对数据进行操作,得到第二操作结果,并将第二操作结果发送至终端页面。
在该步骤S104中,非实体租户指的是并未进行过开通申请且没有租户标识的实体,该实体能够进行访问的数据表为通用数据表,通用数据表指的是所有实体都可以进行操作的数据表,该通用数据表可以被所有实体进行访问。第二操作结果指的是对于通用数据表进行数据操作后得到的操作结果。
具体实施时,当判断当前租户为非实体租户时,则根据数据操作指令对通用数据表中的数据进行操作,并将操作后的结果发送至非实体租户的终端页面上。
通过上述四个步骤,当接收到当前租户通过终端页面发送的包含租户标识和数据操作指令的数据操作请求时,根据租户标识与实体租户列表中的租户标识进行对比,判断当前租户是否为实体租户,并确定该实体租户的租户标识对应的加密数据表,并对该加密数据表进行数据操作,从而在数据操作时是对每个租户标识对应的加密数据表进行数据操作,实现了多租户数据在数据存储和数据操作上的隔离,提高了多租户数据隔离的安全性,并且数据隔离在同一数据库不同数据表中进行,只使用一个数据库实例,提高SaaS产品开发效率同时降低运维成本。
具体实施时,该方法还包括对租户之间的资源环境进行隔离,基于租户命名空间资源环境隔离作为资源隔离核心组件,基于kubernetes(一种容编排基础服务)的命名空间实现,这里的命名空间(namespace)可以理解为以下两种情况结合:
租户与租户之间横向隔离:横向隔离可以理解为在各个租户之间多了个软件防火墙策略,保证各个租户之间服务的进程、网路通讯、用户互相独立。一个namespace下包含一组微服务,每个服务都基于Linux CGroups(Linux Control Groups,物理资源隔离机制)实现资源隔离。
单服务资源隔离CGroups:单服务资源隔离基于Linux内核提供CGroups支持,CGroups支持CPU、内存、磁盘、网络资源等,程序基于底层提供的接口进行封装形象镜像实现对单服务的资源限制。
在对租户标识进行对比之前,为了使判断是否为租户实体更加快速准确,不遗漏任何一条数据操作请求,在根据实体租户列表中每个实体租户的租户标识和当前租户的租户标识,判断当前租户是否为实体租户之前,所述方法还包括:
拦截当前租户通过终端页面所发送的数据操作请求。
具体实施时,框架***在程序运行的过程中拦截所有通过终端页面所发送的数据操作请求,框架***的主要作用是拦截租户的数据操作请求并进行相应的判断,判断当前租户的租户标识是否为租户实体表中的租户标识。因为有了框架***对数据操作请求的拦截,减少了数据操作请求直接对数据的操作,并且在拦截之后还会对所述数据操作请求进行进一步的安全验证,提高了数据的安全性。并且通过对租户的数据操作请求的拦截能够使对于当前租户的租户标识的判断更准确,提高了多租户数据隔离的安全性。
请参阅图2,图2为本申请实施例提供的一种详细的SaaS多租户数据隔离的方法的流程示意图。如图2中所示,包括:
S201,解析数据操作指令,得到数据操作指令对应的数据操作语句。
在该步骤S201中,数据操作语句指的是数据操作指令所对应的SQL(StructuredQuery Language,结构化查询)语句,每个数据操作指令都会有对应的数据操作语句。具体实施时,SQL解析器将接收的数据操作指令进行解析,得到数据操作指令对应的SQL语句。SQL解析器指的是数据库管理***中的一个数据库管理工具,主要分为词法分析、语法分析和语义分析、优化、执行代码生成,解析后的代码会生成语法树。
S202,将租户标识追加到数据操作语句中,得到标识追加语句。
S203,根据标识追加语句确定当前租户的租户标识所对应的加密数据表,并根据标识追加语句对加密数据表进行操作,得到第一操作结果,并将第一操作结果发送至终端页面。
在上述步骤S202和步骤S203中,将当前租户的租户标识追加到SQL解析器解析出的数据操作语句中,将租户标识的值拼接到数据操作语句上,得到追加后的标识追加语句。根据追加后的标识追加语句确定出当前租户的租户标识所对应的加密数据表,将常规的数据操作语句转换为对应到多租户下的操作语句,将常规的数据操作转换为多租户所对应的操作模式,在当前租户所对应的加密数据表中根据操作指令进行数据操作,得到第一操作结果,并将第一操作结果发送至当前用户对应的终端页面。
请参阅图3,图3为本申请实施例提供的另一种详细的SaaS多租户数据隔离的方法的流程示意图。如图3中所示,为了实现多租户的数据隔离,在进行数据隔离之前,租户需要进行资源的开通,并为租户启动相应的终端页面。可选的,本申请实施例提供的一种SaaS多租户数据隔离的方法中,在获取当前租户通过终端页面所发送的数据操作请求之前,所述方法还包括:
S301,获取当前租户的开通请求,开通请求中携带有当前租户的租户信息。
S302,对租户信息进行审核,若审核无误,则根据租户信息生成当前租户对应的环境配置信息。
在上述步骤S301和步骤S302中,开通请求指的是租户在租户管理***中提交的开通申请,用于为租户开通对应的SaaS服务。租户信息指的是租户的开通请求中包括的租户的基本信息和联系方式等。提交的租户信息后对租户信息进行审核,审核通过后根据租户信息生成租户对应的环境配置信息,环境配置信息指的是当前租户在当前终端页面中的运行环境的一些参数,包括当前租户的租户标识和当前租户的配置信息,例如当前租户的参数信息和当前租户的软件环境信息,也即当前租户的计算型资源配置,如:中央处理器(CPU,Central Processing Unit)、内存、磁盘以及网卡;网络型参数配置,如:接口速率、路由信息、映射关系等;软件环境的配置等。若租户信息未通过审核,则将租户信息返回给租户的终端页面,租户对租户信息进行补充后再通过终端页面进行发送该开通请求。
具体实施时,租户信息包括以下信息中的任意一种或多种:
租户企业名称、租户账号、租户联系人、租户邮箱和租户联系电话等。
其中租户企业名称指的是按需订购使用SaaS应用的企业组织或者群组的名称;租户账号指的是提交开通申请的租户的账号,用于登录该租户对应的SaaS应用;租户联系人指的是提交开通申请的租户的姓名;租户邮箱指的是租户联系人所属的邮箱;租户联系电话指的是租户联系人所属的联系电话,具体实施时联系电话可以是该租户的手机号码也可以是该企业组织或群组的座机号码。
S303,基于当前租户对应的环境配置信息配置对应的资源并为当前租户启动对应的终端页面。
在该步骤S303中,基于生成的当前租户对应的环境配置信息为租户配置对应的资源,按租户的最小化需求配置容器内存、CPU、硬盘等资源并基于所配置的资源为当前租户启动对应的终端页面。
具体实施时,当租户的开通请求通过后,根据租户环境配置信息中的租户标识生成租户可以独立访问的域名,并对生成的域名进行验证与测试,验证和测试通过后把访问域名的账号及密码按照模板生成对应的邮件发送到租户信息中的租户邮箱里。租户可以通过各自的独立域名访问各自的微服务。
在上述步骤S303中,所述基于所述当前租户对应的环境配置信息配置对应的资源并为所述当前租户启动对应的终端页面,包括:
步骤3031,将所述当前租户对应的环境配置信息编译到所述当前租户对应的服务镜像中。
在步骤3031中,服务镜像指的是服务的载体,包括服务运行所依赖的***环境,包含了软件及必要配置的服务器或磁盘模版,也包含操作***或业务数据。将当前租户所对应的环境配置信息编译到服务镜像中,每个租户的服务镜像所编译的数据都是不同的,服务镜像中包含了当前租户所依赖的资源、环境和***,以及当前租户所对应的环境配置信息。
在对服务镜像进行编译之前,还包括开发流程:
开发人员在开发阶段编写Dockerfile文件,Dockerfile文件是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,该文件描述了当前服务所依赖的基础镜像和环境配置,其中Dockerfile文件大致包括如下语句:
通过FROM语法方式引入基础镜像FROM镜像地址;
MAINTAINER,用于描述当前镜像维护人员;
EVN,用于设置环境镜像字符集和环境变量;
ADD,用于添加外部文件资源到当前镜像中;
RUN,用于镜像打包过程中需要执行的脚本;
CMD,用于镜像在容器启动过程中需要执行的脚本。
在对Dockerfile文件编写完成后,将Dockerfile文件提交到对应的代码库中,代码库捕获到提交事件后触发自动构建程序开始对服务镜像进行打包。
开发人员提交代码到Git版本库,Git是一个开源的分布式版本控制***,用于敏捷高效地处理任何或大或小的项目。Git版本库捕获到开发人员发送的推送事件,程序监听代码库指定分支的推送事件,触发事件后调用打包服务。其中,代码库中会设立多个分支,比如开发分支、生产分支和修复分支等,当捕获到某个分支提交的推送事件,都会对变化的代码进行打包编译。编译打包服务器通过预先配置开始对代码打包编译,如果编译失败会通过邮件通知开发人员定位问题,重新对代码进行修改后再提交。最后将编译后的镜像文件上传到镜像服务器,供后续服务编排使用。
步骤3032,基于所述服务镜像生成对应的实例,根据所述服务镜像所对应的实例启动所述当前租户对应的终端页面,其中,所述终端页面至少包括一个所述服务镜像所对应的实例。
在该步骤3032中,服务镜像对应的实例指的是每个服务镜像所对应的可以运行程序的副本,每一个不同的服务镜像都会对应不同的实例供租户进行数据操作,每个终端页面中可以包含至少一个实例。在服务镜像编译完成后,根据当前租户的租户标识获取当前租户对应的服务镜像,并根据服务镜像内的环境配置信息生成最小服务单元配置文件。可以通过以下代码生成配置文件:
timeoutSeconds:1
resources:
limits:
cpu:1500m
memory:1500Mi
requests:
cpu:200m
memory:300Mi
replicas:2
其中limits.cpu配置规定了当前服务所需的最大CPU,limits.memory配置规定了当前服务所需的最大内存资源,requests.cpu约定了最小所需CPU,requests.memory约定了最小所需内存资源,replicas约定了服务镜像的实例数量,虚拟化平台会根据服务访问压力大小自动扩缩容。
在具体实施时,若当前租户的服务访问压力过大,则根据所述当前租户对应的服务镜像对所述实例进行复制。服务访问压力指的是访问当前租户所对应的终端页面的用户,用户是指直接使用SaaS服务的用户,且一个租户可以包括多个用户,比如,企业A订购使用SaaS服务,则企业A为SaaS服务的租户,企业A的员工可以成为使用SaaS服务的用户。当访问当前租户所对应的终端页面的用户过多,服务访问压力过大时,底层集群可以根据当前租户对应的服务镜像对终端页面中的实例进行复制,以应对终端页面的访问压力。具体实施时,最大的实例复制数量可以根据基础资源池的大小设置上限,因为整个底层集群需要保持稳定,不能无限进行复制扩容,所以会根据基础资源池的大小设置复制的实例数量的上限,比如5个,当复制出5个实例后就停止复制。
可选的,在为当前租户启动对应的终端页面时,为了保证当前租户的终端页面可正常启动,保证SaaS数据隔离方法可以正常运行,所述方法还包括:
步骤3033,在所述为所述当前租户启动对应的终端页面的过程中,通过在线页面检测所述终端页面启动是否正常。
步骤3034,在所述为所述当前租户启动对应的终端页面后,通过所述在线页面对服务状态进行监控预警。
在上述步骤3033和步骤3034中,具体实施时,会有在线页面对所述终端页面的启动进行检测,通过在线页面对节点进行检测,保证所述SaaS多租户数据隔离的方法可以正常运行。在所述在线页面中可以通过监控启动日志了解到终端页面的启动细节是否正常,如果有节点启动时发生异常,在线页面中该节点对应的代码会变成红色,终端页面会进行自动重启,直到节点恢复正常。如果出现严重的配置问题则需要人工介入,通过邮件通知开发人员异常节点的位置,开发人员进行调整后再为当前租户启动终端页面。当终端页面正常启动后,服务镜像会在正常运行的过程中植入一个监控的程序,可以实时获取服务镜像在运行中的指标信息,通过对指标信息的收集将所有指标信息放到同一个数据库中,在监控页面进行呈现,哪个租户的指标信息有异常都会在监控页面中进行显示。
请参阅图4,图4为本申请实施例提供的一种SaaS多租户数据隔离的装置的结构示意图。如图4中所示,所述装置包括:
获取模块401,用于获取当前租户通过终端页面所发送的数据操作请求;所述数据操作请求中携带有当前租户的租户标识和数据操作指令;
判断模块402,用于根据实体租户列表中每个实体租户的租户标识和当前租户的租户标识,判断当前租户是否为实体租户;
第一发送模块403,用于若当前租户为实体租户,则在当前租户的租户标识所对应的加密数据表中根据数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面;
第二发送模块404,用于若当前租户为非实体租户,则在通用数据表中根据数据操作指令对数据进行操作,得到第二操作结果,并将所述第二操作结果发送至所述终端页面。
可选的,在判断模块402根据实体租户列表中每个实体租户的租户标识和当前租户的租户标识,判断当前租户是否为实体租户之前,还包括:
拦截模块,用于拦截所述当前租户通过所述终端页面所发送的所述数据操作请求。
可选的,第一发送模块403包括:
解析单元,用于解析所述数据操作指令,得到所述数据操作指令对应的数据操作语句;
追加单元,用于将所述租户标识追加到所述数据操作语句中,得到标识追加语句;
确定单元,用于根据所述标识追加语句确定所述当前租户的租户标识所对应的加密数据表,并根据所述标识追加语句对所述加密数据表进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面。
可选的,在获取模块401获取当前租户通过终端页面所发送的数据操作请求之前,还包括:
信息获取模块,用于获取所述当前租户的开通请求,所述开通请求中携带有所述当前租户的租户信息;
审核模块,用于对所述租户信息进行审核,若审核无误,则根据所述租户信息生成所述当前租户对应的环境配置信息;
配置模块,用于基于所述当前租户对应的环境配置信息配置对应的资源并为所述当前租户启动对应的终端页面。
可选的,配置模块包括:
编译单元,用于将所述当前租户对应的环境配置信息编译到所述当前租户对应的服务镜像中;
启动单元,用于根据所述环境配置信息以及所述服务镜像所对应的实例启动所述当前租户对应的终端页面,其中,所述终端页面至少包括一个所述服务镜像所对应的实例。
可选的,所述租户信息包括以下信息中的任意一种或多种:
租户企业名称、租户账号、租户联系人、租户邮箱和租户联系电话等。
可选的,所述SaaS多租户数据隔离的装置还包括:
检测模块,用于在所述为所述当前租户启动对应的终端页面的过程中,通过在线页面检测所述终端页面启动是否正常;
监控预警模块,用于在所述为所述当前租户启动对应的终端页面后,通过所述在线页面对服务状态进行监控预警。
请参阅图5,图5为本申请实施例所提供的一种电子设备的结构示意图。如图5中所示,所述电子设备500包括处理器510、存储器520和总线530。
所述存储器520存储有所述处理器510可执行的机器可读指令,当电子设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时,可以执行如上述图1所示方法实施例中的SaaS多租户数据隔离的方法的步骤,解决了现有技术中数据隔离存在一定的安全隐患,***成本和运维部署难度高,且在大数据场景***中很难扩展的问题,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1所示方法实施例中的SaaS多租户数据隔离的方法的步骤,解决了现有技术中数据隔离存在一定的安全隐患,***成本和运维部署难度高,且在大数据场景***中很难扩展的问题,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种SaaS多租户数据隔离的方法,其特征在于,所述方法包括:
获取当前租户通过终端页面所发送的数据操作请求;所述数据操作请求中携带有所述当前租户的租户标识和数据操作指令;
根据实体租户列表中每个实体租户的租户标识和所述当前租户的租户标识,判断所述当前租户是否为实体租户;
若所述当前租户为所述实体租户,则在所述当前租户的租户标识所对应的加密数据表中根据所述数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面;
若所述当前租户为非实体租户,则在通用数据表中根据所述数据操作指令对数据进行操作,得到第二操作结果,并将所述第二操作结果发送至所述终端页面;
所述若所述当前租户为所述实体租户,则在所述当前租户的租户标识所对应的加密数据表中根据所述数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面,包括:
解析所述数据操作指令,得到所述数据操作指令对应的数据操作语句;
将所述租户标识追加到所述数据操作语句中,得到标识追加语句;
根据所述标识追加语句确定所述当前租户的租户标识所对应的加密数据表,并根据所述标识追加语句对所述加密数据表进行操作,得到所述第一操作结果,并将所述第一操作结果发送至所述终端页面。
2.根据权利要求1所述的方法,其特征在于,在所述根据实体租户列表中每个实体租户的租户标识和所述当前租户的租户标识,判断所述当前租户是否为实体租户之前,所述方法还包括:
拦截所述当前租户通过所述终端页面所发送的所述数据操作请求。
3.根据权利要求1所述的方法,其特征在于,在所述获取当前租户通过终端页面所发送的数据操作请求之前,所述方法还包括:
获取所述当前租户的开通请求,所述开通请求中携带有所述当前租户的租户信息;
对所述租户信息进行审核,若审核无误,则根据所述租户信息生成所述当前租户对应的环境配置信息;
基于所述当前租户对应的环境配置信息配置对应的资源并为所述当前租户启动对应的终端页面。
4.根据权利要求3所述的方法,其特征在于,所述基于所述当前租户对应的环境配置信息配置对应的资源并为所述当前租户启动对应的终端页面,包括:
将所述当前租户对应的环境配置信息编译到所述当前租户对应的服务镜像中;
基于所述服务镜像生成对应的实例,根据所述服务镜像所对应的实例启动所述当前租户对应的终端页面,其中,所述终端页面至少包括一个所述服务镜像所对应的实例。
5.根据权利要求3所述的方法,其特征在于,所述租户信息包括以下信息中的任意一种或多种:
租户企业名称、租户账号、租户联系人、租户邮箱和租户联系电话等。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述为所述当前租户启动对应的终端页面的过程中,通过在线页面检测所述终端页面启动是否正常;
在所述为所述当前租户启动对应的终端页面后,通过所述在线页面对服务状态进行监控预警。
7.一种SaaS多租户数据隔离的装置,其特征在于,包括:
获取模块,用于获取当前租户通过终端页面所发送的数据操作请求;所述数据操作请求中携带有当前租户的租户标识和数据操作指令;
判断模块,用于根据实体租户列表中每个实体租户的租户标识和当前租户的租户标识,判断当前租户是否为实体租户;
第一发送模块,用于若当前租户为实体租户,则在当前租户的租户标识所对应的加密数据表中根据数据操作指令对数据进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面;
第二发送模块,用于若当前租户为非实体租户,则在通用数据表中根据数据操作指令对数据进行操作,得到第二操作结果,并将所述第二操作结果发送至所述终端页面;
所述第一发送模块包括:
解析单元,用于解析所述数据操作指令,得到所述数据操作指令对应的数据操作语句;
追加单元,用于将所述租户标识追加到所述数据操作语句中,得到标识追加语句;
确定单元,用于根据所述标识追加语句确定所述当前租户的租户标识所对应的加密数据表,并根据所述标识追加语句对所述加密数据表进行操作,得到第一操作结果,并将所述第一操作结果发送至所述终端页面。
8.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至6任一所述的一种SaaS多租户数据隔离的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一所述的一种SaaS多租户数据隔离的方法的步骤。
CN202011563870.1A 2020-12-25 2020-12-25 一种SaaS多租户数据隔离的方法、装置、设备及介质 Active CN112596857B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011563870.1A CN112596857B (zh) 2020-12-25 2020-12-25 一种SaaS多租户数据隔离的方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011563870.1A CN112596857B (zh) 2020-12-25 2020-12-25 一种SaaS多租户数据隔离的方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN112596857A CN112596857A (zh) 2021-04-02
CN112596857B true CN112596857B (zh) 2024-06-21

Family

ID=75202204

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011563870.1A Active CN112596857B (zh) 2020-12-25 2020-12-25 一种SaaS多租户数据隔离的方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN112596857B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113378026B (zh) * 2021-06-30 2022-07-26 特赞(上海)信息科技有限公司 多租户体系中搜索引擎索引的管理方法、装置及电子设备
CN114745443A (zh) * 2022-05-09 2022-07-12 中国工商银行股份有限公司 服务调用方法、装置、计算机设备、存储介质和程序产品
CN115544784A (zh) * 2022-10-19 2022-12-30 泰科信(北京)科技有限公司 多租户虚拟测试方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111478961A (zh) * 2020-04-03 2020-07-31 中国建设银行股份有限公司 多租户的服务调用方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6540063B2 (ja) * 2015-02-05 2019-07-10 日本電気株式会社 通信情報制御装置、中継システム、通信情報制御方法、および、通信情報制御プログラム
CN107122364B (zh) * 2016-02-25 2021-05-18 华为技术有限公司 数据操作方法和数据管理服务器
CN107133243A (zh) * 2016-02-29 2017-09-05 华为技术有限公司 一种数据处理方法和服务器
CN110399368B (zh) * 2018-04-23 2022-08-19 华为技术有限公司 一种定制数据表的方法、数据操作方法及装置
CN109388631A (zh) * 2018-10-11 2019-02-26 山东浪潮通软信息科技有限公司 一种多租户的数据库分库实现方法
CN110532074B (zh) * 2019-08-08 2021-11-23 北明云智(武汉)网软有限公司 一种多租户模式SaaS服务集群环境的任务调度方法及***
CN111367887A (zh) * 2020-03-03 2020-07-03 威海新北洋数码科技有限公司 多租户数据共享***及其管理方法、数据库部署方法
CN111582773B (zh) * 2020-06-22 2023-04-18 南京德睿能源研究院有限公司 一种基于多租户技术的微电网能量云模型控制方法及***

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111478961A (zh) * 2020-04-03 2020-07-31 中国建设银行股份有限公司 多租户的服务调用方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向多租户的业务模型管理平台研究;陈启斗;《中国知网硕士电子期刊网》;20130715(第7期);正文第5.2.1节 *

Also Published As

Publication number Publication date
CN112596857A (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
US10565077B2 (en) Using cognitive technologies to identify and resolve issues in a distributed infrastructure
CN112596857B (zh) 一种SaaS多租户数据隔离的方法、装置、设备及介质
US10599874B2 (en) Container update system
US11030084B2 (en) API specification parsing at a mocking server
CA2919839C (en) Virtual computing instance migration
US10216508B1 (en) System and method for configurable services platform
US11375015B2 (en) Dynamic routing of file system objects
US11720825B2 (en) Framework for multi-tenant data science experiments at-scale
WO2019180599A1 (en) Data anonymization
CN112000992B (zh) 数据防泄漏保护方法、装置、计算机可读介质及电子设备
US11803429B2 (en) Managing alert messages for applications and access permissions
US20240232420A9 (en) System and method of dynamic search result permission checking
WO2022046225A1 (en) Automated code analysis tool
CN114895879B (zh) 管理***设计方案确定方法、装置、设备及存储介质
US20230025740A1 (en) Assessing data security of a managed database deployed in the cloud using a secured sandbox environment
AU2021268828B2 (en) Secure data replication in distributed data storage environments
CN111368231B (zh) 一种异构冗余架构网站的测试方法及装置
CN114168156A (zh) 多租户数据持久化方法、装置、存储介质和计算机设备
US11645136B2 (en) Capturing referenced information in a report to resolve a computer problem
US11841881B2 (en) Querying for custom data objects
US20240104003A1 (en) Testing integration applications for systems
CN111581670B (zh) 数据生命周期管理方法
US20240232259A1 (en) Just-in-time materialization of cloned users in computing environments within a database system
US11176108B2 (en) Data resolution among disparate data sources
CN114528592A (zh) 业务处理方法、装置、设备、介质和程序产品

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