天天看點

跨系統跨資料庫資料脫敏工具

作者:效能IT哥

作者:貝殼找房DBA團隊,負責鍊家、貝殼找房的資料庫服務治理及運維,包括MySQL、Redis、Kafka、RocketMQ、TiDB等産品。為保證線上服務高效、安全、穩定運作,面向研發同學提供一站式的資料庫操作平台,建設了滿足99.99%标準的高可用自動化切換平台,并結合DBA豐富的運維經驗和機器學習算法實作了資料庫故障的自助診斷。

引言

2021 年 9 月 1 日起《中華人民共和國資料安全法》(以下簡稱《安全法》)正式施行,成為了規範資料處理活動,保障資料安全,促進資料開發利用,保護個人、組織的合法權益,維護國家主權、安全和發展利益的法律依據。資料脫敏技術則是對敏感資料按需進行漂白、變形、遮蓋等處理,避免敏感資訊洩露。資料脫敏工具使用、開發、平台建設是每家網際網路公司保護使用者隐私應盡的義務。

貝殼在使用者隐私資料保護上也做了很多努力,嚴格遵守國家法律要求,本文将分享一款由貝殼 DBA 團隊開發的資料脫敏工具,即 d18n,它是 data-desensitization 的 Numeronym 縮寫,即使用 18 代替中間的 18 個字母。下面将拆解 d18n 的技術實作,讓大家了解資料安全背後的故事。

一、資料脫敏場景

跨系統跨資料庫資料脫敏工具

從上圖可見敏感資訊脫敏其實已經融入到生活的方方面面,我們看的電影,讀的小說,聽的新聞都會用到資訊脫敏。以下列舉三個網際網路公司常見的三種資料脫敏場景。

場景一:測試開發

線上資料庫服務做了嚴格的權限控制和資源隔離,非授權使用者無法擷取任何資料。測試環境為了盡量仿真生産環境有時會提出使用擷取線上資料樣本的需求,但測試環境的權限控制相對較寬松,是以不可将未脫敏的資料直接導入測試環境。

場景二:資料分析

随着大資料應用在網際網路的不斷落地,大資料分析能夠輔助公司進行産品決策,準确分析使用者行為。直接使用生産資料進行資料分析,未經管控和資料脫敏,敏感資料洩露的風險的幾率将大大增加。

場景三:資料共享

政府與企業,企業與企業,企業内應用與應用之間都有資料交換和資訊共享的需求。針對不同級别的資料共享需求,要制定不同的資料脫敏方案。在保護好公司核心資料資産的情況下,為政企合作、企業合作、服務疊代提供資料安全保障。

二、跨平台資料脫敏

跨系統跨資料庫資料脫敏工具

d18n 工具使用 Go 語言開發,在設計選型時它特意避開了部分依賴 CGO 的資料庫驅動,是以它是完全跨平台的,可以直接在 Windows、Linux、Mac 系統中使用,即使是最新的 Apple Silicon MacBook Pro 也可功能無損支援。

由于 d18n 開發時 Go 1.16 已經支援了 embed 功能,它原生支援将靜态資源與二進制程式一起打包。在資料脫敏和敏感資訊識别時需要使用的語料包已經被 d18n 打包封裝好了,是以無需再下載下傳任何其他靜态資源檔案,真正做到開箱即用。這一點對于目前流行的容器化環境來說也是特别友好的。

d18n 的跨平台不僅展現在作業系統級别的跨平台上,它對資料庫平台的支援也是多樣化的。除了網際網路公司最常使用的 MySQL 資料庫,d18n 還支援 Oracle、SQL Server、PostgreSQL 等等多種關系型資料庫。可以說,隻要是使用 SQL 語言的資料庫,隻要它有 Pure Go 驅動,d18n 都能支援。很多同學甚至直接把 d18n 當作一個簡單的資料庫指令行查詢工具使用,帶來跨平台一緻性的使用者體驗。

d18n 支援導出、導入的檔案類型相對也比較豐富,有絕大多數人都熟悉的 Excel, TXT,也有對應用程式友好的 CSV、JSON、SQL、HTML 等檔案格式。無論是交給人用肉眼閱讀,還是交給程式做自動化處理,d18n 都應付得來。

三、敏感資料識别

前面講了很關于多跨平台的友好性,一款資料脫敏工具使用者真正看重的是它對敏感資料的識别和處理能力上,這一節開始将進入硬核知識介紹。

關系型資料庫敏感資料識别常用的算法有“關鍵字比對”和“正則比對”。d18n 當然也不能免于俗套,這兩項技術也是妥妥的支援。更有誠意的是,d18n 還一并提供了敏感資訊識别使用的通用規則庫。對于想“偷懶”的同學,它能讓你開箱即用;對于“勤奮”的同學,你也可以參照模闆進行深度自定義且無需修改源碼。

跨系統跨資料庫資料脫敏工具

在傳統技術基礎之上,為了進一步提高敏感資料發現能力,d18n 還引入了自然語言處理包 (gse),它将語料庫轉化成 Trier 資料結構,通過有窮自動機算法 (DFA) 來比對經過自動分詞的資料。

跨系統跨資料庫資料脫敏工具

自然語言處理識别敏感資料的核心難點是如何生成精準有效的語料庫,一個有效語料庫通常是針對真實的資料集進行機器學習訓練得到的。d18n 中提供的關于位址、姓名的語料庫模闆并非真實資料訓練得到僅供使用者參考。下面是 d18n 中應用自然語言處理來識别敏感資訊的測試用例。

跨系統跨資料庫資料脫敏工具

敏感資訊存儲主動申報已經深深的融入到了貝殼的各項流程制度中,機器識别做為一個有效的補充可以幫助業務查缺補漏,及時發現可能存在的隐患。

四、資料脫敏導出

有了全平台的敏感資料資訊,接下來就是如何做好資料脫敏工作,綜合整理法律合規以及來自不同業務方的需求,主要有以下幾點。

跨系統跨資料庫資料脫敏工具

為了滿足上面五點需求,本文從六個次元出發(即:無效化、随機化、資料替換、加密替換、差分隐私、偏移取整)分别介紹資料脫敏算法實作。

首先是“無效化”,在處理待脫敏的資料時,通過對字段資料值進行截斷、加密、隐藏等方式讓敏感資料脫敏,使其不再具有利用價值。一般采用特殊字元(*等)代替真值。以下是 d18n 中 smoke 和 phone 兩個算法的測試用例展示。

跨系統跨資料庫資料脫敏工具
跨系統跨資料庫資料脫敏工具

其次是“随機化”,随機值替換,字母變為随機字母,數字變為随機數字,這種方案可以在一定程度上保留原有資料的格式,且不可打破資料的唯一性限制。d18n 中内置了常用漢字的語料庫,中文預設也可以做随機化替換。

跨系統跨資料庫資料脫敏工具

對于 ASCII 碼表中的字元,d18n 還內建了先進的 FPE(Format Preserving Encryption) 算法,進一步保證了資料的“不可逆”性。

跨系統跨資料庫資料脫敏工具

除了單個字元的随機化,d18n 還支援單詞級别的随機化替換,可保持語句長度及标點符号不變。根據使用者生成的語料庫不同,支援不同語言的單詞替換。下面是一個英文替換的例子。

跨系統跨資料庫資料脫敏工具

第三是“資料替換”,資料替換與“無效化”方式比較相似,不同的是這裡不以特殊字元進行遮擋,而是用一個設定的虛拟值替換真值。比如說将 IP 統一設定成 “127.0.0.1”。

跨系統跨資料庫資料脫敏工具
跨系統跨資料庫資料脫敏工具

第四是“加密替換”,d18n 支援對稱加密算法和非對稱加密算法。資料加密是一種特殊的可逆脫敏方法,通過密鑰和算法對敏感資料進行加密,已知密鑰和算法可解密恢複原始資料,要注意密鑰的安全性。雖然 d18n 也支援 RSA,ECC 等資料加密算法,但 d18n 不會生成密鑰檔案、也不保留加密密鑰,更不提供解密支援。

跨系統跨資料庫資料脫敏工具

第五是“差分隐私”,它是密碼學中的詞彙,旨在提供一種當從統計資料庫查詢時,最大化資料查詢的準确性,同時最大限度減少識别其記錄的機會。d18n 使用了 Google 開源的 github.com/google/differential-privacy 包實作了這部分能力。

跨系統跨資料庫資料脫敏工具

第六是“偏移取整”,這種方式通過資料移位去除隐私資訊,偏移取整在保持了資料的安全性的同時保證了範圍的大緻真實性,比之前幾種方案更接近真實資料。下面兩個例子分别是對數值類型取整和對時間類型取整。

跨系統跨資料庫資料脫敏工具
跨系統跨資料庫資料脫敏工具

五、資料脫敏導入

至此僅實作了把資料庫中的資料脫敏後共享給使用方的需求,如果有同學給了一份未脫敏的資料檔案讓你導入到測試環境呢?d18n 也支援對 Excel、TXT、CSV、HTML、JSON 等格式的檔案進行二次脫敏生成 SQL,可生成 SQL 檔案,也可直接連接配接資料庫導入至資料庫中檢視。

跨系統跨資料庫資料脫敏工具

總結

d18n 中引入了很多優秀的第三方開源 Library,它雖然是一個指令行工具,但作者們更想把它作為一個 Library 來開發,這樣可以更好的回饋給開源社群,也給 d18n 帶來更多的可能。指令行工具提供的是靜态資料脫敏能力,可以用于日常學習、測試。基于 d18n 這個 Library 相信你也不難實作适用各家公司自己的動态資料脫敏平台。保護使用者隐私資料每一個人都責無旁貸,期待社群能夠湧現更多優秀的産品共同提高資料安全水準。

>>>>

開源位址

【項目文檔】https://github.com/LianjiaTech/d18n/blob/main/doc/toc.md

【Github位址】https://github.com/LianjiaTech/d18n

【Issue 回報】https://github.com/LianjiaTech/d18n/issues

繼續閱讀