如何从access_logs中删除包含敏感信息的某些行。该信息通过POST提供,并在$ request_body
中发送以下方式失败:
1>
log_format filter '[$time_iso8601] $remote_addr "$request" $status $body_bytes_sent $upstream_response_time "$http_referer" "$http_user_agent" $request_body';
set $temp $request;
if ($temp ~* '{\\x22username\\x22:\\x22*.*\\x22,\\x22password\\x22:\\*.*\\x22}') {
set $temp $1password:****$2;
}
access_log /var/log/nginx/access_kibana.log filter if=$request;
proxy_pass http://kibana;
结果:没有任何反应,敏感数据仍在access_log中
2 - ;
set $sensitive $request;
if ($sensitive ~ ("password")) {
set $sensitive $1test:test$2;
}
access_log /var/log/nginx/access_kibana.log filter if=$request;
proxy_pass http://kibana;
这种传统的方法可能在过去有效,但在我的情况下它并没有
3>作品。但完全删除所有$ request_body日志..
if ($sensitive ~ ("password")) {
set $loggable 0;
}
有没有人有解决此问题的文件/经验? 希望能够接受这个教育。提前谢谢你
答案 0 :(得分:0)
在你们提出专业建议之前,我会分享决议。
访问日志中的日志条目如下所示:
2018-02-27T06:56:10-08:00] 10.10.10.10 - "POST /api/security/v1/login HTTP/1.1" 200 0 0.012 "http://10.10.10.10/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0" {\x22username\x22:\x22user\x22,\x22}
为了从访问日志中仅删除此条目,我们必须搜索包含api安全登录和版本的POST条目,并在位置配置中进行设置。
if ($request ~ "POST \/api\/security\/v1\/login HTTP\/{1,9}.{1,9}") {
set $loggable 0;
}
感谢您的帮助