【问题标题】:Logback: selectively masking statements and prudent modeLogback:选择性屏蔽语句和谨慎模式
【发布时间】:2013-08-04 16:30:25
【问题描述】:

我们正在使用 Logback 的%replace 功能来掩盖我们日志文件中的密码和安全令牌等安全敏感信息。

但是,只有 10% 的针对特定附加程序的日志语句需要屏蔽。对于剩下的 90%,运行替换正则表达式是多余的开销。

我们曾考虑使用诸如SEC_SENSITIVE 之类的标记来标记敏感语句,并使用过滤器来限制运行哪些附加程序。这需要为单个记录器设置 2 个互斥的附加程序。

Logger
  |---- Appender 1 (only if marker != SEC_SENSITIVE, no replacement)
  |---- Appender 2 (only if marker == SEC_SENSITIVE, with replacement)

两个 appender 都写入同一个文件。

说到这里,我有几个问题:

  1. 这种设置有意义吗?或者有没有更简单的方法? (理想情况下是 OOTB,没有自定义代码)
  2. 有关prudent 选项的文档和 StackOverflow 问题强调了它在多个 JVM 设置中的用途。在我们的例子中,所有的日志输出都来自单个 JVM。是否仍然需要启用此选项?或者 Logback 是否足够聪明,可以同步 2 个本地附加程序输出到同一个文件?
  3. 是否有针对此的 OOTB 过滤器?我只找到了MarkerFilter,但它是TurboFilter
  4. 现在是否支持条件替换 OOTB(建议 in this answer)?

环境: Apache ServiceMix 上的 OSGi 和 Pax Logging 1.7.0。

【问题讨论】:

    标签: java logging log4j logback


    【解决方案1】:

    是的,它会起作用的。不要忘记 additivity=false。

    或者,从根本上停止问题并在对象的 toString 中编辑任何敏感字段不是更容易吗?

    有时敏感案例并不那么容易被发现,例如令牌或 SAML 主题,这些也应该从日志中删除。

    【讨论】:

    • 我不是在处理 POJO,而是已经在处理序列化表示,例如XML、JSON 等。所以没有快速的方法来实现调用代码的屏蔽。此外,在这种情况下,我有兴趣使用异步附加程序来避免影响应用程序在处理日志时的性能。
    猜你喜欢
    • 1970-01-01
    • 2020-10-09
    • 2017-01-26
    • 1970-01-01
    • 2011-06-04
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多