掌桥专利:专业的专利平台
掌桥专利
首页

一种安全控制系统、方法、装置及存储介质

文献发布时间:2023-06-19 09:26:02


一种安全控制系统、方法、装置及存储介质

技术领域

本发明涉及计算机数据处理领域,尤其涉及一种安全控制系统、方法、装置及存储介质。

背景技术

现有的多类别数据库访问方式有Apache Zeppelin,Apache Zeppelin是一个提供数据摄入,数据发现,数据分析和数据可视化与协作的多用途数据访问系统。Zeppelin支持多语言后端,目前支持的语言后端有Apache Spark,Python,JDBC,Markdown和shell等。

Apache Zeppelin虽然可以提供不同类别的数据库的远程访问,但其更加侧重于对远程不同数据库中内容的读取,分析并形成可视化的结果。除了远程数据库自身的安全策略外,Zeppelin并没有提供更多的数据访问安全控制方法。而数据库自身的安全策略往往比较单一,比如只能限制用户是否可以创建表,且安全策略往往并不完全符合实际的生产环境需求,所以现有的多类别数据库访问在实际生产环境中,往往不够安全。

发明内容

有鉴于此,本发明实施例期望提供一种安全控制系统、方法、装置及存储介质,能够对多类别数据库的访问进行安全控制。

为达到上述目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供一种安全控制系统,所述系统包括:

规则数据库,用于存储设置的安全访问规则;

数据库语言解析器,用于基于用户访问数据库时选择的数据库类别,解析所述用户输入的数据库操作语句,得到操作单元列表;

安全控制器,用于提取所述规则数据库中的安全访问规则;将所述数据库语言解析器解析出的操作单元列表与所述安全访问规则进行匹配,得到匹配结果;基于所述匹配结果进行数据库的访问安全控制;

其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,所述解析调用接口用于匹配所述安全访问规则。

上述方案中,所述数据库语言解析器具体用于:

针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件;

基于所述词法文件和语法文件,生成各类别数据库对应的特定语言解析策略;

基于所述特定语言解析策略解析数据库操作语句,得到操作单元列表。

上述方案中,所述数据库语言解析器具体用于:

针对各类别的数据库,分别查询官方语法文件;

设置所述特定格式的词法文件,所述词法文件至少包括:所述官方语法文件中的操作信息;

基于所述词法文件设置所述特定格式的语法文件,所述语法文件至少包括:所述官方语法文件中的语法信息。

上述方案中,所述数据库语言解析器具体用于:

将数据库操作语句转换成树形结构;

对所述树形结构进行解析,得到操作类型和操作对象。

上述方案中,所述安全控制器还用于:

基于所述操作单元列表确定存在匿名数据库访问时,查询当前数据库名;

将所述匿名数据库替换为当前数据库名,得到更新后的操作单元列表;其中,所述更新后的操作单元列表用于与所述安全访问规则进行匹配;

或者,所述安全控制器还用于:当所述匹配结果为所述操作单元列表符合所述安全访问规则时,执行所述用户的数据库访问请求;

当所述匹配结果为所述操作单元列表不符合所述安全访问规则时,拒绝所述用户的数据库访问请求,向所述用户返回安全检测错误提示。

上述方案中,所述安全访问规则具有可修改的属性。

本发明实施例还提供一种安全控制方法,所述方法包括:

存储设置的安全访问规则;

基于用户访问数据库时选择的数据库类别,解析所述用户输入的数据库操作语句,得到操作单元列表;

提取所述安全访问规则;将数据库语言解析器解析出的所述操作单元列表与所述安全访问规则进行匹配,得到匹配结果;基于所述匹配结果进行数据库的访问安全控制;

其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,所述解析调用接口用于匹配所述安全访问规则。

本发明实施例还提供一种安全控制装置,所述装置包括:

存储模块,用于存储设置的安全访问规则;

解析模块,用于基于用户访问数据库时选择的数据库类别,解析所述用户输入的数据库操作语句,得到操作单元列表;

控制模块,用于提取所述安全访问规则;将数据库语言解析器解析出的所述操作单元列表与所述安全访问规则进行匹配,得到匹配结果;基于所述匹配结果进行数据库的访问安全控制。

本发明实施例还提供一种存储介质,其上存储有可执行程序,所述可执行程序被处理器执行时实现本发明实施例提供的所述安全控制方法。

本发明实施例还提供一种安全控制装置,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行本发明实施例提供的所述安全控制方法。

本发明实施例所提供的安全控制系统、方法、装置及存储介质,所述系统包括:规则数据库,用于存储设置的安全访问规则;数据库语言解析器,用于基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表;安全控制器,用于提取规则数据库中的安全访问规则;将数据库语言解析器解析出的操作单元列表与安全访问规则进行匹配,得到匹配结果;基于匹配结果进行数据库的访问安全控制;其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,解析调用接口用于匹配安全访问规则。如此,通过安全控制器能够对多类别数据库的访问进行安全控制,在数据库自身安全策略之外,又构建了一层访问保护,使得数据库的访问更加安全。

此外,由于不同类别的数据库对应的语言解析器使用统一的解析调用接口,因此,针对用户输入的数据库类别,均能实现对不同数据库操作语句的解析,从而使得多类别数据库语言解析实现更方便、快捷。

附图说明

图1为本发明实施例提供的安全控制系统的结构示意图;

图2为本发明实施例提供的数据库语言解析器的操作流程示意图;

图3为本发明实施例提供的数据库语言解析器的具体操作流程示意图;

图4为本发明实施例提供的安全控制方法的实现流程示意图;

图5为本发明实施例提供的安全控制方法的具体实现流程示意图;

图6为本发明实施例提供的安全控制装置的组成结构示意图;

图7为本发明实施例提供的安全控制装置的硬件结构示意图。

具体实施方式

为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。

图1为本发明实施例提供的安全控制系统的结构示意图;如图1所示,该安全控制系统包括规则数据库101、数据库语言解析器102和安全控制器103。

具体地,规则数据库101,用于存储设置的安全访问规则。

这里,可以由管理员根据实际需求定义安全访问规则,并将定义好的安全访问规则存储至规则数据库。可以根据实际环境需求,在数据库外层添加安全访问规则,不受数据库自身的限制,比如可以限制数据库中表,列名字的规范,可插入的数据行数等,从而能够达到更细粒度,更贴合实际生成环境的控制。

一个示例中,管理员定义的安全访问规则可以为:

1)创建表时,字段名不能小于3个字符。

2)用户不能访问数据库DM4中表X3中的ID3字段。

同时,当实际生产环境中有大量的数据库时,可以一次性定义好安全访问规则,应用在这些数据库上,从而省去了为每个数据库重复定义的繁琐,达到了一处定义到处适用的效果。

此外,安全访问规则具有可修改的属性。规则数据库可以位于安全控制器的外围,两者并未耦合在一起,当不需要使用规则数据库,或需要更新安全访问规则时,只需删除或者更新规则数据库即可,无需去各个实际的数据库中操作。

数据库语言解析器102,用于基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表。

下面主要描述数据库语言解析器的操作流程,如图2所示,包括以下步骤(同时也可以参考图3中的数据库语言解析器的具体操作流程):

步骤201,针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件。

在实际生产环境中,会涉及多种类别的数据库,可以列举出实际使用到的数据库类别,比如GBase,Oracle,Mysql,Hive等。

针对各类别的数据库,分别设置对应的特定格式的词法文件和语法文件。这里,可以针对各类别的数据库,分别查询官方语法文件;设置特定格式的词法文件,词法文件至少包括:官方语法文件中的操作信息;基于词法文件设置特定格式的语法文件,语法文件至少包括:官方语法文件中的语法信息。

一个示例中,以数据库GBase为例,查询GBase的官方语法文件,使用GBase的官方语法文件,可以确保用户输入的数据库操作语句和词法规则是正确且完备的,新建GBaseLexer.g4词法文件,查看GBase官方语法文件中的操作信息,比如保留字,操作符,将其以符合ANTLR4格式的形式加入词法文件。使用正则语法,列出GBase的分割符,以及注释部分。

根据定义好的词法文件,定义完备的特定格式的语法文件。仍以数据库GBase为例,新建GBaseParser.g4语法文件,查看GBase官方语法文件中的语法信息,将其以符合ANTLR4格式的形式加入语法文件。

通过设置多种类别数据库的词法文件和语法文件,使得数据库语言解析器能够正确解析数据库所有支持的语法,使得用户的所有数据库操作都能够被正确识别。此外,可以根据实际生产环境中用到的数据库,自主地往数据库语言解析器中添加数据库类别,实现对安全控制数据库种类的扩展性,这种可扩展性,使得安全控制系统能够适用于各种不同的实际生产环境。

步骤202,基于词法文件和语法文件,生成各类别数据库对应的特定语言解析策略。

具体地,可以使用ANTLR4分析词法文件和语法文件,生成词法、语法解析类。

这里,ANTLR4是一个开源工具,会自动将预先定义好的g4文件进行编译,生成对应语言的解析策略。

解析策略可以理解为是一段源代码,比如我的程序是用JAVA语言编写的,那么ANTLR4会编译g4文件,生成对应JAVA语言的代码文件。具体的编译过程只需要执行一条命令即可,参考下述代码:

$antlr4Hello.g4#使用之前定义过的antlr4命令生成语法分析器和词法分析器。

上述代码中的HelloLexer.java和HelloParser.java便是自动生成的解析策略,将这两个解析策略放到代码中运行,便可以实现数据库操作语句的解析。

步骤203,基于特定语言解析策略解析数据库操作语句,得到操作单元列表。

具体地,可以将数据库操作语句转换成树形结构;对树形结构进行解析,得到操作类型和操作对象。这里,树形结构可以是语法树,解析语法树的流程如下,仍以数据库GBase为例:

a.定义操作单元数据结构,每个操作单元可以至少包括:操作类型,操作数据库名,操作表名,操作列名,操作列类型等。

b.使用深度优先,从左往右遍历语法树。

c.标记当前数据库名为NULL。

d.遇到USE语句记录当前数据库名字为USE数据库名。

e.用Stack记录访问过的操作类型节点(createTable,insert,select等)。每次经过操作类型节点时将操作类型push进Stack。当退出以此操作节点为根节点的子树时,从Stack中pop出操作类型。Stack中最上层的操作类型,即为当前操作类型。

f.为每棵以操作类型为节点的子树,建立表别名与表实际名称的映射TABLE_ALIAS_MAP,列别名与列实际名称的映射COL_ALIAS_MAP。

g.GBase子查询语句会使用表别名代替子查询结果,记录此表别名在TABLE_ALIAS_MAP中,key为表别名,value为NULL。因为此表,以及其对应的列已在子查询中记录过,在外部查询中不再重复记录。

h.当退出每棵操作子树时,记录此子树中遇到的操作单元,并与TABLE_ALIAS_MAP,COL_ALIAS_MAP对比。分别使用表名,列名查找TABLE_ALIAS_MAP,COL_ALIAS_MAP。

若MAP中存在对应记录,且value不为NULL,则用MAP中value的实际名称,替换表名或列名。

若MAP中存在对应记录,且value为NULL,则不记录此操作。

若MAP中无对应记录,则说明表名或列名非别名。

i.遍历完整棵树,即可获得操作单元列表。

需要注意地,不同类别的数据库对应的语言解析器使用统一的解析调用接口,也就是说,用户只需选择数据库类别,就能够对不同的数据库操作语句进行解析。解析调用接口用于匹配安全访问规则,如此,使得匹配安全规则时,无需关注具体某个数据库的实现细节。

一个示例中,用户dev1094输入了GBase SQL操作语句,如下所述:

