[英]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.