使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程
本发明属于数据库领域,尤其涉及一种SaaS企业平台数据库及其连接方法。
背景技术:
SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟,在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service provider(ASP,应用服务提供商),hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
传统的SaaS数据库一般采用大型数据库(ORACLE、DB2、SYBASE等),各企业间的数据采用表字段companyId的方式进行隔离,因各企业间业务不同,导致个性化定制开发困难,开发与维护高等问题,
技术实现要素:
为了解决现有技术中的上述问题,本发明提供了一种SaaS企业平台数据库及其连接方法。
本发明采用的技术方案具体如下:
一种SaaS企业平台数据库系统,包括中心服务器和多个数据库服务器,其中,所述中心服务器上具有中心库,所述数据库服务器上具有企业库,所述中心库用于存储企业的注册信息,在企业注册后调用创建初始化数据库服务,在数据库服务器上同步产生企业库和表结构;当企业A的用户需要使用数据库时,其使用客户端连接中心库,并通过中心库与企业A库所在的数据库服务器A建立加密连接,具体过程包括:
(1)企业A为其下属的用户生成密码,设所述用户的账号为User,则该用户的密码PW通过下式计算:
PW=Encode(E(PrivateKeyA,User||Auth))
其中,PrivateKeyA是所述企业A的私钥,Encode是Base64编码函数,Auth是企业A给予该用户的对数据库的访问权限;E为加密函数,其使用函数的第一个参数作为密钥,对第二个参数进行加密;
(2)将所述密码PW拆分成PW1和PW2两部分,PW1由用户保存,PW2保存在用户使用的客户端中;
(3)用户使用客户端连接中心服务器,并在客户端中输入PW1以及用户账号User,客户端组合PW1和PW2以获得用户密码PW;
(4)所述客户端使用中心库数字证书的公钥加密PW,将加密结果和用户账号User发送给中心服务器;
(5)中心服务器上的中心库接收到该加密结果后,使用其私钥解密该加密结果,获得PW;
(6)中心库计算U=D(PublicKeyA,Decode(PW)),判断U的前K个字符与User是否相等,如果不相等,则拒绝客户端的连接,方法结束;如果相等,则客户端认证通过,中心库向客户端返回认证通过消息,同时中心库将U去除前K个字符后剩余的部分作为该用户的数据库访问权限Auth;其中K是User的长度,PublicKeyA是企业A的公钥,Decode是Base64解码函数;D是与E相对应的解密函数,其使用函数的第一个参数作为密钥,对第二个参数进行解密;
(7)所述客户端在接收到认证通过消息后,随机生成一个对称加密密钥Key,将该密钥Key用中心库数字证书公钥加密后,发送给中心服务器;
(8)中心库将接收到的加密结果EncKey进行解密,获得密钥Key,将该密钥Key、访问权限Auth以及客户端的网络地址发送给企业A库所在的数据库服务器A;
(9)所述数据库服务器A基于该密钥Key,与客户端建立加密连接,并基于所述访问权限Auth接收该客户端的数据库访问。
进一步地,对于数据库表升级操作,由中心库记录最新库版本号和最新库的数据库表结构,当企业A的用户登录企业A库后,对比中心库和企业A库的版本号,如果发现企业A库的版本比中心库低,则触发升级库脚本,同步更新企业A库的版本与中心库一致。
进一步地,其特征在于,中心库中的企业注册信息包括企业的数字证书。
进一步地,其特征在于,所述加密函数E和解密函数D使用的是RSA算法或者椭圆曲线算法。
进一步地,其特征在于,将PW的前N个字符作为PW1,剩余字符作为PW2,所述N是预定义的长度。
与上述系统相应的,本发明还提供了一种SaaS企业平台数据库系统的连接方法。
本方法的有益效果为:方便企业定制自己的数据库,在保证安全性的前提下,企业具有了更大的灵活性,可以自行控制其下属的用户,而无需进行系统注册。
【附图说明】
此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:
图1是本发明数据库系统的连接关系图。
【具体实施方式】
下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。
本发明的SaaS企业平台数据库系统为每个企业都提供一个单库,从而实现单企业单库的结构。如附图1所示,系统中具有一个中心库,每个企业在中心库注册账号,产生注册信息后,中心库调用创建初始化数据库服务,同步产生该企业的库和表结构。所述中心库位于一个中心服务器上,而企业库位于其他的数据库服务器上,不同企业库可以位于不同的数据库服务器上,也可以位于同一数据库服务器上。
所述中心库除了存储企业的注册信息外,还可将企业用户的操作由中心库路由到相应的企业库进行处理。对于数据库表升级操作,可采用中心库中记录最新库版本号和最新库的数据库表结构,当企业A的用户登录企业A库后,对比中心库和企业A库的版本号,如果发现企业A库的版本比中心库低,则触发升级库脚本,同步更新企业A库的版本与中心库一致。
由于中心库存储了各个企业的注册信息,因此中心库也是作为企业用户登录和连接数据库的中心点。企业用户在使用客户端连接该数据库系统时,首先是连接中心库,然后通过中心库登录,从而再连接与访问相应的企业库。下面对企业A为例,对本发明的上述连接过程进行详细说明。
首先,所述中心库和每个企业都有各自的数字证书和相应的私钥,可以使用该私钥和数字证书中的公钥进行加解密操作。中心库中的企业注册信息就包括了企业的数字证书。
设加密函数为E(key,Data),即使用预设的加密算法和密钥key,对数据Data进行加密,从而得到Data的加密结果;设解密函数为D(Deckey,Enc),即使用预设的解密算法和密钥key,对密文Enc进行解密,从而得到解密结果。优选的,所述加密和解密算法为RSA算法或者椭圆曲线算法。以下说明都使用这两个函数的定义。
(1)企业A为其下属的用户生成密码,设所述用户的账号为User,则该用户的密码PW通过下式计算:
PW=Encode(E(PrivateKeyA,User||Auth))
其中,PrivateKeyA是所述企业A的私钥,Encode是Base64编码函数。
Auth是企业A给予该用户的对数据库的访问权限,符号“||”表示将两个字符串连接。
(2)将所述密码PW拆分成PW1和PW2两部分。
优选的,将PW的前N个字符作为PW1,剩余字符作为PW2。所述N是预定义的长度,优选的,N=8。
PW1作为用户个人密码,由用户自行记忆;PW2则作为客户端密码,保存在用户使用的客户端中,可以使用现有的一些安全保存方式来保持PW2。
(3)用户使用客户端连接中心服务器,并在客户端中输入PW1以及用户账号User,客户端组合PW1和PW2以获得用户密码PW。
所述组合过程就是步骤2中拆分过程的逆过程。
(4)客户端使用中心库数字证书的公钥加密PW,将加密结果和用户账号User发送给中心服务器。
具体地,客户端计算EncPW=E(PublicKeyCenter,PW),获得PW的加密结果EncPW。其中,PublicKeyCenter是中心库的公钥。
(5)中心服务器上的中心库接收到该加密结果后,使用其私钥解密该加密结果,获得PW。
具体地,中心库计算PW=D(PrivateKeyCenter,EncPW)。其中,PrivateKeyCenter是中心库的私钥。
(6)中心库计算U=D(PublicKeyA,Decode(PW)),判断U的前K个字符与User是否相等,如果不相等,则拒绝客户端的连接,方法结束;如果相等,则客户端认证通过,中心库向客户端返回认证通过消息,同时中心库将U去除前K个字符后剩余的部分作为该用户的数据库访问权限Auth。
其中K是User的长度,PublicKeyA是企业A的公钥,Decode是Base64解码函数。步骤6的过程实际上是步骤1中计算公式的逆过程,因此可以验证客户端上传的账号密码是否是企业A颁发,同时获得访问权限Auth。通过这样的验证方式,企业A可以自主生成用户账号、密码和权限,而无需在服务器侧对用户进行注册用户,在保证安全性的同时,保持了企业的自主灵活性。
(7)客户端在接收到认证通过消息后,随机生成一个对称加密密钥Key,将该密钥Key用中心库数字证书公钥加密后,发送给中心服务器。
具体地,客户端计算Key的加密结果EncKey,即
EncKey=E(PublicKeyCenter,Key)。
所述密钥Key作为客户端与企业A库之间的通信密钥,基于该通信密钥可建立两者间的加密连接。
(8)中心库将接收到的加密结果EncKey进行解密,获得密钥Key,将该密钥Key、访问权限Auth以及客户端的网络地址发送给企业A库所在的数据库服务器A。
具体地,中心库计算Key=D(PrivateKeyCenter,EncKey),获得该密钥,再将密钥传输给数据库服务器A。此外,由于客户端与中心服务器建立了网络连接,因此中心服务器可以获得客户端的网络地址。
通常情况下,作为SaaS平台,内部服务器之间的通信都是安全的,或者同处于一个内部网络内,或者具有安全信道,因此可以安全传输数据。
(9)所述数据库服务器A基于该密钥Key,与客户端建立加密连接,并基于所述访问权限Auth接收该客户端的数据库访问。
这一步骤由数据库服务器A主动发起建立加密连接,因此客户端无需事先知道企业A所对应的数据库服务器。
以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。
使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程相关推荐
- 租户隔离怎么做MYSQL_一种SaaS软件租户数据隔离的方法与流程
本发明涉及计算机技术领域,尤其涉及一种SaaS软件租户数据隔离的方法. 背景技术: SaaS是Software-as-a-Service的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴 ...
- simscape电池建模_一种基于Simscape平台的电池建模方法
一种基于Simscape平台的电池建模方法 [专利摘要]本发明公开了一种基于Simscape平台的电池建模方法,包括以下步骤:HPPC试验提取等效电路模型中参数:电池道路循环工况老化试验,每次循环后测 ...
- spark集群访问mysql_一种Spark并行访问MPP数据库的方法与流程
本发明涉及数据库 技术领域: :,具体来说,涉及一种Spark并行访问MPP数据库的方法. 背景技术: ::从关系数据库读取数据,Spark可以使用DataFrame和JdbcRDD等方法.这些方法在 ...
- bga焊盘怎么做_一种bga焊盘封装结构的制作方法
一种bga焊盘封装结构的制作方法 [专利摘要]本实用新型公开了一种BGA焊盘封装结构,包括若干焊盘,焊盘的内部设有阻焊层,走线穿过焊盘与阻焊层连接.本实用新型增大了焊盘的有效面积,增大其与PCB基材的 ...
- 树展示 移动端_一种手机端树形数据结构的展现方法与流程
本发明涉及数据结构的展现领域,尤其涉及一种手机端树形数据结构的展现方法. 背景技术: 在企业中,组织结构表现为部门.员工.职称等一种群体关系图,它形象的反映了企业内部各部门和员工上下左右之间的相互关系 ...
- matlab半物理仿真,一种基于Matlab的半物理仿真方法与流程
本发明属于物理建模技术领域,具体涉及一种基于Matlab的半物理仿真方法. 背景技术: 当今汽车行业,经过多年探索,业界普遍采用基于模型的控制器开发"V"模式,如图5所示.该模式可 ...
- matlab波特一致性,一种基于MATLAB的数据一致性的分析方法与流程
本发明属于电机性能数据的处理和分析技术领域,尤其涉及一种基于 MATLAB的数据一致性的分析方法. 背景技术: MATLAB是一种基于算法开发.数据可视化.数据分析以及数值计算的计算机高级编程语言和交 ...
- python 回声程序_一种回声消除系统及回音消除方法与流程
本发明涉及通信技术领域,具体涉及一种回声消除系统及回音消除方法. 背景技术: 回声消除器通常由滤波器和算法组成,根据具体应用和性能要求的不同可以有多种选择. 滤波器有FIR(有限长度冲激晌应)滤波器和 ...
- dncnn图像去噪_一种基于DnCNNs改进的图像降噪方法与流程
本发明涉及图像处理技术领域,具体涉及一种基于dncnns改进的图像降噪方法. 背景技术: 随着科技进步,新的图像技术在逐渐推广,在日常生活中人们对于图像的要求也越来越高,针对阴天或夜晚等弱光条件下拍摄 ...
最新文章
- python获取docx文档的内容(文本)
- OER 7451 in Load Indicator : Error Code = OSD-0450
- 利用Cydia Substrate进行Android HOOK (1)
- linux 查询内存和核心数,Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数...
- Faster RCNN原理分析(二):Region Proposal Networks详解
- nslang oracle_RAC11g+DG 高可用容灾方案部署
- js-权威指南学习笔记7
- 如何在vue项目中使用sass(scss)
- Linux编程(6)_makefile
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException
- slk文件转换器安卓版_CoolUtils Total Excel Converter下载
- jQuery 遍历 - find() 方法
- 在没有中介平台比如Paypal/支付宝前提下,如何说服客户先付款?--猜疑链带来的思考
- 机器人笔记psv中文_《机器人笔记》白金攻略 机器人笔记奖杯攻略
- python操作word详细操作_Python操作Word的入门教程
- 工作日志1——项目前景、项目范围、涉众分析、硬数据采集
- CISSP考点拾遗——介质净化
- SG函数和SG定理【详解】
- 原始值(primitive value)
- 实战录 | 浅谈前端项目构建与优化
热门文章
- python语言程序设计实践教程答案实验六_20192417 实验一《Python程序设计》实验报告...
- oracle判断数据表的字段内容是否为空
- 计算机应用能力大纲,计算机应用能力水平考试大纲.doc
- linux中vi大括号enter缩进,格式 – 如何在vi中对齐代码(大括号,括号等)?
- 计算机保存的信息是模拟信号,信息技术考试样题(附解析).doc
- 阮一峰es6电子书_ES6理解进阶【大前端高薪训练营】
- centos MySQL 双机_CentOS利用Keepalived构建双主MySQL+双机热备
- elementui 加载中_ElementUI cascader级联动态加载回显和搜索看这个就够了
- java代码的运行顺序_java中的代码块执行顺序
- Oracle数据库修改字段类型