Elasticsearch:redact processor – 编辑处理器

2023年7月4日   |   by mebius

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

%title插图%num

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

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": " GET /index.html 15824 0.043"
        },
        "_ingest": {
          "timestamp": "2023-06-24T01:53:44.906188Z"
        }
      }
    }
  ]
}

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

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.htmltgcode 15824 0.043 test@elastitgcodec.co"
      }
    }
  ]
}

在响应中,IP 55.3.244.1 和电子邮件地址 test@elastic.co 均已替换为 *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": " the PR is ready for review"
        },
        "_ingest": {
          "timestamp": "2023-06-24T01:59:15.427469Z"
        }
      }
    }
  ]
}

Grok watchdog

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

文章来源于互联网:Elasticsearch:redact processor – 编辑处理器

Tags: ,