使用 Dlog4j2.formatMsgNoLookups 在 elasticsearch helm 图表中进行 log4j 临时修复

the*_*heG 5 log4j elasticsearch kubernetes kubernetes-helm elk

我试图使用 Helm Chart 在 AKS 中设置一个 Elasticsearch 集群,但由于 log4j 漏洞,我想将其设置为-Dlog4j2.formatMsgNoLookups选项true。当我在 helm 命令中传递参数时,出现未知标志错误。参考:https ://artifacthub.io/packages/helm/elastic/elasticsearch/6.8.16

helm upgrade  elasticsearch elasticsearch --set imageTag=6.8.16 esJavaOpts "-Dlog4j2.formatMsgNoLookups=true"
Error: unknown shorthand flag: 'D' in -Dlog4j2.formatMsgNoLookups=true
Run Code Online (Sandbox Code Playgroud)

我还尝试在values.yaml文件中添加以下内容

esConfig: {}
#  elasticsearch.yml: |
#    key:
#      nestedkey: value
log4j2.properties: |
  -Dlog4j2.formatMsgNoLookups = true
Run Code Online (Sandbox Code Playgroud)

但这些值不会添加到/usr/share/elasticsearch/config/jvm.options,/usr/share/elasticsearch/config/log4j2.properties或 环境变量中。

goh*_*m'c 6

首先,如果这是您到达这里的原因,这里有一个关于缓解Log4j2 安全问题的良好知识来源。

以下是编写values.yamlElasticsearch 图表的方法:

esConfig:
  log4j2.properties: |
    logger.discovery.name = org.elasticsearch.discovery
    logger.discovery.level = debug
Run Code Online (Sandbox Code Playgroud)

Helm 将生成一个 ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: elasticsearch-master-config
  ...
data:
  log4j2.properties: |
    logger.discovery.name = org.elasticsearch.discovery
    logger.discovery.level = debug
Run Code Online (Sandbox Code Playgroud)

Log4j 配置将安装到您的 Elasticsearch,如下所示:

...
volumeMounts:
  ...
  - name: esconfig
    mountPath: /usr/share/elasticsearch/config/log4j2.properties
    subPath: log4j2.properties
Run Code Online (Sandbox Code Playgroud)

更新:如何设置和添加多个配置文件。

您可以在您的 中设置其他 ES 配置文件values.yaml,您在此处指定的所有文件都将成为 ConfigMap 的一部分,每个文件都将挂载/usr/share/elasticsearch/config/在 Elasticsearch 容器中。例子:

esConfig:
  elasticsearch.yml: |
    node.master: true
    node.data: true

  log4j2.properties: |
    logger.discovery.name = org.elasticsearch.discovery
    logger.discovery.level = debug

  jvm.options: |
    # You can also place a comment here.
    -Xmx1g -Xms1g -Dlog4j2.formatMsgNoLookups=true

  roles.yml: |
    click_admins:
      run_as: [ 'clicks_watcher_1' ]
      cluster: [ 'monitor' ]
      indices:
      - names: [ 'events-*' ]
        privileges: [ 'read' ]
        field_security:
          grant: ['category', '@timestamp', 'message' ]
        query: '{"match": {"category": "click"}}'
Run Code Online (Sandbox Code Playgroud)

上面的所有配置仅用于说明如何在values.yaml中添加多个配置文件。请用您自己的设置替换这些配置。