CREATE TABLE T7(A INT,B DECIMAL);

INSERT INTO T7VALUES(1,2);

CREATE TABLE T8SELECT*FROM T9;

USE`DM4`;

SELECT COUNT(*)FROM X1WHERE EXISTS

(

SELECT 1FROM X2WHERE X2.ID2=X1.ID2

AND EXISTS

(

SELECT 1FROM X3WHERE X3.ID3=X1.ID3

)

);

通过数据库语言解析器分析上述用户的操作语句得到如下表1的操作单元列表:

表1 Gbase语法解析结果

安全控制器103,用于提取规则数据库中的安全访问规则;将数据库语言解析器解析出的操作单元列表与安全访问规则进行匹配,得到匹配结果;基于匹配结果进行数据库的访问安全控制。

安全控制器103,还用于基于操作单元列表确定存在匿名数据库访问时,查询当前数据库名;将匿名数据库替换为当前数据库名,得到更新后的操作单元列表;其中,更新后的操作单元列表用于与安全访问规则进行匹配。

安全控制器103,还用于当匹配结果为操作单元列表符合安全访问规则时,执行用户的数据库访问请求;当匹配结果为操作单元列表不符合安全访问规则时,拒绝用户的数据库访问请求,向用户返回安全检测错误提示。

一个示例中,提取规则数据库中的安全访问规则:

1)创建表时,字段名不能小于3个字符。

2)用户不能访问数据库DM4中表X3中的ID3字段。

查询表1中的操作单元列表确定存在匿名数据库访问,即表1中第1-5行存在匿名数据库,通过查询当前数据库得到匿名数据库名为DM2,将匿名数据库替换为当前数据库名DM2,并更新表1的操作单元列表,得到更新后的操作单元列表,如表2所示。

表2更新匿名数据库后的结果

将上述表2中的更新后的操作单元列表与上述安全访问规则进行匹配,得到匹配结果,匹配结果表明第1行操作单元不符合安全访问规则(创建表时,字段名不能小于3个字符),且第8行操作单元也不符合安全访问规则(用户不能访问数据库DM4中表X3中的ID3字段),则拒绝用户的数据库访问请求,并向用户返回安全检测错误提示,可以理解地,若匹配结果表明操作单元列表符合安全访问规则,则执行用户的数据库访问请求。

本发明实施例所提供的安全控制系统,所述系统包括:规则数据库,用于存储设置的安全访问规则;数据库语言解析器,用于基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表;安全控制器,用于提取规则数据库中的安全访问规则;将数据库语言解析器解析出的操作单元列表与安全访问规则进行匹配,得到匹配结果;基于匹配结果进行数据库的访问安全控制;其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,解析调用接口用于匹配安全访问规则。如此,通过安全控制器能够对多类别数据库的访问进行安全控制,在数据库自身安全策略之外,又构建了一层访问保护,使得数据库的访问更加安全。

此外,由于不同类别的数据库对应的语言解析器使用统一的解析调用接口,因此,针对用户输入的数据库类别,均能实现对不同数据库操作语句的解析,从而使得多类别数据库语言解析实现更方便、快捷。

如图4所示,本发明实施例中安全控制方法的实现流程,包括以下步骤:

步骤401,存储设置的安全访问规则。

这里,可以由管理员根据实际需求定义安全访问规则,并将定义好的安全访问规则存储至规则数据库。可以根据实际环境需求,在数据库外层添加安全访问规则,不受数据库自身的限制,比如可以限制数据库中表,列名字的规范,可插入的数据行数等,从而能够达到更细粒度,更贴合实际生成环境的控制。

一个示例中,管理员定义的安全访问规则可以为:

1)创建表时,字段名不能小于3个字符。

2)用户不能访问数据库DM4中表X3中的ID3字段。

同时,当实际生产环境中有大量的数据库时,可以一次性定义好安全访问规则,应用在这些数据库上,从而省去了为每个数据库重复定义的繁琐,达到了一处定义到处适用的效果。

