发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种日志文件处理方法,能够提高日志脱敏的准确性和脱敏效率。
第一方面,本公开提供了一种日志文件处理方法,所述方法包括:
获取待处理日志文件,以及,获取预设的业务敏感关键字列表,所述业务敏感关键字列表用于维护业务关联的敏感关键字;
检查所述待处理日志文件中是否包含所述敏感关键字;
当所述待处理日志文件中包含所述敏感关键字,则检查所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号;
当所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中包含所述连接符号,则基于所述敏感关键字对应的敏感数据类型,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述敏感数据类型的敏感数据;
当所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中包含属于所述敏感数据类型的敏感数据,则对所述待处理日志文件中的所述敏感数据进行脱敏处理。
一种可选的实施方式中,所述如果确定所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中包含连接符号,则基于所述敏感关键字对应的敏感数据类型,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述敏感数据类型的敏感数据,包括:
如果确定所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中包含连接符号,则确定所述敏感关键字对应的敏感数据类型,作为目标敏感数据类型;
获取所述目标敏感数据类型对应的预设敏感数据匹配规则;
将所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符与所述预设敏感数据匹配规则进行匹配,得到匹配结果;
基于所述匹配结果,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述目标敏感数据类型的敏感数据。
一种可选的实施方式中,所述预设敏感数据匹配规则为基于状态机设置,所述状态机为基于所述敏感数据类型的特征构建;所述将所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符与所述预设敏感数据匹配规则进行匹配,得到匹配结果,包括:
确定所述状态机中的当前待匹配状态,以及,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中的当前待匹配字符;
将所述当前待匹配字符与所述当前待匹配状态进行匹配;
如果确定所述当前待匹配字符与所述当前待匹配状态匹配成功,则更新所述状态机中的当前待匹配状态;
将所述待处理日志文件中与所述当前待匹配字符相邻的下一个字符更新为当前待匹配字符,并触发执行所述将所述当前待匹配字符与所述当前待匹配状态进行匹配步骤,直到确定所述状态机的各个状态均匹配成功或者所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符均完成匹配;
将所述状态机的匹配结果确定为所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符与所述预设敏感数据匹配规则的匹配结果。
一种可选的实施方式中,所述基于所述敏感关键字对应的敏感数据类型,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述敏感数据类型的敏感数据,包括:
从所述待处理日志文件中截取位于所述连接符号之后的预设第二数量的字符,作为目标字符串;
基于所述敏感关键字对应的敏感数据类型,确定所述目标字符串中是否包含属于所述敏感数据类型的敏感数据。
一种可选的实施方式中,所述从所述待处理日志文件中截取位于所述连接符号之后的预设第二数量的字符,作为目标字符串之前,还包括:
将所述敏感数据类型对应的预设字符数量确定为预设第二数量。
一种可选的实施方式中,所述如果确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中包含属于所述敏感数据类型的敏感数据,则对所述待处理日志文件中的所述敏感数据进行脱敏处理,包括:
如果确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中包含属于所述敏感数据类型的敏感数据,则获取所述敏感数据在所述待处理日志文件中的位置信息;
基于所述敏感数据在所述待处理日志文件中的位置信息,对所述待处理日志文件中的所述敏感数据进行脱敏处理。
一种可选的实施方式中,所述基于所述敏感数据在所述待处理日志文件中的位置信息,对所述待处理日志文件中的所述敏感数据进行脱敏处理之前,还包括:
将所述敏感数据在所述待处理日志文件中的位置信息存储于所述待处理日志文件对应的敏感数据位置文件中;
对所述敏感数据位置文件中的位置信息进行去重处理。
一种可选的实施方式中,所述位置信息包括起始字符位置和结束字符位置;所述对所述敏感数据位置文件中的位置信息进行去重处理,包括:
按照所述起始字符位置对所述敏感数据位置文件中的位置信息进行升序排列,得到升序排列后的位置信息;
确定所述升序排列后的位置信息中是否包括存在交集的相邻两个位置信息;
如果确定所述升序排列后的位置信息中包括存在交集的相邻两个位置信息,则从所述敏感数据位置文件中删除所述相邻两个位置信息中的后一个位置信息,或者在所述敏感数据位置文件中将所述相邻两个位置信息进行合并处理。
一种可选的实施方式中,所述检查所述待处理日志文件中是否包含所述敏感关键字之前,还包括:
基于所述业务敏感关键字列表中的敏感关键字构建双数组前缀树;
相应的,所述检查所述待处理日志文件中是否包含所述敏感关键字,包括:
基于所述双数组前缀树,检查所述待处理日志文件中是否包含所述敏感关键字。
第二方面,本公开提供了一种日志文件处理装置,所述装置包括:
第一获取模块,用于获取待处理日志文件,以及,获取预设的业务敏感关键字列表,所述业务敏感关键字列表用于维护业务关联的敏感关键字;
第一检查模块,用于检查所述待处理日志文件中是否包含所述敏感关键字;
第二检查模块,用于当所述待处理日志文件中包含所述敏感关键字,则检查所述待处理志文件中处于所述敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号;
第一确定模块,用于当所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中包含所述连接符号,则基于所述敏感关键字对应的敏感数据类型,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述敏感数据类型的敏感数据;
脱敏模块,用于当所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中包含属于所述敏感数据类型的敏感数据,则对所述待处理日志文件中的所述敏感数据进行脱敏处理。
第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
第四方面,本公开提供了一种设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的方法。
第五方面,本公开提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
本公开实施例提供的技术方案与现有技术相比至少具有如下优点:
本公开实施例提供了一种日志文件处理方法,首先获取待处理日志文件,以及获取预设的业务敏感关键字列表,然后,检测待处理日志文件中是否包含业务敏感关键字列表中的敏感关键字。当确定待处理日志文件中包含任一敏感关键字时,检测待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号。当确定待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中包含任一连接符号时,基于该敏感关键字对应的敏感数据类型,确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中是否包含属于该敏感数据类型的敏感数据。当确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中包含属于该敏感数据类型的敏感数据时,对待处理日志文件中的该敏感数据进行脱敏处理。本公开实施例在确定待处理日志文件中包含预设的敏感关键字后,继续检查该敏感关键字之后是否包含预设的连接符号,在确定该敏感关键字之后包含连接符号后,才执行基于该敏感关键字对应的敏感数据类型匹配敏感数据,与现有技术中人工对敏感数据进行排查和修改相比,本公开实施例提高了日志文件脱敏的准确性和脱敏效率。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
目前,除了人工对日志中的敏感信息进行排查和修改的日志脱敏方式,还存在基于正则表达式对日志进行脱敏的处理方式,具体的,针对日志中的敏感数据设计正则表达式规则,例如,针对手机号这一敏感数据类型设计的正则表达式规则为“1[3456789]\d{9}”,但是这个规则不仅命中手机号,还可能会命中日志中的时间戳、用户ID等非敏感数据,存在误报率高的准确性问题,影响对业务系统的日志中敏感数据的排查,降低了日志脱敏的效率。
另外,由于业务系统的日志并非是XML、JSON这种有结构的数据,而是经过人工或编程语言格式化的内容,是无结构数据,而基于正则表达式设计的规则通常应用在有结构的数据中,对于匹配准确率会有所保证,但是应用在如日志这种无结构数据中,则会存在日志脱敏准确性的问题。
另外,直接采用正则表达式设计对日志中敏感数据的匹配规则,对于专业性要求较高,需要具有一定计算机基础的设计人员才能够完成,因此,对于敏感数据的匹配规则的设计成本也较高。
综合考虑到以上问题,本公开实施例提供了一种日志文件处理方法,首先,获取待处理日志文件,以及获取预设的业务敏感关键字列表,然后,检测待处理日志文件中是否包含业务敏感关键字列表中的敏感关键字。当确定待处理日志文件中包含任一敏感关键字时,检测待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号。当确定待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中包含任一连接符号时,基于该敏感关键字对应的敏感数据类型,确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中是否包含属于该敏感数据类型的敏感数据。当确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中包含属于该敏感数据类型的敏感数据时,对待处理日志文件中的该敏感数据进行脱敏处理。
本公开实施例在确定待处理日志文件中包含预设的敏感关键字后,继续检查该敏感关键字之后是否包含预设的连接符号,在确定该敏感关键字之后包含连接符号后,才执行基于该敏感关键字对应的敏感数据类型匹配敏感数据,与现有技术中人工对敏感数据进行排查和修改相比,本公开实施例提高了日志文件脱敏的准确性和脱敏效率。
基于此,本公开实施例提供了一种日志文件处理方法,参考图1,为本公开实施例提供的一种日志文件处理方法的流程图,该方法包括:
S101:获取待处理日志文件,以及,获取预设的业务敏感关键字列表。
其中,所述业务敏感关键字列表用于维护业务关联的敏感关键字。
本公开实施例中,待处理日志文件可以来自于存储在硬盘上的日志文件,也可以来自于内存中尚未打印出来的日志文本等。
本公开实施例中,待处理日志文件可以为一条日志信息,例如,[WARN][2021-09-14 13:56:10.102]-|-|-|edlp|lib/edlp/evidence.go:51|-|get evidence downloadurl failed,err=file not exist。待处理日志文件也可以包含一定时间内产生的若干条日志信息等。
本公开实施例中,确定待处理日志文件对应的业务所关联的敏感关键字,并将各个敏感关键字存储于预设的业务敏感关键字列表中。其中,敏感关键字是基于敏感数据类型预先设置的关键字,例如,可以为手机号这一敏感数据类型设置“phone”、“mobile”等敏感关键字。
而敏感数据类型用于标识不同类型的敏感数据,其中,不同类型的敏感数据可以是基于业务属性划分得到的。例如,手机号、邮箱、身份证号分别属于不同的敏感数据类型。值得注意的是,同一敏感数据类型可以设置至少一种关键字。
S102:检查所述待处理日志文件中是否包含所述敏感关键字。
本公开实施例中,在获取到待处理日志文件之后,首先确定待处理日志文件中是否包含业务敏感关键字列表中的任意一个敏感关键字。
一种可选的实施方式中,在获取到待处理日志文件和业务敏感关键字列表之后,利用业务敏感关键字列表中的各个敏感关键字分别与待处理日志文件中的各个字符进行匹配,以确定待处理日志文件中是否包含任意一个敏感关键字。
另一种可选的实施方式中,可以采用Aho-Corasick算法对待处理日志文件中的敏感关键字进行检测。通常Aho-Corasick算法可以通过在关键字的基础上构建Trie前缀树的方式实现待处理日志文件中敏感关键字的检测,具体的,Trie树可以基于数组或哈希表等方式实现,而处理效率较高的实现方式是基于双数组Double-array Trie树的方式实现。为了提高本公开实施例中敏感关键字的检测效率,可以基于双数组Double-array Trie树实现Aho-Corasick算法,并利用该算法对待处理日志文件中的敏感关键字进行检测。
具体的,首先基于业务敏感关键字列表中的敏感关键字构建双数组前缀树,然后,基于该双数组前缀树,检查待处理日志文件中是否包含任意一个敏感关键字。
一种可选的实施方式中,如果确定待处理日志文件中未包含有任意一个敏感关键字,则说明无需对该待处理日志文件进行脱敏处理,可以停止对该待处理日志文件的处理。
S103:当所述待处理日志文件中包含所述敏感关键字,则检查所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号。
由于无结构的日志文件中敏感关键字与敏感数据之间通常存在连接符号,如空格、引号、冒号、等于号、斜线、反斜线等,因此,在确定待处理日志文件中包含任一敏感关键字之后,继续检查待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号,通过敏感关键字和预设的连接符号的双重检测,确定对待处理日志文件中敏感数据的检测时机。
一种可选的实施方式中,预设第一数量可以是基于经验预先设置的整数,例如10个字符等。另外,针对不同的敏感关键字,也可以分别设置不同的预设第一数量,例如,敏感关键字phone对应的预设第一数量可以为5,而敏感关键字mobile对应的预设第一数量可以为10等。
一种可选的实施方式中,在确定待处理日志文件中包含敏感关键字后,确定该敏感关键字对应的预设第一数量,然后,确定待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中是否包含预设的任意一个连接符号。
实际应用中,可以将预设的各个连接符号分别与待处理日志文件中处于检测到的敏感关键字之后的预设第一数量的字符进行匹配,以确定待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中是否包含任意一个敏感关键字。
本公开实施例中,通过预设的连接符号对无结构的日志文件进行匹配,通用性较强,而结合敏感关键字和连接符号,确定敏感数据的匹配时机,能够提高敏感数据匹配的有效性,从而提高日志脱敏的处理效率。
一种可选的实施方式中,如果确定待处理日志文件中的敏感关键字之后的预设第一数量的字符中未包含任意一个预设的连接符号,则说明该敏感关键字之后不存在敏感数据,无需继续对该待处理日志文件中处于该敏感关键字之后的敏感数据进行检测。
S104:当所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中包含所述连接符号,则基于所述敏感关键字对应的敏感数据类型,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述敏感数据类型的敏感数据。
本公开实施例中,如果确定待处理日志文件中处于敏感关键字之后的预设第一数量的字符中包含预设的任意一个连接符号,则说明在该连接符号之后的字符中包含有敏感数据的概率较大,因此可以触发对敏感数据的检测。具体的,首先确定检测到的敏感关键字对应的敏感数据类型,然后基于该敏感数据类型进一步确定在该连接符号之后的预设第二数量的字符中是否包含属于该敏感数据类型的敏感数据。
一种可选的实施方式中,预设第二数量可以为基于经验预先设置的整数,例如60等。
另一种可选的实施方式中,预设第二数量可以与敏感数据类型有关,不同的敏感数据类型对应的预设第二数量可能不同,因此,在确定待处理日志文件中处于敏感关键字之后的预设第一数量的字符中包含预设的任意一个连接符号之后,首先确定该敏感关键字所属的敏感数据类型对应的预设字符数量,作为预设第二数量。
由于不同的敏感数据类型对应的敏感数据的特征不同,例如手机号这一敏感数据类型对应的敏感数据通常包括11位数字,且位于首位的数字为“1”,而邮箱这一敏感数据类型对应的敏感数据的特征为多个数字、字母或者符号的组合+符号@+多个数字、字母或者符号的组合。因此,本公开实施例可以在确定待处理日志文件中的敏感关键字之后包含连接符号后,基于该敏感关键字对应的敏感数据类型,进一步确定该连接符号之后的字符中是否包含属于该敏感数据类型的敏感数据。
一种可选的实施方式中,在确定待处理日志文件中包含敏感关键字后,首先确定该敏感关键字对应的敏感数据类型,作为目标敏感数据类型,然后,获取目标敏感数据类型对应的预设敏感数据匹配规则,进而将待处理日志文件中处于检测到的连接符号之后的预设第二数量的字符与获取到的预设敏感数据匹配规则进行匹配,得到匹配结果。然后,基于该匹配结果确定待处理日志文件中是否包含属于该敏感数据类型的敏感数据。
其中,可以预先基于各个敏感数据类型的特征,分别为各个敏感数据类型设置对应的敏感数据匹配规则。例如,可以基于正则表达式设置各个敏感数据类型分别对应的敏感数据匹配规则等。
一种可选的实施方式中,预设敏感数据匹配规则可以基于状态机设置,其中,该状态机是基于敏感数据类型的特征构建的。如图2所示,为本公开实施例提供的一种基于状态机设置的敏感数据匹配规则的示意图,其中,由于手机号这一敏感数据类型对应的敏感数据是由11个数字构成,且第一个数字是1,因此,基于该特征构建图2所示的敏感数据匹配规则;而由于邮箱这一敏感数据类型对应的敏感数据是由多个数字、字母或者符号的组合+符号@+多个数字、字母或者符号的组合构成,因此,基于该特征构建图2所示的敏感数据匹配规则。
实际应用中,可以在确定待处理日志文件中包含的敏感关键字之后包含有连接符号时,获取该敏感关键字对应的敏感数据类型,然后确定该敏感数据类型对应的敏感数据匹配规则,例如图2所示的第一个敏感数据匹配规则,进而基于该敏感数据匹配规则,对待处理日志文件中处于检测到连接符号之后的预设第二数量的字符进行匹配,以确定是否存在敏感数据。
一种可选的实施方式中,在基于敏感数据匹配规则,对待处理日志文件中处于检测到连接符号之后的预设第二数量的字符进行匹配时,可以按照状态机中各个状态的顺序依次进行匹配。具体的,首先确定状态机中的当前待匹配状态,以及,确定待处理日志文件中处于连接符号之后的当前待匹配字符,然后,将当前待匹配字符与当前待匹配状态进行匹配,如果确定所述当前待匹配字符与所述当前待匹配状态匹配成功,则更新所述状态机中的当前待匹配状态,即将下一个状态重新确定为当前待匹配状态。
将待处理日志文件中与当前待匹配字符相邻的下一个字符更新为当前待匹配字符,并继续进行匹配,直到确定状态机的各个状态均匹配成功或者待处理日志文件中处于预设第一关键字之后的字符(或者预设第一关键字之后的一定数量的字符)均完成匹配为止。进而,基于该状态机的匹配结果,确定是否存在敏感数据。
举例说明,假设数字1所处状态为状态机中的当前待匹配状态,则可以将待处理日志文件中处于连接符号之后的预设第二数量的字符依次与数字1匹配,直到匹配成功,则将数字1的下一个状态确定为状态机中的当前待匹配状态,继续进行匹配,直到该状态机中的各个状态均匹配成功,则确定待处理日志文件中存在敏感数据。
由于基于状态机配置敏感数据匹配规则的方式,相比于正则表达式等规则配置方式而言,对于配置人员的专业要求较低,因此,本公开实施例的敏感数据匹配规则的实现成本较低。
一种可选的实施方式中,如果确定待处理日志文件中处于连接符号之后的预设第二数量的字符中未包含敏感数据,则说明该连接符号之后不存在敏感数据,后续无需对敏感数据进行脱敏处理。
S105:当所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中包含属于所述敏感数据类型的敏感数据,则对所述待处理日志文件中的所述敏感数据进行脱敏处理。
本公开实施例中,如果确定待处理日志文件中处于连接符号之后的预设第二数量的字符中包含敏感数据,则获取该敏感数据在待处理日志文件中的位置信息。其中,位置信息可以包括敏感数据在待处理日志文件中的起始字符位置和结束字符位置,例如,敏感数据处于待处理日志文件中的第42个字符到第65个字符之间,即起始字符位置为第42个字符,结束字符位置为第65个字符。
在获取到敏感数据在待处理日志文件中的位置信息之后,可以基于该位置信息对待处理日志文件中的该敏感数据进行脱敏处理。例如,假设敏感数据A在待处理日志文件中的位置信息为第42个字符到第65个字符之间,则可以将待处理日志文件中处于第42个字符到第65个字符之间的敏感数据删除或者使用特殊符号遮盖等,实现对敏感数据A的脱敏处理。
为了降低开销,本公开实施例可以减少系统内存的分配,具体的,通过对待处理日志文件所占内存的拷贝,实现内存的复用,即利用拷贝出的内存存储经过脱敏处理后的待处理日志文件。
由于针对同一待处理日志文件可能存在多个敏感数据,例如,同一待处理日志文件中包括手机号A和邮箱B两个敏感数据,针对每个敏感数据,分别获取其在待处理日志文件中的位置信息,例如,手机号A处于待处理日志文件中的第12个字符到第30个字符之间,而邮箱B处于待处理日志文件中的第42个字符到第65个字符之间。
实际应用中,获取到的不同的敏感数据对应的位置信息可能存在重叠,而直接基于存在重叠的位置信息对待处理日志文件进行脱敏处理可能存在脱敏效率较低的问题。为了提高脱敏效率,本公开实施例可以在脱敏处理之前,首先对各个敏感数据对应的位置信息进行去重处理,然后基于经过去重的位置信息,对待处理日志文件中的各个敏感数据进行脱敏处理,能够提高脱敏效率。
一种可选的实施方式中,可以将获取到的敏感数据在待处理日志文件中的位置信息均存储于待处理日志文件对应的敏感数据位置文件中,然后,对该敏感数据位置文件中的各个位置信息进行去重处理。
为了保证去重处理的准确性,本公开实施例可以按照位置信息中的起始字符位置对敏感数据位置文件中的各个位置信息进行升序排列,得到升序排列后的位置信息,然后,确定升序排列后的位置信息中是否包括存在交集的相邻两个位置信息,如果确定升序排列后的位置信息中包括存在交集的相邻两个位置信息,则从敏感数据文件中删除该相邻的两个位置信息中的后一个位置信息,或者将该相邻两个位置信息进行合并处理。
由于各个位置信息是基于起始字符位置进行升序排列的,因此,如果相邻两个位置信息存在交集,则后一个位置信息通常包含在前一个位置信息中,因此,可以通过删除后一个位置信息的方式实现位置信息的去重处理。
另外,本公开实施例还可以采用其他方式实现对位置信息的去重处理,本公开实施例对此不作限制。
本公开实施例提供的日志文件处理方法中,首先获取待处理日志文件,以及获取预设的业务敏感关键字列表,然后,检测待处理日志文件中是否包含业务敏感关键字列表中的敏感关键字。当确定待处理日志文件中包含任一敏感关键字时,检测待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号。当确定待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中包含任一连接符号时,基于该敏感关键字对应的敏感数据类型,确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中是否包含属于该敏感数据类型的敏感数据。当确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中包含属于该敏感数据类型的敏感数据时,对待处理日志文件中的该敏感数据进行脱敏处理。本公开实施例在确定待处理日志文件中包含预设的敏感关键字后,继续检查该敏感关键字之后是否包含预设的连接符号,在确定该敏感关键字之后包含连接符号后,才执行基于该敏感关键字对应的敏感数据类型匹配敏感数据,与现有技术中人工对敏感数据进行排查和修改相比,本公开实施例提高了日志文件脱敏的准确性和脱敏效率。
基于上述方法实施例,本公开实施例还提供了一种具体应用场景实施例,如图3所示,为本公开实施例提供的一种日志文件处理方法的应用场景示意图,其中,在该应用场景下,日志文件的处理流程依次经过如下过程:
首先,通过业务系统中集成的LogSDK日志软件开发工具包,对业务系统产生的日志进行打印,通常将日志打印到文件中,然后,由与业务系统相连的Log Agent日志代理对打印到文件中的日志进行收集,并将收集到的日志文件发送至消息队列中,消息队列为消费者提供对日志文件进行消费的接口,例如,消费者可以对日志进行汇总和计算等,然后,将汇总和计算后的日志存储于分布式文件存储系统或者在线搜索引擎中,进行持久化存储,以供后续对日志文件进行查询等操作。
实际应用中,可以在业务系统中集成的LogSDK中部署本公开实施例提供的日志文件处理方法,在LogSDK对业务系统产生的日志进行打印之前,首先对日志进行脱敏处理,保证日志中隐私数据的安全。
另外,还可以在对日志进行持久化存储之前,即在将日志存储于分布式文件存储系统或者在线搜索引擎之前,利用本公开实施例提供的日志文件处理方法对日志进行脱敏处理,以便在后续对持久化存储的日志进行查看时,能够保证日志中隐私数据的安全。
本公开实施例提供的日志文件处理方法可以应用于各种应用场景,不限定于上述应用场景。
基于上述方法实施例,本公开还提供了一种日志文件处理装置,参考图4,为本公开实施例提供的一种日志文件处理装置的结构示意图,所述装置包括:
第一获取模块401,用于获取待处理日志文件,以及,获取预设的业务敏感关键字列表,所述业务敏感关键字列表用于维护业务关联的敏感关键字;
第一检查模块402,用于检查所述待处理日志文件中是否包含所述敏感关键字;
第二检查模块403,用于当所述待处理日志文件中包含所述敏感关键字,则检查所述待处理志文件中处于所述敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号;
第一确定模块404,用于当所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中包含所述连接符号,则基于所述敏感关键字对应的敏感数据类型,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述敏感数据类型的敏感数据;
脱敏模块405,用于当所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中包含属于所述敏感数据类型的敏感数据,则对所述待处理日志文件中的所述敏感数据进行脱敏处理。
一种可选的实施方式中,所述第一确定模块,包括:
第一确定子模块,用于如果确定所述待处理日志文件中处于所述敏感关键字之后的预设第一数量的字符中包含连接符号,则确定所述敏感关键字对应的敏感数据类型,作为目标敏感数据类型;
第一获取子模块,用于获取所述目标敏感数据类型对应的预设敏感数据匹配规则;
第一匹配子模块,用于将所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符与所述预设敏感数据匹配规则进行匹配,得到匹配结果;
第二确定子模块,用于基于所述匹配结果,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中是否包含属于所述目标敏感数据类型的敏感数据。
一种可选的实施方式中,所述预设敏感数据匹配规则为基于状态机设置,所述状态机为基于所述敏感数据类型的特征构建;所述第一匹配子模块,包括:
第三确定子模块,用于确定所述状态机中的当前待匹配状态,以及,确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中的当前待匹配字符;
第二匹配子模块,用于将所述当前待匹配字符与所述当前待匹配状态进行匹配;
第一更新子模块,用于在确定所述当前待匹配字符与所述当前待匹配状态匹配成功时,更新所述状态机中的当前待匹配状态;
第四确定子模块,用于将所述待处理日志文件中与所述当前待匹配字符相邻的下一个字符更新为当前待匹配字符;
触发子模块,用于触发执行所述第二匹配子模块,直到确定所述状态机的各个状态均匹配成功或者所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符均完成匹配;
第五确定子模块,用于将所述状态机的匹配结果确定为所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符与所述预设敏感数据匹配规则的匹配结果。
一种可选的实施方式中,所述第一确定模块,包括:
截取子模块,用于从所述待处理日志文件中截取位于所述预设连接符号之后的预设第二数量的字符,作为目标字符串;
第六确定子模块,用于基于所述敏感关键字对应的敏感数据类型,确定所述目标字符串中是否包含属于所述敏感数据类型的敏感数据。
一种可选的实施方式中,所述装置还包括:
第二确定模块,用于将所述敏感数据类型对应的预设字符数量确定为预设第二数量。
一种可选的实施方式中,所述脱敏模块,包括:
第一获取子模块,用于如果确定所述待处理日志文件中处于所述连接符号之后的预设第二数量的字符中包含属于所述敏感数据类型的敏感数据,则获取所述敏感数据在所述待处理日志文件中的位置信息;
脱敏子模块,用于基于所述敏感数据在所述待处理日志文件中的位置信息,对所述待处理日志文件中的所述敏感数据进行脱敏处理。
一种可选的实施方式中,所述装置还包括:
存储模块,用于将所述敏感数据在所述待处理日志文件中的位置信息存储于所述待处理日志文件对应的敏感数据位置文件中;
去重模块,用于对所述敏感数据位置文件中的位置信息进行去重处理。
一种可选的实施方式中,所述位置信息包括起始字符位置和结束字符位置;所述去重模块,包括:
排列子模块,用于按照所述起始字符位置对所述敏感数据位置文件中的位置信息进行升序排列,得到升序排列后的位置信息;
第七确定子模块,用于确定所述升序排列后的位置信息中是否包括存在交集的相邻两个位置信息;
处理子模块,用于在确定所述升序排列后的位置信息中包括存在交集的相邻两个位置信息时,从所述敏感数据位置文件中删除所述相邻两个位置信息中的后一个位置信息,或者在所述敏感数据位置文件中将所述相邻两个位置信息进行合并处理。
一种可选的实施方式中,所述装置还包括:
构建模块,用于基于所述业务敏感关键字列表中的敏感关键字构建双数组前缀树;
相应的,所述第一检查模块,用于基于所述双数组前缀树,检查所述待处理日志文件中是否包含所述敏感关键字。
本公开实施例提供的日志文件处理装置中,首先获取待处理日志文件,以及获取预设的业务敏感关键字列表,然后,检测待处理日志文件中是否包含业务敏感关键字列表中的敏感关键字。当确定待处理日志文件中包含任一敏感关键字时,检测待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中是否包含预设的连接符号。当确定待处理日志文件中处于该敏感关键字之后的预设第一数量的字符中包含任一连接符号时,基于该敏感关键字对应的敏感数据类型,确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中是否包含属于该敏感数据类型的敏感数据。当确定待处理日志文件中处于该连接符号之后的预设第二数量的字符中包含属于该敏感数据类型的敏感数据时,对待处理日志文件中的该敏感数据进行脱敏处理。本公开实施例在确定待处理日志文件中包含预设的敏感关键字后,继续检查该敏感关键字之后是否包含预设的连接符号,在确定该敏感关键字之后包含连接符号后,才执行基于该敏感关键字对应的敏感数据类型匹配敏感数据,与现有技术中人工对敏感数据进行排查和修改相比,本公开实施例提高了日志文件脱敏的准确性和脱敏效率。
除了上述方法和装置以外,本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现本公开实施例所述的日志文件处理方法。
本公开实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本公开实施例所述的日志文件处理方法。
另外,本公开实施例还提供了一种日志文件处理设备,参见图5所示,可以包括:
处理器501、存储器502、输入装置503和输出装置504。日志文件处理设备中的处理器501的数量可以一个或多个,图5中以一个处理器为例。在本公开的一些实施例中,处理器501、存储器502、输入装置503和输出装置504可通过总线或其它方式连接,其中,图5中以通过总线连接为例。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行日志文件处理设备的各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置503可用于接收输入的数字或字符信息,以及产生与日志文件处理设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现上述日志文件处理设备的各种功能。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。