CN110163002A - 一种SaaS软件租户数据隔离的方法 - Google Patents
一种SaaS软件租户数据隔离的方法 Download PDFInfo
- Publication number
- CN110163002A CN110163002A CN201910459194.4A CN201910459194A CN110163002A CN 110163002 A CN110163002 A CN 110163002A CN 201910459194 A CN201910459194 A CN 201910459194A CN 110163002 A CN110163002 A CN 110163002A
- Authority
- CN
- China
- Prior art keywords
- tenant
- database
- data
- namespace
- saas software
- 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.)
- Granted
Links
Classifications
-
- 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
-
- 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/23—Updating
-
- 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/6245—Protecting personal data, e.g. for financial or medical purposes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种SaaS软件租户数据隔离的方法,其特征在于每个租户拥有自己唯一的命名空间,不同租户通过创建不同的数据库实例实现数据的物理隔离,并以该租户命名空间标注数据库以作区分,租户信息和命名空间会通过平台数据库进行统一维护。该方法实现了各个租户数据之间的物理隔离,数据安全性得到本质性的提高;租户数据的备份、清除方便,保证了数据的完整性,不存在垃圾数据;各个租户之间数据分开,数据处理效率高。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种SaaS软件租户数据隔离的方法。
背景技术
SaaS是Software-as-a-Service的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
从对SaaS软件的描述可知,SaaS软件服务提供商将软件统一部署在自己的服务器上,诸多客户通过租的方式来“共享”使用软件及服务器资源,SaaS软件的企业客户也称为租户。其中数据库就是一个重要的资源来为应用软件提供基础的数据存储、查询及操作的基础平台。目前SaaS软件一般的做法都是各家租户使用同一个数据库实例来存储数据,通过在数据表中“租户id”来区分各家租户的数据。这种模式和传统软件模式比较类似,实施起来也比较容易。但是这种模式下随着租户规模的扩大,应用的深入,也会带来一系列的问题,包括:
数据并没有做到物理隔离,仅是逻辑上做了区分,业务处理稍严谨各个租户之间的数据可能会出现互相泄露的情况,数据的安全性比较低。
租户不再续租时需要为租户备份数据、或清理数据,会存在非常难以将一个租户的数据单独剥离的问题,从而造成数据的不完整、并存在垃圾数据。
一个数据库来存放众多租户的数据,必然导致数据量庞大、庞大的数据量也必然导致数据处理效率低下。
应用开发在每一个需求实现时均须考虑“租户id”及“租户数据区分”的问题,对应用开发人员的要求比较高,容易出代码逻辑问题。
发明内容
针对“租户id”来区分各家租户数据模式存在的问题,本发明提出一种新的SaaS软件租户数据隔离的方法。
本发明的隔离方法,其特征在于在数据库中为SaaS软件预置一个基础数据库作为租户信息复制基准模板,并配套一个平台数据库作为统一数据管理,该方法包括以下步骤:
1) 创建租户时会生成一个不重复的随机数作为该租户的命名空间,租户数据库会以基础数据库为基准进行复制,复制的租户数据库以“基础数据库_命名空间”命名;在租户数据库创建时,将该租户数据库的权限赋予应用基础数据库用户;
2)SaaS软件注册单元随后调用脚本,将基准数据库数据复制到新创建的租户数据库;
3) 租户实例创建完成后,将命名空间的映射关系记录到平台数据库;
4) 租户在登录后,到平台数据库获取用户租户命名空间并存入用户登陆会话,在用户每次访问SaaS软件时获取到用户会话中的命名空间并将其设置到线程变量中,在整个会话中数据操作始终指向此命名空间;
5) 定制数据源,继承.org.apache.tomcat.jdbc.pool.XADataSource数据源,复写获取长链接方法,在数据源建立连接后,获取线程变量中的命名空间,执行 use database指令切换数据库实例,可实现通过命名空间控制数据库实例的访问控制;
6) 表结构及数据库更新,提供独立的服务处理。
具体的,SaaS软件通过配置基础数据库的用户名密码进行连接,并配套一个平台数据库作为统一数据管理。
具体的,在数据存储过程中不可避免的会遇到公用数据,将公用数据存储至平台数据库,平台数据库提供统一的rpc数据接口进行调用,此种方式也解使得不同业务数据之间的耦合变得松散。
具体的,步骤6)中定制数据源继承.org/.apache/.tomcat/.jdbc/.pool/.XADataSource标准数据源接口,并复写获取长链接方法。
具体的,步骤7)中数据库更新的处理逻辑为:在基础数据库对目标sql脚本进行执行测试,发生错误则终止操作;查询平台数据库记录的命名空间映射关系,链接各租户数据库,逐个执行更新的目标sql脚本,完成对所有租户数据库的更新操作。
通过本方法,租户用户使用软件时,会通过租户命名空间找到对应的租户数据库实例并进行数据库切换,以实现跨库访问的效果;整个多租户数据库切换的逻辑完全封装至自定义数据源中。
本发明的SaaS软件租户数据隔离的方法,实现了各个租户数据之间的物理隔离,数据安全性得到本质性的提高;租户数据的备份、清除方便,保证了数据的完整性,不存在垃圾数据;各个租户之间数据分开,数据处理效率高;应用开发无须考虑“租户id”的问题,提高了应用开发、版本迭代的效率,从而能够更加快速的满足租户的业务需求。
具体实施方式
实施例1:本实施例的SaaS软件租户数据隔离的方法,基于windows或linux操作系统,mysql数据库,以及基于java开发的SaaS软件。数据库中需要为SaaS软件软件预置一个基础数据库作为租户信息复制基准模板,SaaS软件通过配置该基础库的用户名密码进行连接。并配套一个平台数据库作为统一数据管理。
1、 SaaS软件注册单元接收到新租户的创建请求后为租户生成一个不重复的随机数作为该租户的命名空间。注册单元调用数据库创建脚本新建数据库并以“基础数据库_命名空间”命名,在租户数据库创建时,不会再创建对应的数据库用户,而是将该租户数据库的权限赋予到应用基础数据库用户;
2、 SaaS软件注册单元随后调用脚本,将基准数据库数据复制到新创建的租户数据库;
3、 租户实例创建完成后,将命名空间的映射关系记录到平台数据库;
4、 租户在登录后,需要到平台数据库获取用户租户命名空间并存入用户登陆会话,在用户每次访问SaaS软件时获取到用户会话中的命名空间并将其设置到线程变量中,在整个会话中数据操作始终指向此命名空间;
5、 定制数据源,继承org.apache.tomcat.jdbc.pool.XADataSource数据源,复写获取长链接方法,在数据源建立连接后,获取线程变量中的命名空间,执行 use database指令切换数据库实例,可实现通过命名空间控制数据库实例的访问控制。
6、 表结构及数据更新,提供独立的服务处理。处理逻辑:1、在基础测试库对目标sql脚本进行执行测试,发生错误则终止操作;2、通过查询平台数据库记录的命名空间映射关系,链接各租户数据库,逐个执行更新的目标sql脚本。完成对所有租户数据库的更新操作。
Claims (5)
1.一种SaaS软件租户数据隔离的方法, 其特征在于在数据库中为SaaS软件预置一个基础数据库作为租户信息复制基准模板,并配套一个平台数据库作为统一数据管理,该方法包括以下步骤:
创建租户时会生成一个不重复的随机数作为该租户的命名空间,租户数据库会以基础数据库为基准进行复制,复制的租户数据库以“基础数据库_命名空间”命名;在租户数据库创建时,将该租户数据库的权限赋予应用基础数据库用户;
SaaS软件注册单元随后调用脚本,将基准数据库数据复制到新创建的租户数据库;
租户实例创建完成后,将命名空间的映射关系记录到平台数据库;
租户在登录后,到平台数据库获取用户租户命名空间并存入用户登陆会话,在用户每次访问SaaS软件时获取到用户会话中的命名空间并将其设置到线程变量中,在整个会话中数据操作始终指向此命名空间;
定制数据源,继承.org.apache.tomcat.jdbc.pool.XADataSource数据源,复写获取长链接方法,在数据源建立连接后,获取线程变量中的命名空间,执行 use database指令切换数据库实例,可实现通过命名空间控制数据库实例的访问控制;
表结构及数据库更新,提供独立的服务处理。
2.如权利要求1所述的一种SaaS软件租户数据隔离的方法,其特征在于SaaS软件通过配置基础数据库的用户名密码进行连接,并配套一个平台数据库作为统一数据管理。
3.如权利要求1所述的一种SaaS软件租户数据隔离的方法,其特征在于公用数据存储至平台数据库,平台数据库提供统一的rpc数据接口进行调用。
4.如权利要求1所述的一种SaaS软件租户数据隔离的方法,其特征在于步骤6)中定制数据源继承.org/.apache/.tomcat/.jdbc/.pool/.XADataSource标准数据源接口,并复写获取长链接方法。
5.如权利要求1所述的一种SaaS软件租户数据隔离的方法,其特征在于步骤7)中数据库更新的处理逻辑为:在基础数据库对目标sql脚本进行执行测试,发生错误则终止操作;查询平台数据库记录的命名空间映射关系,链接各租户数据库,逐个执行更新的目标sql脚本,完成对所有租户数据库的更新操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910459194.4A CN110163002B (zh) | 2019-05-29 | 2019-05-29 | 一种SaaS软件租户数据隔离的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910459194.4A CN110163002B (zh) | 2019-05-29 | 2019-05-29 | 一种SaaS软件租户数据隔离的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110163002A true CN110163002A (zh) | 2019-08-23 |
CN110163002B CN110163002B (zh) | 2023-06-13 |
Family
ID=67629809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910459194.4A Active CN110163002B (zh) | 2019-05-29 | 2019-05-29 | 一种SaaS软件租户数据隔离的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110163002B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159134A (zh) * | 2019-12-17 | 2020-05-15 | 复旦大学 | 面向多租户的分布式文件系统安全访问控制方法及系统 |
CN112749149A (zh) * | 2019-10-31 | 2021-05-04 | 北京国双科技有限公司 | 数据库切换方法和装置 |
CN113609105A (zh) * | 2021-08-20 | 2021-11-05 | 南威软件股份有限公司 | 一种协同系统数据物理隔离的实现方法 |
CN114153858A (zh) * | 2021-11-26 | 2022-03-08 | 泰康保险集团股份有限公司 | 一种MySQL表空间下租户自动更新的方法及装置 |
WO2023231681A1 (zh) * | 2022-05-31 | 2023-12-07 | 京东方科技集团股份有限公司 | 账号创建方法、物联网多租户系统、设备、程序和介质 |
CN117389684A (zh) * | 2023-10-13 | 2024-01-12 | 河北云在信息技术服务有限公司 | 一种SaaS多租户数据隔离方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708316A (zh) * | 2012-04-19 | 2012-10-03 | 北京华胜天成科技股份有限公司 | 一种用于多租户架构中数据隔离的方法 |
CN103984600A (zh) * | 2014-05-07 | 2014-08-13 | 丽水桉阳生物科技有限公司 | 一种基于云计算的财务数据处理方法 |
CN104050201A (zh) * | 2013-03-15 | 2014-09-17 | 伊姆西公司 | 用于多租户分布式环境中的数据管理的方法和设备 |
CN105144159A (zh) * | 2013-02-13 | 2015-12-09 | 脸谱公司 | Hive表链接 |
US20160014212A1 (en) * | 2014-07-14 | 2016-01-14 | Oracle International Corporation | System and method for supporting namespaces in a multitenant application server environment |
CN107111626A (zh) * | 2014-11-01 | 2017-08-29 | 慧与发展有限责任合伙企业 | 用于租户的数据管理 |
CN108038390A (zh) * | 2017-12-09 | 2018-05-15 | 珠海横琴小可乐信息技术有限公司 | 一种软件即服务平台租户数据隔离与共享的方法及系统 |
CN109241028A (zh) * | 2018-08-02 | 2019-01-18 | 山东浪潮通软信息科技有限公司 | 一种基于Mycat的数据库多租户实现方法 |
-
2019
- 2019-05-29 CN CN201910459194.4A patent/CN110163002B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708316A (zh) * | 2012-04-19 | 2012-10-03 | 北京华胜天成科技股份有限公司 | 一种用于多租户架构中数据隔离的方法 |
CN105144159A (zh) * | 2013-02-13 | 2015-12-09 | 脸谱公司 | Hive表链接 |
CN104050201A (zh) * | 2013-03-15 | 2014-09-17 | 伊姆西公司 | 用于多租户分布式环境中的数据管理的方法和设备 |
CN103984600A (zh) * | 2014-05-07 | 2014-08-13 | 丽水桉阳生物科技有限公司 | 一种基于云计算的财务数据处理方法 |
US20160014212A1 (en) * | 2014-07-14 | 2016-01-14 | Oracle International Corporation | System and method for supporting namespaces in a multitenant application server environment |
CN107111626A (zh) * | 2014-11-01 | 2017-08-29 | 慧与发展有限责任合伙企业 | 用于租户的数据管理 |
CN108038390A (zh) * | 2017-12-09 | 2018-05-15 | 珠海横琴小可乐信息技术有限公司 | 一种软件即服务平台租户数据隔离与共享的方法及系统 |
CN109241028A (zh) * | 2018-08-02 | 2019-01-18 | 山东浪潮通软信息科技有限公司 | 一种基于Mycat的数据库多租户实现方法 |
Non-Patent Citations (2)
Title |
---|
KESHAV GUPTA: "Data isolation in multi-tenant SaaS environment", 《IEEE》 * |
马将: "基于MVC模式的多租户portlet应用研究", 《计算机与数字工程》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749149A (zh) * | 2019-10-31 | 2021-05-04 | 北京国双科技有限公司 | 数据库切换方法和装置 |
CN111159134A (zh) * | 2019-12-17 | 2020-05-15 | 复旦大学 | 面向多租户的分布式文件系统安全访问控制方法及系统 |
CN111159134B (zh) * | 2019-12-17 | 2023-09-26 | 复旦大学 | 面向多租户的分布式文件系统安全访问控制方法及系统 |
CN113609105A (zh) * | 2021-08-20 | 2021-11-05 | 南威软件股份有限公司 | 一种协同系统数据物理隔离的实现方法 |
CN114153858A (zh) * | 2021-11-26 | 2022-03-08 | 泰康保险集团股份有限公司 | 一种MySQL表空间下租户自动更新的方法及装置 |
WO2023231681A1 (zh) * | 2022-05-31 | 2023-12-07 | 京东方科技集团股份有限公司 | 账号创建方法、物联网多租户系统、设备、程序和介质 |
CN117389684A (zh) * | 2023-10-13 | 2024-01-12 | 河北云在信息技术服务有限公司 | 一种SaaS多租户数据隔离方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110163002B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110163002A (zh) | 一种SaaS软件租户数据隔离的方法 | |
CN109522025B (zh) | 一种基于git的代码发布系统 | |
CN109977110A (zh) | 数据清洗方法、装置及设备 | |
US10282196B2 (en) | System and method for moving enterprise software application components across environments | |
US10929275B2 (en) | Automatic test stack creation via production system replication | |
JP7125854B2 (ja) | 自動化された試験システムの方法及び設計 | |
EP3435235A1 (en) | Method and device for executing data recovery operation | |
US10146668B1 (en) | Modeling code coverage in software life cycle | |
US20140143367A1 (en) | Robustness in a scalable block storage system | |
CN105681104A (zh) | 为在线服务管理网络和机器 | |
US11336749B2 (en) | Systems, methods, and computer program products to implement changes in a converged infrastructure system | |
WO2018001200A1 (zh) | 数据处理方法、集群管理器、资源管理器、数据处理系统 | |
US10360203B2 (en) | Systems and methods for generating and implementing database audit functionality across multiple platforms | |
CN109814944A (zh) | 配置管理方法及相关产品 | |
CA2799001A1 (en) | Database version management system | |
WO2020258674A1 (zh) | 脚本文件校验方法、装置、服务器及存储介质 | |
CN106777368A (zh) | 数据库查询语言适配方法及装置、分布式数据存储系统 | |
Serfon et al. | Rucio, the next-generation Data Management system in ATLAS | |
CN109981350A (zh) | 一种云服务不间断的升级方法及系统 | |
US10572433B2 (en) | Accessing data in accordance with an execution deadline | |
EP3182278A1 (en) | System for automatic preparation of integrated development environments | |
US9588998B2 (en) | Protecting storage data during system migration | |
GB2565932B (en) | Storing data in dispersed storage network with consistency | |
Kumar | PostgreSQL 13 Cookbook: Over 120 recipes to build high-performance and fault-tolerant PostgreSQL database solutions | |
CN104965917A (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 |