此外,安全访问规则具有可修改的属性。规则数据库可以位于安全控制器的外围,两者并未耦合在一起,当不需要使用规则数据库,或需要更新安全访问规则时,只需删除或者更新规则数据库即可,无需去各个实际的数据库中操作。

步骤402,基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表。

在一些实施例中,基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表,可以包括:针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件;基于词法文件和语法文件,生成各类别数据库对应的特定语言解析策略;基于特定语言解析策略解析数据库操作语句,得到操作单元列表。

针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件,可以包括:针对各类别的数据库,分别查询官方语法文件;设置特定格式的词法文件,词法文件至少包括:官方语法文件中的操作信息;基于词法文件设置特定格式的语法文件,语法文件至少包括:官方语法文件中的语法信息。

基于特定语言解析策略解析数据库操作语句,得到操作单元列表,可以包括:将数据库操作语句转换成树形结构;对树形结构进行解析,得到操作类型和操作对象。

在实际生产环境中,会涉及多种类别的数据库,可以列举出实际使用到的数据库类别,比如GBase,Oracle,Mysql,Hive等。

一个示例中,以数据库GBase为例,查询GBase的官方语法文件,使用GBase的官方语法文件,可以确保用户输入的数据库操作语句和词法规则是正确且完备的,新建GBaseLexer.g4词法文件,查看GBase官方语法文件中的操作信息,比如保留字,操作符,将其以符合ANTLR4格式的形式加入词法文件。使用正则语法,列出GBase的分割符,以及注释部分。

根据定义好的词法文件,定义完备的特定格式的语法文件。仍以数据库GBase为例,新建GBaseParser.g4语法文件,查看GBase官方语法文件中的语法信息,将其以符合ANTLR4格式的形式加入语法文件。

具体地,可以使用ANTLR4分析词法文件和语法文件,生成词法、语法解析类。

这里,ANTLR4是一个开源工具,会自动将预先定义好的g4文件进行编译,生成对应语言的解析策略。

解析策略可以理解为是一段源代码,比如我的程序是用JAVA语言编写的,那么ANTLR4会编译g4文件,生成对应JAVA语言的代码文件。具体的编译过程只需要执行一条命令即可,参考下述代码:

$antlr4Hello.g4#使用之前定义过的antlr4命令生成语法分析器和词法分析器。

上述代码中的HelloLexer.java和HelloParser.java便是自动生成的解析策略,将这两个解析策略放到代码中运行,便可以实现数据库操作语句的解析。

这里,树形结构可以是语法树,解析语法树的流程如下,仍以数据库GBase为例:

a.定义操作单元数据结构,每个操作单元可以至少包括:操作类型,操作数据库名,操作表名,操作列名,操作列类型等。

b.使用深度优先,从左往右遍历语法树。

c.标记当前数据库名为NULL。

d.遇到USE语句记录当前数据库名字为USE数据库名。

e.用Stack记录访问过的操作类型节点(createTable,insert,select等)。每次经过操作类型节点时将操作类型push进Stack。当退出以此操作节点为根节点的子树时,从Stack中pop出操作类型。Stack中最上层的操作类型,即为当前操作类型。

f.为每棵以操作类型为节点的子树,建立表别名与表实际名称的映射TABLE_ALIAS_MAP,列别名与列实际名称的映射COL_ALIAS_MAP。

g.GBase子查询语句会使用表别名代替子查询结果,记录此表别名在TABLE_ALIAS_MAP中,key为表别名,value为NULL。因为此表,以及其对应的列已在子查询中记录过,在外部查询中不再重复记录。

h.当退出每棵操作子树时,记录此子树中遇到的操作单元,并与TABLE_ALIAS_MAP,COL_ALIAS_MAP对比。分别使用表名,列名查找TABLE_ALIAS_MAP,COL_ALIAS_MAP。

若MAP中存在对应记录,且value不为NULL,则用MAP中value的实际名称,替换表名或列名。

若MAP中存在对应记录,且value为NULL,则不记录此操作。

