具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,其为本发明实施例的数据库审计系统的应用场景示意图,如图中所示,多个应用服务器、多个数据库服务器以及审计服务器集群可以处于云服务平台上,用户通过应用服务器接入数据库服务器,以进行基于数据库协议的访问操作。图中的应用服务器主要功能是面向用户提供各种云服务,例如该应用服务器提供云数据存储服务或者电商交易数据处理的处理服务,在一些应用场景下,用户通过该应用服务器对数据库服务器发起访问,进行数据读取、写入、修改、删除等操作。
在本发明实施例中,数据库服务器或者应用服务器上部署了数据库代理,该数据库代理采集应用服务器与数据库服务器之间的网络流量信息,并在二层网络流量的基础上增加数据库代理的代理报文头以及外层报文头进行封装后,发送给审计服务器集群。其中,二层网络流量涉及各种数据库访问报文,主要包括了用户通过应用服务器发起的数据库访问请求报文以及数据库返回的响应报文。用户对于数据库的访问操作会形成会话,会话从用户向数据库服务器发起登录开始,用户登录数据库服务器后,可能会执行上述的数据读取、写入、修改、删除等操作,这些操作都是通过数据库请求报文触发的,数据服务器也会不断向用户返回针对各种操作的响应报文,最终用户完成操作后进行登出,从而形成一个完整的会话过程,上述的各个数据库访问报文构成了数据库的访问日志,通过对数据库访问日志的审计,来发现数据库服务器运行中存在的各种问题或者用户访问行为的合规性等,并可以进一步触发报警处理等。
如图2所示,其为本发明实施例的代理报文的报文结构示意图。如图中所示,代理报文的最内层为数据库访问报文,在数据库访问报文的外层封装了代理报文头以及外层报文头。其中,在该代理报文头中封装了用户信息(例如用户ID)、数据库信息(例如访问的数据库实例ID)以及数据库访问特征信息,数据库访问特征信息可以例如数据库代理接收到用户的数据库访问请求报文的时间以及接收到数据库响应报文的时间,通过这两个时间可以计算出数据库响应的时间。代理报文头中封装的信息可以用于审计服务器确定数据库访问报文对应的会话以及进行报文审计处理。此外,外层报文头和数据访问报文的报文头均包含了用于在服务器之间进行报文传输的Eth-Header(以太网报文头)、IP-Header(IP报文头)、TCP-Header(TCP报文头),外层报文头用于数据库代理与审计服务器集群之间进行报文传输,即用于传输代理报文,而内层的数据库访问报文的报文头,用于在数据库服务器与应用服务器之间进行报文传输。最内层的MySQL-Protocol表示基于MySQL数据协议的报文内容,需要说明的是,在本发明实施例中,作为示例,采用了基于MySQL数据协议的报文,在实际应用中,可以为基于其他数据库协议的报文。
各个数据库代理在采集了数据库访问报文并封装成代理报文后,将代理报文发送给审计服务器集群,进行审计处理。在本发明实施例中,审计服务器与数据库服务器之间不需要建立一对一或者一对多的关系,而是由审计服务器集群通过负载均衡的方式来承担各个数据库服务器的访问日志的审计处理。数据库代理发送的代理报文会先到达审计服务器集群的负载均衡服务器,该负载均衡服务器根据图2中的外层报文头,执行负载均衡处理,根据预设的负载均衡策略,向各个审计服务器来分配代理报文,从而负载分担,并且审计服务器集群的审计服务器可以进行弹性扩容或者缩减,实现灵活高效地处理数据库访问日志的审计处理。
针对上述的数据库访问报文的审计处理需要基于会话的上下文来进行,即执行报文审计处理的审计服务器需要获取到其接收到的数据库访问报文相关联的会话信息,从而才能执行报文审计处理。在实际的审计处理中,会建立一个会话实例,用来管理与会话相关的会话信息,这些会话信息可以包括执行数据访问操作的用户信息、被访问的数据库实例信息、地址和端口信息、会话建立的时间信息、会话上下文信息等,会话信息可以根据具体的审计策略的要求而在会话实例中进行保存。
在审计服务器集群进行负载均衡处理过程中,由于只基于外层的报文头来进行基于负载均衡策略的代理报文的分配,无法保证属于一个会话的多个代理报文被分配到同一个审计服务器进行处理。例如,用户通过应用服务器向数据服务器发起了一个数据查询请求报文,数据库服务器经过查询处理后,在返回查询到的数据表时,可能会将较大的数据表拆分为若干个数据库响应报文返回给用户,对于负载均衡服务器来说,其无法区分数据查询请求报文和这个若干个数据库响应报文是否处于统一个会话中,因而也无法分配给一个审计服务器进行处理。并且,对于负载均衡来说,其首要任务是保证各个审计服务器在能够均衡地分担审计任务,从而提高审计效率。
针对上述情况,本发明实施例提供了一种灵活地同步会话信息的方式,从而能够使得集群中的任意一个审计服务器,在接收到基于负载均衡而被分配的数据库访问报文后,都可以在该审计服务器本地来执行审计处理。具体地,在本发明实施例中,建立了主审计服务器机制,通过该机制,审计服务器集群任意一个审计服务器在接到数据库访问报文,可以基于预设的策略确定出数据库访问报文所属的会话对应的主审计服务器,该主审计服务器用于创建会话信息,并为其他任意一个审计服务器提供会话信息,以便各个审计服务器都能够在本地执行报文审计处理。
为了实现上述的主审计服务器机制,可以将确定主审计服务器的策略配置到集群中的各个审计服务器上,该策略具体可以通过如下方式来实现。某个审计服务器收到代理报文后,根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头计算哈希值(hash),然后,根据预设的哈希值与主审计服务器之间的映射关系,确定主审计服务器,该映射关系可以是一种基于算法的映射策略,例如将集群中的各个审计服务器与各个数值范围预先建立映射关系,在计算出某个哈希值后,除以某个数值,根据余数所处的数值范围来确定对应的审计服务器作为主审计服务器。由于用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头这些信息能够确定一个会话,那么基于这些信息而计算出的哈希值便与这个会话相对应,基于上述的映射策略,就可以建立起会话与主审计服务器之间的对应关系,从而集群中的任意一个审计服务器在接收到代理报文后,可以找到主审计服务器,并从主审计服务器获取到关联的会话信息。
此外,由于会话包括了用户向数据库服务器发出的正向报文也包括了数据库服务器向用户返回的反向报文,因此,在上述的根据代理报文和内层封装的数据库访问报文的报文头计算哈希值的算法中,需要兼顾正向和反向报文这两种情形,使得这两种情形的报文能够计算出相同的哈希值,从而命中同一会话。正向的数据库访问报文和反向的数据库访问报文的差别在于报文头中源IP、源端口号、目的IP、目的端口号中的源和目的正好是颠倒的,基于这样的特征,在在计算哈希值的算法中,可以将报文中的源IP和目的IP以及源端口号和目的端口号进行分别相加后,再参与到哈希值的计算中,从而使得正向的数据库访问报文和反向的数据库能够得到同一哈希值。
以上介绍了主审计服务器的确定方式,下面再介绍一下,对于集群中的任意一个审计服务器在接收到代理报文时的具体处理过程。对于集群中的某个审计服务器在接收到代理报文后,首先会对代理报文进行解析,提取出内层封装的数据库访问报文,然后,查询本地是否存在与数据库访问报文的上下文信息。具体可以通过数据库访问报文的IP地址、端口号以及代理报文头中的用户ID、数据库服务器ID等信息进行会话信息的查询。
如果在该审计服务器本地查询到了会话信息,则说明该审计服务器之前已经处理过与该会话相关的数据库访问报文,因此,该审计服务器可以直接根据该会话信息进行数据库访问报文的审计处理。这里需要说明的是,该审计服务器可以是与该会话对应的主审计服务器,也可以是主审计服务器以外的其他审计服务器。
如果在该审计服务器本地没有查询到会话信息,则说明该审计服务器第一次处理与该会话相关的数据库访问报文。在这种情况下,需要先确定主审计服务器。具体地,可以采用前面提到的通过代理报文头以及数据库访问报文的报文头来确定出主审计服务器。这里可能会存在两种情况,一种情况是,确定出的主审计服务器为当前的审计服务器,则该审计服务器执行创建会话信息的处理,具体可以通过创建会话实例来保存会话信息。另一种情况是,确定出的主审计服务器为集群中的其他审计服务器,在这种情况下,当前的审计服务器会将该代理报文转发至主审计服务器并携带自身的审计服务器,为了便于描述,将该审计服务器称作转发审计服务器。主审计服务器接收到该代理报文后,同样执行前面的对代理报文进行解析,并查询本地是否存在相关的会话信息,如果存在会话信息,则将该会话信息返回给转发审计服务器,如果不存在相关的会话信息,则创建会话信息,并将创建的会话信息返回给转发审计服务器。该转发审计服务器获取到该会话信息后,就可以对该数据库访问报文以及后续再接收到的数据访问报文进行审计处理了。需要说明的是,上述的主审计服务器可以是集群中的任意一个审计服务器,主审计服务器是相对于某个会话而定的,对于某个审计服务器来说,相对于某个会话是转发服务器,而相对于另一个会话则是主审计服务器。
此外,在本发明实施例中,还可以为主审计服务器指定一个备份服务器,将建立的会话信息复制到该备份服务器中,当主审计服务器出现故障时,可以切换到该备份服务器继续为集群中的各个审计服务器提供会话信息。
通过上述的主审计服务器的机制,使得集群中的任意一个审计服务器接收到代理报文后,都可以从主审服务器处获取到会话信息,然后在本地执行针对报文的审计处理。该主审计服务器机制结合集群的负载分担机制,实现了以集群的方式实现对数据库访问日志的审计,从而充分发挥集群审计服务器的优势,能够灵活的进行负载分配和弹性扩容。
此外,在审计服务器集群中,当会话结束时,还需要将对应的审计资源释放掉。一般来说,会话起始于用户向数据库服务器发起访问,经过用户鉴权后,登录到数据库服务器中执行各种数据操作,会话结束于用户退出登录。在一些情况下,会话也可以结束于用户自动退出机制或者用户断线,例如经过预设的时长没有操作则自动退出。相应地,在审计服务器集群一侧,也需要根据会话状态来执行相应的老化处理,以释放审计资源。
具体地,当集群中的审计服务器收到数据库访问报文为用户退出数据库访问的退出报文时,会通知主审计服务器,主审计服务器会删除之前创建的关联的会话信息,并通知执行与该会话相关的数据库访问报文的审计处理的一个或多个审计服务器,执行老化处理,以释放审计资源。如前面所介绍的,集群中的各个审计服务器,在首次接收到某个会话关联的数据库访问报文时,会向主审计服务器进行会话信息查询,其中会携带该审计服务器的服务器信息,从而使得主审计服务器能够获知,集群中有哪些审计服务器正在对当前会话相关的数据库访问报文进行审计处理,从而在需要关闭会话时,可以通知这些审计服务器,执行老化处理。在实际应用中,考虑到用户退出登录可能会存在一定的时间延迟性,主审计服务器在接收到退出报文时,可以等待一段时间后,再执行删除会话信息以及通知各个审计服务器执行老化处理。
此外,对于会话非正常结束的情形,例如用户断线等情形,在主审计服务器上可以对会话进行检测,各个执行审计处理的审计服务器可以以预设的时间间隔,向主审计服务器同步与该会话关联的数据库访问报文的接收情况。在主审计服务器一侧,如果在预设的时长内没有收到任何审计服务器汇报接收到与该会话关联的数据库访问报文,则可以执行删除会话信息,以及通知各个与该会话相关的审计服务器,执行老化处理。
本发明实施例提供的数据库访问的审计处理方法可以以产品服务的形式面向企业用户提供,这里所说的企业用户可以是具有后台数据库的企业,这些企业通过基于该数据库向内部或者外部用户提供各种基于数据库访问的服务。使用本发明实施例的审计处理方法,可以对数据库访问行为进行有效审核,以加强对数据安全性的管理。在产品形态上,可以以安装于智能手机、平板电脑、台式机上的软件应用的形式,提供给企业的运维人员,用于将各种审计处理结果展示给运维人员,并允许运维人员对审计处理进行一定的设置,例如,对审计规则的设定、对代理报文中嵌入的内容的设定。上述的产品形态也可以是专用的可移动终端设备,该设备为专用设备,可以通过专用网络以及信息加密方式与后台的审计服务器以及数据库代理进行通信,从而实现与审计处理相关的信息交互。下面通过一些具体实施例来进一步说明本发明的技术方案。
实施例一
如图3所示,其为本发明实施例的数据库访问的审计处理方法的流程示意图,该方法可以应用于执行数据库访问的审计处理的审计服务器集群上,该审计服务器集群从设置在应用服务器或者数据库服务器上的数据库代理接收数据库访问报文,然后执行针对数据库访问的审计处理,具体地,该方法包括:
S101:接收来自数据库代理的代理报文,根据负载均衡策略,将代理报文分配至审计服务器集群中的第一审计服务器。该数据库代理能够采集应用服务器与数据库服务器之间的数据库访问报文,并在数据库访问报文的基础上增加数据库代理的代理报文头以及外层报文头进行封装后,发送给审计服务器集群。其中,数据库访问报文主要包括用户通过应用服务器发起的数据库访问请求报文以及数据库返回的响应报文。
上述的代理报文可以包括三层结构,代理报文的最内层为数据库访问报文,在数据库访问报文的外层封装了代理报文头以及外层报文头。其中,在该代理报文头中封装了用户信息(例如用户ID)、数据库信息(例如访问的数据库实例ID)以及数据库访问特征信息,数据库访问特征信息可以例如数据库代理接收到用户的数据库访问请求报文的时间以及接收到数据库响应报文的时间,通过这两个时间可以计算出数据库响应的时间。代理报文头中封装的信息可以用于审计服务器确定数据库访问报文对应的会话以及进行报文审计处理。上述的外层报文头用于数据库代理与审计服务器集群之间进行报文传输,可以包括以太网报文头、IP报文头以及TCP报文头等。
上述的负载均衡可以由审计服务器集群的负载均衡服务器来执行,代理报文会首先到达负载均衡服务器,负载均衡服务器接收到代理报文后,根据代理报文的外层报文头,进行负载均衡处理,将代理报文分配给审计服务器集群中的第一审计服务器。
S102:根据代理报文中代理报文头包括的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,从第一审计服务器或者与数据库访问报文关联的会话对应的主审计服务器,获取与访问报文关联的会话信息。如前面所介绍的,用户对于数据库的系列访问操作会形成会话,会话从用户向数据库服务器发起登录开始,用户登录数据库服务器后,可能会执行上述的数据读取、写入、修改、删除等操作,这些操作都是通过数据库请求报文触发的,数据服务器也会不断向用户返回针对各种操作的响应报文,最终用户完成操作后进行登出,从而形成一个完整的会话过程。前述的审计处理也是需要和会话关联的,在审计处理过程中,可能会使用到会话上下文、用户身份、访问的数据内容等会话信息,以最终确定数据库访问是否正常或者合规。因此,在审计服务器接收到代理报文后,首先需要获取到会话信息。
具体地,上述获取与访问报文关联的会话信息的处理可以进一步包括:第一审计服务器根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,在本地进行与访问报文关联的会话信息查询。如果查询到会话信息,则说明该第一审计服务器之前已经处理过与该会话相关的数据库访问报文,因此,可以直接根据该会话信息,在本地进行数据库访问报文的审计处理。如果未查询到会话信息,则根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,按照预设的会话与主审计服务器的映射策略,确定主审计服务器,并将代理报文发送给主审计服务器,从主审计服务器获取会话信息,然后,在第一审计服务器的本地,执行审计处理。
如前面介绍的,在审计服务器群组中,主审计服务器的作用就是创建并始终保存会话信息,为群组中的其他审计服务器提供会话信息的同步服务。主审服务器接收到上述第一审计服务器发送的代理报文后,查询本地是否存在与访问报文关联的会话信息;如果存在,说明该会话信息已经创建,可能是之前该主审计服务器处理过与该会话相关的数据库审计报文,或者其他审计服务器接收到了与该会话相关的数据库审计报文并发送给了该主审计服务器,因此,主审计服务器可以直接将会话信息发送给第一审计服务器;如果主审计服务器中不存在与访问报文关联的会话信息,则根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,创建会话信息,并将会话信息发送给第一审计服务器,具体地,主审计服务器可以在本地创建会话实例,来保存会话信息,并向其他审计服务器提供会话信息,直至会话结束,处理与该与该会话相关的数据库审计报文的审计服务器也可以在审计处理的过程中,向该主审计服务器上报一些审计处理信息,这些信息同样可以作为会话信息保存在该会话实例中。
上述的第一审计服务器,可以通过基于哈希值的映射算法策略来确定主审计服务器。具体地,第一审计服务器在收到代理报文后,根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头中的IP地址信息和/或端口信息计算哈希值,然后,根据预设的哈希值与主审计服务器之间的映射关系,确定主审计服务器。该映射关系可以是一种基于算法的映射策略,例如将集群中的各个审计服务器与各个数值范围预先建立映射关系,在计算出某个哈希值后,除以某个数值,根据余数所处的数值范围来确定对应的审计服务器作为主审计服务器。由于用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头这些信息能够确定一个会话,那么基于这些信息而计算出的哈希值便与这个会话相对应,基于上述的映射策略,就可以建立起会话与主审计服务器之间的对应关系,从而集群中的任意一个审计服务器在接收到代理报文后,可以找到主审计服务器,并从主审计服务器获取到关联的会话信息。
此外,由于会话包括了用户向数据库服务器发出的正向报文也包括了数据库服务器向用户返回的反向报文,因此,在上述的根据代理报文和内层封装的数据库访问报文的报文头计算哈希值的算法中,需要兼顾正向和反向报文这两种情形,使得这两种情形的报文能够计算出相同的哈希值,从而命中同一会话。正向的数据库访问报文和反向的数据库访问报文的差别在于报文头中源IP、源端口号、目的IP、目的端口号中的源和目的正好是颠倒的,基于这样的特征,在在计算哈希值的算法中,可以将报文中的源IP和目的IP以及源端口号和目的端口号进行分别相加后,再参与到哈希值的计算中,从而使得正向的数据库访问报文和反向的数据库能够得到同一哈希值。
S103:根据关联的会话信息和预设的审计策略,在第一审计服务器本地,对数据库访问报文执行审计处理。审计处理可以包括对于数据库服务器运行中存在的各种问题或者用户访问行为的合规性等方面的审计,在上述的审计策略中,可以包含根据不同会话而定的审计标准。例如,某个用户为公司的员工,审计策略中规定了,该用户可以在公司网络环境下,访问1000条数据,而在公司以外的网络环境下,只能访问100条数据,在这个示例中,用户对数据库访问所形成的会话信息中,已经包含了用户访问数据库时所处的网络环境的信息,如用户访问使用的IP地址,而用户的身份信息也可以通过用户ID来确定,从而可以根据审计策略中预先设置的规定,来对该用户的访问行为是否合规进行审计,如果通过数据库访问报文发现该用户访问的数据超过了条数限制,则可以触发报警。
另外,如前面介绍的,数据库代理在生成代理报文时,可以在代理报文头中封装数据库访问特征信息,例如数据库代理接收到用户的数据库访问请求报文的时间以及接收到数据库响应报文的时间,通过这两个时间可以计算出数据库响应的时间。上述数据库访问特征信息可以应用于审计处理,例如通过数据库响应的时间来判断数据库运行是否正常。因此,上述的步骤S103可以具体为根据关联的会话信息、数据库访问特征信息以及预设的审计策略,在第一审计服务器本地,对数据库访问报文执行审计处理。
此外,在审计服务器集群中,当会话结束时,还需要将对应的审计资源释放掉。一般来说,会话起始于用户向数据库服务器发起访问,经过用户鉴权后,登录到数据库服务器中执行各种数据操作,会话结束于用户退出登录。在一些情况下,会话也可以结束于用户自动退出机制或者用户断线,例如经过预设的时长没有操作则自动退出。相应地,在审计服务器集群一侧,也需要根据会话状态来执行相应的老化处理,以释放审计资源。
具体地,当第一审计服务器接收数据库访问报文为用户退出数据库访问的退出报文时,第一审计服务器将退出报文发送给主审计服务器;主审计服务器删除关联的会话信息,并通知执行与该会话相关的数据库访问报文的审计处理的一个或多个第一审计服务器,执行老化处理。在实际应用中,考虑到用户退出登录可能会存在一定的时间延迟性,主审计服务器在接收到退出报文时,可以等待一段时间后,再执行删除会话信息以及通知各个审计服务器执行老化处理。
此外,对于会话非正常结束的情形,例如用户断线等情形,在主审计服务器上可以对会话进行检测,执行审计处理的一个或者多个第一审计服务器可以以预设的时间间隔向主审计服务器发送是否收到与会话相关的数据库访问报文的通知消息。在主审计服务器一侧,如果审计服务器在预设的时长内没有收到通知消息,则删除关联的会话信息,并通知执行与该会话相关的数据库访问报文的审计处理的一个或多个第一审计服务器,执行老化处理。
此外,为了确保数据安全性,上述的代理报文和/或会话信息均可以采用加密的方式在数据库代理与审计服务器之间和/或在审计服务器之间进行传输。
本发明实施例的数据库访问的审计处理方法,通过针对会话而设定主审计服务器,使得集群中的任意一个审计服务器接收到代理报文后,都可以从主审服务器处获取到会话信息,从而实现本地执行针对报文的审计处理。进而通过该主审计服务器机制结合集群的负载分担机制,实现了以集群的方式实现对数据库访问日志的审计,从而充分发挥集群审计服务器的优势,能够灵活的进行负载分配和弹性扩容。
此外,本发明实施例还提供了一种数据库访问的审计处理方法,该方法可以应用于前述的数据库代理上或者对数据库代理进行控制的相关服务器上,具体地,该方法包括:
S201:响应于对数据库代理的设置操作,获取用户对应的代理报文头的内容设定。该代理报文头用于对数据库访问报文进行封装以用于审计处理。鉴于代理报文头中的信息一方面涉及到用户数据,另一方面也直接关系到审计策略执行等,该部分内容是可以通过前端来进行定制化的。如前面所提到的,本发明实施例的数据库访问的审计处理方法可以以产品服务的形态向用户提供,用户可以通过安装于智能手机、平板电脑、台式机上的软件应用或者用于对数据库审计处理进行管理的专用设备来对代理报文头内容进行设置,从而根据实际需要或者数据隐私保护等方面进行酌情增减,同时也能让前端感知到后端所进行的处理。
S202:获取所述数据库访问报文,根据所述内容设定,生成所述代理报文头,并使用所述代理报文头对所述数据库访问报文进行封装,生成代理报文。
S203:将所述代理报文发送至审计服务器集群进行审计处理。
上述步骤S202以及步骤S203中的报文封装以及报文审计处理可以参见前述实施例的说明。
通过上述的数据库访问的审计处理方法,能够让用户灵活地对数据库代理生成的代理报文头的内容进行配置设定,从而能够满足各种不同的需求,进而可以进行灵活的数据库访问审计,让前端也能充分与后端处理进行交互和感知。
实施例二
如图4所示,其为本发明实施例的数据库访问的审计处理装置的结构示意图,该装置可以应用于执行数据库访问的审计处理的审计服务器集群上,该审计服务器集群从设置在应用服务器或者数据库服务器上的数据库代理接收数据库访问报文,然后执行针对数据库访问的审计处理,具体地,该装置包括:
负载均衡处理模块11,用于接收来自数据库代理的代理报文,根据负载均衡策略,将代理报文分配至审计服务器集群中的第一审计服务器。该数据库代理能够采集应用服务器与数据库服务器之间的数据库访问报文,并在数据库访问报文的基础上增加数据库代理的代理报文头以及外层报文头进行封装后,发送给审计服务器集群。其中,数据库访问报文主要包括用户通过应用服务器发起的数据库访问请求报文以及数据库返回的响应报文。
上述的代理报文可以包括三层结构,代理报文的最内层为数据库访问报文,在数据库访问报文的外层封装了代理报文头以及外层报文头。其中,在该代理报文头中封装了用户信息、数据库信息以及数据库访问特征信息。代理报文头中封装的信息可以用于审计服务器确定数据库访问报文对应的会话以及进行报文审计处理。上述的外层报文头用于数据库代理与审计服务器集群之间进行报文传输,可以包括以太网报文头、IP报文头以及TCP报文头等。
上述的负载均衡处理模块11接收到代理报文后,可以根据代理报文的外层报文头,进行负载均衡处理,将代理报文分配给审计服务器集群中的第一审计服务器,具体地,负载均衡处理模块11的功能可以由审计服务器集群的负载均衡服务器来实现。
会话信息获取模块12,用于根据代理报文中代理报文头包括的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,从第一审计服务器或者与数据库访问报文关联的会话对应的主审计服务器,获取与数据库访问报文关联的会话信息。该第一审计服务器可以是集群中的任意一个审计服务器,该会话信息获取模块12可以设置在该第一审计服务器上。
上述获取与访问报文关联的会话信息的处理可以进一步包括:第一审计服务器根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,在本地进行与访问报文关联的会话信息查询。如果查询到会话信息,则说明该第一审计服务器之前已经处理过与该会话相关的数据库访问报文,因此,可以直接根据该会话信息,在本地进行数据库访问报文的审计处理。如果未查询到会话信息,则根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,按照预设的会话与主审计服务器的映射策略,确定主审计服务器,并将代理报文发送给主审计服务器,从主审计服务器获取会话信息,然后,在第一审计服务器的本地,执行审计处理。
在审计服务器群组中,主审计服务器的作用就是创建并始终保存会话信息,为群组中的其他审计服务器提供会话信息的同步服务。主审服务器接收到上述第一审计服务器发送的代理报文后,查询本地是否存在与访问报文关联的会话信息;如果存在,说明该会话信息已经创建,可能是之前该主审计服务器处理过与该会话相关的数据库审计报文,或者其他审计服务器接收到了与该会话相关的数据库审计报文并发送给了该主审计服务器,因此,主审计服务器可以直接将会话信息发送给第一审计服务器;如果主审计服务器中不存在与访问报文关联的会话信息,则根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头,创建会话信息,并将会话信息发送给第一审计服务器,具体地,主审计服务器可以在本地创建会话实例,来保存会话信息,并向其他审计服务器提供会话信息,直至会话结束,处理与该与该会话相关的数据库审计报文的审计服务器也可以在审计处理的过程中,向该主审计服务器上报一些审计处理信息,这些信息同样可以作为会话信息保存在该会话实例中。
具体地,会话信息获取模块12可以通过基于哈希值的映射算法策略来确定主审计服务器。在收到代理报文后,可以根据代理报文头携带的用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头中的IP地址信息和/或端口信息计算哈希值,然后,根据预设的哈希值与主审计服务器之间的映射关系,确定主审计服务器。由于用户信息和/或数据库信息以及内层封装的数据库访问报文的报文头这些信息能够确定一个会话,那么基于这些信息而计算出的哈希值便与这个会话相对应,基于上述的映射策略,就可以建立起会话与主审计服务器之间的对应关系,从而集群中的任意一个审计服务器在接收到代理报文后,可以找到主审计服务器,并从主审计服务器获取到关联的会话信息。此外,由于会话包括了用户向数据库服务器发出的正向报文也包括了数据库服务器向用户返回的反向报文,因此,在上述的根据代理报文和内层封装的数据库访问报文的报文头计算哈希值的算法中,需要兼顾正向和反向报文这两种情形,使得这两种情形的报文能够计算出相同的哈希值,从而命中同一会话。正向的数据库访问报文和反向的数据库访问报文的差别在于报文头中源IP、源端口号、目的IP、目的端口号中的源和目的正好是颠倒的,基于这样的特征,在在计算哈希值的算法中,可以将报文中的源IP和目的IP以及源端口号和目的端口号进行分别相加后,再参与到哈希值的计算中,从而使得正向的数据库访问报文和反向的数据库能够得到同一哈希值。
审计处理模块13,用于根据关联的会话信息和预设的审计策略,在第一审计服务器本地,对数据库访问报文执行审计处理。该审计处理模块13可以设置在该第一审计服务器上。审计处理可以包括对于数据库服务器运行中存在的各种问题或者用户访问行为的合规性等方面的审计,在上述的审计策略中,可以包含根据不同会话而定的审计标准。另外,如前面介绍的,数据库代理在生成代理报文时,可以在代理报文头中封装数据库访问特征信息。因此,上述的审计处理可以具体为根据关联的会话信息、数据库访问特征信息以及预设的审计策略,在第一审计服务器本地,对数据库访问报文执行审计处理。
此外,在审计服务器集群中,当会话结束时,还需要将对应的审计资源释放掉。一般来说,会话起始于用户向数据库服务器发起访问,经过用户鉴权后,登录到数据库服务器中执行各种数据操作,会话结束于用户退出登录。在一些情况下,会话也可以结束于用户自动退出机制或者用户断线,例如经过预设的时长没有操作则自动退出。相应地,在审计服务器集群一侧,也需要根据会话状态来执行相应的老化处理,以释放审计资源。
具体地,当第一审计服务器接收数据库访问报文为用户退出数据库访问的退出报文时,第一审计服务器将退出报文发送给主审计服务器;主审计服务器删除关联的会话信息,并通知执行与该会话相关的数据库访问报文的审计处理的一个或多个第一审计服务器,执行老化处理。在实际应用中,考虑到用户退出登录可能会存在一定的时间延迟性,主审计服务器在接收到退出报文时,可以等待一段时间后,再执行删除会话信息以及通知各个审计服务器执行老化处理。此外,对于会话非正常结束的情形,例如用户断线等情形,在主审计服务器上可以对会话进行检测,执行审计处理的一个或者多个第一审计服务器可以以预设的时间间隔向主审计服务器发送是否收到与会话相关的数据库访问报文的通知消息。在主审计服务器一侧,如果审计服务器在预设的时长内没有收到通知消息,则删除关联的会话信息,并通知执行与该会话相关的数据库访问报文的审计处理的一个或多个第一审计服务器,执行老化处理。上述的老化处理可以通过在各个审计服务器上设置用于管理和汇报会话状态的老化处理模块来实现。
对于上述处理过程具体说明、技术原理详细说明以及技术效果详细分析在前面实施例中进行了详细描述,在此不再赘述。
本发明实施例的数据库访问的审计处理装置,通过针对会话而设定主审计服务器,使得集群中的任意一个审计服务器接收到代理报文后,都可以从主审服务器处获取到会话信息,从而实现本地执行针对报文的审计处理。进而通过该主审计服务器机制结合集群的负载分担机制,实现了以集群的方式实现对数据库访问日志的审计,从而充分发挥集群审计服务器的优势,能够灵活的进行负载分配和弹性扩容。
实施例三
前面实施例描述了数据库访问的审计处理方法的流程处理及装置结构,上述的方法和装置的功能可借助一种电子设备实现完成,如图5所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器110和处理器120。
存储器110,用于存储程序。
除上述程序之外,存储器110还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器110可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器120,耦合至存储器110,用于执行存储器110中的程序,以执行前述实施例中所描述的数据库访问的审计处理方法的操作步骤。
此外,处理器120也可以包括前述实施例所描述的各种模块以执行数据库访问的审计处理,并且存储器110可以例如用于存储这些模块执行操作所需要的数据和/或所输出的数据。
对于上述处理过程具体说明、技术原理详细说明以及技术效果详细分析在前面实施例中进行了详细描述,在此不再赘述。
进一步,如图所示,电子设备还可以包括:通信组件130、电源组件140、音频组件150、显示器160等其它组件。图中仅示意性给出部分组件,并不意味着电子设备只包括图中所示组件。
通信组件130被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件130经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件130还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件140,为电子设备的各种组件提供电力。电源组件140可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件150被配置为输出和/或输入音频信号。例如,音频组件150包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器110或经由通信组件130发送。在一些实施例中,音频组件150还包括一个扬声器,用于输出音频信号。
显示器160包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。