【问题标题】:Logstash filter - mask secrets in json data / replace specific keys valuesLogstash 过滤器 - 屏蔽 json 数据中的秘密/替换特定键值
【发布时间】:2022-12-05 20:55:29
【问题描述】:

我已将一些 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

【问题讨论】:

    标签: json logstash logstash-filter


    【解决方案1】:

    方法很好,你用错了字段

    拆分后,secret 字段是 post Data 的一部分,而该字段是已解析的 Json 的一部分。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多