Elasticsearch:redact processor - 编辑处理器

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将尽最大努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。

Redact 处理器使用 Grok 规则引擎来模糊输入文档中与给定 Grok 模式匹配的文本。 该处理器可用于通过配置检测电子邮件或 IP 地址等已知模式来隐藏个人识别信息 (PII)。 与 Grok 模式匹配的文本将替换为可配置的字符串,例如匹配电子邮件地址的 <EMAIL>,或者如果愿意,只需将所有匹配项替换为文本 <REDACTED>。

Elasticsearch 附带了许多有用的预定义模式,Redact 处理器可以方便地引用这些模式。 如果其中之一不满足您的需求,请使用自定义模式定义创建新模式。 Redact 处理器会替换每次出现的匹配项。 如果有多个匹配项,所有匹配项都将替换为模式名称。

Redact 处理器与弹性通用架构 (ECS) 模式兼容。 不支持旧版 Grok 模式。

在管道中使用 Redact 处理器

Redact 选项
名称 必要项 默认
field yes - 要编辑的字段
patterns yes - 用于匹配和编辑命名捕获的 grok 表达式列表
pattern_definitions no - 模式名称和模式元组的映射,定义处理器要使用的自定义模式。 匹配现有名称的模式将覆盖预先存在的定义
prefix no < 使用此标记开始编辑部分
suffix no > 使用此标记结束编辑部分
ignore_missing no true 如果 true 并且字段不存在或为 null,则处理器安静退出而不修改文档
description no - 处理器的描述。 对于描述处理器或其配置的用途很有用。
if  no - 有条件地执行处理器。 请参阅有条件地运行处理器
ignore_failure no false 忽略处理器的故障。 请参阅处理管道故障
on_failure no -

 忽略处理器的故障。 请参阅处理管道故障

tag no - 处理器的标识符。 对于调试和指标很有用。

示例

在此示例中,预定义的 IP Grok 模式用于匹配和编辑消息文本字段中的 IP 地址。 使用 Simulate API 测试管道。

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "description" : "Hide my IP",
    "processors": [
      {
        "redact": {
          "field": "message",
          "patterns": ["%{IP:client}"]
        }
      }
    ]
  },
  "docs":[
    {
      "_source": {
        "message": "55.3.244.1 GET /index.html 15824 0.043"
      }
    }
  ]
}

上面命令显示的结果为:

{
  "docs": [
    {
      "doc": {
        "_index": "_index",
        "_id": "_id",
        "_version": "-3",
        "_source": {
          "message": "<client> GET /index.html 15824 0.043"
        },
        "_ingest": {
          "timestamp": "2023-06-24T01:53:44.906188Z"
        }
      }
    }
  ]
}

响应中的文档仍然包含 message 字段,但现在 IP 地址 55.3.244.1 被文本 <client> 替换。

IP 地址被替换为单词 client,因为这是 Grok 模式 %{IP:client} 中指定的内容。 模式名称周围的 < 和 > 标记可以使用前缀和后缀选项进行配置。

下一个示例定义了多个模式,这两个模式都被单词 REDACTED 替换,并且前缀和后缀标记设置为 *

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "description": "Hide my IP",
    "processors": [
      {
        "redact": {
          "field": "message",
          "patterns": [
            "%{IP:REDACTED}",
            "%{EMAILADDRESS:REDACTED}"
          ],
          "prefix": "*",
          "suffix": "*"
        }
      }
    ]
  },
  "docs": [
    {
      "_source": {
        "message": "55.3.244.1 GET /index.html 15824 0.043 [email protected]"
      }
    }
  ]
}

在响应中,IP 55.3.244.1 和电子邮件地址 [email protected] 均已替换为 *REDACTED*。

上面命令运行的结果为:

{
  "docs": [
    {
      "doc": {
        "_index": "_index",
        "_id": "_id",
        "_version": "-3",
        "_source": {
          "message": "*REDACTED* GET /index.html 15824 0.043 *REDACTED*"
        },
        "_ingest": {
          "timestamp": "2023-06-24T01:56:07.547294Z"
        }
      }
    }
  ]
}

定制 patterns

如果现有 Grok 模式之一不符合你的要求,可以使用 pattern_definitions 选项添加自定义模式。 新模式定义由模式名称和模式本身组成。 该模式可以是正则表达式或引用现有的 Grok 模式。

此示例定义自定义模式 GITHUB_NAME 以匹配 GitHub 用户名。 该模式定义使用现有的 USERNAME Grok 模式,并以文字 @ 为前缀。

提示Grok 调试器对于构建自定义模式来说是一个非常有用的工具。

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "processors": [
      {
        "redact": {
          "field": "message",
          "patterns": [
            "%{GITHUB_NAME:GITHUB_NAME}"
          ],
          "pattern_definitions": {
            "GITHUB_NAME": "@%{USERNAME}"
          }
        }
      }
    ]
  },
  "docs": [
    {
      "_source": {
        "message": "@elastic-data-management the PR is ready for review"
      }
    }
  ]
}

username 在响应中被编辑。

{
  "docs": [
    {
      "doc": {
        "_index": "_index",
        "_id": "_id",
        "_version": "-3",
        "_source": {
          "message": "<GITHUB_NAME> the PR is ready for review"
        },
        "_ingest": {
          "timestamp": "2023-06-24T01:59:15.427469Z"
        }
      }
    }
  ]
}

Grok watchdog

Watchdog 会中断执行时间过长的表达式。 当中断时,Redact 处理器会失败并出现错误。 控制 Grok Watchdog 超时的相同设置也适用于 Redact 处理器。

猜你喜欢

转载自blog.csdn.net/UbuntuTouch/article/details/131358130