若MAP中无对应记录,则说明表名或列名非别名。

i.遍历完整棵树,即可获得操作单元列表。

步骤403,提取安全访问规则;将数据库语言解析器解析出的操作单元列表与安全访问规则进行匹配,得到匹配结果;基于匹配结果进行数据库的访问安全控制;其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,解析调用接口用于匹配安全访问规则。

需要注意地,不同类别的数据库对应的语言解析器使用统一的解析调用接口,也就是说,用户只需选择数据库类别,就能够对不同的数据库操作语句进行解析。解析调用接口用于匹配安全访问规则,如此,使得匹配安全规则时,无需关注具体某个数据库的实现细节。

一个示例中,提取规则数据库中的安全访问规则:

1)创建表时,字段名不能小于3个字符。

2)用户不能访问数据库DM4中表X3中的ID3字段。

查询表1中的操作单元列表确定存在匿名数据库访问,即表1中第1-5行存在匿名数据库,通过查询当前数据库得到匿名数据库名为DM2,将匿名数据库替换为当前数据库名DM2,并更新表1的操作单元列表,得到更新后的操作单元列表,如表2所示。

将上述表2中的更新后的操作单元列表与上述安全访问规则进行匹配,得到匹配结果,匹配结果表明第1行操作单元不符合安全访问规则(创建表时,字段名不能小于3个字符),且第8行操作单元也不符合安全访问规则(用户不能访问数据库DM4中表X3中的ID3字段),则拒绝用户的数据库访问请求,并向用户返回安全检测错误提示,可以理解地,若匹配结果表明操作单元列表符合安全访问规则,则执行用户的数据库访问请求。

本发明实施例所提供的安全控制方法,通过存储设置的安全访问规则;基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表;提取安全访问规则;将数据库语言解析器解析出的操作单元列表与安全访问规则进行匹配,得到匹配结果;基于匹配结果进行数据库的访问安全控制;其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,解析调用接口用于匹配安全访问规则。如此,能够对多类别数据库的访问进行安全控制,在数据库自身安全策略之外,又构建了一层访问保护,使得数据库的访问更加安全。

此外,由于不同类别的数据库对应的语言解析器使用统一的解析调用接口,因此,针对用户输入的数据库类别,均能实现对不同数据库操作语句的解析,从而使得多类别数据库语言解析实现更方便、快捷。

下面对本发明实施例安全控制方法的具体实现过程做进一步地详细说明。

图5给出了本发明实施例安全控制方法的一个具体实现流程示意图,如图5所示,包括以下步骤:

步骤501,存储设置的安全访问规则。

这里,可以由管理员根据实际需求定义安全访问规则,并将定义好的安全访问规则存储至规则数据库。可以根据实际环境需求,在数据库外层添加安全访问规则,不受数据库自身的限制,比如可以限制数据库中表,列名字的规范,可插入的数据行数等,从而能够达到更细粒度,更贴合实际生成环境的控制。

同时,当实际生产环境中有大量的数据库时,可以一次性定义好安全访问规则,应用在这些数据库上,从而省去了为每个数据库重复定义的繁琐,达到了一处定义到处适用的效果。

此外,安全访问规则具有可修改的属性。规则数据库可以位于安全控制器的外围,两者并未耦合在一起,当不需要使用规则数据库,或需要更新安全访问规则时,只需删除或者更新规则数据库即可,无需去各个实际的数据库中操作。

步骤502,检测用户访问数据库时选择的数据库类别。

在实际生产环境中,会涉及多种类别的数据库,比如GBase,Oracle,Mysql,Hive等。

步骤503,检测用户输入的数据库操作语句。

步骤504,基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表。

在一些实施例中,基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表,可以包括:针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件;基于词法文件和语法文件,生成各类别数据库对应的特定语言解析策略;基于特定语言解析策略解析数据库操作语句,得到操作单元列表。

针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件,可以包括:针对各类别的数据库,分别查询官方语法文件;设置特定格式的词法文件,词法文件至少包括:官方语法文件中的操作信息;基于词法文件设置特定格式的语法文件,语法文件至少包括:官方语法文件中的语法信息。

基于特定语言解析策略解析数据库操作语句,得到操作单元列表,可以包括:将数据库操作语句转换成树形结构;对树形结构进行解析,得到操作类型和操作对象。

步骤505,查询操作单元列表中是否存在匿名数据库访问。

当操作单元列表中存在匿名数据库访问,执行步骤506;当操作单元列表中不存在匿名数据库访问,直接执行步骤507。

步骤506,查询当前数据库名,将匿名数据库替换为当前数据库名,得到更新后的操作单元列表。

步骤507,提取安全访问规则。

步骤508,判断操作单元列表是否与安全访问规则匹配。

当操作单元列表不符合安全访问规则时,执行步骤509;当操作单元列表符合安全访问规则时,执行步骤510。

步骤509,拒绝用户的数据库访问请求,并向用户返回安全检测错误提示。

步骤510,执行用户的数据库访问请求。

为实现上述方法,本发明实施例提供了一种安全控制装置,如图6所示,该装置包括获存储模块601、解析模块602和控制模块603;其中,

存储模块601,用于存储设置的安全访问规则。

解析模块602,用于基于用户访问数据库时选择的数据库类别,解析所述用户输入的数据库操作语句,得到操作单元列表。

解析模块602,具体用于针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件;基于所述词法文件和语法文件,生成各类别数据库对应的特定语言解析策略;基于所述特定语言解析策略解析数据库操作语句,得到操作单元列表。

解析模块602,具体用于针对各类别的数据库,分别查询官方语法文件;设置所述特定格式的词法文件,所述词法文件至少包括:所述官方语法文件中的操作信息;基于所述词法文件设置所述特定格式的语法文件,所述语法文件至少包括:所述官方语法文件中的语法信息。

解析模块602,具体用于将数据库操作语句转换成树形结构;对所述树形结构进行解析,得到操作类型和操作对象。

控制模块603,用于提取所述安全访问规则;将数据库语言解析器解析出的所述操作单元列表与所述安全访问规则进行匹配,得到匹配结果;基于所述匹配结果进行数据库的访问安全控制。

控制模块603,还用于基于所述操作单元列表确定存在匿名数据库访问时,查询当前数据库名;将所述匿名数据库替换为当前数据库名,得到更新后的操作单元列表;其中,所述更新后的操作单元列表用于与所述安全访问规则进行匹配。

控制模块603,还用于当所述匹配结果为所述操作单元列表符合所述安全访问规则时,执行所述用户的数据库访问请求;当所述匹配结果为所述操作单元列表不符合所述安全访问规则时,拒绝所述用户的数据库访问请求,向所述用户返回安全检测错误提示。

在实际应用中,所述存储模块601、解析模块602和控制模块603均可由位于服务器上的中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Micro ProcessorUnit)、数字信号处理器(DSP,Digital Signal Processor)、或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现。

需要说明的是:上述实施例提供的安全控制装置在进行安全控制时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的安全控制装置与安全控制方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

为实现上述方法,本发明实施例还提供了另一种安全控制装置,该装置包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,所述处理器运行所述可执行程序时,执行以下操作:

存储设置的安全访问规则;基于用户访问数据库时选择的数据库类别,解析所述用户输入的数据库操作语句,得到操作单元列表;提取所述安全访问规则;将数据库语言解析器解析出的所述操作单元列表与所述安全访问规则进行匹配,得到匹配结果;基于所述匹配结果进行数据库的访问安全控制;其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,所述解析调用接口用于匹配所述安全访问规则。

所述处理器还用于运行所述可执行程序时,执行以下操作:

针对不同类别的数据库,分别设置对应的特定格式的词法文件和语法文件;基于所述词法文件和语法文件,生成各类别数据库对应的特定语言解析策略;基于所述特定语言解析策略解析数据库操作语句,得到操作单元列表。

