一种数据库密级标志安全网关操作的方法、装置及系统的制作方法
【专利摘要】本发明公开了一种数据库密级标志安全网关操作的方法、装置及系统,当接收到第一操作指令时,查询安全网关存储的对应表的安全策略,确定第一操作指令中是否包含有敏感列;当指令中包含敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到第一操作指令中,生成对应的第二操作指令;向数据库发送第二操作指令,以便数据库完成敏感列、属性列和密标列的插入数据和更新数据;本发明可以实现结构化数据的加密,能够实现敏感列数据与对应属性列的数据应用绑定,且符合密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。
【专利说明】
-种数据库密级标志安全网关操作的方法、装置及系统
技术领域
[0001] 本发明设及一种数据库密级标志安全网关操作的方法、装置及系统。
【背景技术】
[0002] 目前,现有电子文档的密级标志生成办法,其结果是将电子文档内容进行了加密。 若将电子文档的密级标志生成办法应用于结构化数据上,将对数据库查询性能造成严重影 响。
[0003] 目前,尚不具备成熟、安全的、支持同态的数据库加密算法。因此,将密级标志应用 于数据库数据时,我们须重新理解"不可分离、不可篡改"的内涵。
[0004] 我们认为,密级标志不可分离,可理解为:因现有加密技术的限制,允许数据与其 对应的密级标志,在存储的时候分离存放,数据保持明文;数据在使用过程中,与其对应的 密级标志不可分离,保证数据循迹与识别。
[0005] 密级标志不可篡改,可理解为,通过数据对应的密级标志,须可验证数据的完整 性,发现被篡改的数据。
【发明内容】
[0006] 鉴于上述问题,本发明实施例提供克服上述问题或者至少部分地解决上述问题的 一种数据库密级标志安全网关操作的方法、装置及系统。
[0007] 作为本发明实施例的一个方面,设及一种数据库密级标志安全网关操作的方法, 用于安全网关,所述方法包括:
[000引当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表 的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指 令或者更新表指令;
[0009] 当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进 行加密,生成敏感列对应的密标列的密文数据;
[0010] 将密文数据插入到所述第一操作指令中,生成对应的第二操作指令;
[0011] 向数据库发送所述第二操作指令,W便所述数据库完成相应的操作。
[0012] 可选地,在接收到所述第一操作指令之前,所述方法还包括:
[0013] 当接收到新建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的 属性列的标识;
[0014] 当包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏 感列对应密标列的标识;
[0015] 将插入所述密标列的标识后的新建表指令发送给所述数据库W新建表;
[0016] 将敏感列的标识W及对应的属性列的标识和密标列的标识存储于预设的安全策 略中。
[0017] 可选地,所述对第一操作指令中敏感列的数据和对应的属性列的数据进行加密, 包括:
[0018] 通过对称加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据。
[0019] 可选地,接收到第一操作指令时,所述方法还包括:
[0020] 当接收到对所述指定表的查询表指令时,查询所述安全策略,确定所述查询表指 令中是否包含有敏感列;
[0021] 当包含所述敏感列时,根据所述安全策略,在所述查询表指令中插入所述敏感列 对应的所述密标列的标识和属性列的标识;
[0022] 将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;
[0023] 接收数据库根据所述查询表指令返回的第一查询结果;
[0024] 对第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败时返 回查询失败的消息。
[0025] 可选地,所述对第一查询结果进行验证,包括:
[0026] 检测所述第一查询结果是否包含密标列;
[0027] 当检测第一查询结果中未包含密标列时,则返回查询失败的消息;
[0028] 当检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进 行解密,验证解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通 过,返回第一查询结果;当不一致时,验证失败,返回查询失败的消息。
[0029] 可选地,所述验证通过时,还包括:
[0030] 将第一查询结果中删除密标列和属性列;
[0031] 返回删除密标列和属性列后的第一查询结果。
[0032] 可选地,所述对应的属性列的数据为预设的密级。
[0033] 作为本发明实施例的另一个方面,设及一种数据库密级标志安全网关操作的装 置,包括:
[0034] 确定模块,用于当接收到对数据库中指定表的第一操作指令时,查询安全网关存 储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作 指令为插入表指令或者更新表指令;
[0035] 密文生成模块,用于当包含所述敏感列时,对第一操作指令中敏感列的数据和对 应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;
[0036] 修改模块,用于将密文数据插入到所述第一操作指令中,生成对应的第二操作指 令;
[0037] 发送模块,用于向数据库发送所述第二操作指令,W便所述数据库完成相应的操 作。
[0038] 可选地,所述装置还包括:识别模块和安全策略模块,其中:
[0039] 所述识别模块,用于在所述确定模块接收到所述第一操作指令之前,当接收到新 建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识;
[0040] 所述修改模块,还用于当识别模块识别出所述新建表指令中包含所述敏感列的标 识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;
[0041] 所述发送模块,还用于将插入所述密标列的标识后的新建表指令发送给所述数据 库W新建表;
[0042] 所述安全策略模块,用于将敏感列的标识W及对应的属性列的标识和密标列的标 识存储于预设的安全策略中。
[0043] 可选地,所述密文生成模块,具体用于通过对称加密算法生成包含敏感列的数据 和对应的属性列的数据的密文数据。
[0044] 可选地,所述装置还包括:接收模块和验证模块;
[0045] 所述确定模块,还用于当接收到对所述指定表的查询表指令时,查询所述安全策 略模块,确定所述查询表指令中是否包含有敏感列;
[0046] 所述修改模块,还用于当所述确定模块确定包含所述敏感列时,根据所述安全策 略模块,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;
[0047] 所述发送模块,还用于将插入所述密标列的标识和属性列的标识的查询表指令发 送给所述数据库;
[004引所述接收模块,用于接收数据库根据所述发送模块发送的查询表指令返回的第一 查询结果;
[0049] 所述验证模块,用于对所述接收模块返回的第一查询结果进行验证,并在验证通 过时返回第一查询结果;在验证失败时返回查询失败的消息。
[0050] 可选地,所述验证模块,包括:
[0051] 检测子模块,用于检测所述接收模块接收到的第一查询结果是否包含密标列;
[0052] 解密子模块,用于当检测子模块检测第一查询结果中包含密标列时,对第一查询 结果中的密标列的密文数据进行解密;
[0053] 验证子模块,用于当检测子模块检测第一查询结果中未包含密标列时,则返回查 询失败的消息;当检测子模块检测第一查询结果中包含密标列时,验证解密子模块解密后 的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询结 果;当不一致时,验证失败,返回查询失败的消息。
[0054] 可选地,还包括:删除模块,用于所述验证子模块验证通过时,将第一查询结果中 删除密标列和属性列;
[0055] 所述验证子模块,还用于返回删除密标列和属性列后的第一查询结果。
[0056] 可选地,所述对应的属性列的数据为预设的密级。
[0057] 作为本发明实施例的再一个方面,设及一种数据库密级标志安全网关操作的系 统,包括:安全网关和数据库管理服务器;
[005引所述安全网关,当接收到对数据库中指定表的第一操作指令时,查询安全网关存 储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作 指令为插入表指令或者更新表指令;当包含所述敏感列时,对第一操作指令中敏感列的数 据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插 入到所述第一操作指令中,生成对应的第二操作指令;向数据库发送所述第二操作指令,W 便所述数据库完成相应的操作;
[0059] 所述数据库管理服务器,用于接收安全网关发送的第二操作指令时,根据所述第 二操作指令,完成数据表的插入数据或更新数据操作,将密文数据插入或更新到所述敏感 列对应的密标列中。
[0060] 本发明实施例至少实现了如下技术效果:
[0061] 本发明实施例提供的数据库密级标志安全网关操作的方法、装置及系统,当接收 到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安全策略,确 定第一操作指令中是否包含有敏感列;其中所述第一操作指令为插入表指令或者更新表指 令;而当指令中包含敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进 行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到第一操作指令中,生成对 应的第二操作指令;向数据库发送第二操作指令,W便数据库完成敏感列、属性值和密标列 的插入数据和更新数据,该方案加密算法在网关完成,可W实现结构化数据的加密,且不会 对数据库查询性能造成严重负担;能够实现敏感列数据与对应属性值的应用绑定,且符合 密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不 可分离,保证数据循迹与识别。
[0062] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其它优点可通过在所写的说明 书、权利要求书、W及附图中所特别指出的结构来实现和获得。
[0063] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
【附图说明】
[0064] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实 施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0065] 图1为本发明实施例提供的数据库密级标志安全网关操作的方法的网络架构示意 图;
[0066] 图2为本发明实施例提供的用于安全网关侧的方法流程图;
[0067] 图3为本发明实施例提供的用于安全网关侧对数据库新建表指令进行处理的流程 图;
[0068] 图4为本发明实施例提供的用于安全网关侧对数据库查询表指令进行处理的流程 图;
[0069] 图5为本发明实施例提供的查询数据库的流程的时序图;
[0070] 图6为本发明实施例提供的用于安全网关的装置的框图;
[0071] 图7为本发明实施例提供的验证模块68的框图;
[0072] 图8为本发明实施例提供的数据库密级标志安全网关操作的系统的示意图。
【具体实施方式】
[0073] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可W W各种形式实现本公开而不应被运里阐述的实施例 所限制。相反,提供运些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。
[0074] 本公开实施例提供的技术方案,参照图1所示的网络架构示意图,可W设及两方: 安全网关和数据库管理服务器,其中,安全网关连接于应用客户端和数据库管理服务器(例 如:DBMS(DBMS,数据库管理服务器,Database Management System)服务器,DBMS是一种操 纵和管理数据库的大型软件,用于建立、使用和维护数据库)之间。安全网关用于截获应用 客户端发送的操作指令,并对操作指令分析、识别和修改,并对其中的部分数据,生成密文 数据,将密文数据更新到数据库端,从而实现数据库结构化数据的加密;数据库管理服务器 接收到安全网关发来的指令,执行该指令;其中操作指令的分析、识别和修改W及数据的加 密,都在安全网关完成,且不会对数据库查询性能造成严重负担;其中数据的加密,实现待 加密数据与对应密级的应用绑定,且符合密级标志不可分离、不可篡改的技术要求,从而保 证数据在使用过程中,与其对应的密级不可分离,保证数据循迹与识别。
[0075] 参照图2所示,上述数据库密级标志安全网关操作的方法用于安全网关,可W包括 W下步骤S21-S24:
[0076] 在步骤S21中,当接收到对数据库中指定表的第一操作指令时,查询安全网关存储 的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指 令为插入表指令或者更新表指令;
[0077] 在步骤S22中,当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属 性列的数据进行加密,生成敏感列对应的密标列的密文数据;
[0078] 在步骤S23中,将密文数据插入到所述第一操作指令中,生成对应的第二操作指 令;
[0079] 在步骤S24中,向数据库发送所述第二操作指令,W便所述数据库完成相应的操 作。
[0080] 其中,上述敏感列,是数据表中比较重要的数据所在的列,是在新建表指令中人为 预设的通过一个敏感标志而标注的列;而敏感列所对应的属性列存储的是人为预设的一个 密级,例如可W是'1','2','3'递增的数值,也可W是'a','b','C'等表示级别的标识,本发 明对此不做限制,其它类似可W实现此效果的方式均可;而密标列是通过算法生成(敏感列 数据+属性列数据)的密文数据。
[0081 ]例如下述新建表指令代码:
[0082] CREATE TABLE schedule(
[0083] task_owner NVARCHAR2(32) NOT N化L PRIMARYKEY,一任务人员名单
[0084] task_content NVARCHAR2(1024)N0T NUL1;'MBSIGN,一任务内容。
[00化]task_slevel CHAR(I) NOT NU化一任务密级,'1','2','3'等
[0086])
[0087] 其中"MBSIGN"为安全网关语法扩展,敏感标志,所在的列task_content即为敏感 列。
[0088] 上述代码为一个新建名称为schedule的表,该表包括S列,分别是task_owne;r, task_content和task_slevel。
[0089] -个数据库中的表的例子,如下表1:
[0090] 表 1
[0091]
[0092]
[0093] 其中;1:ask_content为敏感列,task_slevel为属性列,task_cmbsign为密标列,该 密标列的数据为敏感列和属性列数据二者加密生成的密文数据。
[0094] 上述加密算法可W是通过对称加密算法生成包含敏感列的数据和对应的属性列 的数据的密文数据,该加密算法也可W对密文数据进行解密,如:对称密码体制加密算法 (DES算法),AES算法(Advanced !Encryption Standard加密法)或消息摘要算法5(MD5, Message-DigestAlgorithm 5)等;上述加密算法也可W是通过非对称加密算法加密而成, 如:RSA算法(即RSA公钥加密算法,是1977年由罗纳德?李维斯特(Ron Rivest)、阿迪?萨 莫尔(Adi Shamir)和伦纳德?阿德曼(Xeonard Adleman) -起提出的。1987年首次公布RSA 就是他们=人姓氏开头字母拼在一起组成),双钥加密算法等;本发明实施例对加密算法不 做限定,其他速度更快、具有优秀的性能和抗攻击能力强的加密算法也可。
[00M]具体地,上述步骤中的操作指令可W是数据表的插入或更新,参照图1,例如所述 第一操作指令可W是SQL(结构化查询语言(Structured QueiT Language)简称SQL)语句, 或者其他格式的语句。当客户通过应用客户端提交数据表操作SQL语句,安全网关截获SQL 语句,当S化语句为插入表指令或者更新表指令,通过查询安全网关存储的对应表的安全策 略,确定SQL语句中是否包含有敏感列,并且识别出需要对敏感列插入数据或更新数据,修 改SQL语句生成对应的第二操作指令,使其同时对密标列插入数据或更新数据;该密标列数 据为加密算法生成的"敏感列数据+属性列数据"的绑定结果的密文数据,将修改后的数据 表操作S化语句,即第二操作指令发送给数据库,从而完成数据库表的插入或更新。
[0096] 例如:第一操作指令为插入表指令时,其代码实现如下:
[0097] INSERT INTO schedule(task_owne;r,task_content,task_slevel)values('张 S','2月28日晚9:00行动','r)
[0098] 上述代码为:向名称为schedule的表中,插入数据,task_owne;r为"张,task_ 〇〇1116]11:为。2月28日晚9:00行动",1:曰34_316¥61为。1"。
[0099] 通过安全网关生成第二操作指令时,其代码实现如下:
[0100] INSERT INTO schedule(task_owner,task_content,task_slevel,task_ 畑1631邑11)¥曰11163('张^','2月28日晚9:00行动','1','义$义123¥...')
[0101 ] 上述代码为:向名称为schedule的表中,插入数据,task_owne;r为"张 S",task_ content为月28日晚9:00行动",1:ask_slevel为,1:ask_cmbsi即为"x$xl23Y..。
[0102] 上述密文数据"x$xl23Y. . 是由DBMS_MBGenerate('2月28日晚9:00行动','1') =〉x$xl23Y...产生,DBMS_MBGenerate是包含加密算法的函数名称,功能是将两个参数数 据经过算法计算,生成一个密文数据,本发明对函数名称和代码不做限定,实现此功能的函 数均可。
[0103] 例如:第一操作指令为更新表指令时,其代码实现如下:
[0104] UPDATE schedule SET task_content= ' 行动取消',task_slevel ='2'WHERE task_owner = ' 张;'
[01化]上述代码为:更新名称为schedule的表,其中条件化sk_owne;r为"张 S"所在的行, 对应的化sk_content列更新为"行动取消",对应的化sk_s I eve I列更新为"2"。
[0106] 通过安全网关生成第二操作指令代码如下:
[0107] UPDATE schedule SET task_content= '行动取消',task_slevel='2',task_ cmbsi即=,5634*4W. . .,W肥RE task_owner =,张 S'
[0108] 上述代码为:更新名称为schedule的表,其中条件化sk_owner为"张 S"所在的行, 对应的化sk_content列更新为"行动取消",对应的task_slevel列更新为"2",对应的化sk_ cmbsign列更新为巧634*4W..。
[0109] 其中密文"5634*4W. . 产生原理同上所述。
[0110] 本发明实施例提供的上述数据库密级标志安全网关操作的方法,用于安全网关, 当接收到应用客户端发来的对数据库中指定表的第一操作指令时,查询安全网关存储的指 定表的安全策略,确定第一操作指令中是否包含有敏感列;当第一操作指令为插入表指令 或者更新表指令且包含敏感列数据时,对第一操作指令中敏感列的数据和对应的属性列的 数据进行加密,生成敏感列对应的密标列的密文数据,将密文数据插入到第一操作指令中, 生成对应的第二操作指令;向数据库发送第二操作指令,W便数据库完成敏感列、属性列和 密标列的插入数据和更新数据。该方案加密算法在网关完成,可W实现结构化数据的加密, 且不会对数据库查询性能造成严重负担;能够实现敏感列数据与对应属性值的应用绑定, 且符合密级标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级 标志不可分离,保证数据循迹与识别。而且该操作全部采用实体表进行,消除使用表视图带 来的操作限制。
[0111] 下面分别对上述数据库密级标志安全网关操作的方法各步骤进行详细说明。
[0112] 在一个实施例中,在接收到第一操作指令之前,还可W执行如下步骤即:
[0113] 参照图3所示,S31、当接收到新建表指令时,识别所述新建表指令中是否包含敏感 列的标识和对应的属性列的标识;
[0114] S32、当包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插 入敏感列对应密标列的标识;
[0115] S33、将插入所述密标列的标识后的新建表指令发送给所述数据库W新建表;
[0116] S34、将敏感列的标识W及对应的属性列的标识和密标列的标识存储于预设的安 全策略中。
[0117] 具体地,上述标识是指列的名称,如表1中的task_owne;r,task_content,task_ slevel,task_cmbsign;上述步骤S31中的操作指令是数据表的新建语句,当客户通过应用 客户端提交数据表新建的S化语句,安全网关截获S化语句,通过识别出敏感标志(可W对安 全网关语法进行扩展,预设的一个标志,该标志指明敏感标志所在的列为敏感列,标志可W 自定义,只起到标识作用,本发明实施例也不做任何限定),从而识别出新建表指令中包含 敏感列名称和对应的属性列名称(如表1中:task_content和task_slevel),在安全网关的 安全策略中存储包含敏感列的标识W及对应的属性列的标识和密标列的标识,同时修改 S化语句使其包含密标列名称(如表1中的task_cmbsign),该密标列数据为预设的加密算法 生成的"敏感列数据+属性列数据"的绑定结果的密文数据,将修改后的数据表新建S化语句 发送给数据库管理服务器,从而完成数据库表的新建。其中新增的密标列要存储的密文数 据是对应的敏感列数据和属性列数据通过算法加密而成,运样保证W后数据在使用过程 中,与其对应的属性值不可分离,保证数据循迹与识别。
[0118] 例如:数据表的新建语句的代码:
[0119] CREATE TABLE schedule(
[0120] task_owner NVARCHAR2(32) NOT N化L PRIMARYKEY,-任务人员名单 [01別]task_content NVARCHAR2(1024)N0T NUL1;'MBSIGN,一任务内容。
[0122] task_slevel CHAR(I) NOT NU化一任务密级,'1','2','3'等
[0123] )
[0124] 其中"MBSIGN"为安全网关语法扩展,敏感列标志。
[01巧]上述代码为新建表名称为schedule,其中包含S个列,分别是task_owne;r,task_ content和task_slevel。
[0126] 通过安全网关修改后的新建指令如下:
[0127] CREATE TABLE schedule(
[012引 task_owner NVARCHAR2(32)N0T N化L PRIMARYKEY,-任务人员名单
[0129] task_content NVARCHAR2(1024)N0T NUL。',一任务内容
[0130] task_slevel CHAR(I)NOT NU化一任务密级,'1','2','3'等等
[0131] task_cmbsign VARCHAR2(1024) NOT N化L -新增任务内容的密标列,加密算法 生成(内容+密级)的绑定结果
[0132] )
[0133] 上述代码为新建表名称为schedule,其中包含4个列,分别是task_owne;r、task_ content、task_sleve巧日1:ask_cmbsign。其中1:ask_cmbsign为密标列,将要存放加密算法生 成的(task_content内容Wask_s level密级)的绑定结果。
[0134] 在一个实施例中,建立了表和插入数据之后,当接收到查询表指令时,还包括W下 步骤,参照图4:
[0135] S41、当接收到对所述指定表的查询表指令时,查询所述安全策略,确定所述查询 表指令中是否包含有敏感列;
[0136] S42、当包含所述敏感列时,根据所述安全策略,在所述查询表指令中插入所述敏 感列对应的所述密标列的标识和属性列的标识;
[0137] S43、将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库;
[0138] S44、接收数据库根据所述查询表指令返回的第一查询结果;
[0139] S45、对第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败 时返回查询失败的消息。
[0140] 例如:数据表的查询语句代码:
[0141] 沈LECT task_owne;r,task_content FROM schedule W肥RE task_owner= '张 S'
[0142] 上述代码从表 schedule 查询"张 S"的 1:ask_owne;r 和 1:ask_content 信息。
[0143] 通过安全网关修改后的查询指令如下:
[0144] SELECT task_owner,task_content,task_slevel,task_cmbsign FROM schedule W肥RE task_owner =,张 S '
[0145] 上述代码从表schedule查询。张 S"的task_owne;r和task_content,W及task_ slevel 和 task_cmbsign 信息。
[0146] 在一个实施例中,上述S45还包括:对第一查询结果进行验证;检测所述第一查询 结果是否包含密标列;
[0147] 当检测第一查询结果中未包含密标列时,则返回查询失败的消息;当检测第一查 询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解密,验证解密后的 数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回删除密标列和 属性列的第一查询结果;当不一致时,验证失败,返回查询失败的消息。
[0148] 上述对密文数据进行解密,解密用到的加密算法也是上述加密时应用的加密算 法,使加密和解密的算法保持一致。
[0149] 具体地,参照图5查询指令的时序图,上述步骤S41中的操作指令是数据表的查询 语句,当客户通过应用客户端提交数据表查询的S化语句,安全网关截获SQL语句,查询安全 网关存储的对应表的安全策略,识别出查询指令中当包含敏感列时,修改S化语句使其包含 密标列名称和属性列名称,将修改后的数据表查询S化语句发送给数据库管理服务器,数据 库管理服务器执行修改后的查询SQL语句后,返回查询结果,安全网关截获数据库管理服务 器返回的查询结果,并检查是否包含密标列;若无密标列,则向客户端返回查询失败的消 息;
[0150] 若查询结果中包含密标列,则解密密标列的密文数据,将解密后的数据与敏感列 数据和属性列数据比对,校验数据的完整性,如果验证通过,则调整查询结果即删除密标列 数据和属性列数据,然后返回删除密标列数据和属性列数据的查询结果给客户端;
[0151] 当验证失败,返回查询失败的消息给客户端。
[0152] 本发明实施例示出的用于数据库侧的一种数据库密级标志安全网关操作的方法, 数据库接收安全网关发送的操作指令,W便所述数据库完成相应的操作。
[0153] 下面通过安全网关和数据库的配合来说明下本发明实施例的方案,具体地,W下 通过四个实例说明创建表、插入表、更新表和查询表的执行流程。
[0154] W下实施例W该表具有一列敏感列为例,每一敏感列都有对应的属性列和密标 列,而多列敏感列的实现方法与此类似,不再重复寶述。
[0155] 对其中的关键函数描述:
[0156] DBMS_MBGenerate (敏感列数据,对应的属性列数据)--产生密标列数据
[0157] DBMS_MBVerify(敏感列数据,对应的属性列数据,密标列数据)--验证密标列数据 与敏感列数据和对应的属性列数据是否一致
[0158] 上述函数的名称和具体算法实现代码,本发明实施例不做限制,能实现上述结果 的自定义函数均可。
[0159] -、创建表流程实例:
[0160] 1.如应用客户端创建一个名为schedule的任务表,其中化sk_content列为预设的 敏感列,具有对应的属性列。新建表代码如下:
[0161] CREATE TABLE schedule(
[0162] task_owner NVARCHAR2(32) NOT N化L PRIMARYKEY,-任务人员名单
[0163] task_content NVARCHAR2(1024)N0T NUL1;'MBSIGN,一任务内容,其中 "MBSIGN" 为安全网关语法扩展,可W识别的敏感标志,确定此列为敏感列,名称可W自定义,只起到 标识作用,本发明实施例也不做任何限定。
[0164] task_sIeveI CHAR(I) NOT NU化一任务密级,'1','2','3'等
[01 化])
[0166] 上述代码为创建表schedule,包含S个列,分别为:task_owne;r,task_content和 task_slevel。
[0167] 客户端期望创建的表结构效果如下表2:
[016引 表2
[0169]
[0170] 2.应用客户端提交的新建表SQL语句经过安全网关时被截获,安全网关识别出此 表有一个敏感列task_conent,且需要与对应的属性列进行绑定,生成一个对应的密标列 (名称为预设产生),因此修改S化语句如下:
[0171] CREATE TABLE schedule(
[0172] task_owner NVARCHAR2(32)N0T N化L PRIMARYKEY,-任务人员名单
[0173] task_content NVARCHAR2(1024)N0T NUL。',一任务内容
[0174] task_slevel CHAR(I)NOT NU化一任务密级,'1','2','3'等等
[0175] task_cmbsi即VARCHAR2(1024)N0T NULL -新增任务内容的密标列,算法生成 (内容+密级)的绑定结果
[0176] )
[0177] 上述代码为创建表schedule,包含四个列,分别为:task_owne;r,task_content, task_sleve巧化 ask_cmbsign。其中 1:ask_cmbsign 列存放加密算法生成(task_content 内容 Wask_slevel密级)的绑定结果。
[0178] 实际数据库创建的表结构效果,如下表3:
[0179] 表3 「01只Ol
[0181] 3.安全网关将修改后的S化语句发送给数据库,完成表schedule创建。
[0182] 4.安全网关提取敏感列的标识W及对应的属性列的标识和密标列的标识,存储于 预设的安全策略中。
[0183] 二、插入表流程实例:
[0184] 1.应用客户端发送表数据插入S化语句
[0185] INSERT INTO schedule(task_owne;r,task_content,task_slevel)values('张 S','2 月 28 日晚 9:00 行动','r)
[01 化]INSERT INTO schedule(task_owne;r,task_content,task_slevel)values( '李 四','随时配合张 s','r)
[0187] INSERT INTO schedule(task_owne;r,task_content,task_slevel)values('王 五V无工作V3')
[0188] INSERT INTO schedule(task_owne;r,task_content,task_slevel)values('赵 六','4月I日的行动取消','r)
[0189] 上述代码为向schedule表插入4行数据,第一行数据为:task_owner =张 S,task_ content = 2月28日晚9:00行动,task_slevel = l;
[0190] 第二行数据为:task_owner =李四,task_content =随时配合张 S,task_s Ieve 1 =1;
[0191] 第;行数据为;task_owner =王五,task_content =无工作,task_s Ie ve 1 = 3;
[0192] 第四行数据为:task_owner =赵六,task_content = 4月I日的行动取消,task_ slevel = !。
[0193] 客户端期望插入后的表数据如下表4:
[0194] 表4 r〇195l
LUi W」.化用各尸瑞巧父的捆八巧WL巧呵逆巧女生FJ天町概截狄,女生FJ天鱼巧仔储 的表schedule的安全策略,确定task_conent为敏感列,且从安全策略获取该敏感列对应的 密标列标识,调用提取出SQL语句中task_content和task_slevel的值,然后调用密标列生 成函数DBMS_MBGenerate产生1:ask_cmbsi即密标列的密文数据。
[0197]例如:
[019 引 0815_]\?66116招16('2月28日晚9:00行动','1')=〉4义123¥...
[0199] DBMS_MBGenerate('随时配合张S','r)=〉bb@stfK...
[0200] DBMS_MBGenerate('无工作','3')=〉353#$ds...
[0201] DBMS_MBGenerate( '4月I 日的行动取消 ',' 1')=〉99#8% % % ...
[0202] 上述DBMS_MBGenerate,为函数名称,生成(参数1,参数2)加密后的密文数据。
[0203] 其中:task_cmbsign存放的数据是由敏感列数据和对应的属性列数据加密后产生 的密文数据,其密文数据用来保障敏感列数据和对应的属性列数据二者的不可分离不可篡 改要求。
[0204] 3.安全网关修改数据插入SQL
[0205] INSERT INTO schedule(task_owne;r,task_content,task_slevel,task_ 畑1631邑11)¥曰11163('张^','2月28日晚9:00行动','1','义$义123¥...')
[0206] INSERT INTO schedule(task_owner,task_content,task_slevel,task_ cmbsign)values( '李四','随时配合张 S',' I ','bb@stfK... )
[0207] INSERT INTO schedule(task_owner,task_content,task_slevel,task_ cmbsign)values( '王五','无工作','3','353#$ds... )
[0208] INSERT INTO schedule(task_owner,task_content,task_slevel,task_ cmbsign)values( '赵六','4月I 日的行动取消 ',' I ','99#8% % % ... )
[0209] 上述代码为向schedule表插入4行数据,第一行数据为:task_owner =张 S,task_ content = 2月28日晚9:00行动,task_slevel = l,1:ask_cmbsi即= x$xl23Y...;
[0210] 第二行数据为:task_owner =李四,task_content =随时配合张 S,task_slevel = l,task_cmbsign = bb@sdfK...;
[0211] 第;行数据为;task_owner =王五,task_content =无工作,task_slevel = 3, task_cmbsign = 353#$ds...;
[0212] 第四行数据为:task_owner =赵六,task_content = 4月I日的行动取消,task_ Slevel = I,task_cmbsign = 99#8% % % ...。
[0213] 4.安全网关将修改后的S化语句发送给数据库,完成数据插入。
[0214] 插入后数据库的表,如下表5:
[0^5]表 5
[0217] =、数据更新流程实例
[0218] 1.应用客户端提交数据库表更新操作S化语句:
[0^9] UPDATE schedule SET task_content= ' 行动取消',task_slevel ='2'WHERE task_owner = ' 张;'
[0220] 上述代码为:更新名称为schedule的表,其中条件化sk_owner为"张 S"所在的行, 对应的化sk_content列更新为"行动取消",对应的化sk_s 1 eve 1列更新为"2"。
[0221] 客户端期望的表,如下表6:
[0222] 表 6
[0224] 2.应用客户端提交的表更新操作SQL语句经过安全网关时被截获,安全网关查询 存储的schedule表的安全策略,检查是否需要对敏感列数据进行更新,如果不是,直接将 S化语句递交给数据库管理服务器处理;若是,则需要进一步处理。
[0225] 3.安全网关识别出更新信息中的敏感列,并同时需要更新其对应的密标列数据, 即调用密标列数据生成函数DBMS_MBGenerate( '行动取消',' 2 ')=巧634*4W...
[02%]修改S化语句为:
[0227] UPDATE schedule SET task_content= ' 行动取消',task_slevel ='2',task_ cmbsi即=,5634*4W. . .,W肥RE task_owner =,张 S'
[02巧]上述代码为:更新名称为schedule的表,其中条件化sk_owne;r为"张 S"所在的行, 对应的化sk_content列更新为"行动取消",对应的task_slevel列更新为"2",对应的化sk_ cmbsign列更新为巧634*4W..。
[0229] 4.安全网关将修改后的S化语句发送给数据库,完成数据更新。
[0230] 实际数据库的表,如下表7:
[0231] 表7 「00301 LU"J」 凹、鱼巧'侃巧头例:
[0234] 1.应用客户端提交数据库表查询操作S化语句:
[02;35]沈LECT task_owne;r,task_content FROM schedule W肥RE task_owner=,张 S'
[0236] 上述代码从表schedule查询"张立"的1:ask_owne;r和1:ask_content信息。
[0237] 2.经过安全网关,安全网关首先查询存储的schedule表的安全策略,确定task_ content为敏感列,并从安全策略里提取出敏感列对应的属性列和密标列的标识,然后动态 修改查询SQL
[0238] SELECT task_owner,task_content,task_slevel,task_cmbsign FROM schedule W肥RE task_owner =,张 S '
[0239] 上述代码从表schedule查询。张 S"的 1:ask_owne;r,task_content,1:ask_slevel和 task_cmbsi 邑 n 信息。
[0240] 3.安全网关截获数据库管理服务器返回的数据,如下表8:
[0241] 表8
[0243] 4.安全网关调用算法对内容执行验证
[0244] 安全网关调用验证函数DBMS_MBVerify('2月28日晚9:00行动','^,'x$ X123Y...'),该函数用于解密密文数据,将解密后的数据同'2月28日晚9:00行动','1',对 比是否一致。
[0245] 如果验证通过,则重新调整查询结果(比如:删除密标列和属性列数据),然后返回 如下查询结果给客户端,如下表9:
[0246] 表 9 「0^/171
L0248」否则验证失败,返回查巧失败的消恳给客户端。
[0249] 基于同一发明构思,本发明实施例还提供了一种数据库密级标志安全网关操作的 装置和系统,由于该装置和系统所解决问题的原理与前述实施例一种数据库密级标志安全 网关操作的方法相似,因此该装置和系统的实施可W参见前述方法的实施,重复之处不再 寶述。
[0250] 下述为本发明实施例提供的装置,可W用于执行上述数据库密级标志安全网关操 作的方法实施例。
[0251] 参照图6,本发明实施例还提供了一种数据库密级标志安全网关操作的装置,该装 置包括:
[0252] 确定模块61,用于当接收到对数据库中指定表的第一操作指令时,查询安全网关 存储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;其中第一操 作指令为插入表数据指令或者更新表数据指令;
[0253] 密文生成模块62,用于当确定模块61确定包含所述敏感列时,对第一操作指令中 敏感列的数据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;
[0254] 修改模块63,用于将密文生成模块62的密文数据插入到所述第一操作指令中,生 成对应的第二操作指令;
[0巧日]发送模块64,用于向数据库发送所述修改模块63的第二操作指令,W便所述数据 库完成相应的操作。
[0256] 在密文生成模块62中,该加密算法可W是通过对称加密算法生成包含敏感列的数 据和属性值的密文数据,也可W对密文数据进行解密,如:DES算法,AES算法或MD5算法等; 上述加密算法也可W是通过非对称加密算法加密而成,如:RSA算法,双钥加密等;本发明实 施例对加密算法不做限定,其他速度更快、优秀的性能和抗攻击能力强的加密算法也可。
[0257] 具体地,上述确定模块61的操作指令可W是数据表的插入或更新,例如所述指令 可W是SQL语句,当客户通过应用客户端提交数据表操作SQL语句,安全网关截获SQL语句, 当SQL语句为插入表指令或者更新表指令,通过查询安全网关存储的对应表的安全策略,确 定SQL语句中是否包含有敏感列,并且识别出需要对敏感列插入数据或更新数据,修改SQL 语句生成对应的第二操作指令,使其同时对密标列插入数据或更新数据;该密标列数据为 加密算法生成的"敏感列数据+属性列数据"的绑定结果的密文数据,将修改后的数据表操 作S化语句,即第二操作指令发送给数据库,从而完成数据库表的插入或更新。
[0258] 本发明实施例提供的上述数据库密级标志安全网关操作的装置,安全网关当接收 到客户端发来的对数据库中指定表的第一操作指令时,查询安全网关存储的指定表的安全 策略,确定第一操作指令中是否包含有敏感列;当第一操作指令为插入表指令或者更新表 指令且包含敏感列数据时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加 密,生成敏感列对应的密标列的密文数据,将密文数据插入到第一操作指令中,生成对应的 第二操作指令;向数据库发送第二操作指令,W便数据库完成敏感列、属性列和密标列的插 入数据和更新数据。该方案加密算法在网关完成,可W实现结构化数据的加密,且不会对数 据库查询性能造成严重负担;能够实现敏感列数据与对应属性值的应用绑定,且符合密级 标志不可分离、不可篡改的技术要求,保证数据在使用过程中,与其对应的密级标志不可分 离,保证数据循迹与识别。而且该操作全部采用实体表进行,消除使用表视图带来的操作限 制。
[0259] 下面分别对上述数据库密级标志安全网关操作的装置各模块进行详细说明。
[0260] 在一个实施例中,参照图6,该装置还包括:
[0261 ]识别模块66,用于在确定模块61接收到所述第一操作指令之前时,识别所述新建 表指令中是否包含敏感列的标识和对应的属性列的标识;
[0262] 修改模块63,还用于当识别模块66识别出所述新建表指令中包含所述敏感列的标 识和对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识;
[0263] 发送模块64,还用于将插入所述密标列的标识后的新建表指令发送给所述数据库 W新建表;
[0264] 安全策略模块65,用于将敏感列的标识W及对应的属性列的标识和密标列的标识 存储于预设的安全策略中。
[0265] 具体地,上述标识是指列的名称,如表1中的task_owne;r,task_content,task_ slevel,task_cmbsign;上述装置识别模块66中的操作指令是数据表的新建语句,当客户通 过应用客户端提交数据表新建的S化语句,安全网关截获SQL语句,通过识别出敏感标志(安 全网关语法扩展,预设的一个标志,指明敏感字段所在的列为敏感列,名称可W自定义,只 起到标识作用,本发明也不做任何限定),从而识别出新建表指令中包含敏感列名称和对应 的属性列名称(如表1中:task_content和task_slevel),在安全网关的安全策略中存储包 含敏感列的标识W及对应的属性列的标识和密标列的标识,同时修改SQL语句使其包含密 标列名称(如表1中的ta S k_cmb S i gn),该密标列数据为加密算法生成的"敏感列数据+属性 列数据"的绑定结果的密文数据,将修改后的数据表新建5(^14吾句发送给数据库管理服务 器,从而完成数据库表的新建。其中新增的密标列要存储的密文数据是对应的敏感列数据 和属性列数据通过算法加密而成,运样保证数据在使用过程中,与其对应的属性值不可分 离,保证W后数据循迹与识别。
[0266] 在一个实施例中,建立了表和插入数据之后,当指令是查询表指令时,参照图6,还 包括:接收模块67和验证模块68
[0267] 确定模块61,还用于当接收到对所述指定表的查询表指令时,查询所述安全策略 模块,确定所述查询表指令中是否包含有敏感列;
[0268] 修改模块63,还用于当所述确定模块确定包含所述敏感列时,根据所述安全策略 模块,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识;
[0269] 发送模块64,还用于将插入所述密标列的标识和属性列的标识的查询表指令发送 给所述数据库;
[0270] 接收模块67,用于接收数据库根据所述发送模块发送的查询表指令返回的第一查 询结果;
[0271] 验证模块68,用于对所述接收模块返回的第一查询结果进行验证,并在验证通过 时返回第一查询结果;在验证失败时返回查询失败的消息。
[0272] 在一个实施例中,参照图7,上述验证模块68还包括:
[0273] 检测子模块681,用于检测所述接收模块67接收到的第一查询结果是否包含密标 列;
[0274] 解密子模块682,用于当检测子模块检测第一查询结果中包含密标列时,对第一查 询结果中的密标列的密文数据进行解密;
[0275] 验证子模块683,用于当检测子模块检测第一查询结果中未包含密标列时,则返回 查询失败的消息;当检测子模块检测第一查询结果中包含密标列时,验证解密子模块解密 后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询 结果;当不一致时,验证失败,返回查询失败的消息。
[0276] 上述验证子模块683对密文数据进行解密,解密用到的加密算法也是上述加密时 应用的加密算法,使加密和解密的算法保持一致。
[0277] 具体地,参照图5查询指令的时序图,上述装置中的确定模块61的操作指令是数据 表的查询语句,当客户通过应用客户端提交数据表查询的S化语句,安全网关截获S化语句, 查询安全策略模块65中安全网关存储的对应表的安全策略,识别出查询指令中当包含敏感 列时,修改模块63修改S化语句使其包含密标列名称和属性列名称,将修改后的数据表查询 S化语句通过发送模块64发送给数据库管理服务器,数据库管理服务器执行修改后的查询 S化语句后,返回查询结果,安全网关接收模块67截获数据库管理服务器返回的查询结果, 检测子模块681检查是否包含密标列;若无密标列,则返回查询失败的消息;
[0278] 若检测子模块681查询结果中包含密标列,则解密子模块682解密密标列,验证子 模块683将解密后的数据与敏感列数据和属性值数据比对,校验数据的完整性,如果验证通 过,则调整查询结果即删除模块69删除密标列和属性列,然后返回删除密标列和属性列的 查询结果给客户端;
[0279] 当验证失败,返回空记录或查询失败的消息给客户端。
[0280] 上述数据库密级标志安全网关操作的装置用于数据库中,数据库接收安全网关发 送的第二操作指令,W便所述数据库完成相应的操作;
[0281] 具体地,作为数据库一方,接收到安全网关发送的包含密文数据的插入表数据指 令或者更新表数据指令,执行该指令后,将密文数据插入或更新到密标列;
[0282] 当该指令为新建表指令时,完成数据表的新建。
[0283] 当该指令为查询表指令时,将包含敏感列和对应的属性列W及密标列的数据的查 询结果返回给安全网关。
[0284] 本公开实施例还提供了一种数据库密级标志安全网关操作的系统,参照图8所示, 包括安全网关和数据库管理服务器;
[0285] 所述安全网关,当接收到对数据库中指定表的第一操作指令时,查询安全网关存 储的所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作 指令为插入表指令或者更新表指令;当包含所述敏感列时,对第一操作指令中敏感列的数 据和对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插 入到所述第一操作指令中,生成对应的第二操作指令;向数据库发送所述第二操作指令,W 便所述数据库完成相应的操作;
[0286] 所述数据库管理服务器,用于接收安全网关发送的第二操作指令时,根据所述第 二操作指令,完成数据表的插入数据或更新数据操作,将密文数据插入或更新到所述敏感 列对应的密标列中。
[0287] 本发明实施例提供的数据库密级标志安全网关操作的方法、装置及系统,当接收 到第一操作指令时,查询安全网关存储的对应表的安全策略,确定第一操作指令中是否包 含有敏感列;当指令中包含敏感列时,对第一操作指令中敏感列的数据和对应的属性列的 数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到第一操作指令中, 生成对应的第二操作指令;向数据库发送第二操作指令,W便数据库完成敏感列、属性列和 密标列的插入数据和更新数据;本发明可W实现结构化数据的加密,能够实现敏感列数据 与对应属性列的数据应用绑定,且符合密级标志不可分离、不可篡改的技术要求,保证数据 在使用过程中,与其对应的密级标志不可分离,保证数据循迹与识别。
[0288] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序 产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实 施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形 式。
[0289] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流 程和/或方框、W及流程图和/或方框图中的流程和/或方框的结合。可提供运些计算机程序 指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器W产 生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实 现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0290] 运些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备W特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中指定的功能。
[0291] 运些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤W产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一 个方框或多个方框中指定的功能的步骤。
[0292] 显然,本领域的技术人员可W对本发明进行各种改动和变型而不脱离本发明的精 神和范围。运样,倘若本发明的运些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含运些改动和变型在内。
【主权项】
1. 一种数据库密级标志安全网关操作的方法,用于安全网关,其特征在于,所述方法包 括: 当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的所述指定表的安 全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令为插入表指令或 者更新表指令; 当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的属性列的数据进行加 密,生成敏感列对应的密标列的密文数据; 将密文数据插入到所述第一操作指令中,生成对应的第二操作指令; 向数据库发送所述第二操作指令,以便所述数据库完成相应的操作。2. 如权利要求1所述的方法,其特征在于,在接收到所述第一操作指令之前,所述方法 还包括: 当接收到新建表指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性 列的标识; 当包含所述敏感列的标识和对应的属性列的标识时,在所述新建表指令中插入敏感列 对应密标列的标识; 将插入所述密标列的标识后的新建表指令发送给所述数据库以新建表; 将敏感列的标识以及对应的属性列的标识和密标列的标识存储于预设的安全策略中。3. 如权利要求1或2所述的方法,其特征在于,所述对第一操作指令中敏感列的数据和 对应的属性列的数据进行加密,包括: 通过对称加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据。4. 如权利要求1或2所述的方法,其特征在于,接收到第一操作指令时,所述方法还包 括: 当接收到对所述指定表的查询表指令时,查询所述安全策略,确定所述查询表指令中 是否包含有敏感列; 当包含所述敏感列时,根据所述安全策略,在所述查询表指令中插入所述敏感列对应 的所述密标列的标识和属性列的标识; 将插入所述密标列的标识和属性列的标识的查询表指令发送给所述数据库; 接收数据库根据所述查询表指令返回的第一查询结果; 对第一查询结果进行验证,并在验证通过时返回第一查询结果;在验证失败时返回查 询失败的消息。5. 如权利要求4所述的方法,其特征在于,所述对第一查询结果进行验证,包括: 检测所述第一查询结果是否包含密标列; 当检测第一查询结果中未包含密标列时,则返回查询失败的消息; 当检测第一查询结果中包含密标列时,对第一查询结果中的密标列的密文数据进行解 密,验证解密后的数据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过, 返回第一查询结果;当不一致时,验证失败,返回查询失败的消息。6. 如权利要求5所述的方法,其特征在于,所述验证通过时,还包括: 将第一查询结果中删除密标列和属性列; 返回删除密标列和属性列后的第一查询结果。7. 如权利要求1所述的方法,其特征在于,所述对应的属性列的数据为预设的密级。8. -种数据库密级标志安全网关操作的装置,其特征在于,包括: 确定模块,用于当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的 所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令 为插入表指令或者更新表指令; 密文生成模块,用于当包含所述敏感列时,对第一操作指令中敏感列的数据和对应的 属性列的数据进行加密,生成敏感列对应的密标列的密文数据; 修改模块,用于将密文数据插入到所述第一操作指令中,生成对应的第二操作指令; 发送模块,用于向数据库发送所述第二操作指令,以便所述数据库完成相应的操作。9. 如权利要求8所述的装置,其特征在于,所述装置还包括:识别模块和安全策略模块, 其中: 所述识别模块,用于在所述确定模块接收到所述第一操作指令之前,当接收到新建表 指令时,识别所述新建表指令中是否包含敏感列的标识和对应的属性列的标识; 所述修改模块,还用于当识别模块识别出所述新建表指令中包含所述敏感列的标识和 对应的属性列的标识时,在所述新建表指令中插入敏感列对应密标列的标识; 所述发送模块,还用于将插入所述密标列的标识后的新建表指令发送给所述数据库以 新建表; 所述安全策略模块,用于将敏感列的标识以及对应的属性列的标识和密标列的标识存 储于预设的安全策略中。10. 如权利要求8或9所述的装置,其特征在于,所述密文生成模块,具体用于通过对称 加密算法生成包含敏感列的数据和对应的属性列的数据的密文数据。11. 如权利要求8或9所述的装置,其特征在于,所述装置还包括:接收模块和验证模块; 所述确定模块,还用于当接收到对所述指定表的查询表指令时,查询所述安全策略模 块,确定所述查询表指令中是否包含有敏感列; 所述修改模块,还用于当所述确定模块确定包含所述敏感列时,根据所述安全策略模 块,在所述查询表指令中插入所述敏感列对应的所述密标列的标识和属性列的标识; 所述发送模块,还用于将插入所述密标列的标识和属性列的标识的查询表指令发送给 所述数据库; 所述接收模块,用于接收数据库根据所述发送模块发送的查询表指令返回的第一查询 结果; 所述验证模块,用于对所述接收模块返回的第一查询结果进行验证,并在验证通过时 返回第一查询结果;在验证失败时返回查询失败的消息。12. 如权利要求11所述的装置,其特征在于,所述验证模块,包括: 检测子模块,用于检测所述接收模块接收到的第一查询结果是否包含密标列; 解密子模块,用于当检测子模块检测第一查询结果中包含密标列时,对第一查询结果 中的密标列的密文数据进行解密; 验证子模块,用于当检测子模块检测第一查询结果中未包含密标列时,则返回查询失 败的消息;当检测子模块检测第一查询结果中包含密标列时,验证解密子模块解密后的数 据同所述敏感列和对应属性列的数据是否一致,当一致时,验证通过,返回第一查询结果; 当不一致时,验证失败,返回查询失败的消息。13. 如权利要求12所述的装置,其特征在于,还包括:删除模块,用于所述验证子模块验 证通过时,将第一查询结果中删除密标列和属性列; 所述验证子模块,还用于返回删除密标列和属性列后的第一查询结果。14. 如权利要求8所述的装置,其特征在于,所述对应的属性列的数据为预设的密级。15. -种数据库密级标志安全网关操作的系统,其特征在于,包括:安全网关和数据库 管理服务器; 所述安全网关,当接收到对数据库中指定表的第一操作指令时,查询安全网关存储的 所述指定表的安全策略,确定所述第一操作指令中是否包含有敏感列;所述第一操作指令 为插入表指令或者更新表指令;当包含所述敏感列时,对第一操作指令中敏感列的数据和 对应的属性列的数据进行加密,生成敏感列对应的密标列的密文数据;将密文数据插入到 所述第一操作指令中,生成对应的第二操作指令;向数据库发送所述第二操作指令,以便所 述数据库完成相应的操作; 所述数据库管理服务器,用于接收安全网关发送的第二操作指令时,根据所述第二操 作指令,完成数据表的插入数据或更新数据操作,将密文数据插入或更新到所述敏感列对 应的密标列中。
【文档编号】G06F21/60GK106022143SQ201610303267
【公开日】2016年10月12日
【申请日】2016年5月10日
【发明人】景奕昕, 唐威, 周涛
【申请人】武汉华工安鼎信息技术有限责任公司