• logstash实现敏感信息脱敏及超长字符截取


    我们通过filebeat收集的日志通常没有进行敏感信息的脱敏工作,以及一些base64超长字符如果不做处理,存储到es及在kibana展示也会耗费性能。
    针对这两个问题我们可以进行如下配置:
    1.设置超长字符截取
    进入logstash安装目录,config文件夹下新建文件logstash_to_es相关配置如下:

    filter {
    if [type] == "filebeat" {
    		grok {
    		match => [
                		"message","%{LOGLEVEL:level}",
                        "message","%{DATA:message}"          
             	]
    		}
    		if [level] == "DEBUG" {
    			drop { }
    		}
    		if[message]=~"ASPECT"{
    			drop { }
    		}
    		if [message]=~"OVERLENGTH"{
    			grok{
    			match => {
    				 "message" => "(?<MYELF>([sS]{500}))"  #截取带RAW-CONTENT关键字的日志500个字符 作为MYELF的值
    			}
    			}
    			mutate {
    			 rename => {"MYELF" => "message"}                                    #重命名字段MYELF为message
    			}
    		}
    		if[message]=~"traceId"{
    			grok {
    				match => ["message","%{UUID:traceId}"]                            #自定义kibana筛选关键字
    			}
    		}
    	}
    }
    

    2.敏感字段脱敏
    进入logstash安装目录,config文件夹下新建文件logstash_to_es相关配置如下:

    filter {
    if [type] == "filebeat" {
    	ruby {
                  path => "/usr/local/logstash-6.0.1/config/text.rb"
                    script_params => { "message" => "message" }
             }
    }
    }
    

    text.rb也就是我们配置的敏感字段脱敏ruby的过滤条件。

    def register(params)
             @message = params["message"]             # 通过params获取script_params传参
    end
    
    def filter(event)
    	msg = event.get(@message)
    	if(msg =~ /certNo:(.*)/)                                      # 获取日志中的关键字certNo
    		cerNoExp = /(?<=certNo:)(w{6})(w{8})(w{4})/
    		cerNoExp =~ msg
    		cerNoInFor = $2
    		msg.gsub!(cerNoInFor, "******")
    	end
    	if(msg =~ /mobileNo:(.*)/)                                  # 获取日志中的关键字mobileNo
                    mobileNoExp = /(?<=mobileNo:)(w{3})(w{4})(w{4})/
                    mobileNoExp =~ msg
                    mobileNoInFor = $2
                    msg.gsub!(mobileNoInFor, "****")
            end
    
    	#event.set("msg", msg)
    	return [event]	
    end
  • 相关阅读:
    合并链表
    ImportError: cannot import name 'GMM' from 'sklearn.mixture'
    SyntaxError: invalid character in identifier
    在 jupyter notebook 中插入图片
    Atom 换行后删除前面空格,需要按2/4次退格键
    win10输入法InpuMode默认显示中文
    Visual Studio(WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本8.1)
    atom修改注释的字体,字号,颜色
    '__int64' has not been declared
    VMware 打开虚拟机库
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/14025196.html
Copyright © 2020-2023  润新知