繁体   English   中英

Logstash 过滤器 - 屏蔽 json 数据中的秘密/替换特定键值

[英]Logstash filter - mask secrets in json data / replace specific keys values

我有一些 JSON 数据发送到我的 logstash 过滤器,并希望隐藏秘密以防止出现在 Kibana 中。 我的日志如下所示:

{
    "payloads":
    [
        {
            "sequence": 1,
            "request":
            {
                "url": "https://hello.com",
                "method": "POST",
                "postData": "{\"one:\"1\",\"secret:"THISISSECRET",\"username\":\"hello\",\"secret2\":\"THISISALSOSECRET\"}",
            },
            "response":
            {
                "status": 200,
            }
        }
    ],
...

我的过滤器将有效载荷转换为有效载荷,然后我希望将 postData 中的 JSON 屏蔽为:

"postData": "{\"one:\"1\",\"secret\":\"[secret]\",\"username\":\"hello\",\"secret2\":\"[secret]\"}"

我的过滤器现在看起来像这样:

if ([payloads]) {
  split {
    field => "payloads"
    target => "payload"
    remove_field => [payloads]
  }
}

# innetTmp is set to JSON here - this works

json {
  source => "innerTmp"
  target => "parsedJson"
  if [parsedJson][secret] =~ /.+/ {
    remove_field => [ "secret" ]
    add_field => { "secret" => "[secret]" }
  }
  if [parsedJson][secret2] =~ /.+/   {
    remove_field => [ "secret2" ]
    add_field => { "secret2" => "[secret]" }
  }
}

这是正确的方法吗? 我看不到过滤器将我的 JSON 键/值替换为"[secret]"

亲切的问候/K

方法很好,你用错了字段

拆分后,secret 字段是 postData 的一部分,该字段是 parsedJson 的一部分。

  if [parsedJson][postData][secret]  {
    remove_field => [ "[parsedJson][postData][secret]" ]
    add_field => { "[parsedJson][postData][secret]" => "[secret]" }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM