Elasticsearch:redact processor - 编辑处理器

438 阅读4分钟

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

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

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

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

在管道中使用 Redact 处理器

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

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

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

示例

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

`

1.  POST _ingest/pipeline/_simulate
2.  {
3.    "pipeline": {
4.      "description" : "Hide my IP",
5.      "processors": [
6.        {
7.          "redact": {
8.            "field": "message",
9.            "patterns": ["%{IP:client}"]
10.          }
11.        }
12.      ]
13.    },
14.    "docs":[
15.      {
16.        "_source": {
17.          "message": "55.3.244.1 GET /index.html 15824 0.043"
18.        }
19.      }
20.    ]
21.  }

`![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)

上面命令显示的结果为:



1.  {
2.    "docs": [
3.      {
4.        "doc": {
5.          "_index": "_index",
6.          "_id": "_id",
7.          "_version": "-3",
8.          "_source": {
9.            "message": "<client> GET /index.html 15824 0.043"
10.          },
11.          "_ingest": {
12.            "timestamp": "2023-06-24T01:53:44.906188Z"
13.          }
14.        }
15.      }
16.    ]
17.  }


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

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

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



1.  POST _ingest/pipeline/_simulate
2.  {
3.    "pipeline": {
4.      "description": "Hide my IP",
5.      "processors": [
6.        {
7.          "redact": {
8.            "field": "message",
9.            "patterns": [
10.              "%{IP:REDACTED}",
11.              "%{EMAILADDRESS:REDACTED}"
12.            ],
13.            "prefix": "*",
14.            "suffix": "*"
15.          }
16.        }
17.      ]
18.    },
19.    "docs": [
20.      {
21.        "_source": {
22.          "message": "55.3.244.1 GET /index.html 15824 0.043 test@elastic.co"
23.        }
24.      }
25.    ]
26.  }


在响应中,IP 55.3.244.1 和电子邮件地址 test@elastic.co 均已替换为 REDACTED

上面命令运行的结果为:



1.  {
2.    "docs": [
3.      {
4.        "doc": {
5.          "_index": "_index",
6.          "_id": "_id",
7.          "_version": "-3",
8.          "_source": {
9.            "message": "*REDACTED* GET /index.html 15824 0.043 *REDACTED*"
10.          },
11.          "_ingest": {
12.            "timestamp": "2023-06-24T01:56:07.547294Z"
13.          }
14.        }
15.      }
16.    ]
17.  }


定制 patterns

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

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

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



1.  POST _ingest/pipeline/_simulate
2.  {
3.    "pipeline": {
4.      "processors": [
5.        {
6.          "redact": {
7.            "field": "message",
8.            "patterns": [
9.              "%{GITHUB_NAME:GITHUB_NAME}"
10.            ],
11.            "pattern_definitions": {
12.              "GITHUB_NAME": "@%{USERNAME}"
13.            }
14.          }
15.        }
16.      ]
17.    },
18.    "docs": [
19.      {
20.        "_source": {
21.          "message": "@elastic-data-management the PR is ready for review"
22.        }
23.      }
24.    ]
25.  }


username 在响应中被编辑。



1.  {
2.    "docs": [
3.      {
4.        "doc": {
5.          "_index": "_index",
6.          "_id": "_id",
7.          "_version": "-3",
8.          "_source": {
9.            "message": "<GITHUB_NAME> the PR is ready for review"
10.          },
11.          "_ingest": {
12.            "timestamp": "2023-06-24T01:59:15.427469Z"
13.          }
14.        }
15.      }
16.    ]
17.  }


Grok watchdog

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