数据库安全控制系统和方法与流程

文档序号:12670178阅读:347来源:国知局
数据库安全控制系统和方法与流程

本发明属于涉及数据库的信息安全技术领域,尤其涉及一种数据库安全控制系统和方法。



背景技术:

随着社会的发展,越来越多的数据采用电子化形式存储;无论是生活、工作、学习都离不开信息系统的支撑。数据库系统作为信息化技术的核心,其安全性和可靠性直接影响到整个信息化系统。

数据库审计是一种常见的数据库安全控制技术。数据库审计是指对指定用户在数据库中的操作行为进行监控和记录的一种安全技术,通过分析和记录用户的操作命令以确定操作的合法性,并形成操作的历史记录。这样数据库审计员可以查阅审计记录,并对数据泄露问题进行事后追踪。

PostgreSQL是一种多进程架构的,支持复杂查询、事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的一种关系型数据库管理软件。现有的一些基于基于开源数据库PostgreSQL进行开发的数据库并不具有安全审计功能,这样导致在发生信息安全事故时无法进行追溯,对信息安全具有很大威胁。



技术实现要素:

针对现有技术中一些基于开源数据库PostgreSQL进行开发的数据库并不具有安全审计功能的问题,本发明实施例的目的是提供一种有效且高效的数据库安全控制方法。

为了解决上述问题,本发明实施例提出了一种数据库安全控制系统,包括:用于确定审计所涉及数据库、对象、任务的审计定义模块,用于根据审计定义模块的设定确定审计目标并对审计目标进行审计的审计操作模块,用于根据审计操作模块的审计结果进行报警和/或终止进程的审计预警模块;

其中所述审计定义模块包括:范围定义子模块、用户定义子模块、任务定义子模块;其中,范围定义单元用于预先设定需要审计的数据库,即用户操作的数据库的数据库名dbname;用户定义单元用于预先设定被审计的用户,即被审计用户的用户名username和地址addr;任务定义单元用于预先设定待审计的任务以及待审计的内容;

其中所述审计操作模块包括用于根据审计定义模块的设定确定审计目标的审计判断单元、用于根据审计判断单元确定的审计任务及涉及内容对审计目标进行审计的后台操作单元;

其中审计判断单元用于根据所述审计定义模块确定的用户操作的数据库的数据库名dbname、用户名username和地址addr,并监控该用户的每一任务;如果用户的任务为审计定义模块确定的待审计的任务,则将待审计的任务以及待审计的内容确定为审计目标;在本发明的一个实施例中该审计判断单元可以通过pgluq_check_log()方法实现;

其中审计操作模块用于对审计判断单元确定的审计目标进行相应的审计并生成审计记录;后台操作单元是系统的核心内容,在本发明的一个实施例中可以通过log_prefix()、write_syslog()、pgluq_log()三个函数实现:

log_prefix()函数用于在确定审计目标后,对审计目标对应的用户的系统日志进行格式化;

write_syslog()函数用于在该用户的系统日志进行格式化后,判断用户的系统日志是否正确打开,如果是则将审计信息写入所述系统日志中以生成审计记录,如果否则将审计信息写入错误日志中以生成审计记录;且所述write_syslog()函数还用于对每一日志信息生成顺序编码并随每一日志信息进行存储;且当日志信息过长或是嵌入了其他信息时,将日志信息分为多段进行存储;

pgluq_log()函数用于接收审计目标的每一操作信息,并将每一操作信息写入该用户的系统日志中;

其中所述审计预警模块包括:用于在审计操作模块审计到用户进行非法操作时进行报警的报警生成单元、用于在审计操作模块审计到用户进行非法操作时终止用户进程的进程终止单元;

其中所述审计预警模块用于确定用户的非法操作的预警级别,如果预警级别低于预设级别时利用所述报警生成单元进行报警,如果预警级别高于预设级别时利用所述进程终止单元终止用户的非法操作的进程并利用所述报警生成单元进行报警。

其中,所述系统还包括审计转储模块,用于根据预设规则将审计目标对应的用户操作的数据库和/或审计记录进行备份。

其中,所述系统还包括审计保护模块,用于监测所述数据库安全控制系统以防止非法篡改;

其中所述审计保护模块包括过程保护单元和防篡改单元,其中所述过程保护模块用于读取对所述数据库安全控制系统的操作以防止未经授权用户对系统进行修改;所述防篡改模块用于监控所述审计记录以防止未经授权用户对审计记录进行修改。

其中,所述审计记录为pg_statsinfo表,且所述审计记录中记录以下的至少一项:产生时间、用户名、数据库名、客户端来源或者IP以及主机名、会话ID、会话行号、命令标签、SQL状态代码、SQL语句。

同时,本发明实施例还提出了一种数据库安全控制方法,包括:

确定需要进行审计的审计范围、审计用户、审计任务;

审计对象通过审计判断后,后台开始具体的审计操作并会生成审计记录,根据审计记录与审计要求判断用户操作是否合法,若不合法系统会进行预警。

其中,所述方法还包括:

系统生成的审计记录最终会进行转储保障审计数据的安全,并对转储后的数据访问权限等方面的控制,严格限制未经授权的用户访问,保护审计数据的安全使其不被非正常访问、修改和破坏。

本发明的上述技术方案的有益效果如下:上述的技术方案提出了一种数据库的数据安全控制系统和方法,能够对基于开源数据库PostgreSQL进行开发的数据库进行安全审计,以提高整个数据库的安全性。同时审计只是对预设审计目标,不会对系统运行效率造成影响。

附图说明

图1是本发明实施例的自定义函数创建流程图;

图2是自主可控数据库自定义函数加密创建流程图。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。

如图1所示的,本发明实施例提出了一种数据库安全控制系统和方法,其技术核心包括:

1、审计模块设计

如图1所示,系统的审计模块分为5个模块,分别为审计定义模块、审计操作模块、审计转储模块、审计预警模块、审计保护模块。

审计定义模块完成审计的初始化工作及分为范围定义模块、用户定义模块、任务定义模块;审计操作模块是该设计的重点,它要根据审计要求的判断开展后台审计操作,分为审计判断单元、后台操作单元;审计转储模块要完成审计数据、审计记录的脱机存储等操作;审计预警模块首先要根据用户命令操作的非法级别生成审计预警,严重和还要强制进行进程终止操作,分为报警生成模块、进程终止模块;审计保护模块分为过程保护模块和防篡改模块,前者维护及保护审计过程,使其免遭修改、非法访问及破坏,后者保护审计记录不被未授权的访问、修改和破坏。

2、审计模块设计

如图1所示,系统的审计模块分为5个模块,分别为审计定义模块、审计操作模块、审计转储模块、审计预警模块、审计保护模块。

审计定义模块完成审计的初始化工作及分为范围定义单元、用户定义单元、任务定义单元;审计操作模块是该设计的重点,它要根据审计要求的判断开展后台审计操作,分为审计判断模块、后台操作模块;审计转储模块要完成审计数据、审计记录的脱机存储等操作;审计预警模块首先要根据用户命令操作的非法级别生成审计预警,严重和还要强制进行进程终止操作,分为报警生成模块、进程终止模块;审计保护模块分为过程保护模块和防篡改模块,前者维护及保护审计过程,使其免遭修改、非法访问及破坏,后者保护审计记录不被未授权的访问、修改和破坏。

3、子模块设计

(1)审计定义模块

审计定义模块影响审计系统的初始化工作,分为范围定义单元、用户定义单元、任务定义单元。

范围定义单元:即对审计用户的操作对象进行定义,即用户操作的数据库dbname。

用户定义单元:即对被审计的操作用户进行定义,包括用户名username,以及用户地址addr。

任务定义单元:即对审计的任务进行定义,确定审计的内容要求。

(2)审计操作模块,包括审计判断单元和后台操作模块

审计判断单元负责对用户或是数据库进行审计的判断用的,它的工作通过pgluq_check_log()方法实现。

pgluq_check_log()主要对审计对象的三个信息进行判断,包括dbname,username和addr。对于系统内的默认行为,仅对超级用户的查询进行审计,若是其他新的行为,我们需要对用户的信息进行判断,若符合审计系统初始化的定义则将会对用户的行为、操作进行审计,否则不进行审计。

后台操作模块是系统进行审计工作的核心内容,它完成对审计用户的审计工作并要生成审计记录,它的实现是通过log_prefix()、write_syslog()、pgluq_log()三个方法实现。

log_prefix():该方法是用户通过对审计范围的判断后,对用户的操作日志进行格式化处理,错误的信息可以忽略。

write_syslog():该方法是对日志行进行格式化标记处理后,写消息到系统日志,如果系统日志没有打开则写到错误日志上。为了防止日志消息的重复,对每个日志消息设立顺序编号。如果信息太长或是嵌入了其他的信息,可以将信息分为多个消息行写入系统日志。

pgluq_log():完成log_prefix()和write_syslog()后,就可以根据用户的操作将用户操作信息记录下来,审计操作模块工作完成。

(4)审计预警模块

审计预警模块包含两个单元:审计报警单元和进程终止单元。

审计报警单元:针对用户的非法操作,若其预警级别不是最高,生成报警,不立刻将进程终止。

进程终止单元:针对用户的非法操作,若其预警级别已到最高,生成报警并立刻将进程终止。

(5)审计保护模块

审计保护模块分为两个单元,即为过程保护单元和防篡改单元。

过程保护单元:针对审计过程,防止在审计过程中审计遭到修改、非法访问及破坏。针对审计数据,要严格限制未经授权的用户访问。

防篡改单元:针对审计系统生成的审计记录,需要保护其免受未授权的访问、修改和破坏。

审计工作流程

数据库审计系统的工作流程图如图2所示,审计系统首先会根据用户的要求进行审计范围、审计用户、审计任务的初始化。审计对象通过审计判断后,后台开始具体的审计操作并会生成审计记录,根据审计记录与审计要求判断用户操作是否合法,若不合法系统会进行预警,并且这个过程将受到保护;系统生成的审计记录最终会进行转储保障审计数据的安全,并对转储后的数据访问权限等方面的控制,严格限制未经授权的用户访问,保护审计数据的安全使其不被非正常访问、修改和破坏。

审计记录表

审计记录表为pg_statsinfo表,记录项为产生时间、用户名、数据库名、客户端来源或者IP以及主机名、会话ID、会话行号、命令标签、SQL状态代码、SQL语句。主键为会话ID号和会话行号的复合主键。

可以根据用户需要,更改配置文件选项,记录适当的审计信息。主要的配置选项如下:

logging_collector

log_statement

log_hostname

log_connections

log_disconnections

log_min_duration_statement

logging_collector参数控制是否要打开审计功能

log_statement有四个选项,分别为none/DDL/DML/ALL,none表示除了错误操作告警,将不记录任何用户的操作记录。DDL表示只记录所有数据定义命令,DML表示在记录DDL语句的基础上,还记录DML的操作。ALL表示记录所有用户的操作。

log_hostname参数可以控制是否要记录连接主机的主机名。

log_connections参数可以控制是否要记录客户端连接的信息。

log_disconnections参数可以控制是否要记录客户端断开的信息。

log_min_duration_statement参数可以设定一个语句执行的时间。当时间超过设定时间时,就会把该语句的执行时间,记录到审计表中。

数据库审计记录表只有审计员和超级用户可以访问和查看和备份,但也不具有修改和删除的权限。

审计预警技术

审计预警技术可以保证当数据库发生非法操作时,系统根据不同的操作影响范围能够发出实时告警,甚至终止违例进程。用户在数据库的非法命令操作导致的结果有轻重缓急之分,根据信息影响的范围可以对审计预警进行分级,通常情况下预警可以分层三级,可以通过配置文件中参数alarm_level设置。

(1)info:提示信息报警,对业务无任何影响,可在方便的时间处理,包括执行查询的语法错误,主备机查询冲突,导致当前命令退出的消息;

(2)waring:警告信息报警,紧急度不是很高,但也要及时处理,避免恶化,包括长事务,报告导致当前会话终止的错误;

(3)error:错误信息报警,需立即处理,包括导致所有数据库会话退出的错误,以及用户的非法操作。

设置审计告警配置表alarm,属性分别为alarm_level(告警等级),alarm_type(告警类型),alarm_object_name(告警对象名称),alarm_desc(告警信息),alarm_time(告警时间),alarm_code(告警代码)。

针对用户的非法操作,若其预警级别已到最高,生成报警并立刻将进程终止,并记录在告警表中。

审计保护技术

审计保护技术主要是针对数据库的审计记录不可被普通用户访问,修改和破坏的技术。数据库只有审计员可以对审计表和告警表进行查询操作,但并不具有修改和删除记录的权限。数据库中的超级用户具有对审计表和告警表的增删改查权限。这里采用触发文件激活数据库的超级用户的方式,即默认数据库内部不存在超级用户,当在指定位置放置触发文件后,超级用户生效。数据库的触发文件的是根据数据库所在服务器的MAC地址,通过加解密程序生成的文件。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1