作者:Peter Titov
對于任何組織來說,個人身份信息 (Personally Identifiable information, PII) 合規(guī)性都是一個日益嚴峻的挑戰(zhàn)。 無論你是在電子商務(wù)、銀行、醫(yī)療保健還是其他數(shù)據(jù)敏感的領(lǐng)域,PII 都可能會在無意中被捕獲和存儲。 擁有結(jié)構(gòu)化日志,可以輕松快速識別、刪除和保護敏感數(shù)據(jù)字段; 但非結(jié)構(gòu)化消息又如何呢? 或者也許是呼叫中心轉(zhuǎn)錄?
Elasticsearch 憑借其在機器學(xué)習(xí)領(lǐng)域的長期經(jīng)驗,提供了各種引入自定義模型的選項,例如大語言模型 (LLM),并提供了自己的模型。 這些模型將有助于實施 PII 編輯。
如果你想了解有關(guān)自然語言處理、機器學(xué)習(xí)和 Elastic 的更多信息,請務(wù)必查看以下相關(guān)文章:
- Elasticsearch 中使用 PyTorch 進行現(xiàn)代自然語言處理簡介
- Elastic Redact 處理器文檔
- Elastic Learned Sparse Encoder 簡介:Elastic 用于語義搜索的 AI 模型
- 訪問 Elastic 中的機器學(xué)習(xí)模型
在本博客中,我們將向你展示如何利用 Elasticsearch 在機器學(xué)習(xí)中加載經(jīng)過訓(xùn)練的模型的能力以及 Elastic 攝取管道的靈活性來設(shè)置 PII 修訂。
具體來說,我們將逐步建立一個用于人員和位置識別的命名實體識別 (NER)模型,以及部署用于自定義數(shù)據(jù)識別和刪除的編輯處理器。 然后,所有這些都將與攝取管道相結(jié)合,我們可以在其中使用 Elastic 機器學(xué)習(xí)和數(shù)據(jù)轉(zhuǎn)換功能從數(shù)據(jù)中刪除敏感信息。
加載訓(xùn)練好的模型
在開始之前,我們必須將 NER 模型加載到 Elasticsearch 集群中。 這可以通過 Docker 和 Elastic Eland 客戶端輕松完成。 從命令行,讓我們通過 git 安裝 Eland 客戶端:
git clone https://github.com/elastic/eland.git
導(dǎo)航到最近下載的客戶端:
cd eland/
現(xiàn)在讓我們構(gòu)建客戶端:
docker build -t elastic/eland .
從這里,你就可以將經(jīng)過訓(xùn)練的模型部署到 Elastic 機器學(xué)習(xí)節(jié)點! 請務(wù)必替換你的用戶名、密碼、es-cluster-hostname 和 esport。
如果你使用 Elastic Cloud 或已簽名證書,只需運行以下命令:
docker run -it --rm --network host elastic/eland eland_import_hub_model --url https://<username>:<password>@<es-cluster-hostname>:<esport>/ --hub-model-id dslim/bert-base-NER --task-type ner --start
如果你使用自簽名證書,請運行以下命令:
docker run -it --rm --network host elastic/eland eland_import_hub_model --url https://<username>:<password>@<es-cluster-hostname>:<esport>/ --insecure --hub-model-id dslim/bert-base-NER --task-type ner --start
從這里,你將見證 Eland 客戶端從 HuggingFace 下載經(jīng)過訓(xùn)練的模型并自動將其部署到你的集群中!
針對我的情況,我更傾向于使用已經(jīng)發(fā)布好的 eland。詳細的安裝步驟,請參閱文章 “Elasticsearch:如何在 Elastic 中實現(xiàn)圖片相似度搜索”。我們可以使用如下的命令來進行:
eland_import_hub_model --url https://<user>:<password>@<hostname>:<port> \
--hub-model-id dslim/bert-base-NER \
--task-type ner \
--ca-certs <your certificate> \
--start
在我的電腦上,我使用:
通過機器學(xué)習(xí)概述 UI “Synchronize your jobs and trained models.” 單擊藍色超鏈接來同步新加載的訓(xùn)練模型。
就是這樣! 恭喜,你剛剛將第一個經(jīng)過訓(xùn)練的模型加載到 Elasticsearch 中!?
創(chuàng)建編輯處理器和攝取管道
在 DevTools 中,我們配置 redact 處理器和推理處理器,以利用我們剛剛加載的 Elastic 訓(xùn)練模型。 這將創(chuàng)建一個名為 redact 的攝取管道,然后我們可以使用它從我們希望的任何字段中刪除敏感數(shù)據(jù)。 在此示例中,我將重點關(guān)注 “message” 字段。 注意:在撰寫本文時,redact 處理器處于實驗階段,必須通過 DevTools 創(chuàng)建。
Redact 處理器簡介:Redact 處理器使用 Grok 規(guī)則引擎來模糊輸入文檔中與給定 Grok 模式匹配的文本。 該處理器可用于通過配置檢測電子郵件或 IP 地址等已知模式來隱藏個人識別信息 (PII)。 與 Grok 模式匹配的文本將替換為可配置字符串,例如匹配電子郵件地址的 <EMAIL>,或者如果愿意,只需將所有匹配項替換為文本 <REDACTED>。
我們在 Dev Tools 下打入如下的命令:
PUT _ingest/pipeline/redact
{
"processors": [
{
"set": {
"field": "redacted",
"value": "{{{message}}}"
}
},
{
"inference": {
"model_id": "dslim__bert-base-ner",
"field_map": {
"message": "text_field"
}
}
},
{
"script": {
"lang": "painless",
"source": """
String msg = ctx['message'];
for (item in ctx['ml']['inference']['entities']) {
msg = msg.replace(item['entity'], '<' + item['class_name'] + '>')
}
ctx['redacted']=msg
"""
}
},
{
"redact": {
"field": "redacted",
"patterns": [
"%{EMAILADDRESS:EMAIL}",
"%{IP:IP_ADDRESS}",
"%{CREDIT_CARD:CREDIT_CARD}",
"%{SSN:SSN}",
"%{PHONE:PHONE}"
],
"pattern_definitions": {
"CREDIT_CARD": """\d{4}[ -]\d{4}[ -]\d{4}[ -]\d{4}""",
"SSN": """\d{3}-\d{2}-\d{4}""",
"PHONE": """\d{3}-\d{3}-\d{4}"""
}
}
},
{
"remove": {
"field": [
"ml"
],
"ignore_missing": true,
"ignore_failure": true
}
}
],
"on_failure": [
{
"set": {
"field": "failure",
"value": "pii_script-redact"
}
}
]
}
好的,但是每個處理器的真正作用是什么? 讓我們在這里詳細介紹每個處理器:
- SET 處理器創(chuàng)建 redacted 字段,該字段從 message 字段復(fù)制過來,并稍后在管道中使用。
- INFERENCE 處理器調(diào)用我們加載的 NER 模型,用于消息字段來識別名稱、位置和組織。
- 然后,SCRIPT 處理器從消息字段中替換編輯字段內(nèi)檢測到的實體。
- 我們的 REDACT 處理器使用 Grok 模式來識別我們希望從編輯字段(從 message 字段復(fù)制而來)中刪除的任何自定義數(shù)據(jù)集。
- REMOVE 處理器從索引中刪除無關(guān)的 ml.* 字段; 請注意,一旦我們驗證數(shù)據(jù)被正確編輯,我們就會向該處理器添加 “message”。
- ON_FAILURE / SET 處理器會捕獲任何錯誤,以防萬一出現(xiàn)錯誤。
分割你的 PII
現(xiàn)在已經(jīng)配置了包含所有必要步驟的攝取管道,讓我們開始測試從文檔中刪除敏感數(shù)據(jù)的效果。 導(dǎo)航到 Stack Management,選擇 Ingest Pipelines 并搜索redact,然后單擊結(jié)果。
在這里,我們將通過添加一些文檔來測試我們的管道。 下面是一個示例,你可以復(fù)制并粘貼以確保一切正常工作。?
{"_source":{"message": "John Smith lives at 123 Main St. Highland Park, CO. His email address is jsmith123@email.com and his phone number is 412-189-9043. I found his social security number, it is 942-00-1243. Oh btw, his credit card is 1324-8374-0978-2819 and his gateway IP is 192.168.1.2"}}
只需按下 “Run the pipeline” 按鈕,您你看到以下輸出:
下一步是什么?
將此攝取管道添加到要建立索引的數(shù)據(jù)集并驗證其是否滿足預(yù)期后,你可以添加要刪除的消息字段,以便不會對 PII 數(shù)據(jù)建立索引。 只需更新你的 REMOVE 處理器以包含 message 字段并再次模擬即可僅看到已編輯的字段。
再次運行測試 pipeline。我們發(fā)現(xiàn) message 字段消失了。
結(jié)論
通過這種分步方法,你現(xiàn)在已準備好并能夠檢測和編輯整個索引中的任何敏感數(shù)據(jù)。
以下是我們所討論內(nèi)容的快速回顧:
- 將預(yù)訓(xùn)練的命名實體識別模型加載到 Elastic 集群中
- 配置 Redact 處理器和推理處理器,以在數(shù)據(jù)攝取期間使用經(jīng)過訓(xùn)練的模型
- 測試示例數(shù)據(jù)并修改攝取管道以安全刪除個人身份信息
準備好開始了嗎? 注冊 Elastic Cloud 并嘗試我上面概述的特性和功能,以從 OpenTelemetry 數(shù)據(jù)中獲得最大價值和可見性。
本文中描述的任何特性或功能的發(fā)布和時間安排均由 Elastic 自行決定。 當(dāng)前不可用的任何特性或功能可能無法按時交付或根本無法交付。
在這篇博文中,我們可能使用了第三方生成式人工智能工具,這些工具由其各自所有者擁有和運營。 Elastic 對第三方工具沒有任何控制權(quán),我們對其內(nèi)容、操作或使用不承擔(dān)任何責(zé)任,也不對你使用此類工具可能產(chǎn)生的任何損失或損害負責(zé)。 使用人工智能工具處理個人、敏感或機密信息時請務(wù)必謹慎。 你提交的任何數(shù)據(jù)都可能用于人工智能培訓(xùn)或其他目的。 無法保證你提供的信息將得到安全或保密。 在使用之前,你應(yīng)該熟悉任何生成式人工智能工具的隱私慣例和使用條款。文章來源:http://www.zghlxwxcb.cn/news/detail-545807.html
Elastic、Elasticsearch 和相關(guān)標志是 Elasticsearch N.V. 在美國和其他國家/地區(qū)的商標、徽標或注冊商標。 所有其他公司和產(chǎn)品名稱均為其各自所有者的商標、徽標或注冊商標。文章來源地址http://www.zghlxwxcb.cn/news/detail-545807.html
到了這里,關(guān)于Elasticsearch:如何通過 3 個簡單步驟從 Elastic 數(shù)據(jù)中刪除個人身份信息的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!