所述处理器还用于运行所述可执行程序时,执行以下操作:

针对各类别的数据库,分别查询官方语法文件;设置所述特定格式的词法文件,所述词法文件至少包括:所述官方语法文件中的操作信息;基于所述词法文件设置所述特定格式的语法文件,所述语法文件至少包括:所述官方语法文件中的语法信息。

所述处理器还用于运行所述可执行程序时,执行以下操作:

将数据库操作语句转换成树形结构;对所述树形结构进行解析,得到操作类型和操作对象。

所述处理器还用于运行所述可执行程序时,执行以下操作:

基于所述操作单元列表确定存在匿名数据库访问时,查询当前数据库名;

将所述匿名数据库替换为当前数据库名,得到更新后的操作单元列表;其中,所述更新后的操作单元列表用于与所述安全访问规则进行匹配。

所述处理器还用于运行所述可执行程序时,执行以下操作:

当所述匹配结果为所述操作单元列表符合所述安全访问规则时,执行所述用户的数据库访问请求;当所述匹配结果为所述操作单元列表不符合所述安全访问规则时,拒绝所述用户的数据库访问请求,向所述用户返回安全检测错误提示。

下面以安全控制装置实施为用于安全控制的服务器为例,对该安全控制装置的硬件结构做进一步说明。

图7给出了本发明实施例的安全控制装置的硬件结构示意图,图7所示的安全控制装置700包括:至少一个处理器701、存储器702、用户接口703和至少一个网络接口704。所述安全控制装置700中的各个组件通过总线系统705耦合在一起。可理解,总线系统705用于实现这些组件之间的连接通信。总线系统705除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统705。

其中,用户接口703可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。

可以理解,存储器702可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。

本发明实施例中的存储器702用于存储各种类型的数据以支持安全控制装置700的操作。这些数据的示例包括:用于在安全控制装置700上操作的任何计算机程序,如可执行程序7021,实现本发明实施例方法的程序可以包含在可执行程序7021中。

上述本发明实施例揭示的方法可以应用于处理器701中,或者由处理器701实现。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器701可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成前述方法的步骤。

在示例性实施例中,本发明实施例还提供了一种存储介质,其上存储有可执行程序,所述可执行程序被安全控制装置700的处理器701运行时,执行上述安全控制方法。

本发明实施例所提供的安全控制系统、方法、装置及存储介质,所述系统包括:规则数据库,用于存储设置的安全访问规则;数据库语言解析器,用于基于用户访问数据库时选择的数据库类别,解析用户输入的数据库操作语句,得到操作单元列表;安全控制器,用于提取规则数据库中的安全访问规则;将数据库语言解析器解析出的操作单元列表与安全访问规则进行匹配,得到匹配结果;基于匹配结果进行数据库的访问安全控制;其中,不同类别的数据库对应的语言解析器使用统一的解析调用接口,解析调用接口用于匹配安全访问规则。如此,通过安全控制器能够对多类别数据库的访问进行安全控制,在数据库自身安全策略之外,又构建了一层访问保护,使得数据库的访问更加安全。

此外,由于不同类别的数据库对应的语言解析器使用统一的解析调用接口,因此,针对用户输入的数据库类别,均能实现对不同数据库操作语句的解析,从而使得多类别数据库语言解析实现更方便、快捷。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或可执行程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的可执行程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和可执行程序产品的流程图和/或方框图来描述的。应理解可由可执行程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些可执行程序指令到通用计算机、专用计算机、嵌入式处理机或参考可编程数据处理设备的处理器以产生一个机器,使得通过计算机或参考可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些可执行程序指令也可存储在能引导计算机或参考可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些可执行程序指令也可装载到计算机或参考可编程数据处理设备上,使得在计算机或参考可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或参考可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

相关技术
  • 安全控制方法、安全控制系统、安全控制装置及存储介质
  • 安全控制系统通信的方法、装置、电子装置和存储介质
技术分类

06120112159506