CN114707128A - 一种数据库访问方法、相关设备、存储介质及程序产品 - Google Patents

一种数据库访问方法、相关设备、存储介质及程序产品 Download PDF

Info

Publication number
CN114707128A
CN114707128A CN202210335745.8A CN202210335745A CN114707128A CN 114707128 A CN114707128 A CN 114707128A CN 202210335745 A CN202210335745 A CN 202210335745A CN 114707128 A CN114707128 A CN 114707128A
Authority
CN
China
Prior art keywords
database
target
access
target object
target database
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
Application number
CN202210335745.8A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210335745.8A priority Critical patent/CN114707128A/zh
Publication of CN114707128A publication Critical patent/CN114707128A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例公开了一种数据库访问方法、相关设备、存储介质及程序产品,可应用于云技术、人工智能、智慧交通等场景。其中,方法包括:接收目标对象针对目标数据库发起的访问请求,该访问请求携带目标对象的身份信息;响应于访问请求,向权限管理设备发送针对目标对象的权限获取请求;接收权限管理设备发送的目标对象的访问权限信息;若访问权限信息指示目标对象被允许访问目标数据库,则向密钥管理设备请求获取目标数据库的签名数据;基于获取到的签名数据和目标对象的身份信息,确定目标对象访问目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对目标数据库进行访问,可保证被访问的数据库的安全性。

Description

一种数据库访问方法、相关设备、存储介质及程序产品
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据库访问方法、相关设备、存储介质及程序产品。
背景技术
在互联网技术的发展过程以及应用过程中,各类互联网产品的相关数据通常会存储在相应的数据库中以供互联网产品的用户来使用,或者供数据库管理员来进行管理与分析。在实际应用中,一个数据库中通常会存储大量的数据,这些数据蕴含着较大的价值,并且这些数据在互联网产品的正常运行中占有举足轻重的地位。因此,如何保证数据库及相关数据的安全性成了当下的研究热点话题。
发明内容
本申请实施例提供了一种数据库访问方法、相关设备、存储介质及程序产品,可保证被访问的数据库的安全性。
一方面,本申请实施例提供了一种数据库访问方法,包括:
接收目标对象针对目标数据库发起的访问请求,所述访问请求携带所述目标对象的身份信息;
响应于所述访问请求,向权限管理设备发送针对所述目标对象的权限获取请求,所述权限管理设备存储有至少一个对象的访问权限信息;
接收所述权限管理设备发送的所述目标对象的访问权限信息,所述访问权限信息用于指示所述目标对象是否被允许访问所述目标数据库;
若所述访问权限信息指示所述目标对象被允许访问所述目标数据库,则向签名数据管理设备请求获取所述目标数据库的签名数据,所述签名数据管理设备存储有至少一个数据库的签名数据;
基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对所述目标数据库进行访问。
再一方面,本申请实施例提供了一种数据库访问装置,包括:
接收单元,用于接收目标对象针对目标数据库发起的访问请求,所述访问请求携带所述目标对象的身份信息;
发送单元,用于响应于所述访问请求,向权限管理设备发送针对所述目标对象的权限获取请求,所述权限管理设备存储有至少一个对象的访问权限信息;
所述接收单元,还用于接收所述权限管理设备发送的所述目标对象的访问权限信息,所述访问权限信息用于指示所述目标对象是否被允许访问所述目标数据库;
获取单元,用于若所述访问权限信息指示所述目标对象被允许访问所述目标数据库,则向签名数据管理设备请求获取所述目标数据库的签名数据,所述签名数据管理设备存储有至少一个数据库的签名数据;
处理单元,用于基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对所述目标数据库进行访问。
一方面,本申请实施例提供了一种计算机设备,包括:
处理器,所述处理器用于实现一条或多条计算机程序;
计算机存储介质,所述计算机存储介质存储有一条或多条计算机程序,所述一条或多条计算机程序适于由所述处理器加载并执行如第一方面所述的数据库访问方法。
一方面,本申请实施例还提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条计算机程序,所述一条或多条计算机程序适于由所述处理器加载并执行如第一方面所述的数据库访问方法。
一方面,本申请实施例提供了一种计算机产品,所述计算机产品包括计算机程序,所述计算机程序适于由处理器加载并执行如第一方面所述的数据库访问方法。
在本申请实施例中,计算机设备在响应目标对象针对代理的目标数据库发起的访问请求时,可以从权限管理设备中获取目标对象的访问权限信息,并在获取到的访问权限信息指示目标对象可以访问目标数据库时,进一步从签名管理设备中获取目标数据库的签名数据,以基于目标数据库的签名数据以及目标对象的身份信息来为该目标对象选择相应的数据库账户信息,从而使得计算机设备可以通过选择出的数据库账户信息来对目标数据库进行访问。可见,计算机设备在响应针对目标数据库的访问请求时,需要获得权限管理设备以及签名数据管理设备的认可,任一设备拒绝向计算机设备提供数据或向计算机设备提供错误数据则会导致计算机设备无法成功响应访问请求,从而使得目标数据库无法被访问。因此,在计算机设备、权限管理设备以及签名数据管理设备三者之间配合完成目标对象所需的数据库账户信息的确定之前,目标数据库都不会收到任何与目标对象相关的操作的影响,从而使得整个代理过程中目标数据库的受干扰率得到降低,有效提升了目标数据库的稳定性。此外,由于对目标数据库的访问需要采用相应的数据库账户信息,而数据库账户信息需要计算机设备、权限管理设备以及签名数据管理设备三者之间配合才能确认,因此不难理解,本申请实施例提供的数据库访问方法可以避免响应访问请求的权限过于集中,进而可以避免因某一设备出现安全隐患而导致数据库的安全受到影响,从而也就可以保证被代理的数据库的安全性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种数据库访问系统的结构示意图;
图1b是本申请实施例提供的又一种数据库访问系统的结构示意图;
图2是本申请实施例提供的一种数据库访问方法的示意流程图;
图3是本申请实施例提供的一种数据库访问流程的时序示意图;
图4是本申请实施例提供的又一种数据库访问方法的示意流程图;
图5a是本申请实施例提供的一种创建数据库账户的流程示意图;
图5b是本申请实施例提供的一种对数据库服务器中的数据库进行访问代理的时序图;
图5c是本申请实施例提供的一种对数据库服务器进行托管的流程示意图;
图5d是本申请实施例提供的一种对数据库管理账户信息进行加密存储的流程示意图;
图5e是本申请实施例提供的一种对数据库管理账户信息进行解密处理的流程示意图;
图6a是本申请实施例提供的一种计算机设备响应访问请求的流程示意图;
图6b是本申请实施例提供的一种计算机设备在响应访问请求的过程中执行访问语句的流程示意图;
图7是本申请实施例提供的一种数据库访问装置的结构示意图;
图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请实施例所提供的方法,下面将结合本申请实施例中的附图,对本申请实施例中的技术方法进行清楚、完整地描述。需要说明的是,本申请实施例中描述的各个具体实施例只是本申请一部分实施例,而不是全部的实施例。基于本申请中的各个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了在对数据库进行访问时保证数据库的安全性,本申请实施例提出了一种数据库访问方法,采用该数据库访问方法对数据库进行访问时,需要从不同的设备中获取用于身份鉴别的相关鉴权数据,这些不同的设备分别交由不同的管理方进行管理,可以避免由于某一方的数据泄露而对数据库的安全带来安全隐患。那么,由于本申请实施例提供的数据库访问方法可以保证数据库具备较高的安全性,因此,本申请实施例提供的数据库访问方法可以在多种应用场景下进行应用,这多种应用场景可以包括但不限于以下任意一种或多种:云技术、人工智能、智慧交通等。并且具体应用中,本申请实施例可以用于构建数据运营平台,使得数据运营平台可以采用本申请实施例提供的数据访问方法对多个数据库进行访问代理,以保证被代理的数据库的安全性。其中,被代理的数据库可以是关系型数据库(即:SQL数据库),也可以是非关系型数据库(即:Not Only SQL,NoSQL数据库)。示例性的,数据运营平台可以是SQLink(Safe Query Link,安全查询连接)平台。
在本申请实施例的具体实现中,可以采用计算机设备来执行本申请实施例提供的数据库访问方法。其中,计算机设备可以包括但不限于终端设备和服务器,也就是说,计算机设备可以是终端设备,也可以是服务器,当然还可以是终端设备和服务器组成的计算系统,本申请实施例对此不作限制。具体地,在本申请实施例中,终端设备可以包括但不限于:智能手机、平板电脑、笔记本电脑、台式计算机、车载终端、智能语音交互设备、智能家电、飞行器等。在具体实施例中,终端设备内还可以运行各式各样的应用程序(Application,APP)和/或客户端,如:多媒体播放客户端、社交客户端、浏览器客户端、信息流客户端、教育客户端以及图像处理客户端,等等。上述提及的服务器可以包括但不限于:独立的物理服务器,多个物理服务器构成的服务器集群或者分布式系统,提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器等。可以理解的是,本申请实施例中对执行数据库访问方法时所采用的计算机设备不作具体限制,具体应用时可以根据实际应用场景对上述提及的相关设备进行灵活组合及运用。
以下基于上述描述来对本申请实施例提供的数据库访问方法的原理进行大致阐述,以使得相关人员可以更清楚地了解本申请实施例的相关实现方式。
在本申请实施例中,计算机设备可以在接收到目标对象针对目标数据库的访问请求之后,确定目标对象的身份信息,以使得计算机设备可以根据获取到的身份信息从权限管理设备中获取该目标对象的访问权限信息,进而计算机设备可以确定出该目标对象被允许访问的数据库。其中,计算机设备获取访问权限信息的主要目的是为了确定目标对象是否可以访问目标数据库。若确定出的访问权限信息指示目标对象不可以访问目标数据库,那么,计算机设备可以拒绝目标对象对目标数据库的访问。对应地,若确定出的访问权限信息指示目标对象可以访问目标数据库,那么,计算机设备则可以从签名数据管理设备中获取目标数据库的签名数据,以使得计算机设备可以基于获取到的签名数据和目标对象的身份信息,来共同确定目标对象访问目标数据库时所需的目标数据库账户信息。在计算机设备确定出目标数据库账户信息之后,计算机设备可以通过确定出的目标数据库账户信息对目标数据库进行访问,从而实现目标对象对目标数据库的访问。示例性地,在计算机设备确定出目标数据库账户信息之后,计算机设备可以为目标对象登录目标数据库账户信息所指示的数据库账号,以实现目标对象通过该数据库账号对目标数据库进行访问。
其中,本申请实施例中的计算机设备、权限管理设备和签名数据管理设备分别交由不同的管理方进行管理。具体来说,计算机设备可以为数据库代理方所管理,数据库代理方主要用于在计算机设备中创建代理实例,以使得计算机设备可以通过代理实例对数据库进行访问代理。代理实例本质上可以理解为程序代码,其主要用于按照程序代码设定的执行逻辑去响应被代理的数据库的访问请求,以建立发起请求的设备与请求访问的数据库之间的数据连接。那么,也就是说,计算机设备响应目标对象的访问请求时,可以通过相应的代理实例建立目标对象所在终端设备与目标数据库的数据连接,以此来实现目标对象对目标数据库的访问。权限管理设备可以为权限管理方所管理,权限管理方可以为任一对象配置访问权限信息,以使得计算机设备可以向权限管理设备请求获取目标对象相关的访问权限信息。在实际应用中,权限管理设备在为任一对象配置相关的访问权限信息时,可以先征求数据库管理方的同意。数据库管理方可以理解为创建数据库或对数据库进行实际管理的管理方。那么,也就是说,权限管理设备中对象的访问权限信息可以是数据库管理方赋予的。示例性地,访问权限信息可以包括但不限于以下任意一种或多种:允许访问的数据库,允许对数据库发起访问的时间段等。签名数据管理设备主要为签名数据管理方所管理,签名数据管理方可以在签名数据管理设备中存储数据库的签名数据,在具体实现中,数据库的签名数据可以是用于代理该数据库的代理实例所关联的签名数据。签名数据主要用于对相应数据库的相关数据进行加密和/或解密,从而保障数据库的基础安全性。基于上述描述可见,计算机设备、权限管理设备和签名数据管理设备分别掌控在不同的管理方,在计算机设备响应对计算机设备所代理的数据库发起的访问请求时,计算机设备需要从不同的管理方请求获取相应的鉴权数据后,才可以允许目标对象访问相应的数据库。那么,也就不难看出,任何一方的数据出现泄露都无法造成数据库被通过非安全性的渠道进行访问,因此,在对数据库进行访问代理时,采用本申请实施例提供的数据库访问方法可以有效地保障被访问的数据库的安全性。
在一个实施例中,上述数据库访问方法可以应用于如图1a所示的数据库访问系统中。如图1a所示,该系统可以包括访问代理设备101(即:上述提及的用于执行数据库访问方法的计算机设备)、签名数据管理设备102、权限管理设备103以及数据库管理设备104。其中,数据库管理设备104和权限管理设备103可以建立通信连接,以使得数据库管理人员可以通过数据库管理设备104在权限管理设备103中为对象配置相关的访问权限信息。数据库管理设备104还可以与访问代理设备101建立通信连接,以使得数据库管理设备104可以委托访问代理设备101对数据库管理设备104管理的相关数据库进行访问代理,进而使得相关数据库可以通过本申请实施例提供的数据库访问方法被访问,以保证相关数据库的安全性。数据库管理设备104还可以与签名数据管理设备102建立通信连接,以使得数据库管理人员可以通过数据库管理设备104在签名数据管理设备102中配置数据库的签名数据,从而使得该数据库的数据库相关信息(如:数据库中的重要数据和/或后续提及的数据库管理账户信息等)可以得以加密存储,进一步保证了数据库的安全性。此外,基于图1a不难看出,访问代理设备101和权限管理设备103之间也可以建立有通信连接,使得访问代理设备101可以向权限管理设备103请求获取相关对象的访问权限信息,同理地,访问代理设备101和签名数据管理设备102也可以建立通信连接,使得访问代理设备101可以向签名数据管理设备102请求获取相应数据库的签名数据。
在又一个实施例中,在本申请实施例的具体应用中,计算机设备还可以在目标对象对目标数据库的访问过程中,监测并记录该目标对象的访问操作所产生的操作信息,以使得目标数据库的每一次访问都是有迹可循的,便于后续针对目标数据库执行相关审计工作。示例性地,目标对象的访问操作所产生的操作信息可以记录于日志记录设备中。那么,在此情况下,本申请实施例还可以应用于如图1b所示的数据库访问系统中。如图1b所示,该系统除了包括图1a所示的系统中的权限管理设备、签名数据管理设备、访问代理设备和数据库管理设备之外,还可以包括:日志记录设备,身份防火墙和终端设备。其中,目标对象可以采用终端设备发起针对目标数据库的访问请求;身份防火墙可以用于甄别和/或授权终端设备中各对象的身份信息。示例性地,实现身份防火墙的技术可以包括但不限于:代理、虚拟专用网络(VPN)、活动目录(Active Directory)、OAuth(一种开放的协议)以及OpenID(一种数字身份识别框架)等。终端设备可以与身份防火墙建立通信连接,使得身份防火墙可以基于终端设备发送的访问请求,对发起访问请求的目标对象进行身份甄别,以确定出该目标对象的身份信息。日志记录设备可以用于记录访问代理设备对数据库进行代理的过程中,与数据库相关的一切修改信息和访问信息等。那么,日志记录设备可以与访问代理设备建立通信连接,以使得日志记录设备可以接收并记录相关的修改信息或监测并记录相关的访问操作,当然,日志记录设备还可以与签名数据管理设备及权限管理设备也建立通信连接,本申请实施例对此不作限制。
需要说明的是,在实际应用中,终端设备可以和数据库管理设备是同一设备,也就是说,对数据库进行管理的设备和发起访问请求的设备可以是同一个;日志记录设备也可以和访问代理设备是同一设备。在此情况下,一个设备可以集成多个功能,从而可以精简整个系统的结构,在一定程度上可以提升对相关运维人员对数据库访问系统进行维护的难度及成本。此外,还需要说明的是,在本申请实施例的数据库访问系统中,各个设备之间进行数据传输时所采用的数据格式可以包括但不限于以下任意一种或多种:JSON、XML、MessagePack、Protobuf等。
基于上述关于数据库访问方法的原理,本申请实施例提出了一种数据库访问方法,该方法可以由计算机设备(或:访问代理设备)执行。具体地,该数据库访问方法的执行流程可以参见图2,如图2所示,该方法可以包括步骤S201-S205:
S201,接收目标对象针对目标数据库发起的访问请求,访问请求携带目标对象的身份信息。
在具体实现中,目标对象可以是任一个被允许向目标数据库发起访问请求的对象。具体来说,目标对象可以是数据库所在业务服务的服务对象(如:音乐播放服务的使用对象),也可以是该业务服务的管理对象(如:音乐播放服务的开发对象或运维对象等)等。目标数据库可以是任一个可以被计算机设备进行访问代理的数据库,访问代理可以理解为:采用计算机设备来响应针对相应数据库的访问操作,以通过计算机设备建立起发起访问请求的目标对象所在终端设备与相应数据库之间的通信连接,从而实现相应对象对数据库的访问。其中,访问请求可以是目标对象采用终端设备发起的,该终端设备与计算机设备建立有通信连接,以使得计算机设备可以接收到目标对象针对目标数据库发起的访问请求,具体应用中,终端设备中还可以运行有相关的客户端或者网页,因此,目标对象可以具体通过终端设备中的客户端或网页向计算机设备发起访问请求。访问请求可以携带目标对象的身份信息,身份信息可以用于指示目标对象是否为对目标数据库进行数据库管理的管理对象,或者用于指示目标对象是否具备对目标数据库进行数据库管理的权限等。那么,可以理解,在实际应用中的身份信息具体可以包括但不限于以下一种或多种信息:目标对象的对象标识以及目标对象是否为管理对象等。
其中,对象标识与目标对象一一对应,也就是说,一个对象标识可以唯一标识一个对象,一个对象也可以只具备一个对象标识。这可以使得计算机设备能够基于对象标识准确无误地获取到与目标对象相关的对象信息,对象信息可以如:访问权限信息。管理对象指的是在目标数据库所属数据库管理设备中对目标数据库进行管理的对象,对应地,可以访问目标数据库但不具备对目标数据库的管理权限的对象则可以称为非管理对象。可以理解的是,管理对象所具备的访问权限信息所指示的访问权限通常会大于非管理对象所具备的访问权限信息所指示的访问权限。基于此,可以理解,身份信息包括目标对象是否为管理对象,可以有助于计算机设备快速地确定相应访问请求的响应优先级,响应优先级越高的访问请求计算机设备越先响应。那么,可理解的是,为了及时制止和阻断某一对象对目标数据库发起的具有安全隐患的访问请求,在通常情况下,管理对象的访问请求的响应优先级可以大于非管理对象的访问请求的响应优先级。
以下结合具体示例对身份信息用于指示目标对象是否为管理对象的意义进行详细说明。在本示例中,假设对象A(非管理对象或其他类型的对象)向目标数据库发起了一个访问请求,该访问请求携带了恶意程序指令,该恶意程序指令可以用于损坏数据库中数据的存储格式。那么,当目标数据库的管理对象检测到这一风险行为之后,该管理对象可以向计算机设备发起一个访问请求,该访问请求可以携带阻断响应的程序指令,该阻断响应的程序指令可以用于指示计算机设备拒绝响应对象A发起的访问请求,或用于指示计算机设备对目标数据库的地址信息进行临时更改,以阻断对象A对目标数据库的访问路径,从而维护目标数据库的安全性的目的。那么,在此情况下,若计算机设备同时接收到了对象A的访问请求及管理对象的访问请求,或者,若计算机设备中同时存在对象A的访问请求及管理对象的访问请求待响应,计算机设备可以优先响应管理对象的访问请求,从而避免目标数据库被执行恶意程序指令,保证目标数据库的安全性。
S202,响应于访问请求,向权限管理设备发送针对目标对象的权限获取请求。
在计算机设备接收到访问请求之后,可以解析该访问请求以获取访问请求中携带的目标对象的身份信息。由于身份信息可以包括目标对象的对象标识,且对象标识与目标对象是一一对应关系,因此,计算机设备对访问请求解析后还可以得到目标对象的对象标识,进而计算机设备可以根据得到的对象标识生成相应的权限获取请求。也就是说,权限获取请求可以携带目标对象的对象标识和/或身份信息,那么,权限管理设备也就可以根据目标对象的对象标识从相应的存储空间(如:云空间、本地存储空间)中查询目标对象的访问权限信息,从而响应目标对象的权限获取请求。
其中,权限管理设备中存储有至少一个对象的访问权限信息,这至少一个对象可以包括目标数据库所在业务服务的服务对象和管理对象中的一种或多种,当然,目标对象可以存在于这至少一个对象中。此外可以理解,在其他实施方式或其他应用场景中,这至少一个对象也可以包括其他可以被计算机设备执行访问代理的数据库所在业务服务的服务对象和/或管理对象等。在此情况下,也就可以理解,本申请实施例中的计算机设备可以对多个数据库执行访问代理,这多个数据库中可以包括目标数据库。那么,进一步也就可以理解,权限管理设备中当然也可以存储其他数据库所在业务服务器的服务对象和/或管理对象的访问权限信息等。此处提及的其他数据库具体可以包括:多个数据库中除目标数据库以外的数据库。那么,也就是说,权限管理设备中也就可以存储一个或多个对象的访问权限信息。
在具体应用中,任一访问权限信息可以是和某一对象关联存储的,示例性地,权限管理设备可以将目标对象的对象标识与目标对象的访问权限信息进行关联存储,以使得权限管理设备可以根据任一对象的对象标识获取到相应的访问权限信息。任一对象的访问权限信息可以用于指示该对象可以访问的数据库,也可以用于指示该对象是否被允许访问目标数据库。可选地,当访问权限信息用于指示相应对象可以访问的数据库时,访问权限信息可以包括一个或多个数据库的数据库标识,也可以包括一个或多个数据库的访问路径。当然,任一对象的访问权限信息也可以为空,这意味着该对象不具备访问任何数据库的权限,本申请实施例对访问权限信息的具体内容以及具体存储形式并不作具体限制。需要说明的是,在实际应用中,权限管理设备中存储的访问权限信息,可以是权限管理设备接收到相关对象的访问权限申请请求后才配置的。
为了便于清楚地了解本申请实施例的相关实现方式,以下将结合具体示例来对目标对象向权限管理设备申请配置与目标数据库相关的访问权限信息的具体方式进行简单说明。具体来说,目标对象可以通过与权限管理设备建立有通信连接的终端设备,向权限管理设备申请相应的访问权限。示例性地,目标对象可以通过终端设备向权限管理设备发送访问权限申请请求,该请求携带待配置的访问权限信息以及目标对象的身份信息。当权限管理设备接收到该访问权限申请请求之后,可以根据目标对象的身份信息来预测目标对象的权限信息,从而基于预测出的权限信息确定是否需要为该目标对象配置相应的待配置访问权限信息。
可选地,在其他实现方式中,计算机设备也可以在接收到访问权限申请请求后,向目标数据库的数据库管理设备发送权限授予请求,以使得数据库管理设备可以在接收到权限授予请求之后确定是否授予目标对象申请的访问权限,并将授予结果反馈至权限管理设备,进而使得权限管理设备可以根据授予结果为目标对象配置合理的访问权限信息。其中,权限管理设备为目标对象配置的访问权限信息,即为授予结果中包含的已授予的访问权限信息。在实际应用中,权限管理设备具备权限申请、权限审批、权限审计以及权限清理的功能,由于,权限管理设备中存储的目标对象的访问权限信息都是经过数据库管理方的认可的,也就是说,每个对象的访问权限信息本质上可以理解为掌握在数据库管理方的,因此不难理解,将访问权限信息存储在权限管理设备中是安全可靠的。在其他实施例中,权限管理设备中存储的访问权限信息也可以是通过其他方式配置的,如:由数据库管理设备为每个与目标数据库关联的对象配置默认的访问权限信息,本申请实施例对此不作限制。
基于上述描述可见,本申请实施例中对于不同的对象可以分配不同级别的权限信息,如:对于数据库管理员、代理平台研发人员、数据运营人员等多种类型的对象分配不同级别的权限信息。这可以有效避免被代理的数据库被发起恶意访问,从而在数据库被正式访问之前保证了该数据库的安全性。
S203,接收权限管理设备发送的目标对象的访问权限信息,访问权限信息用于指示目标对象是否被允许访问目标数据库。
计算机设备接收到的访问权限信息可以是权限管理设备在响应权限获取请求之后发送至计算机设备处的。示例性地,权限管理设备可以响应于计算机设备发送的权限获取请求,生成包括目标对象的访问权限信息的响应结果,并将该响应结果发送至计算机设备。在具体实现中,权限管理设备响应权限获取请求的方式可以是:权限管理设备在接收到权限获取请求之后,从权限获取请求中解析出目标对象的对象标识,然后,权限管理设备可以基于对象标识查询与该对象标识关联的访问权限信息。在权限管理设备查询到访问权限信息之后可以生成相应的响应结果发送至计算机设备,以使计算机设备可以在接收到响应结果之后获取响应结果包括的目标对象的访问权限信息,从而使得计算机设备可以确定目标对象是否被允许访问目标数据库。
S204,若访问权限信息指示目标对象被允许访问目标数据库,则向签名数据管理设备请求获取目标数据库的签名数据。
在一个实施例中,若计算机设备接收到的访问权限指示目标对象可以访问目标数据库,则计算机设备可以向签名数据管理设备请求获取目标数据库的签名数据,进而使得计算机设备可以基于签名数据解析出与目标数据库相关的数据库账户信息。其中,签名数据可以理解为密钥,主要用于对目标数据库相关的信息(如:数据库账户信息、数据库中的数据)进行加密和解密。那么,在此情况下,签名数据管理设备则可以为密钥管理设备(KMS,Key Management System),密钥管理设备中存储的密钥也可以称为KMS关键数据。密钥管理设备是一种适用于保管机密内容的专用基础设施,在本申请实施例中,密钥管理设备的管理方和计算机设备(如:访问代理设备)的管理方不是同一个,这体现了本申请实施例中对数据库进行访问时所应用的权限分离的思想,可以理解,权限分离可以避免某一方拥有过高的权限或过多的重要数据,因此,也就可以避免因为某一方的数据泄露而造成数据库的安全性存在隐患的问题,从而也就可以提升数据库的安全性。
在此情况下,需要说明的是,在一种实现方式中,签名数据管理设备中的签名数据可以是与代理实例进行关联存储的(如:一个代理实例的实例标识关联存储一个签名数据)。那么,也就是说,目标数据库的签名数据可以是用于代理目标数据库的代理实例所关联的签名数据。在此情况下,计算机设备向签名数据管理设备请求获取目标数据库的签名数据时,计算机设备可以在确定出代理目标数据库的代理实例后,再向签名数据管理设备请求获取与代理实例关联的签名数据,以得到目标数据库的签名数据。当然,也可以由签名数据管理设备在响应计算机设备的请求时,确定用于代理目标数据库的代理实例,并进一步获取与确定出的代理实例关联的签名数据作为目标数据库的签名数据发送给计算机设备,从而使得计算机设备可以成功获取到目标数据库的签名数据。在又一种实现方式中,目标数据库的签名数据在签名数据管理设备中也可以是与目标数据库的数据库标识关联存储的,并且在具体实现中,一个签名数据可以关联一个数据库,也可以关联多个数据库。那么,也就是说,在本申请实施例中可以存在多个数据库的签名数据相同的情况,本申请实施例对签名数据和数据库之间是一对一的关系还是一对多的关系并不做具体限制。
在无特殊说明的情况下,为了便于说明,以下实施例中均以签名数据与代理实例关联存储为例,来对本申请实施例的其他步骤进行详细说明。又为了便于清楚地理解本申请实施例的相关实现方式,以下对本申请实施例中代理实例、目标数据库以及计算机设备三者之间的关系进行描述:计算机设备可以构建一个或多个代理实例,每个代理实例可以用于对至少一个数据库进行访问代理,当然,这至少一个数据库中可以包括目标数据库。基于前述可知,代理实例本质上可以看作是程序代码,那么,对于计算机设备构建的一个或多个代理实例中的不同代理实例,其采用的响应方式或响应逻辑可以不相同。因此,当签名数据与代理实例关联存储时,不同的代理实例对应的签名数据可以不相同,被不同代理实例所代理的数据库的签名数据也就可以不相同。对应地,也就不难理解,对于被同一代理实例所代理的各个数据库,其签名数据可以是相同的,也就是说不同的数据库的签名数据可以相同。举例来说,假设计算机设备创建了代理实例A和代理实例B,且在签名数据管理设备中与代理实例A关联的签名数据为签名数据1,与代理实例B关联的签名数据为签名数据2。在此基础上,本示例进一步假设代理实例A用于代理数据库a和数据库b,代理实例B用于代理数据库c。那么,在此情况下,若目标数据库为数据库a或数据库b,则计算机设备获取到的目标数据库的签名数据可以为签名数据1;若目标数据库为数据库c,则计算机设备获取到的签名数据则可以为签名数据2。
S205,基于获取到的签名数据和目标对象的身份信息,确定目标对象访问目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对目标数据库进行访问。
在本申请实施例中,目标数据库账户信息可以包括数据库账户标识以及数据库账户密码,那么,计算机设备通过确定出的目标数据库账户信息对目标数据库进行访问的方式,则可以是计算机设备为目标对象登录目标数据库账户信息所指示的数据库账户,以通过该数据库账户与目标数据库建立通信连接,从而实现目标对象对目标数据库的访问。并且需要说明的是,不同身份信息的对象采用的数据库账户不同。具体来说,当身份信息指示目标对象为管理对象时,目标对象采用的数据库账户可以是对目标数据库进行数据库管理的数据库管理账户;当身份信息指示目标对象为非管理对象时,目标对象采用的数据库账户可以是计算机设备构建的通用数据库账户。实际应用中,计算机设备可以为一个计算机设备构建一个通用数据库账户,那么,也就是说,当向目标数据库发起访问请求的对象为非管理对象时,其采用的数据库账户可以是固定的通用数据库账户,不会因为对象的不同而发生改变。举例来说,可以访问目标数据库的对象有对象A和对象B,且对象A和对象B均为非管理对象。那么,计算机设备在响应于对象A针对目标数据库发起的访问请求时,可以通过登录目标数据库的通用数据库账户来实现对象A对目标数据库的访问;同理地,对于对象B,计算机设备也可以通过登录目标数据库的通用数据账户来实现对象B对目标数据库的访问。可见,只要是非管理对象,其在访问目标数据库时所使用的数据库账户可以相同。当然,在其他实施例中,计算机设备也可以为目标数据库创建多个通用数据库账户,使得任一对象可以通过任一通用数据库账户对目标数据库进行访问。但需要说明的是,为了便于系统维护以及数据安全性管理,在本申请实施例中,优先考虑为一个数据库创建一个通用数据库账户的方式。
基于此不难理解,在计算机设备对目标数据库进行访问代理期间,计算机设备可以通过维护两个数据库账户(通用数据库账户和数据库管理账户)来保证可以成功地响应任一对象针对目标数据库发起的访问请求,这种方式可以减少计算机设备需要维护的数据库账户的数量,进而使得计算机设备在维护一个数据库账户时可以分配的资源更多,也就在一定程度上提升了计算机设备对数据库账户的相关信息进行维护时的安全性。又由于计算机设备在确定这两个数据库账户中任一数据库账户时,都需要先获取签名数据,然后计算机设备可以基于签名数据确定相应的数据库账户,这避免了直接对数据库账户的账户信息进行存储,从而也就可以降低因为数据库账户泄露而导致目标数据库被非正常访问的概率,进一步地也就可以保证目标数据库的安全性。
在本申请的一个具体实施例中,计算机设备还可以在目标对象访问目标数据库的过程中,监测并记录目标对象针对目标数据库执行的一切访问操作。示例性地,计算机设备可以采用日志记录设备来存储相关的访问记录,这可以使得目标数据库的访问记录可以回溯,从而使得目标数据库的所有访问操作均可以被进行审计工作,可以进一步保证目标数据库的安全性。日志记录设备可以是基于简单的磁盘日志文件和/或复杂的分析型数据仓库等构建的,还可以是基于多个日志系统组合构建的。举例来说,本申请实施例中的日志记录设备可以使用Kafka(卡夫卡,一种分布式消息系统)来收集查询概要,以及使用Clickhouse(一个用于联机分析的列式数据库管理系统)来完成数据的存储、聚合、查询;当然,在具体应用中,计算机设备也可以在没有日志需求时舍弃日志组件,或在需要对数据库进行访问的对象数量较少或对象固定时,根据实际情况使用数据库内账号审计相关数据运营平台(如:SQLink)在数据库侧创建的数据库账号而精简日志记录设备的结构,本申请实施例对此不作具体限制。
为了便于相关人员可以更加清楚地理解上述关于图2所示的数据库访问方法的具体执行流程,以下结合图3所示的时序图以及具体示例,来对图2所示的数据库访问方法的执行流程进行更为完整详细的阐述。但需要说明的是,图3所示的时序图以及相关描述仅为本申请实施例的执行流程的一个示例性说明,不能作为对本申请实施例的限定。在本示例中,假设目标对象的访问权限信息包括目标对象可以访问的所有数据库的数据库标识;签名数据为KMS关键数据;目标对象在访问目标数据库时可以执行相关的脚本,脚本(Script)可以指使用一种特定的描述性语言,依据一定的格式编写的可执行文件,在本申请实施例中也可以理解为访问语句。
基于此,请参见图3,图3中终端设备为目标对象向目标数据库发起访问请求的通讯设备;访问代理设备为对目标数据库进行访问代理及响应目标对象针对目标数据库发起的访问请求的设备,示例性地,其可以为上述执行本申请实施例的计算机设备;权限管理设备为存储目标对象的访问权限信息的设备;密钥管理设备为上述提及的签名数据管理设备,密钥管理设备中的KMS关键数据即为本申请实施例中的签名数据;数据库服务器为目标数据库所在的服务器,日志记录设备用于记录目标对象对目标数据库执行的访问操作的相关信息。基于图3可见,目标对象对目标数据库进行访问的完整流程可以示例性地包括如下14个步骤:
1.目标对象通过终端设备向权限管理设备申请数据库权限。也就是说,在目标对象发起对目标数据库的访问请求之前,目标对象可以先向权限管理设备申请授予相关的数据库权限,数据库权限可以包括目标对象的访问权限和执行权限,访问权限可以用于指示目标对象被允许访问的一个或多个数据库,执行权限则可以用于指示允许目标对象针对每个数据库执行的具体访问操作,如:访问时间、访问语句的类型、访问语句对目标数据库造成的修改的数据量等。
2.目标对象通过终端设备向访问代理设备申请获取数据库列表。数据库列表可以包括至少一个数据库标识,数据库标识对应的数据库即为目标对象可以访问的数据库。
3.访问代理设备从权限管理设备中查询目标对象的访问权限信息。当访问代理设备检测到目标对象申请获取数据库列表后,访问代理设备可以从权限管理设备中查询到目标对象的访问权限信息。具体地,访问权限信息可以包括数据库列表。需要说明的是,当访问代理设备从权限管理设备查询目标对象的访问权限信息(如:获取数据库列表)时,权限管理设备可以先对访问代理设备进行鉴权处理,并在鉴权通过后允许访问代理设备查询目标对象的访问权限信息,以保证查询访问权限信息的访问代理设备是安全的,进而也就可以在目标对象正式访问目标数据库之前保证目标数据库的安全性
4.权限管理设备返回目标对象的访问权限信息至访问代理设备。在访问代理设备通过权限管理设备的鉴权处理之后,权限管理设备可以允许访问代理设备获取目标对象的访问权限信息,或者,权限管理设备可以在查询目标对象的访问权限信息后,将查询到的访问权限信息返回至访问代理设备。
5.访问代理设备返回数据库列表至终端设备。在访问代理设备查询到目标对象的数据库列表之后,访问代理设备可以将数据库列表返回至终端设备,以使得目标对象可以查看其具备访问权限的数据库,从而使得目标对象可以针对其中的数据库发起执行脚本的请求。
6.目标对象通终端设备向访问代理设备发起执行脚本的请求。目标对象在确定需要访问的目标数据库之后,可以通过终端设备生成相应的执行脚本,并向访问代理设备请求执行这些执行脚本,以完成目标对象想执行的具体的访问操作。
7.访问代理设备从权限管理设备中查询目标对象的执行权限。基于前述可知,权限管理设备中还存储有目标对象的执行权限,执行权限用于指示目标对象可以针对目标数据库执行的具体访问操作。因此,当访问代理设备接收到执行脚本的请求时,访问代理设备可以先从权限管理设备中查询相应的执行权限,以确定是否允许目标对象执行相关的执行脚本。
8.权限管理设备返回目标对象的执行权限至访问代理设备。
9.访问代理设备向密钥管理设备请求获取KMS关键数据。当目标对象具备执行相关脚本的执行权限时,访问代理设备则可以向密钥管理设备获取KMS关键数据,以使得访问代理设备可以基于KMS关键数据确定出目标对象访问目标数据库时所需采用的数据库账户信息。
10.权限管理设备返回KMS关键数据至访问代理设备。
11.访问代理设备使用数据库账号在数据库服务器上执行脚本。
在访问代理设备确定出目标对象所需采用的数据库账户信息之后,访问代理设备可以为目标对象登录相关的数据库账户,以使得访问代理设备可以以相关数据库账户的名义在数据库服务器上执行脚本。
12.数据库服务器向日志记录设备报告访问概要。访问概要可以用于指示目标对象此次针对目标数据库所执行的执行脚本信息,以及执行脚本在执行谷草中的执行信息。示例性地,访问概要的内容可以包括以下任意一种或多种:访问发起时间、访问结束时间、目标对象的对象标识、访问总时长以及脚本执行结果等。在执行脚本的执行过程中,数据库服务器可以不断向日志记录设备报告执行脚本的执行信息,以使得日志记录设备可以及时地记录下相关访问记录,有助于后续对目标数据库的审计工作的开展。
13.数据库服务器返回脚本执行结果至访问代理设备。
14.访问代理设备返回脚本执行结果至终端设备。在执行脚本执行结束后,数据库服务器可以返回脚本执行结果至访问代理设备处,进而使得访问代理设备可以将脚本执行结果反馈给目标对象。
在本申请实施例中,计算机设备在响应目标对象针对目标数据库发起的访问请求时,需要从权限管理设备中获取目标对象的访问权限信息,以确定目标对象是否具备访问目标数据库的访问权限。进一步地,只有在计算机设备确定出目标对象可以访问目标数据库之后,计算机设备才会尝试获取目标对象访问目标数据库时所需采用的数据库账户信息,以使得目标对象可以通过登录数据库账户信息所指示的数据库账户实现对目标数据库的访问。在计算机设备确定数据库账户信息的过程中,计算机设备需要先向签名数据管理设备请求获取目标数据库的签名数据,若获取失败,则计算机设备无法确定出数据库账户信息,从而也就使得目标对象无法访问目标数据库。那么,可见,要实现目标对象对目标数据库的访问,则需要计算机设备从权限管理设备中获取到目标对象被允许访问目标数据库的访问权限信息,以及需要计算机设备从签名数据管理设备中获取到目标数据库的签名数据,访问权限信息和签名数据缺一不可,因此,在本申请实施例提出的数据库访问方法中运用了权限分离的思想,使得数据库访问的流程变得更加严谨,减少了因数据泄露而导致数据库安全性得不到保障的问题。换句话说,采用本申请实施例提供的数据库访问方法,可以有效保证数据库的安全性。
基于上述数据库访问方法,本申请实施例提供了又一种数据库访问方法,该方法也可以由计算机设备执行。请参见图4,如图4所示,该方法可以包括步骤S401-S406:
S401,接收目标对象针对目标数据库发起的访问请求,访问请求携带目标对象的身份信息。
在具体实施例中,目标数据库所属数据库管理设备需要先托管目标数据库至计算机设备(即:先让计算机设备为目标数据库分配用于代理该目标数据库的代理实例),才能使得计算机设备可以代为响应目标对象针对目标数据库发起的访问请求,以实现目标对象对目标数据库的访问。其中,托管目标数据库至计算机设备可以理解为代为管理目标数据库,在本申请实施例中其主要指计算机设备代为处理针对目标数据库的访问请求。成功托管目标数据库至计算机设备的标志是计算机设备成功创建了可以用于访问目标数据库的数据库帐户。其中,数据库帐户可以是计算机设备根据目标数据库的签名数据、目标数据库的数据库标识以及代理目标数据库的代理实例的实例标识创建的。
为了便于清楚地理解本申请实施例,以下对计算机设备托管目标数据库的方式进行详细说明。在一个实施例中,计算机设备在接收到目标数据库所属的数据库管理设备发送的代理请求后,可以响应于该代理请求,获取目标数据库的数据库标识。其中,代理请求可以携带目标数据库的数据库标识,那么,计算机设备则可以通过解析代理请求来获取目标数据库的数据库标识。当然,代理请求中也可以携带目标数据库所属数据库服务器的服务器地址信息以及该服务器的服务器管理帐户信息。在此情况下,计算机设备则可以通过登录服务器管理帐户信息所指示的服务器管理账户来与服务器地址信息所指示的数据库服务器建立通信连接,从而使得计算机设备可以从目标数据库所属的数据库服务器中获取该目标数据库的数据库标识。在计算机设备响应代理请求时,计算机设备还可以确定用于代理该目标数据库的代理实例以获取代理实例的实例标识。需要说明的是,此处计算机设备确定目标数据库的代理实例可以理解为:计算机设备为目标数据库分配代理实例。示例性地,计算机设备可以为目标数据库随机分配代理实例,也可以在对目标数据库进行分析之后为其分配适用的代理实例,还可以按照数据库管理设备指定的代理实例为目标数据库分配的代理实例。若计算机设备分屏的代理实例是数据库管理设备指定的代理实例,则代理请求中还可以携带代理实例的实例标识,以使得计算机设备可以为目标数据库分配该实例标识所指示的代理实例。基于前述可知,为了能成功托管目标数据库,计算机设备还需要获取目标数据库的签名数据,而本申请实施例中签名数据是和代理实例进行关联存储的,代理实例又可以用于代理数据库。因此,计算机设备确定目标数据库的签名数据时,可以先向签名数据管理设备请求获取与代理实例关联的签名数据,以将获取到签名数据作为目标数据库的签名数据。当计算机设备确定出目标数据库的数据库标识、用于代理目标数据库的代理实例的实例标识以及目标数据库的签名数据后,计算机设备可以创建目标数据库的数据库账户。若数据库帐户创建成功,则计算机设备可以通过数据库帐户对目标数据库进行访问,也就意味着计算机设备托管目标数据库成功;对应地,若数据库帐户创建失败,则计算机设备无法通过数据库帐户访问目标数据库,也就意味着计算机设备托管目标数据库失败。
其中,计算机设备创建数据库账户的方式可以参见图5a以及如下描述:计算机设备在生成数据库账户时,需要先生成数据库账户对应的数据库账户标识以及数据库账户密码。具体来说,计算机设备可以先采用获取到的实例标识和数据库标识生成数据库帐户标识。进一步地,在计算机设备生成数据库帐户标识之后,计算机设备可以对数据库帐户标识以及目标数据库的签名数据执行SM3签名,以产生数据库帐户密码。其中,SM3是一种国产密码算法,其适用于数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求,本申请实施例对SM3不作详细解释。当然,计算机设备也可以采用其他密码算法来基于签名数据产生相应的数据库账户密码,本申请实施例对此不作限制。当计算机设备生成数据库账户标识以及数据库账户密码之后,计算机设备可以基于数据库账户标识和数据库账户密码创建数据库账户,在此情况下,目标数据库的数据库账户信息可以包括上述数据库账户标识以及数据库账户密码。
需要说明的是,在实际应用中,计算机设备也可以一边获取创建数据库账户所需的数据一边生成相应的数据库账户信息,并不一定非要在数据库标识、签名数据以及实例标识都获取完成之后才创建数据库账户。具体可以继续参见图5a,如图5a所示,计算机设备获取目标数据库的签名数据这一步骤可以在计算机设备生成数据库账户标识之后执行。也就是说,在一种可行的实现方式中,计算机设备可以在获取到数据库标识以及实例标识之后生成数据库账户标识,并在数据库账户标识生成之后才从签名数据管理设备中获取目标数据库的签名数据,以进一步基于签名数据和数据库账户标识产生数据库账户的数据库账户密码。本申请实施例中计算机设备生成数据库账户标识可能会失败,因此,计算机设备获取的签名数据只有在数据库账户标识成功生成之后才可以发挥作用。那么,计算机设备则可以当数据库账户标识成功生成之后再获取签名数据,而当数据库账户标识生成失败时,计算机设备则可以不用向签名数据管理设备获取相应的签名数据。由于计算机设备从签名数据管理设备中获取签名数据时也需要进行一系列的身份鉴权处理,这需要耗费一定的处理时间,因此,在数据库账户标识成功生成之后才获取签名数据,在一定程度上可以避免计算机设备的计算资源遭到浪费。
在又一个实施例中,由于本申请实施例中的目标数据库可以存在于数据库服务器中,数据库服务器可以包括一个或多个数据库。在此情况下,数据库管理设备托管目标数据库至计算机设备的方式还可以参见图5b。为了与图5b紧密结合,以下称计算机设备为访问代理设备来对图5b所示的托管流程进行详细阐述。如图5b所示,当目标数据库所属的数据库管理设备需要托管目标数据库至访问代理设备时,数据库管理设备可以先向访问代理设备请求分配用于代理数据库服务器中各数据库的代理实例,访问代理设备可以在为数据库服务器分配代理实例后,将代理实例的实例标识反馈给数据库管理设备。其中,若访问代理设备分配的代理实例为全新的代理实例(即:未代理任何数据库的代理实例),则数据库管理设备可以在接收到实例标识后向签名数据管理设备中请求对该代理实例关联的签名数据进行初始化。示例性地,签名数据的初始化方式可以是签名数据管理设备对其进行随机初始化,或数据库管理设备向签名数据管理设备指定具体的签名数据以完成指定内容的初始化。对应地,若访问代理设备分配的代理实例为已经投入使用的代理实例,这意味着代理实例已经存在关联的签名数据,因此数据库管理设备无需再向签名数据管理设备请求对该代理实例关联的签名数据进行初始化。
继续参见图5b,可见,当数据库管理设备检测到访问代理设备为数据库服务器成功分配代理实例之后,数据库管理设备可以向访问代理设备发起代理请求,以请求访问代理设备托管数据库服务器,从而实现访问代理设备对数据库服务器中相关数据库的托管(如:目标数据库)。在此情况下的代理请求可以携带该数据库服务器的服务器地址信息以及服务器管理账户的账户信息。那么,访问代理设备在接收到相应代理请求之后,可以基于服务器管理账户的账户信息登录该服务器管理账户,以从数据库服务器中获取数据库列表。该数据库列表可以包括数据库服务器所包括的所有数据库中未被托管的数据库的数据库标识(如:目标数据库的数据库标识)。进一步地,计算机设备可以获取与用于代理数据库服务器的代理实例关联的签名数据,然后计算机设备可以基于签名数据以及数据库列表中存在的各个数据库标识,分别为相应的数据库创建数据库账户,并生成创建结果。其中,创建结果可以包括计算机设备成功创建数据库账户的数据库所对应的数据库标识。那么,计算机设备还可以将创建结果以广播的形式传递给数据库服务器,以使得数据库服务器在与其他外部系统联动时,外部系统也可以通过本申请实施例来访问已被托管的各个数据库(如:目标数据库)。
在计算机设备成功创建数据库服务器中相关数据库的数据库账户之后,计算机设备还可以对数据库服务器的服务器管理账户的账户信息进行加密存储,以使得目标对象在具备对目标数据库的管理权限时,可以基于服务器管理账户的账户信息来访问目标数据库。那么,在此情况下,数据库管理设备托管数据库服务器至访问代理设备的具体流程还可以参见图5c所示,其中,图5c中的数据库管理账号可以为数据库服务器的服务器管理账户。由于图5c的流程已在上述针对图5b的相关描述中进行了阐述,因此,本申请实施例在此不再对图5c所示的流程进行详细说明。
S402,响应于访问请求,向权限管理设备发送针对目标对象的权限获取请求。
S403,接收权限管理设备发送的目标对象的访问权限信息,访问权限信息用于指示目标对象是否被允许访问目标数据库。
S404,若访问权限信息指示目标对象被允许访问目标数据库,则向签名数据管理设备请求获取目标数据库的签名数据。
在一个实施例中,计算机设备执行步骤S402至步骤S404的具体方式可以参见步骤S202以及步骤S204中的相关实施例,本申请实施例在此不再赘述。
S405,在身份信息指示目标对象为非管理对象的情况下,获取目标数据库的数据库标识。
基于前述可知,在本申请实施例中,身份信息可以指示目标对象为非管理对象,也可以指示目标对象为管理对象。并且,不同身份信息的对象,其在访问目标数据库时所采用的目标数据库账户信息不同。具体来说,在身份信息指示目标对象为非管理对象时,目标对象采用的目标数据库账户信息可以是计算机设备为目标数据库创建的数据库账户所对应账户信息。在本申请实施例中为了保证数据库账户的安全性,计算机设备在确定非管理对象采用的目标数据库账户信息时,需要按照计算机设备创建数据库账户的方式(如:图5a所示的方式)来计算得到相应的数据库账户信息。也就是说,当目标对象为非管理对象时,计算机设备需要确定目标数据库的数据库标识以及用于代理目标数据库的代理实例的实例标识,此外,计算机设备还需要向签名数据管理设备请求获取目标数据库的签名数据,进而使得计算机设备可以基于数据库标识、实例标识和签名数据计算出相应的数据库账户信息。
在身份信息指示目标对象为管理对象时,计算机设备可以确定目标数据库的数据库管理账户信息来作为目标对象所需采用的目标数据库账户信息。数据库管理账户信息可以是数据库管理设备在请求计算机设备托管目标数据库时发送给计算机设备的,并且为了保证数据库管理账户信息的存储安全,计算机设备可以对目标数据库的数据库管理账户信息进行加密存储,加密存储的具体时间可以是在计算机设备成功创建目标数据库的数据库账户之后,存储的具体位置可以是计算机设备中,也可以是签名数据管理设备中,本申请实施例以将加密后的数据库管理账户信息存储至计算机设备为例进行说明。本申请实施例将在步骤S406中对计算机设备对数据库管理账户信息进行加密存储的方式,以及计算机设备对加密后的数据库管理账户信息进行解密,以得到目标对象所需的目标数据库账户信息的方式进行详细阐述,在此不做赘述。
S406,根据数据库标识以及签名数据,生成目标对象访问目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对目标数据库进行访问。
在一个实施例中,当身份信息指示目标对象为非管理对象时,计算机设备需要计算为目标数据库创建的数据库账户信息来作为目标对象采用的目标数据库账户信息,其中,数据库账户信息可以包括数据库账户标识以及数据库账户密码。那么,示例性地,计算机设备在计算数据库账户信息时可以先获取用于代理目标数据库的代理实例的实例标识;进一步地,计算机设备可以基于实例标识以及数据库标识,生成数据库账户标识。然后,计算机设备可以进一步根据数据库账户标识以及签名数据,生成数据库账户密码。基于此,计算机设备也就可以生成包含数据库账户标识和数据库账户密码的数据库账户信息来作为目标数据库账户信息。
在又一个实施例中,在身份信息指示目标对象为管理对象时,目标对象采用的目标数据库账户信息可以是数据库管理账户信息。其中,数据库管理账户信息可以和服务器管理账户的账户信息相同,也就是说,计算机设备可以将服务器管理账户的账户信息作为目标数据库的数据库管理账户信息,如:如图5b或图5c所示的托管流程对应的数据库管理账户信息即可以为服务器管理账户信息。在具体实现中,计算机设备对数据库管理账户信息进行加密存储的方式可以如下:计算机设备接收目标数据库所述的数据库管理设备发送的目标数据库的数据库管理账户信息,并生成目标数据库的密钥。示例性地,密钥可以是计算机设备随机生成的。计算机设备还可以向签名数据管理设备请求获取目标数据库的签名数据,并采用生成的密钥和获取到的签名数据生成加密处理参数,以采用加密处理参数以及密钥对数据库管理账户信息进行加密处理,得到加密后的账户信息。
那么,基于上述计算机设备对数据库管理账户进行加密存储的方式,不难理解,计算机设备在确定管理对象采用的数据库管理账户时,可以采用对应地解密处理方式从加密数据中解密出数据库管理账户。具体来说,在身份信息指示目标对象为管理对象的情况下,计算机设备在确定目标对象采用的目标数据库账户信息时,可以先获取目标数据库的加密数据,加密数据至少包括加密后的数据库管理账户信息,然后计算机设备可以根据获取到的签名数据对加密后的账户信息进行解密处理,以解密出对应的数据库管理账户信息,进而使得计算机设备可以将解密得到的数据库管理账户信息作为目标对象所需要采用的目标数据库账户信息。
在又一个实施例中,计算机设备对数据库管理账户信息进行加密存储的具体流程还可以参见图5d。如图5d所示,在需要加密数据库管理账户信息时,计算机设备可以在为目标数据库生成密钥后,从签名数据管理设备中获取目标数据库的签名数据。若计算机设备成功获取到签名数据,则计算机设备可以将密钥和签名数据进行SM3签名产生加密处理参数(加密处理参数其本质上可以为一个向量)。进一步地,计算机设备可以采用密钥和加密处理参数对数据库管理账户信息执行SM4对等加密(一种国产密码算法),从而得到密文。密文即为上述加密后的账户信息。进一步地,为了保证计算机设备可以对密文进行解密以得到数据库管理账户信息,计算机设备可以将密钥和密文进行合并打包,得到加密数据,也就是说,本申请实施例中的加密数据可以包括加密后的账户信息以及密钥。又为了便于检验加密数据的安全性(如:检验加密数据是否被篡改或被截取破坏等),计算机设备还可以在得到加密数据之后计算加密数据的循环冗余校验码(即图5d中的CRC,Cyclic RedundancyCheck),并将计算出的校验码添加至加密数据的末尾,以进一步生成包括加密数据以及校验码的数据块。在计算机设备生成数据块之后,计算机设备可以将该数据块进行存储,至此,计算机设备可以看作实现了对数据库管理账户信息的加密存储的整个流程。
那么,对应地,当计算机设备采用如图5d所示的加密存储方式时,计算机设备确定数据库管理账户信息的方式可以参见图5e。如图5e所示,计算机设备可以先获取相应的数据块,并在获取到数据块之后检验该数据块的完整性,以实现对数据库管理账户信息的初步安全性鉴别。若数据块完整,则计算机设备可以拆分数据块中的加密数据,得到密钥和密文。为了对密文进行解密,计算机设备需要从签名数据管理设备中获取目标对象的签名数据,若在此前已经获取到目标数据库的签名数据,则无需重复获取。那么也就可以理解,图5e中获取签名数据这一步骤是为了便于相关阅读人员可以基于流程图对计算机设备解密数据库管理账户信息的方式有个完整的理解,并不严格限定计算机设备的执行步骤以及步骤间的执行流程。当计算机设备获取到签名数据之后,计算机设备可以对签名数据和密钥执行SM3签名以生成解密处理参数。可以理解,此处的解密处理参数和上述的加密处理参数是互相匹配的,那么,也就是说,计算机设备可以采用密钥和解密处理参数对密文执行SM4对等解密,以确定出数据库管理账户信息作为目标对象需要采用的目标数据库账户信息。
以下对步骤S406中计算机设备通过确定出的目标数据库账户信息对目标数据库进行访问的实现方式进行详细说明。其中,在目标对象对目标数据库的访问过程中,计算机设备可以执行访问语句,执行的访问语句可以是计算机设备接收到的访问请求中携带的。具体地,计算机设备接收到的访问请求可以携带至少一条访问语句。并且,计算机设备在实现目标对象对目标数据库的访问时,也需要参考目标对象的身份信息。不同身份信息的对象其对应的访问逻辑(如:执行访问请求中携带的至少一条访问语句的流程)可能不同。
在一个实施例中,当目标对象的身份信息指示目标对象为管理对象时,计算机设备可以在解密得到目标数据库的数据库管理账户信息后,为目标对象登录数据库管理账户信息所指示的数据库管理账户,从而使得目标对象在访问目标数据库时可以被允许直接执行这至少一条访问语句。当然,为了进一步提升目标数据库中相关数据的安全性,计算机设备也可以从权限管理设备中获取管理对象的执行权限信息,然后基于执行权限信息从至少一条访问语句中确定出被允许执行的目标访问语句后再执行目标访问语句,本申请实施例对此不做具体限制。
在又一个实施例中,当目标对象的身份信息指示目标对象为非管理对象时,计算机设备可以从权限管理设备中获取非管理对象的执行权限信息。其中,执行权限信息至少可以包括数据量阈值,数据量阈值用于指示允许目标对象在目标数据库中修改的数据的最大数据量。当然,执行权限信息还可以包括以下任意一种或多种信息:允许目标对象执行的访问语句的语句类型(如:查询语句类型、删除语句类型、建立索引语句类型等),允许目标对象访问目标数据库的访问总时长(如:30分钟),以及允许目标对象访问目标数据库的访问时间段(如:每天早8:00至早10:00)等。可见,为每个对象分配这样的执行权限信息,可以使得不同对象对数据库中数据的查看、修改、新增和删除操作等访问行为均可以最小颗粒进行精确管理。
当计算机设备获取到执行权限信息之后,计算机设备可以依次执行这至少一条访问语句,在执行过程中,计算机设备还可以确定每条访问语句的执行为目标数据库带来的影响,如:目标数据库中被修改的数据的数据量。示例性地,被修改的数据可以包括但不限于以下任意一种或多种:被删除的数据、被更新的数据(如:将原来的数据A更新为数据B)以及被添加的数据。那么,若目标数据库中被修改的数据的数据量大于该目标对象的执行权限信息所指示的数据量阈值,则计算机设备可以转而确定目标数据库是否支持事务机制。事务机制是数据库特有的术语,其主要指单个逻辑工作单元执行的一系列操作,在数据库中同步发生数据更新时,采用事务机制可以防止数据的不一致。其中,当目标数据库支持事务机制时,计算机设备可以撤销至少一条语句中被执行了的所有访问语句对目标数据库造成的修改(可以理解为回滚事务);当目标数据库不支持事务机制时,计算机设备则可以撤销当前执行的访问语句对目标数据库造成的修改(即:撤销数据量大于数据量阈值时所执行的访问语句对目标数据库造成的修改),并拒绝执行至少一条访问语句中剩余的访问语句。
还需要说明的是,在本申请实施例中,被执行的访问语句所对应的执行结果不会立即在目标数据库中生效,计算机设备可以将执行结果发送给数据库管理设备,在获得数据库管理设备的执行认可之后,才会执行对目标数据库中的相应变更操作,这种处理方式可以有效防止误操作而目标数据库中数据造成的影响,可以保证目标数据库中数据的安全性。
基于上述关于图2以及图4的相关描述,本申请实施例中计算机设备通过确定出的目标数据库账户信息对目标数据库进行访问的一个示例性的完整流程可以参见图6a。如图6a所示,当计算机设备检测到目标对象发起的访问请求时,计算机设备可以先确定该目标对象的身份信息,即:确定目标对象是否为管理对象。当目标对象为管理对象时,计算机设备可以对目标数据库的加密存储的数据库管理账户信息进行解密,以采用数据库管理账户对目标数据库进行访问。当目标对象为非管理对象时,计算机设备则可以从权限管理设备中获取目标对象的访问权限信息,以确定该目标对象是否具备访问目标数据库的权限。若目标对象具备访问目标数据库的权限,计算机设备则查询目标数据库的驱动,并在查询到的驱动为安全驱动时,计算目标数据库的数据库账户信息,以使得计算机设备可以基于数据库账户信息来实现目标对象对目标数据库的访问。其中,驱动可以理解为一种可以使得计算机设备和目标数据库所在数据库服务器进行相互通信的特殊程序。示例性的,安全驱动可以理解为:计算机设备和目标数据库所在数据库服务器的通信可以正常进行的驱动。那么,对应的,当查询到的驱动为非安全驱动时,计算机设备需要确定出目标数据库的数据库管理账户信息来作为该非管理对象所需的目标数据库访问信息,并进一步采用数据库管理账户信息所指示的数据库管理账户来实现对目标数据库的访问。
其中,目标对象(非管理对象或管理对象)对目标数据库进行访问时的具体流程可以参见图6b。需要说明的是,在图6b中开始执行访问之前,若目标对象为非管理对象,则计算机设备需要先确定目标对象的执行权限信息,以使得计算机设备可以基于执行权限信息来执行目标对象想要对目标数据库执行的访问语句。开始执行访问之后的访问执行流程可以如图6b所示,若目标对象为管理对象,则计算机设备可以依次执行需要执行的多条访问语句,直至最后一条访问语句执行结束。若目标对象为非管理对象,则计算机设备可以确定目标数据库是否支持事务,若目标数据库支持事务,则计算机设备可以基于访问请求携带的至少一条访问语句构建事务,并在事务构建完成后开始执行事务。在执行事务的过程中,需要判定执行结果是否满足目标对象的执行权限信息所指示的执行权限,以及判定事务中是否存在与目标对象的禁用操作匹配的访问语句。示例性地,禁用操作可以包括禁止目标对象执行的访问语句,如:删除数据库的语句。只有当访问语句均为非禁用操作时,计算机设备才会调用相应的驱动在目标数据库中以事务的形式执行该至少一条访问语句,并且,在执行完事务之后,计算机设备还可以在执行结果不符合执行权限时放弃并回滚事务,也即:撤销至少一条访问语句的执行对目标数据库造成的影响。可选地,若目标数据库不支持事务,则计算机设备还可以结合目标对象的身份信息对访问请求中携带的访问语句进行安全评估(即:图6b中的确定访问语句是否为合规语句),并在计算机设备确定出访问语句在执行后,对目标数据库带来的影响处于安全范围内时执行相应的访问语句。
在本申请实施例中,计算机设备在响应目标对象针对目标数据库发起的访问请求时,需要从权限管理设备中获取目标对象的访问权限信息,以确定目标对象是否具备访问目标数据库的访问权限。进一步地,在计算机设备确定出目标对象可以访问目标数据库之后,计算机设备将尝试从签名数据管理设备中请求获取目标数据库的签名数据,从而使得计算机设备可以确定出目标对象访问目标数据库时所需采用的数据库账户信息,以实现目标对象可以通过登录数据库账户信息所指示的数据库账户实现对目标数据库的访问。可见,要实现对目标数据库的访问,需要计算机设备、权限管理设备以及签名数据管理设备协同完成,而不同的设备分别由不同的管理方进行管理,这体现了权限分立的思想,可以有效避免因某一设备的数据泄露而导致被代理的数据库的安全遭受影响,从而可以保证被代理的数据库在被访问前的安全性。此外,目标对象在对目标数据库进行访问时,计算机设备还将确定目标对象的执行权限信息,避免目标对象执行的访问语句对目标数据库的安全造成不良影响,保障了被代理的数据库在被访问过程中的安全性。此外,由于本申请实施例中还可以采用日志记录设备对目标对象针对目标数据库的访问操作进行记录,使得后续可以追溯目标数据库中任一数据发生的更新,便于执行与目标数据库相关的审计工作,可以保证访问发生后仍然可以对目标数据库的安全进行保障。基于上述描述不难看出,本申请实施例可以做到事前有预防、事中有控制以及事后有审计,也就可以为被代理的数据库的安全性提供全方位的保障。
基于上述数据库访问方法的相关实施例的描述,本申请实施例还公开了一种数据库访问装置,该数据库访问装置可以是运行于上述所提及的计算机设备中的一个计算机程序(包括程序代码)。在具体实施例中,该数据库访问装置可以用于执行如图2或图4所示的数据库访问方法。请参见图7,该数据库访问装置可以包括接收单元701、发送单元702、获取单元703以及处理单元704。
接收单元701,用于接收目标对象针对目标数据库发起的访问请求,所述访问请求携带所述目标对象的身份信息;
发送单元702,用于响应于所述访问请求,向权限管理设备发送针对所述目标对象的权限获取请求,所述权限管理设备存储有至少一个对象的访问权限信息;
所述接收单元701,还用于接收所述权限管理设备发送的所述目标对象的访问权限信息,所述访问权限信息用于指示所述目标对象是否被允许访问所述目标数据库;
获取单元703,用于若所述访问权限信息指示所述目标对象被允许访问所述目标数据库,则向签名数据管理设备请求获取所述目标数据库的签名数据,所述签名数据管理设备存储有至少一个数据库的签名数据;
处理单元704,用于基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对所述目标数据库进行访问。
在一种实施方式中,所述处理单元704可以具体用于执行:
在所述身份信息指示所述目标对象为管理对象的情况下,获取所述目标数据库的加密数据,所述加密数据包括加密后的账户信息,所述加密后的账户信息是对所述目标数据库的数据库管理账户信息进行加密后得到的;
根据所述签名数据对所述加密后的账户信息进行解密处理,得到所述数据库管理账户信息;
将所述数据库管理账户信息确定为所述目标对象访问所述目标数据库时所需的目标数据库账户信息。
在又一种实施方式中,所述加密数据还包括密钥,所述加密后的账户信息是根据所述密钥和所述签名数据对所述数据库管理账户信息进行加密后得到的;所述处理单元704还可以用于执行:
根据所述密钥以及所述签名数据生成解密处理参数;
采用所述解密处理参数及所述密钥对所述加密后的账户信息进行解密处理,得到所述数据库管理账户信息。
在又一种实施方式中,所述数据库访问装置还可以包括加密处理单元705,所述加密处理单元705可以用于执行:
接收所述目标数据库所属的数据库管理设备发送的所述目标数据库的数据库管理账户信息,并生成所述目标数据库的密钥;
向所述签名数据管理设备请求获取所述目标数据库的签名数据,并采用生成的密钥和所述签名数据生成加密处理参数,所述加密处理参数与所述解密处理参数相匹配;
采用所述加密处理参数及所述密钥对所述数据库管理账户信息进行加密处理,得到所述加密后的账户信息。
在又一种实施方式中,所述处理单元704还可以用于执行:
在所述身份信息指示所述目标对象为非管理对象的情况下,获取所述目标数据库的数据库标识;
根据所述数据库标识以及所述签名数据,生成所述目标对象访问所述目标数据库时所需的目标数据库账户信息。
在又一种实施方式中,所述处理单元704还可以用于执行:
获取用于代理所述目标数据库的代理实例的实例标识;
基于所述实例标识以及所述数据库标识,生成数据库账户标识;
根据所述数据库账户标识及所述签名数据,生成数据库账户密码;
生成包含所述数据库账户标识和所述数据库账户密码的目标数据库账户信息。
在又一种实施方式中,所述数据库访问装置还可以包括账户创建单元706,所述账户创建单元706可以用于执行:
接收所述目标数据库所属的数据库管理设备发送的代理请求;
响应于所述代理请求获取所述目标数据库的数据库标识,确定用于代理所述目标数据库的代理实例,并获取所述代理实例的实例标识;
向所述签名数据管理设备请求获取与所述代理实例关联的签名数据作为所述目标数据库的签名数据,其中,所述签名数据管理设备中的一个签名数据与一个代理实例对应;
根据所述数据库标识、所述实例标识以及所述目标数据库的签名数据,创建所述目标数据库的数据库账户,以允许通过所述数据库账户的数据库账户信息对所述目标数据库进行访问。
在又一种实施方式中,所述访问请求携带至少一条访问语句,所述处理单元704可以用于执行:
若所述目标对象的身份信息指示所述目标对象为非管理对象,则从所述权限管理设备获取所述目标对象的执行权限信息,所述执行权限信息包括数据量阈值,所述数据量阈值用于指示允许所述目标对象在所述目标数据库中修改的数据的数据量;
依次执行所述至少一条访问语句,并在执行过程中确定所述目标数据库中被修改的数据的最大数据量;
在确定出的数据量大于所述数据量阈值,且所述目标数据库支持事务机制时,撤销所述至少一条访问语句中已执行的所有访问语句对所述目标数据库造成的修改;
在确定出的数据量大于所述数据量阈值,且所述目标数据库不支持事务机制时,撤销所述数据量大于所述数据量阈值时所执行的访问语句对所述目标数据库造成的修改。
根据本申请的一个实施例,图2及图4所示的方法所涉及的各个步骤可以由图7所示的数据库访问装置中的各个单元来执行。例如,图2所示的数据库访问方法中,步骤S201可由图7所示的数据库访问装置中的接收单元701来执行,步骤S202可由图7所示的数据库访问装置中的发送单元702来执行,步骤S203可由图7所示的数据库访问装置中的接收单元701来执行,步骤S204可由图7所示的数据库访问装置中的获取单元703来执行,步骤S205可由图7所示的数据库访问装置中的处理单元704来执行。再如,图4所示的数据库访问方法中的步骤S401可由图7所示的数据库访问装置中的接收单元701来执行,步骤S402可由图7所示的数据库访问装置中的发送单元702来执行,步骤S403可由图7所示的数据库访问装置中的接收单元701来执行,步骤S404可由图7所示的数据库访问装置中的获取单元703来执行,步骤S405至步骤S406均可由图7所示的数据库访问装置中的处理单元704来执行。
根据本申请的另一个实施例,图7所示的数据库访问装置中的各个单元是基于逻辑功能划分的,上述各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者,其中的某个(某些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请实施例的技术效果的实现。在本申请的其他实施例中,上述数据库访问装置也可以包括其他单元,在实际应用中,这些功能也可以由其他单元协助实现,并且可以由多个单元协助实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如域名管理设备的通用计算设备上,运行能够执行如图2和图4所示的方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7所示的数据库访问装置,以及来实现本申请实施例的数据库访问方法。计算机程序可以记载于例如计算机存储介质上,并通过计算机存储介质装载于上述计算设备中,并在其中运行。
在本申请实施例中,数据库访问装置在响应目标对象针对代理的目标数据库发起的访问请求时,可以从权限管理设备中获取目标对象的访问权限信息,并在获取到的访问权限信息指示目标对象可以访问目标数据库时,进一步从签名管理设备中获取目标数据库的签名数据,以基于目标数据库的签名数据以及目标对象的身份信息来为该目标对象选择相应的数据库账户信息,从而使得数据库访问装置可以通过选择出的数据库账户信息来对目标数据库进行访问。可见,数据库访问装置在响应针对目标数据库的访问请求时,需要获得权限管理设备以及签名数据管理设备的认可,任一设备拒绝向数据库访问装置提供数据或向数据库访问装置提供错误数据则会导致数据库访问装置无法成功响应访问请求,从而使得目标数据库无法被访问。因此,在数据库访问装置、权限管理设备以及签名数据管理设备三者之间配合完成目标对象所需的数据库账户信息的确定之前,目标数据库都不会收到任何与目标对象相关的操作的影响,从而使得整个代理过程中目标数据库的受干扰率得到降低,有效提升了目标数据库的稳定性。此外,由于对目标数据库的访问需要采用相应的数据库账户信息,而数据库账户信息需要数据库访问装置、权限管理设备以及签名数据管理设备三者之间配合才能确认,因此不难理解,本申请实施例提供的数据库访问方法可以避免响应访问请求的权限过于集中,进而可以避免因某一设备出现安全隐患而导致数据库的安全受到影响,从而也就可以保证被代理的数据库的安全性。
基于上述方法实施例以及装置实施例的相关描述,本申请实施例还提供了一种计算机设备(或访问代理设备),请参见图8。该计算机设备至少包括输入单元801、输出单元802、处理器803以及计算机存储介质804,且计算机设备的输入单元801、输出单元802、处理器803以及计算机存储介质804可以通过总线或其他方式连接。
其中,上述提及的计算机存储介质804是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质804既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机存储介质804提供存储空间,该存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了适于被处理器803加载并执行的一条或多条的计算机程序,这些计算机程序可以是一个或一个以上的程序代码。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的存储介质。处理器803(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条计算机程序,具体适于加载并执行一条或多条计算机程序从而实现相应方法流程或相应功能。
在一个实施例中,图8所示的计算机设备可以执行上述实施例中计算机设备所执行的步骤,即:可由处理器803加载并执行计算机存储介质804中存放的一条或多条计算机程序,以实现上述有关图2和图4所示的步骤。具体实现中,计算机存储介质804中存放的一条或多条计算机程序由处理器803加载并执行:
接收目标对象针对目标数据库发起的访问请求,所述访问请求携带所述目标对象的身份信息;
响应于所述访问请求,向权限管理设备发送针对所述目标对象的权限获取请求,所述权限管理设备存储有至少一个对象的访问权限信息;
接收所述权限管理设备发送的所述目标对象的访问权限信息,所述访问权限信息用于指示所述目标对象是否被允许访问所述目标数据库;
若所述访问权限信息指示所述目标对象被允许访问所述目标数据库,则向签名数据管理设备请求获取所述目标数据库的签名数据,所述签名数据管理设备存储有至少一个数据库的签名数据;
基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对所述目标数据库进行访问。
在一种实施方式中,所述处理器803可以具体用于加载并执行:
在所述身份信息指示所述目标对象为管理对象的情况下,获取所述目标数据库的加密数据,所述加密数据包括加密后的账户信息,所述加密后的账户信息是对所述目标数据库的数据库管理账户信息进行加密后得到的;
根据所述签名数据对所述加密后的账户信息进行解密处理,得到所述数据库管理账户信息;
将所述数据库管理账户信息确定为所述目标对象访问所述目标数据库时所需的目标数据库账户信息。
在又一种实施方式中,所述加密数据还包括密钥,所述加密后的账户信息是根据所述密钥和所述签名数据对所述数据库管理账户信息进行加密后得到的;所述处理器803可以具体用于加载并执行:
根据所述密钥以及所述签名数据生成解密处理参数;
采用所述解密处理参数及所述密钥对所述加密后的账户信息进行解密处理,得到所述数据库管理账户信息。
在又一种实施方式中,所述处理器803还可以具体用于加载并执行:
接收所述目标数据库所属的数据库管理设备发送的所述目标数据库的数据库管理账户信息,并生成所述目标数据库的密钥;
向所述签名数据管理设备请求获取所述目标数据库的签名数据,并采用生成的密钥和所述签名数据生成加密处理参数,所述加密处理参数与所述解密处理参数相匹配;
采用所述加密处理参数及所述密钥对所述数据库管理账户信息进行加密处理,得到所述加密后的账户信息。
在又一种实施方式中,所述处理器803还可以具体用于加载并执行:
在所述身份信息指示所述目标对象为非管理对象的情况下,获取所述目标数据库的数据库标识;
根据所述数据库标识以及所述签名数据,生成所述目标对象访问所述目标数据库时所需的目标数据库账户信息。
在又一种实施方式中,所述处理器803还可以具体用于加载并执行:
获取用于代理所述目标数据库的代理实例的实例标识;
基于所述实例标识以及所述数据库标识,生成数据库账户标识;
根据所述数据库账户标识及所述签名数据,生成数据库账户密码;
生成包含所述数据库账户标识和所述数据库账户密码的目标数据库账户信息。
在又一种实施方式中,所述处理器803还可以具体用于加载并执行:
接收所述目标数据库所属的数据库管理设备发送的代理请求;
响应于所述代理请求获取所述目标数据库的数据库标识,确定用于代理所述目标数据库的代理实例,并获取所述代理实例的实例标识;
向所述签名数据管理设备请求获取与所述代理实例关联的签名数据作为所述目标数据库的签名数据,其中,所述签名数据管理设备中的一个签名数据与一个代理实例对应;
根据所述数据库标识、所述实例标识以及所述目标数据库的签名数据,创建所述目标数据库的数据库账户,以允许通过所述数据库账户的数据库账户信息对所述目标数据库进行访问。
在又一种实施方式中,所述访问请求携带至少一条访问语句,所述处理器803还可以具体用于加载并执行:
若所述目标对象的身份信息指示所述目标对象为非管理对象,则从所述权限管理设备获取所述目标对象的执行权限信息,所述执行权限信息包括数据量阈值,所述数据量阈值用于指示允许所述目标对象在所述目标数据库中修改的数据的数据量;
依次执行所述至少一条访问语句,并在执行过程中确定所述目标数据库中被修改的数据的最大数据量;
在确定出的数据量大于所述数据量阈值,且所述目标数据库支持事务机制时,撤销所述至少一条访问语句中已执行的所有访问语句对所述目标数据库造成的修改;
在确定出的数据量大于所述数据量阈值,且所述目标数据库不支持事务机制时,撤销所述数据量大于所述数据量阈值时所执行的访问语句对所述目标数据库造成的修改。
在本申请实施例中,计算机设备在响应目标对象针对代理的目标数据库发起的访问请求时,可以从权限管理设备中获取目标对象的访问权限信息,并在获取到的访问权限信息指示目标对象可以访问目标数据库时,进一步从签名管理设备中获取目标数据库的签名数据,以基于目标数据库的签名数据以及目标对象的身份信息来为该目标对象选择相应的数据库账户信息,从而使得计算机设备可以通过选择出的数据库账户信息来对目标数据库进行访问。可见,计算机设备在响应针对目标数据库的访问请求时,需要获得权限管理设备以及签名数据管理设备的认可,任一设备拒绝向计算机设备提供数据或向计算机设备提供错误数据则会导致计算机设备无法成功响应访问请求,从而使得目标数据库无法被访问。因此,在计算机设备、权限管理设备以及签名数据管理设备三者之间配合完成目标对象所需的数据库账户信息的确定之前,目标数据库都不会收到任何与目标对象相关的操作的影响,从而使得整个代理过程中目标数据库的受干扰率得到降低,有效提升了目标数据库的稳定性。此外,由于对目标数据库的访问需要采用相应的数据库账户信息,而数据库账户信息需要计算机设备、权限管理设备以及签名数据管理设备三者之间配合才能确认,因此不难理解,本申请实施例提供的数据库访问方法可以避免响应访问请求的权限过于集中,进而可以避免因某一设备出现安全隐患而导致数据库的安全受到影响,从而也就可以保证被代理的数据库的安全性。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储了上述数据库访问方法对应的一条或多条计算机程序,当一个或多个处理器加载并执行该一条或多条计算机程序时,可以实现上述实施例中对数据库访问方法的描述,本申请实施例在此不再赘述。对采用相同方法的有益效果的描述,在此不再赘述。可以理解的是,计算机程序可以被部署在一个或多个能够相互通信的设备上执行。
需要说明的是,根据本申请的一个方面,还提供了一种计算机产品或计算机程序,该计算机产品包括计算机程序,该计算机程序存储在计算机存储介质中。计算机设备中的处理器从计算机存储介质读取该计算机程序,然后执行该计算机程序,进而使得该计算机设备能够执行上述图2以及图4所示的数据库访问方法实施例方面的各种可选方式中提供的方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于计算机取存储介质中,该计算机程序在执行时,可包括如上述数据库访问方法的实施例的流程。其中,计算机存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
需要特别说明的是,当上述实施例在运用到具体产品或技术中时,若涉及到获取与目标对象的相关的数据的行为,则相关的产品或技术需要获得目标对象的许可或者同意,并且相关的产品或技术获取的数据需要符合相关国家和地区的法律法规和标准。
可以理解的是,以上所揭露的仅为本申请的局部实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或局部流程,并依本申请权利要求所作的等同变化,仍属于发明所涵盖的范围。

Claims (12)

1.一种数据库访问方法,其特征在于,包括:
接收目标对象针对目标数据库发起的访问请求,所述访问请求携带所述目标对象的身份信息;
响应于所述访问请求,向权限管理设备发送针对所述目标对象的权限获取请求,所述权限管理设备存储有至少一个对象的访问权限信息;
接收所述权限管理设备发送的所述目标对象的访问权限信息,所述访问权限信息用于指示所述目标对象是否被允许访问所述目标数据库;
若所述访问权限信息指示所述目标对象被允许访问所述目标数据库,则向签名数据管理设备请求获取所述目标数据库的签名数据,所述签名数据管理设备存储有至少一个数据库的签名数据;
基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对所述目标数据库进行访问。
2.根据权利要求1所述的方法,其特征在于,所述基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,包括:
在所述身份信息指示所述目标对象为管理对象的情况下,获取所述目标数据库的加密数据,所述加密数据包括加密后的账户信息,所述加密后的账户信息是对所述目标数据库的数据库管理账户信息进行加密后得到的;
根据所述签名数据对所述加密后的账户信息进行解密处理,得到所述数据库管理账户信息;
将所述数据库管理账户信息确定为所述目标对象访问所述目标数据库时所需的目标数据库账户信息。
3.根据权利要求2所述的方法,其特征在于,所述加密数据还包括密钥,所述加密后的账户信息是根据所述密钥和所述签名数据对所述数据库管理账户信息进行加密后得到的;所述根据所述签名数据对所述加密后的账户信息进行解密处理,得到所述数据库管理账户信息,包括:
根据所述密钥以及所述签名数据生成解密处理参数;
采用所述解密处理参数及所述密钥对所述加密后的账户信息进行解密处理,得到所述数据库管理账户信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收所述目标数据库所属的数据库管理设备发送的所述目标数据库的数据库管理账户信息,并生成所述目标数据库的密钥;
向所述签名数据管理设备请求获取所述目标数据库的签名数据,并采用生成的密钥和所述签名数据生成加密处理参数,所述加密处理参数与所述解密处理参数相匹配;
采用所述加密处理参数及所述密钥对所述数据库管理账户信息进行加密处理,得到所述加密后的账户信息。
5.根据权利要求1所述的方法,其特征在于,所述基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,包括:
在所述身份信息指示所述目标对象为非管理对象的情况下,获取所述目标数据库的数据库标识;
根据所述数据库标识以及所述签名数据,生成所述目标对象访问所述目标数据库时所需的目标数据库账户信息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述数据库标识以及所述签名数据,生成所述目标对象访问所述目标数据库时所需的目标数据库账户信息,包括:
获取用于代理所述目标数据库的代理实例的实例标识;
基于所述实例标识以及所述数据库标识,生成数据库账户标识;
根据所述数据库账户标识及所述签名数据,生成数据库账户密码;
生成包含所述数据库账户标识和所述数据库账户密码的目标数据库账户信息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述目标数据库所属的数据库管理设备发送的代理请求;
响应于所述代理请求获取所述目标数据库的数据库标识,确定用于代理所述目标数据库的代理实例,并获取所述代理实例的实例标识;
向所述签名数据管理设备请求获取与所述代理实例关联的签名数据作为所述目标数据库的签名数据,其中,所述签名数据管理设备中的一个签名数据与一个代理实例对应;
根据所述数据库标识、所述实例标识以及所述目标数据库的签名数据,创建所述目标数据库的数据库账户,以允许通过所述数据库账户的数据库账户信息对所述目标数据库进行访问。
8.根据权利要求1所述的方法,其特征在于,所述访问请求携带至少一条访问语句,所述通过确定出的目标数据库账户信息对所述目标数据库进行访问,包括:
若所述目标对象的身份信息指示所述目标对象为非管理对象,则从所述权限管理设备获取所述目标对象的执行权限信息,所述执行权限信息包括数据量阈值,所述数据量阈值用于指示允许所述目标对象在所述目标数据库中修改的数据的数据量;
依次执行所述至少一条访问语句,并在执行过程中确定所述目标数据库中被修改的数据的最大数据量;
在确定出的数据量大于所述数据量阈值,且所述目标数据库支持事务机制时,撤销所述至少一条访问语句中已执行的所有访问语句对所述目标数据库造成的修改;
在确定出的数据量大于所述数据量阈值,且所述目标数据库不支持事务机制时,撤销所述数据量大于所述数据量阈值时所执行的访问语句对所述目标数据库造成的修改。
9.一种数据库访问装置,其特征在于,包括:
接收单元,用于接收目标对象针对目标数据库发起的访问请求,所述访问请求携带所述目标对象的身份信息;
发送单元,用于响应于所述访问请求,向权限管理设备发送针对所述目标对象的权限获取请求,所述权限管理设备存储有至少一个对象的访问权限信息;
所述接收单元,还用于接收所述权限管理设备发送的所述目标对象的访问权限信息,所述访问权限信息用于指示所述目标对象是否被允许访问所述目标数据库;
获取单元,用于若所述访问权限信息指示所述目标对象被允许访问所述目标数据库,则向签名数据管理设备请求获取所述目标数据库的签名数据,所述签名数据管理设备存储有至少一个数据库的签名数据;
处理单元,用于基于获取到的签名数据和所述目标对象的身份信息,确定所述目标对象访问所述目标数据库时所需的目标数据库账户信息,并通过确定出的目标数据库账户信息对所述目标数据库进行访问。
10.一种计算机设备,其特征在于,包括:
处理器,所述处理器用于实现一条或多条计算机程序;
计算机存储介质,所述计算机存储介质存储有一条或多条计算机程序,所述一条或多条计算机程序适于由所述处理器加载并执行如权利要求1-8任一项所述的数据库访问方法。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条计算机程序,所述一条或多条计算机程序适于由处理器加载并执行如权利要求1-8任一项所述的数据库访问方法。
12.一种计算机产品,其特征在于,所述计算机产品包括计算机程序,所述计算机程序适于由处理器加载并执行如权利要求1-8任一项所述的数据库访问方法。
CN202210335745.8A 2022-03-31 2022-03-31 一种数据库访问方法、相关设备、存储介质及程序产品 Pending CN114707128A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210335745.8A CN114707128A (zh) 2022-03-31 2022-03-31 一种数据库访问方法、相关设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210335745.8A CN114707128A (zh) 2022-03-31 2022-03-31 一种数据库访问方法、相关设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN114707128A true CN114707128A (zh) 2022-07-05

Family

ID=82171670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210335745.8A Pending CN114707128A (zh) 2022-03-31 2022-03-31 一种数据库访问方法、相关设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN114707128A (zh)

Similar Documents

Publication Publication Date Title
US20210157788A1 (en) Data processing method and apparatus based on blockchain network, electronic device, and storage medium
CN113711536B (zh) 从区块链网络中提取数据
US10277632B2 (en) Automated access, key, certificate, and credential management
CN112422532B (zh) 业务通信方法、系统、装置及电子设备
CN113010911B (zh) 一种数据访问控制方法、装置及计算机可读存储介质
CN109413043B (zh) 实现数据库动态配置的方法及装置、电子设备、存储介质
CN107122674B (zh) 一种应用于运维审计系统的oracle数据库的访问方法
US10296440B2 (en) Multi-tenant aware debugging methods and systems
CN108289098B (zh) 分布式文件系统的权限管理方法和装置、服务器、介质
US20180020008A1 (en) Secure asynchronous communications
CN109657492B (zh) 数据库管理方法、介质及电子设备
US20230259386A1 (en) Data processing method based on container engine and related device
US20190052643A1 (en) Cloud access rule translation for hybrid cloud computing environments
US11647026B2 (en) Automatically executing responsive actions based on a verification of an account lineage chain
CN107528865A (zh) 文件的下载方法和系统
CN111107044A (zh) 数据安全管理方法和信息化管理平台
CN113901505B (zh) 数据共享方法、装置、电子设备及存储介质
CN112948842A (zh) 一种鉴权方法及相关设备
CN108289074B (zh) 用户账号登录方法及装置
CN111737232A (zh) 数据库管理方法、系统、装置、设备及计算机存储介质
CN113225351A (zh) 一种请求处理方法、装置、存储介质及电子设备
WO2023278128A1 (en) Identity authority
CN116438778A (zh) 承担的替代身份的持久源值
US20140007197A1 (en) Delegation within a computing environment
US20230334140A1 (en) Management of applications’ access to data resources

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