本发明涉及数据库访问,具体涉及一种基于可信执行环境的数据库访问控制方法、系统及介质。
背景技术:
1、目前已有的数据库访问控制方法,将数据库放在可信执行环境中,以保护数据库中的数据,但这样的做法所面对的场景是,租户在云计算厂商上租用云服务器,可信执行环境所保护的是租户的数据不被云计算厂商窃取。
2、基于现有方法,针对更加复杂的数据分析的场景,例如数据分析的场景中存在数据提供方、模型提供方、数据使用方、云计算厂商,则需要考虑数据安全的方面就更加复杂。如何在允许数据使用方使用数据的同时,不让数据使用方窃取数据,是运行在可信执行环境中数据库的访问控制亟需解决的权限保护问题。
技术实现思路
1、针对现有技术中的缺陷,本发明提供一种基于可信执行环境的数据库访问控制方法、系统及介质。
2、第一方面,基于可信执行环境的数据库访问控制方法,包括:
3、获取数据使用方访问可信执行环境中数据库的sql语句,并对所述sql语句进行语法解析,以转化为抽象语法树;
4、遍历所述抽象语法树,并转化为唯一对应的链表;
5、采用字典树存储所有链表,修正字典树结构,以动态增加白名单;
6、基于修正后的所述字典树依次查找链表节点,并判断链表是否存在于字典树的白名单中,根据判断结果进行数据库访问控制。
7、进一步地,所述遍历所述抽象语法树,并转化为唯一对应的链表,具体为:
8、遍历并记录所述抽象语法树;
9、在遍历时,将所述抽象语法树子节点返回父节点的过程等价于遍历一个“退出节点”,以将所述抽象语法树转化为唯一对应的链表。
10、进一步地,所述采用字典树存储所有链表,修正字典树结构,以动态增加白名单,具体为:
11、采用字典树存储所有链表;
12、使用stl库中的vector与unordered_map作为字典树的节点数组与节点,修正字典树结构,以动态增加白名单。
13、进一步地,所述字典树匹配的时间复杂度为o(m·log(n)),其中,m为sql语句转化后的链表长度,n为链表单个节点的后置节点个数,n的最大值为白名单中所有链表长度之和。
14、进一步地,所述基于修正后的所述字典树依次查找链表节点,并判断链表是否存在于字典树的白名单中,根据判断结果进行数据库访问控制,具体为:
15、从修正后的所述字典树0节点出发,通过unordered_map中存储的键值对,查找所述链表当前节点的值,并判断是否找到当前节点对应下一节点编号;
16、若否,则说明链表不在白名单中,sql语句匹配失败,不允许数据库访问;
17、若是,则基于所找到的节点继续查找下一节点编号,直至到达链表的末尾节点。
18、进一步地,所述基于修正后的所述字典树依次查找链表节点,并判断链表是否存在于字典树的白名单中,根据判断结果进行数据库访问控制,还包括:
19、判断所述末尾节点是否存在结束符;
20、若否,则说明链表不在白名单中,sql语句匹配失败,不允许数据库访问;
21、若是,则说明链表存在白名单中,sql语句匹配成功,允许数据库访问。
22、第二方面,基于可信执行环境的数据库访问控制系统,所述系统应用于第一方面所述方法,包括:
23、语法解析模块:用于获取数据使用方访问可信执行环境中数据库的sql语句,并对所述sql语句进行语法解析,以转化为抽象语法树;
24、链表转化模块:用于遍历所述抽象语法树,并转化为唯一对应的链表;
25、字典树存储模块:用于采用字典树存储所有链表,修正字典树结构,以动态增加白名单;
26、访问控制模块:用于基于修正后的所述字典树依次查找链表节点,并判断链表是否存在于字典树的白名单中,根据判断结果进行数据库访问控制。
27、第三方面,基于可信执行环境的数据库访问控制系统,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如第一方面所述的方法。
28、第四方面,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如第一方面所述的方法。
29、本发明的有益效果体现在:对数据使用方访问可信执行环境中数据库的sql语句进行语法解析,转化为抽象语法树,并采用字典树存储由抽象语法树转化所得链表,基于字典树依次查找链表节点,判断链表是否存在于字典树白名单中,以更加高效地对sql语句进行区分和模式匹配,从而进行数据库的访问控制,实现在允许数据使用方使用数据的同时,不让数据使用方窃取数据。具有以下有益效果:
30、(1)性能高:相比直接存储逐一比对的处理方式,字典树匹配的时间复杂度和空间复杂度更低。
31、(2)可维护性高:支持动态添加白名单。
32、(3)兼容性好:使用抽象语法树能有效区分和匹配特定类型sql语句而非具体sql语句,提高了兼容性。
1.基于可信执行环境的数据库访问控制方法,其特征在于,包括:
2.根据权利要求1所述的基于可信执行环境的数据库访问控制方法,其特征在于,所述遍历所述抽象语法树,并转化为唯一对应的链表,具体为:
3.根据权利要求1所述的基于可信执行环境的数据库访问控制方法,其特征在于,所述采用字典树存储所有链表,修正字典树结构,以动态增加白名单,具体为:
4.根据权利要求3所述的基于可信执行环境的数据库访问控制方法,其特征在于,所述字典树匹配的时间复杂度为o(m·log(n)),其中,m为sql语句转化后的链表长度,n为链表单个节点的后置节点个数,n的最大值为白名单中所有链表长度之和。
5.根据权利要求3所述的基于可信执行环境的数据库访问控制方法,其特征在于,所述基于修正后的所述字典树依次查找链表节点,并判断链表是否存在于字典树的白名单中,根据判断结果进行数据库访问控制,具体为:
6.根据权利要求5所述的基于可信执行环境的数据库访问控制方法,其特征在于,所述基于修正后的所述字典树依次查找链表节点,并判断链表是否存在于字典树的白名单中,根据判断结果进行数据库访问控制,还包括:
7.基于可信执行环境的数据库访问控制系统,其特征在于,所述系统应用于权利要求1-6中任一项权利要求所述方法,包括:
8.基于可信执行环境的数据库访问控制系统,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。