From 8e75f924bbc569798cdc41bbb56081c87384fa0f Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 18 Jul 2025 13:28:37 -0400 Subject: [PATCH 01/24] add anonymization --- .../observability-ai-assistant.md | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 4192b4c0e8..43f33cd266 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -61,7 +61,7 @@ It's important to understand how your data is handled when using the AI Assistan : Elastic does not use customer data for model training, but all data is processed by third-party AI providers. **Anonymization** -: Data sent to the AI Assistant is *not* anonymized, including alert data, configurations, queries, logs, and chat interactions. +: Data sent to the AI Assistant is *not* anonymized, including alert data, configurations, queries, logs, and chat interactions. If you need to anonymize data, use the [anonymization pipeline](#obs-ai-anonymization). **Permission context** : When the AI Assistant performs searches, it uses the same permissions as the current user. @@ -418,6 +418,50 @@ Enable this feature from the **Settings** tab in AI Assistant Settings by using For air-gapped environments, installing product documentation requires special configuration. See the [{{kib}} AI Assistants settings documentation](kibana://reference/configuration-reference/ai-assistant-settings.md) for detailed instructions. :::: +## Anonymization (technical preview) [obs-ai-anonymization] + +Anonymization masks personally identifiable or otherwise sensitive information before chat messages leave Kibana for a third-party LLM. +Enabled rules substitute deterministic tokens (for example EMAIL_ee4587…) so the model can keep context without ever seeing the real value. +When all rules are disabled (the default), data is forwarded unchanged. + +### How it works [obs-ai-anonymization-how] + +When anonymization is enabled, every message in the request (system prompt, chat history, tool-call arguments, etc.) is run through an *anonymization pipeline* before it leaves Kibana: + +1. Each enabled **rule** scans its target text and replaces any match with a deterministic token such as + `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. + The prefix (`EMAIL`, `PER`, `LOC`, …) is the *entity class*; the suffix is a SHA-1 hash of the original value. +2. The fully masked conversation is sent to the LLM. +3. After the model replies, Kibana restores the original values so the UI (and any downstream connectors) receive de-anonymised text. + +Because the masking is deterministic, the model can still maintain logical consistency (“`EMAIL_x`” always refers to the same address) without ever seeing the real value. + +### Rule types [obs-ai-anonymization-rules] + +| Rule type | Description | Example | +|-----------|-------------|---------| +| **RegExp** | Runs a JavaScript regular expression. Use for fixed patterns such as e-mail addresses. | ```jsonc { "type": "RegExp", "enabled": true, "pattern": "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})", "entityClass": "EMAIL" } ``` | +| **NER** | Runs a named-entity-recognition model on free text. | ```jsonc { "type": "NER", "enabled": true, "modelId": "elastic__distilbert-base-uncased-finetuned-conll03-english", "allowedEntityClasses": ["PER","ORG","LOC"] } ``` | + +Rules are evaluated **top-to-bottom**; the first rule that captures a given span wins. + +### Requirements [obs-ai-anonymization-requirements] + +* **Advanced Settings privilege** to edit the configuration and enable rules. + Once saved, *all* users in the same **Space** benefit from the anonymization (the setting is [space-aware](../../deploy-manage/manage-spaces.md)). +* **ML privilege and resources** if you enable a rule of type NER, you must first [import and start a named-entity-recognition model](/explore-analyze/machine-learning/nlp/ml-nlp-ner-example.md) and have sufficient ML capacity. + +::::{important} +The anonymization pipeline has only been validated with Elastic’s English model +`elastic/distilbert-base-uncased-finetuned-conll03-english`. +Results for other languages or models may vary. +:::: + +### Limitations [obs-ai-anonymization-limitations] +* **Performance (NER)** – Running a named entity recognition model can add latency depending on the request. +* **Structured JSON** – The NER model tested is trained on natural English; it often misses entities inside JSON. Prefer regex rules if masking must be thorough Regex rules should be crafted to handle JSON syntax. +* **False negatives / positives** – No model or pattern is perfect. Model accuracy may vary depending on model and input. + ## Known issues [obs-ai-known-issues] ### Token limits [obs-ai-token-limits] From 7e9db36fde0b9f2cbff58870d2c80a0d99b28eb6 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 18 Jul 2025 13:49:18 -0400 Subject: [PATCH 02/24] update --- .../observability-ai-assistant.md | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 43f33cd266..04cb9a8378 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -438,18 +438,36 @@ Because the masking is deterministic, the model can still maintain logical consi ### Rule types [obs-ai-anonymization-rules] -| Rule type | Description | Example | -|-----------|-------------|---------| -| **RegExp** | Runs a JavaScript regular expression. Use for fixed patterns such as e-mail addresses. | ```jsonc { "type": "RegExp", "enabled": true, "pattern": "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})", "entityClass": "EMAIL" } ``` | -| **NER** | Runs a named-entity-recognition model on free text. | ```jsonc { "type": "NER", "enabled": true, "modelId": "elastic__distilbert-base-uncased-finetuned-conll03-english", "allowedEntityClasses": ["PER","ORG","LOC"] } ``` | -Rules are evaluated **top-to-bottom**; the first rule that captures a given span wins. +**RegExp** — Runs a JavaScript‑style regular expression. Use for fixed patterns such as e‑mail addresses, host names, etc. + +```jsonc +{ + "type": "RegExp", + "pattern": "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})", + "entityClass": "EMAIL", + "enabled": true +} +``` + +**NER** — Runs a named‑entity‑recognition model on free text. + +```jsonc +{ + "type": "NER", + "modelId": "elastic__distilbert-base-uncased-finetuned-conll03-english", + "allowedEntityClasses": ["PER", "ORG", "LOC"], + "enabled": true +} +``` + +Rules are evaluated **top-to-bottom**; the first rule that captures a given entity wins. Rules can be configured in the [AI Assistant Settings](#obs-ai-settings) page. ### Requirements [obs-ai-anonymization-requirements] * **Advanced Settings privilege** to edit the configuration and enable rules. Once saved, *all* users in the same **Space** benefit from the anonymization (the setting is [space-aware](../../deploy-manage/manage-spaces.md)). -* **ML privilege and resources** if you enable a rule of type NER, you must first [import and start a named-entity-recognition model](/explore-analyze/machine-learning/nlp/ml-nlp-ner-example.md) and have sufficient ML capacity. +* **ML privilege and resources** if you enable a rule of type NER, you must first [deploy and start a named-entity-recognition model](/explore-analyze/machine-learning/nlp/ml-nlp-ner-example.md#ex-ner-deploy) and have sufficient ML capacity. ::::{important} The anonymization pipeline has only been validated with Elastic’s English model From e6f35d3451167509d61f2e50be54d2a01177284f Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 18 Jul 2025 14:06:40 -0400 Subject: [PATCH 03/24] update --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 04cb9a8378..e036f5223c 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -432,7 +432,7 @@ When anonymization is enabled, every message in the request (system prompt, chat `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. The prefix (`EMAIL`, `PER`, `LOC`, …) is the *entity class*; the suffix is a SHA-1 hash of the original value. 2. The fully masked conversation is sent to the LLM. -3. After the model replies, Kibana restores the original values so the UI (and any downstream connectors) receive de-anonymised text. +3. After the LLM responds, the original values are restored so the user sees de-anonymised text and any persisted conversation history stores the original content. Because the masking is deterministic, the model can still maintain logical consistency (“`EMAIL_x`” always refers to the same address) without ever seeing the real value. From d361613f4a98f658adb73825a841755164c63af9 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 18 Jul 2025 14:11:45 -0400 Subject: [PATCH 04/24] update what is anonymized --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index e036f5223c..9df54c6330 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -426,7 +426,7 @@ When all rules are disabled (the default), data is forwarded unchanged. ### How it works [obs-ai-anonymization-how] -When anonymization is enabled, every message in the request (system prompt, chat history, tool-call arguments, etc.) is run through an *anonymization pipeline* before it leaves Kibana: +When anonymization is enabled, every message in the request (system prompt, message content, tool call arguments/response) is run through an *anonymization pipeline* before it leaves Kibana: 1. Each enabled **rule** scans its target text and replaces any match with a deterministic token such as `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. From ae526f4fd8c63532abae493040c8256d7a54366c Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 18 Jul 2025 14:15:12 -0400 Subject: [PATCH 05/24] add link --- solutions/observability/observability-ai-assistant.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 9df54c6330..f5cb92062a 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -426,7 +426,7 @@ When all rules are disabled (the default), data is forwarded unchanged. ### How it works [obs-ai-anonymization-how] -When anonymization is enabled, every message in the request (system prompt, message content, tool call arguments/response) is run through an *anonymization pipeline* before it leaves Kibana: +When anonymization is enabled, every message in the request (system prompt, message content, tool call arguments/response, and tool-call response fields) is run through an *anonymization pipeline* before it leaves Kibana: 1. Each enabled **rule** scans its target text and replaces any match with a deterministic token such as `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. @@ -471,7 +471,7 @@ Rules are evaluated **top-to-bottom**; the first rule that captures a given enti ::::{important} The anonymization pipeline has only been validated with Elastic’s English model -`elastic/distilbert-base-uncased-finetuned-conll03-english`. +[elastic/distilbert-base-uncased-finetuned-conll03-english](https://huggingface.co/elastic/distilbert-base-uncased-finetuned-conll03-english). Results for other languages or models may vary. :::: From 051abc32949774c60172b090aab7b19d11a1f44f Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 18 Jul 2025 14:20:22 -0400 Subject: [PATCH 06/24] update limitations --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index f5cb92062a..e6a0189d49 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -477,7 +477,7 @@ Results for other languages or models may vary. ### Limitations [obs-ai-anonymization-limitations] * **Performance (NER)** – Running a named entity recognition model can add latency depending on the request. -* **Structured JSON** – The NER model tested is trained on natural English; it often misses entities inside JSON. Prefer regex rules if masking must be thorough Regex rules should be crafted to handle JSON syntax. +* **Structured JSON** – The NER model we validated (`elastic/distilbert-base-uncased-finetuned-conll03-english`) is trained on natural English text and often misses entities inside JSON or other structured data. If thorough masking is required, prefer regex rules and craft them to account for JSON syntax. * **False negatives / positives** – No model or pattern is perfect. Model accuracy may vary depending on model and input. ## Known issues [obs-ai-known-issues] From e5bb4e266adf25d0577c6b22a8e45a07c0516164 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 18 Jul 2025 15:09:22 -0400 Subject: [PATCH 07/24] remove tool call --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index e6a0189d49..976942558c 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -426,7 +426,7 @@ When all rules are disabled (the default), data is forwarded unchanged. ### How it works [obs-ai-anonymization-how] -When anonymization is enabled, every message in the request (system prompt, message content, tool call arguments/response, and tool-call response fields) is run through an *anonymization pipeline* before it leaves Kibana: +When anonymization is enabled, every message in the request (system prompt, message content, function call arguments/responses) is run through an *anonymization pipeline* before it leaves Kibana: 1. Each enabled **rule** scans its target text and replaces any match with a deterministic token such as `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. From 0cee54ec1d6f2ad9b55ea52dab200689e03ffff8 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Fri, 18 Jul 2025 15:09:57 -0400 Subject: [PATCH 08/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Viduni Wickramarachchi --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 976942558c..e12a43b45d 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -421,7 +421,7 @@ For air-gapped environments, installing product documentation requires special c ## Anonymization (technical preview) [obs-ai-anonymization] Anonymization masks personally identifiable or otherwise sensitive information before chat messages leave Kibana for a third-party LLM. -Enabled rules substitute deterministic tokens (for example EMAIL_ee4587…) so the model can keep context without ever seeing the real value. +Enabled rules substitute deterministic tokens (for example `EMAIL_ee4587…`) so the model can keep context without ever seeing the real value. When all rules are disabled (the default), data is forwarded unchanged. ### How it works [obs-ai-anonymization-how] From 996323379f2716e5502fad086907ebecc711355a Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Tue, 22 Jul 2025 15:28:03 -0400 Subject: [PATCH 09/24] add json malformed limitation and performance guidance --- solutions/observability/observability-ai-assistant.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index e12a43b45d..a243615518 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -426,7 +426,7 @@ When all rules are disabled (the default), data is forwarded unchanged. ### How it works [obs-ai-anonymization-how] -When anonymization is enabled, every message in the request (system prompt, message content, function call arguments/responses) is run through an *anonymization pipeline* before it leaves Kibana: +When an anonymization rule is enabled in the [AI Assistant settings](#obs-ai-settings), every message in the request (system prompt, message content, function call arguments/responses) is run through an *anonymization pipeline* before it leaves Kibana: 1. Each enabled **rule** scans its target text and replaces any match with a deterministic token such as `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. @@ -476,9 +476,11 @@ Results for other languages or models may vary. :::: ### Limitations [obs-ai-anonymization-limitations] -* **Performance (NER)** – Running a named entity recognition model can add latency depending on the request. +* **Performance (NER)** – Running a named entity recognition model can add latency depending on the request. To improve performance of the model, consider scaling up your ML nodes by adjusting deployment parameters: increase `number_of_allocations` for better throughput and `threads_per_allocation` for faster individual requests. For details, refer to the [start trained model deployment API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-start-trained-model-deployment). * **Structured JSON** – The NER model we validated (`elastic/distilbert-base-uncased-finetuned-conll03-english`) is trained on natural English text and often misses entities inside JSON or other structured data. If thorough masking is required, prefer regex rules and craft them to account for JSON syntax. * **False negatives / positives** – No model or pattern is perfect. Model accuracy may vary depending on model and input. +* **JSON malformation risk** – Both NER inference and regex rules can potentially create malformed JSON when anonymizing JSON data such as function responses. This can occur by replacing text across character boundaries, which may break JSON structure causing the whole request to fail. If this occurs, you may need to disable the problematic anonymization rule. + ## Known issues [obs-ai-known-issues] From 23c2771141745e26fe1138870ce26913b82707f6 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Tue, 22 Jul 2025 15:38:49 -0400 Subject: [PATCH 10/24] adjust limitation wording --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index a243615518..11224b9c51 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -479,7 +479,7 @@ Results for other languages or models may vary. * **Performance (NER)** – Running a named entity recognition model can add latency depending on the request. To improve performance of the model, consider scaling up your ML nodes by adjusting deployment parameters: increase `number_of_allocations` for better throughput and `threads_per_allocation` for faster individual requests. For details, refer to the [start trained model deployment API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-start-trained-model-deployment). * **Structured JSON** – The NER model we validated (`elastic/distilbert-base-uncased-finetuned-conll03-english`) is trained on natural English text and often misses entities inside JSON or other structured data. If thorough masking is required, prefer regex rules and craft them to account for JSON syntax. * **False negatives / positives** – No model or pattern is perfect. Model accuracy may vary depending on model and input. -* **JSON malformation risk** – Both NER inference and regex rules can potentially create malformed JSON when anonymizing JSON data such as function responses. This can occur by replacing text across character boundaries, which may break JSON structure causing the whole request to fail. If this occurs, you may need to disable the problematic anonymization rule. +* **JSON malformation risk** – Both NER inference and regex rules can potentially create malformed JSON when anonymizing JSON data such as function responses. This can occur by replacing text across character boundaries, which may break JSON structure causing the whole request to fail. If this occurs, you may need to adjust your regex pattern or disable the NER rule. ## Known issues [obs-ai-known-issues] From ba1677950caf8ab420f9ff1d131397a9c88fd901 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Tue, 22 Jul 2025 16:47:05 -0400 Subject: [PATCH 11/24] remove sha-1 --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 11224b9c51..fef2cb2985 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -430,7 +430,7 @@ When an anonymization rule is enabled in the [AI Assistant settings](#obs-ai-set 1. Each enabled **rule** scans its target text and replaces any match with a deterministic token such as `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. - The prefix (`EMAIL`, `PER`, `LOC`, …) is the *entity class*; the suffix is a SHA-1 hash of the original value. + The prefix (`EMAIL`, `PER`, `LOC`, …) is the *entity class*; the suffix is a deterministic hash of the original value. 2. The fully masked conversation is sent to the LLM. 3. After the LLM responds, the original values are restored so the user sees de-anonymised text and any persisted conversation history stores the original content. From 7c31f8dac3dc86d0b1fbad0a49188e2cf416a62b Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Tue, 22 Jul 2025 16:58:23 -0400 Subject: [PATCH 12/24] update order of execution --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index fef2cb2985..a9f2a2926a 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -461,7 +461,7 @@ Because the masking is deterministic, the model can still maintain logical consi } ``` -Rules are evaluated **top-to-bottom**; the first rule that captures a given entity wins. Rules can be configured in the [AI Assistant Settings](#obs-ai-settings) page. +Rules are evaluated top-to-bottom with regex rules processed first, then NER rules; the first rule that captures a given entity wins. Rules can be configured in the [AI Assistant Settings](#obs-ai-settings) page. ### Requirements [obs-ai-anonymization-requirements] From b35ed48e0b4dde846fc93be9836a76a0f36ba05d Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Tue, 22 Jul 2025 17:01:02 -0400 Subject: [PATCH 13/24] remove target --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index a9f2a2926a..3b38e10560 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -428,7 +428,7 @@ When all rules are disabled (the default), data is forwarded unchanged. When an anonymization rule is enabled in the [AI Assistant settings](#obs-ai-settings), every message in the request (system prompt, message content, function call arguments/responses) is run through an *anonymization pipeline* before it leaves Kibana: -1. Each enabled **rule** scans its target text and replaces any match with a deterministic token such as +1. Each enabled **rule** scans the text and replaces any match with a deterministic token such as `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. The prefix (`EMAIL`, `PER`, `LOC`, …) is the *entity class*; the suffix is a deterministic hash of the original value. 2. The fully masked conversation is sent to the LLM. From c9cdec84a82d466c84c16e1c7a567d3586add645 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Tue, 22 Jul 2025 17:45:55 -0400 Subject: [PATCH 14/24] add example screenshot --- ...ability-obs-ai-assistant-anonymization.png | Bin 0 -> 121478 bytes .../observability-ai-assistant.md | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 solutions/images/observability-obs-ai-assistant-anonymization.png diff --git a/solutions/images/observability-obs-ai-assistant-anonymization.png b/solutions/images/observability-obs-ai-assistant-anonymization.png new file mode 100644 index 0000000000000000000000000000000000000000..77709e59bd853496f6c0e39a166588585b44ec90 GIT binary patch literal 121478 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

H(q0_-eQa#yAw*G8C0}DxPdA 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%0A%0wPfdgOTBA-k?1= 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 Q4g(N)y85}Sb4q9e0PzNv`~Uy| literal 0 HcmV?d00001 diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 3b38e10560..2fec6b067a 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -432,9 +432,23 @@ When an anonymization rule is enabled in the [AI Assistant settings](#obs-ai-set `EMAIL_ee4587b4ba681e38996a1b716facbf375786bff7`. The prefix (`EMAIL`, `PER`, `LOC`, …) is the *entity class*; the suffix is a deterministic hash of the original value. 2. The fully masked conversation is sent to the LLM. -3. After the LLM responds, the original values are restored so the user sees de-anonymised text and any persisted conversation history stores the original content. +3. After the LLM responds, the original values are restored so the user sees deanonymized text and any persisted conversation history stores the original content. Deanonymization information is stored with the conversation messages to enable the UI to highlight anonymized content. -Because the masking is deterministic, the model can still maintain logical consistency (“`EMAIL_x`” always refers to the same address) without ever seeing the real value. +The following example shows the anonymized content highlighted in the chat window using a regex rule to mask GKE hostnames: + +```jsonc +{ + "entityClass": "GKE_HOST", + "type": "RegExp", + "pattern": "(gke-[a-zA-Z0-9-]+-[a-f0-9]{8}-[a-zA-Z0-9]+)", + "enabled": true +} +``` + +:::{image} /solutions/images/observability-obs-ai-assistant-anonymization.png +:alt: AI Assistant chat showing hostname anonymization in action +:screenshot: +::: ### Rule types [obs-ai-anonymization-rules] From d7786c97f5b0d4d12a46d5238db3892cbff0c332 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:19:19 -0400 Subject: [PATCH 15/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 2fec6b067a..2543df1284 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -418,7 +418,10 @@ Enable this feature from the **Settings** tab in AI Assistant Settings by using For air-gapped environments, installing product documentation requires special configuration. See the [{{kib}} AI Assistants settings documentation](kibana://reference/configuration-reference/ai-assistant-settings.md) for detailed instructions. :::: -## Anonymization (technical preview) [obs-ai-anonymization] +## Anonymization [obs-ai-anonymization] +```{applies_to} +serverless: preview +stack: preview 9.1 Anonymization masks personally identifiable or otherwise sensitive information before chat messages leave Kibana for a third-party LLM. Enabled rules substitute deterministic tokens (for example `EMAIL_ee4587…`) so the model can keep context without ever seeing the real value. From f6dccab8a45ad4aa96e79f36b6f69f07f0193476 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:19:29 -0400 Subject: [PATCH 16/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 2543df1284..fbb8a83c98 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -456,7 +456,7 @@ The following example shows the anonymized content highlighted in the chat windo ### Rule types [obs-ai-anonymization-rules] -**RegExp** — Runs a JavaScript‑style regular expression. Use for fixed patterns such as e‑mail addresses, host names, etc. +**RegExp**: Runs a JavaScript‑style regular expression. Use for fixed patterns such as e‑mail addresses, host names, etc. ```jsonc { From a2ef0576d62f1912a291bfe75ca2372a7cc0ee12 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:19:39 -0400 Subject: [PATCH 17/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index fbb8a83c98..3fee356a13 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -467,7 +467,7 @@ The following example shows the anonymized content highlighted in the chat windo } ``` -**NER** — Runs a named‑entity‑recognition model on free text. +**NER**: Runs a named entity recognition (NER) model on free text. ```jsonc { From 450ab6bc5436f07cf85db08aa016f024cc6a1918 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:20:21 -0400 Subject: [PATCH 18/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 3fee356a13..98cb03b677 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -493,10 +493,12 @@ Results for other languages or models may vary. :::: ### Limitations [obs-ai-anonymization-limitations] -* **Performance (NER)** – Running a named entity recognition model can add latency depending on the request. To improve performance of the model, consider scaling up your ML nodes by adjusting deployment parameters: increase `number_of_allocations` for better throughput and `threads_per_allocation` for faster individual requests. For details, refer to the [start trained model deployment API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-start-trained-model-deployment). -* **Structured JSON** – The NER model we validated (`elastic/distilbert-base-uncased-finetuned-conll03-english`) is trained on natural English text and often misses entities inside JSON or other structured data. If thorough masking is required, prefer regex rules and craft them to account for JSON syntax. -* **False negatives / positives** – No model or pattern is perfect. Model accuracy may vary depending on model and input. -* **JSON malformation risk** – Both NER inference and regex rules can potentially create malformed JSON when anonymizing JSON data such as function responses. This can occur by replacing text across character boundaries, which may break JSON structure causing the whole request to fail. If this occurs, you may need to adjust your regex pattern or disable the NER rule. +Anonymization has the following limitations: + +* **Performance (NER)**: Running an NER model can add latency depending on the request. To improve performance of the model, consider scaling up your ML nodes by adjusting deployment parameters: increase `number_of_allocations` for better throughput and `threads_per_allocation` for faster individual requests. For details, refer to [start trained model deployment API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-start-trained-model-deployment). +* **Structured JSON**: The NER model we validated (`elastic/distilbert-base-uncased-finetuned-conll03-english`) is trained on natural English text and often misses entities inside JSON or other structured data. If thorough masking is required, prefer regex rules and craft them to account for JSON syntax. +* **False negatives / positives**: No model or pattern is perfect. Model accuracy may vary depending on model and input. +* **JSON malformation risk**: Both NER inference and regex rules can potentially create malformed JSON when anonymizing JSON data such as function responses. This can occur by replacing text across character boundaries, which may break JSON structure causing the whole request to fail. If this occurs, you may need to adjust your regex pattern or disable the NER rule. ## Known issues [obs-ai-known-issues] From 782ebc30b11a5054a78a8711f8917ac0a40eee0c Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:20:30 -0400 Subject: [PATCH 19/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 98cb03b677..50da83a118 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -437,7 +437,7 @@ When an anonymization rule is enabled in the [AI Assistant settings](#obs-ai-set 2. The fully masked conversation is sent to the LLM. 3. After the LLM responds, the original values are restored so the user sees deanonymized text and any persisted conversation history stores the original content. Deanonymization information is stored with the conversation messages to enable the UI to highlight anonymized content. -The following example shows the anonymized content highlighted in the chat window using a regex rule to mask GKE hostnames: +The following example shows the anonymized content highlighted in the chat window using a `RegExp` rule to mask GKE hostnames: ```jsonc { From 67bbde547bb5d9bf835182506169ba51c83c24f1 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:20:40 -0400 Subject: [PATCH 20/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 1 + 1 file changed, 1 insertion(+) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 50da83a118..146aa30ad5 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -481,6 +481,7 @@ The following example shows the anonymized content highlighted in the chat windo Rules are evaluated top-to-bottom with regex rules processed first, then NER rules; the first rule that captures a given entity wins. Rules can be configured in the [AI Assistant Settings](#obs-ai-settings) page. ### Requirements [obs-ai-anonymization-requirements] +Anonymization requires the following: * **Advanced Settings privilege** to edit the configuration and enable rules. Once saved, *all* users in the same **Space** benefit from the anonymization (the setting is [space-aware](../../deploy-manage/manage-spaces.md)). From 8f15826f0d669cae0ea6d3a252cf3bfb6b97bfa6 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:20:49 -0400 Subject: [PATCH 21/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 146aa30ad5..f0deb7634f 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -478,7 +478,7 @@ The following example shows the anonymized content highlighted in the chat windo } ``` -Rules are evaluated top-to-bottom with regex rules processed first, then NER rules; the first rule that captures a given entity wins. Rules can be configured in the [AI Assistant Settings](#obs-ai-settings) page. +Rules are evaluated top-to-bottom with `RegExp` rules processed first, then `NER` rules; the first rule that captures a given entity wins. Rules can be configured in the [AI Assistant Settings](#obs-ai-settings) page. ### Requirements [obs-ai-anonymization-requirements] Anonymization requires the following: From 6c9815bcca0a0b8f60cbb891d947d86752524b9a Mon Sep 17 00:00:00 2001 From: Sandra G Date: Wed, 23 Jul 2025 15:21:03 -0400 Subject: [PATCH 22/24] Update solutions/observability/observability-ai-assistant.md Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- solutions/observability/observability-ai-assistant.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index f0deb7634f..e1434af4cc 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -483,9 +483,9 @@ Rules are evaluated top-to-bottom with `RegExp` rules processed first, then `NER ### Requirements [obs-ai-anonymization-requirements] Anonymization requires the following: -* **Advanced Settings privilege** to edit the configuration and enable rules. +* **Advanced Settings privilege**: Necessary to edit the configuration and enable rules. Once saved, *all* users in the same **Space** benefit from the anonymization (the setting is [space-aware](../../deploy-manage/manage-spaces.md)). -* **ML privilege and resources** if you enable a rule of type NER, you must first [deploy and start a named-entity-recognition model](/explore-analyze/machine-learning/nlp/ml-nlp-ner-example.md#ex-ner-deploy) and have sufficient ML capacity. +* **ML privilege and resources**: If you enable a rule of type NER, you must first [deploy and start a named-entity-recognition model](/explore-analyze/machine-learning/nlp/ml-nlp-ner-example.md#ex-ner-deploy) and have sufficient ML capacity. ::::{important} The anonymization pipeline has only been validated with Elastic’s English model From 0e229be59982d8360f80ebf6ead8bca378417ddb Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Wed, 23 Jul 2025 15:38:40 -0400 Subject: [PATCH 23/24] fix email text --- solutions/observability/observability-ai-assistant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index e1434af4cc..1b0ffb4578 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -456,7 +456,7 @@ The following example shows the anonymized content highlighted in the chat windo ### Rule types [obs-ai-anonymization-rules] -**RegExp**: Runs a JavaScript‑style regular expression. Use for fixed patterns such as e‑mail addresses, host names, etc. +**RegExp**: Runs a JavaScript‑style regular expression. Use for fixed patterns such as email addresses, host names, etc. ```jsonc { From be80e8caff826a53483f4b9abc28be32f75bfd63 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Wed, 23 Jul 2025 15:43:09 -0400 Subject: [PATCH 24/24] move example --- .../observability-ai-assistant.md | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/solutions/observability/observability-ai-assistant.md b/solutions/observability/observability-ai-assistant.md index 1b0ffb4578..35871d71ff 100644 --- a/solutions/observability/observability-ai-assistant.md +++ b/solutions/observability/observability-ai-assistant.md @@ -422,6 +422,7 @@ For air-gapped environments, installing product documentation requires special c ```{applies_to} serverless: preview stack: preview 9.1 +``` Anonymization masks personally identifiable or otherwise sensitive information before chat messages leave Kibana for a third-party LLM. Enabled rules substitute deterministic tokens (for example `EMAIL_ee4587…`) so the model can keep context without ever seeing the real value. @@ -437,22 +438,6 @@ When an anonymization rule is enabled in the [AI Assistant settings](#obs-ai-set 2. The fully masked conversation is sent to the LLM. 3. After the LLM responds, the original values are restored so the user sees deanonymized text and any persisted conversation history stores the original content. Deanonymization information is stored with the conversation messages to enable the UI to highlight anonymized content. -The following example shows the anonymized content highlighted in the chat window using a `RegExp` rule to mask GKE hostnames: - -```jsonc -{ - "entityClass": "GKE_HOST", - "type": "RegExp", - "pattern": "(gke-[a-zA-Z0-9-]+-[a-f0-9]{8}-[a-zA-Z0-9]+)", - "enabled": true -} -``` - -:::{image} /solutions/images/observability-obs-ai-assistant-anonymization.png -:alt: AI Assistant chat showing hostname anonymization in action -:screenshot: -::: - ### Rule types [obs-ai-anonymization-rules] @@ -480,6 +465,24 @@ The following example shows the anonymized content highlighted in the chat windo Rules are evaluated top-to-bottom with `RegExp` rules processed first, then `NER` rules; the first rule that captures a given entity wins. Rules can be configured in the [AI Assistant Settings](#obs-ai-settings) page. +### Example + +The following example shows the anonymized content highlighted in the chat window using a `RegExp` rule to mask GKE hostnames: + +```jsonc +{ + "entityClass": "GKE_HOST", + "type": "RegExp", + "pattern": "(gke-[a-zA-Z0-9-]+-[a-f0-9]{8}-[a-zA-Z0-9]+)", + "enabled": true +} +``` + +:::{image} /solutions/images/observability-obs-ai-assistant-anonymization.png +:alt: AI Assistant chat showing hostname anonymization in action +:screenshot: +::: + ### Requirements [obs-ai-anonymization-requirements] Anonymization requires the following: