本发明属于数据库领域,尤其涉及一种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企业平台数据库系统及其连接方法与流程相关推荐

  1. 租户隔离怎么做MYSQL_一种SaaS软件租户数据隔离的方法与流程

    本发明涉及计算机技术领域,尤其涉及一种SaaS软件租户数据隔离的方法. 背景技术: SaaS是Software-as-a-Service的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴 ...

  2. simscape电池建模_一种基于Simscape平台的电池建模方法

    一种基于Simscape平台的电池建模方法 [专利摘要]本发明公开了一种基于Simscape平台的电池建模方法,包括以下步骤:HPPC试验提取等效电路模型中参数:电池道路循环工况老化试验,每次循环后测 ...

  3. spark集群访问mysql_一种Spark并行访问MPP数据库的方法与流程

    本发明涉及数据库 技术领域: :,具体来说,涉及一种Spark并行访问MPP数据库的方法. 背景技术: ::从关系数据库读取数据,Spark可以使用DataFrame和JdbcRDD等方法.这些方法在 ...

  4. bga焊盘怎么做_一种bga焊盘封装结构的制作方法

    一种bga焊盘封装结构的制作方法 [专利摘要]本实用新型公开了一种BGA焊盘封装结构,包括若干焊盘,焊盘的内部设有阻焊层,走线穿过焊盘与阻焊层连接.本实用新型增大了焊盘的有效面积,增大其与PCB基材的 ...

  5. 树展示 移动端_一种手机端树形数据结构的展现方法与流程

    本发明涉及数据结构的展现领域,尤其涉及一种手机端树形数据结构的展现方法. 背景技术: 在企业中,组织结构表现为部门.员工.职称等一种群体关系图,它形象的反映了企业内部各部门和员工上下左右之间的相互关系 ...

  6. matlab半物理仿真,一种基于Matlab的半物理仿真方法与流程

    本发明属于物理建模技术领域,具体涉及一种基于Matlab的半物理仿真方法. 背景技术: 当今汽车行业,经过多年探索,业界普遍采用基于模型的控制器开发"V"模式,如图5所示.该模式可 ...

  7. matlab波特一致性,一种基于MATLAB的数据一致性的分析方法与流程

    本发明属于电机性能数据的处理和分析技术领域,尤其涉及一种基于 MATLAB的数据一致性的分析方法. 背景技术: MATLAB是一种基于算法开发.数据可视化.数据分析以及数值计算的计算机高级编程语言和交 ...

  8. python 回声程序_一种回声消除系统及回音消除方法与流程

    本发明涉及通信技术领域,具体涉及一种回声消除系统及回音消除方法. 背景技术: 回声消除器通常由滤波器和算法组成,根据具体应用和性能要求的不同可以有多种选择. 滤波器有FIR(有限长度冲激晌应)滤波器和 ...

  9. dncnn图像去噪_一种基于DnCNNs改进的图像降噪方法与流程

    本发明涉及图像处理技术领域,具体涉及一种基于dncnns改进的图像降噪方法. 背景技术: 随着科技进步,新的图像技术在逐渐推广,在日常生活中人们对于图像的要求也越来越高,针对阴天或夜晚等弱光条件下拍摄 ...

最新文章

  1. python获取docx文档的内容(文本)
  2. OER 7451 in Load Indicator : Error Code = OSD-0450
  3. 利用Cydia Substrate进行Android HOOK (1)
  4. linux 查询内存和核心数,Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数...
  5. Faster RCNN原理分析(二):Region Proposal Networks详解
  6. nslang oracle_RAC11g+DG 高可用容灾方案部署
  7. js-权威指南学习笔记7
  8. 如何在vue项目中使用sass(scss)
  9. Linux编程(6)_makefile
  10. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException
  11. slk文件转换器安卓版_CoolUtils Total Excel Converter下载
  12. jQuery 遍历 - find() 方法
  13. 在没有中介平台比如Paypal/支付宝前提下,如何说服客户先付款?--猜疑链带来的思考
  14. 机器人笔记psv中文_《机器人笔记》白金攻略 机器人笔记奖杯攻略
  15. python操作word详细操作_Python操作Word的入门教程
  16. 工作日志1——项目前景、项目范围、涉众分析、硬数据采集
  17. CISSP考点拾遗——介质净化
  18. SG函数和SG定理【详解】
  19. 原始值(primitive value)
  20. 实战录 | 浅谈前端项目构建与优化

热门文章

  1. python语言程序设计实践教程答案实验六_20192417 实验一《Python程序设计》实验报告...
  2. oracle判断数据表的字段内容是否为空
  3. 计算机应用能力大纲,计算机应用能力水平考试大纲.doc
  4. linux中vi大括号enter缩进,格式 – 如何在vi中对齐代码(大括号,括号等)?
  5. 计算机保存的信息是模拟信号,信息技术考试样题(附解析).doc
  6. 阮一峰es6电子书_ES6理解进阶【大前端高薪训练营】
  7. centos MySQL 双机_CentOS利用Keepalived构建双主MySQL+双机热备
  8. elementui 加载中_ElementUI cascader级联动态加载回显和搜索看这个就够了
  9. java代码的运行顺序_java中的代码块执行顺序
  10. Oracle数据库修改字段类型