用於安全和隱私的可擴展數據分類

用於安全和隱私的可擴展數據分類

基於內容的資料分類是一個懸而未決的問題。 傳統的資料遺失防護 (DLP) 系統透過對相關資料進行指紋辨識並監控指紋辨識端點來解決此問題。 鑑於 Facebook 存在大量不斷變化的數據資源,這種方法不僅不可擴展,而且無法有效地確定數據的位置。 本文重點介紹一種端到端系統,旨在大規模檢測 Facebook 中的敏感語意類型並自動實施資料儲存和存取控制。

這裡描述的方法是我們的第一個端到端隱私系統,它試圖透過結合資料訊號、機器學習和傳統指紋技術來繪製和分類 Facebook 上的所有資料來解決這個問題。 所描述的系統在生產環境中運行,在處理數十個儲存庫中的大量資料資源時,在各種隱私類別中實現了 2+ 的平均 F0,9 分數。 介紹 Facebook ArXiv 論文的翻譯,該論文涉及基於機器學習的安全和隱私可擴展資料分類。

介紹

如今,組織以各種格式和位置收集和儲存大量資料 [1],然後這些資料在許多地方使用,有時會複製或快取多次,導致有價值且敏感的業務資訊分散在許多企業資料中商店。 當組織需要滿足某些法律或監管要求(例如遵守民事訴訟中的法規)時,有必要收集有關所需資料位置的資料。 當隱私權法規規定組織在與未經授權的實體共享個人資訊時必須封鎖所有社會安全號碼 (SSN) 時,自然的第一步是在組織的資料儲存中搜尋所有 SSN。 在這種情況下,資料分類就變得至關重要[1]。 此分類系統將允許組織自動執行隱私和安全性策略,例如啟用存取控制策略、資料保留。 Facebook 正在推出我們在 Facebook 建立的系統,該系統使用多個資料訊號、可擴展的系統架構和機器學習來發現敏感的語義資料類型。

資料發現和分類是尋找和標記資料的過程,以便在需要時快速有效地檢索相關資訊。 目前的流程本質上是手動的,包括檢查相關法律或法規,確定哪些類型的資訊應被視為敏感資訊以及不同的敏感等級是什麼,然後相應地建立類別和分類策略[1]。 然後,資料遺失防護 (DLP) 會對資料進行指紋識別並監視下游端點以取得指紋。 當處理具有 PB 級資料的重資產倉儲時,這種方法根本無法擴展。

我們的目標是建立一個數據分類系統,可以擴展到穩健和瞬態的用戶數據,而對數據類型或格式沒有任何額外的限制。 這是一個大膽的目標,自然也伴隨著挑戰。 給定的資料記錄可能有數千個字元長。

用於安全和隱私的可擴展數據分類
圖 1. 線上線下預測流程

因此,我們必須使用一組通用的特徵來有效地表示它,這些特徵稍後可以組合併輕鬆移動。 這些功能不僅應該提供準確的分類,還應該提供靈活性和可擴展性,以便將來輕鬆添加和發現新的資料類型。 其次,您需要處理大型離線表。 持久性資料可以儲存在數 PB 大小的表中。 這可能會導致掃描速度變慢。 第三,我們必須堅持對易失性資料進行嚴格的SLA分類。 這迫使系統變得有效率、快速和準確。 最後,我們必須為易失性資料提供低延遲資料分類,以執行即時分類以及網路使用案例。

本文描述了我們如何應對上述挑戰,並提出了一個快速且可擴展的分類系統,該系統根據一組通用特徵對所有類型、格式和來源的資料元素進行分類。 我們擴展了系統架構並創建了自訂機器學習模型來快速分類離線和線上資料。 本文的架構如下:第 2 部分介紹了系統的整體設計。 第 3 節討論機器學習系統的各個部分。 第 4 節和第 5 節重點介紹了相關工作並概述了未來的工作方向。

架構

為了應對持久性和 Facebook 規模的線上數據的挑戰,分類系統有兩個獨立的串流,我們將詳細討論。

永續數據

最初,系統必須了解 Facebook 的許多資訊資產。 對於每個儲存庫,都會收集一些基本資訊,例如包含該資料的資料中心、包含該資料的系統以及位於特定資料儲存庫中的資產。 這將建立一個元資料目錄,使系統能夠有效地檢索數據,而不會導致其他工程師使用的客戶端和資源過載。

此元資料目錄為所有掃描資產提供了權威來源,並允許您追蹤各種資產的狀態。 使用此信息,根據從系統收集的數據和內部信息(例如上次成功掃描資產的時間和創建資產的時間,以及該資產過去的內存和 CPU 要求)來建立調度優先級(如果之前已被掃描過。 然後,對於每個資料資源(當資源可用時),呼叫作業來實際掃描資源。

每個作業都是一個編譯的二進位文件,對每個資產可用的最新資料執行伯努利採樣。 資產被分成單獨的列,其中每列的分類結果都是獨立處理的。 此外,系統也會掃描列中的任何飽和資料。 JSON、陣列、編碼結構、URL、base 64 序列化資料等都會被掃描。 這可以顯著增加掃描執行時間,因為單一表可以在 blob 中包含數千個巢狀列 json.

對於資料資產中選擇的每一行,分類系統從內容中提取浮動對象和文字對象,並將每個對象關聯回從中獲取該對象的列。 特徵提取步驟的輸出是資料資產中找到的每列的所有特徵的對應。

標誌有什麼用?

屬性的概念是關鍵。 我們可以傳遞直接從每個資料資源中提取的原始字串樣本,而不是浮點和文字特徵。 此外,機器學習模型可以直接在每個樣本上進行訓練,而不是只嘗試近似樣本的數百個特徵計算。 有幾個原因:

  1. 隱私第一:最重要的是,特徵的概念允許我們只在記憶體中儲存我們檢索到的那些模式。 這確保了我們出於單一目的儲存樣本,而絕不會透過我們自己的努力來記錄它們。 這對於易失性資料尤其重要,因為服務在提供預測之前必須維護某種分類狀態。
  2. 記憶體:某些樣本可能有數千個字元長。 儲存此類資料並將其傳輸到系統的某些部分會不必要地消耗許多額外的位元組。 鑑於存在許多具有數千列的數據資源,這兩個因素可以隨著時間的推移而結合。
  3. 特徵聚合:特徵透過一組特徵清楚地表示每次掃描的結果,允許系統以方便的方式組合相同資料資源的先前掃描的結果。 這對於聚合多次運行中單一資料資源的掃描結果非常有用。

然後,這些特徵被發送到預測服務,我們使用基於規則的分類和機器學習來預測每列的資料標籤。 該服務依賴規則分類器和機器學習,並選擇從每個預測對象給出的最佳預測。

規則分類器是手動啟發式方法,它們使用計算和係數將物件標準化為0 到100 的範圍。一旦為與該資料關聯的每種資料類型和列名稱產生了這樣的初始分數,它就不會包含在任何“禁令”中。清單”,規則分類器選擇所有資料類型中最高的歸一化分數。

由於分類的複雜性,僅依靠手動啟發式方法會導致分類精度較低,尤其是對於非結構化資料。 為此,我們開發了一個機器學習系統來處理非結構化資料(例如使用者內容和地址)的分類。 機器學習使得開始擺脫手動啟發式方法並應用額外的資料訊號(例如列名稱、資料來源)成為可能,從而顯著提高檢測準確性。 稍後我們將深入探討我們的機器學習架構。

預測服務儲存每列的結果以及有關掃描時間和狀態的元資料。 依賴此數據的任何消費者和下游流程都可以從每日發布的數據集中讀取它。 該集聚合了所有這些掃描作業或即時資料目錄 API 的結果。 發布的預測是自動執行隱私和安全策略的基礎。

最後,在預測服務寫入所有資料並儲存所有預測後,我們的資料目錄 API 可以即時返回資源的所有資料類型預測。 系統每天都會發布一個資料集,其中包含每項資產的所有最新預測。

數據不穩定

雖然上述流程是為持久性資產設計的,但非持久性流量也被視為組織資料的一部分,而且可能很重要。 因此,系統提供了一個線上 API,用於針對任何間歇性流量產生即時分類預測。 即時預測系統廣泛應用於將出站流量、入站流量分類為機器學習模型和廣告主資料。

這裡 API 有兩個主要參數:分組鍵和要預測的原始資料。 該服務執行與上述相同的物件檢索,並針對相同的按鍵將物件分組在一起。 持久性快取也支援這些功能以進行故障恢復。 對於每個分組鍵,該服務可確保在呼叫預測服務之前已看到足夠的樣本,並遵循上述過程。

優化

為了掃描某些存儲,我們使用庫和技術來優化從熱存儲 [2] 的讀取,並確保其他用戶在訪問相同存儲時不會造成中斷。

對於非常大的表(50+ PB),儘管進行了所有優化和記憶體效率,系統仍會在記憶體耗盡之前掃描和計算所有內容。 畢竟,掃描完全在記憶體中計算,並且在掃描期間不會儲存。 如果大型表包含數千列且資料塊非結構化,則在對整個表執行預測時,作業可能會因記憶體資源不足而失敗。 這將導致覆蓋範圍減少。 為了解決這個問題,我們優化了系統,使用掃描速度來衡量系統處理當前工作負載的能力。 我們使用速度作為預測機制來查看記憶體問題並預測計算特徵圖。 同時,我們使用的數據量比平常少。

數據訊號

分類系統的好壞取決於資料訊號的好壞。 在這裡,我們將查看分類系統使用的所有訊號。

  • 基於內容:當然,第一個也是最重要的訊號是內容。 對我們掃描的每個資料資產進行伯努利採樣,並根據資料內容提取特徵。 很多跡像都來自於內容。 任意數量的浮動物件都是可能的,它們表示特定樣本類型被看到的次數的計算。 例如,我們可能有樣本中看到的電子郵件數量的跡象,或樣本中看到的表情符號的數量。 這些特徵計算可以在不同的掃描中進行標準化和聚合。
  • 資料來源:當父表的內容發生變更時可以提供幫助的重要訊號。 一個常見的例子是哈希資料。 當子表中的資料被哈希時,它通常來自父表,並且在父表中保持清晰。 當某些類型的資料無法清楚讀取或從上游表轉換而來時,沿襲資料有助於對某些類型的資料進行分類。
  • 註:另一種有助於識別非結構化資料的高品質訊號。 事實上,註釋和來源資料可以協同工作,在不同的資料資產之間傳播屬性。 註釋有助於識別非結構化資料的來源,而沿襲資料可以幫助追蹤該資料在整個儲存庫中的流動。
  • 資料注入是一種將特殊的、不可讀的字元有意引入已知資料類型的已知來源中的技術。 然後,每當我們掃描具有相同的不可讀取字元序列的內容時,我們就可以推斷該內容來自該已知的資料類型。 這是另一個類似於註釋的定性資料訊號。 除了基於內容的檢測有助於發現輸入的資料。

測量指標

一個重要的組成部分是衡量指標的嚴格方法。 分類改進迭代的主要指標是每個標籤的精確率和召回率,其中F2分數是最重要的。

為了計算這些指標,需要一種獨立的方法來標記資料資產,該方法獨立於系統本身,但可用於與其直接比較。 下面我們描述如何從 Facebook 收集真實資料並用它來訓練我們的分類系統。

收集可靠數據

我們將來自下面列出的每個來源的可靠數據累積到自己的表格中。 每個表負責聚合來自該特定來源的最新觀察值。 每個來源都有資料品質檢查,以確保每個來源的觀測值都是高品質的並包含最新的資料類型標籤。

  • 日誌平台配置:Hive 表中的某些欄位填入特定類型的資料。 這些數據的使用和傳播是可靠的事實來源。
  • 手動標記:維護系統的開發人員以及外部標記人員接受過標記色譜柱的訓練。 這通常適用於倉庫中的所有類型的數據,並且可以成為某些非結構化資料(例如訊息資料或使用者內容)的主要事實來源。
  • 父表中的列可以被標記或註釋為包含某些數據,並且我們可以在子表中追蹤該數據。
  • 取得執行緒:Facebook 中的執行緒攜帶特定類型的資料。 使用我們的掃描器作為服務架構,我們可以對具有已知資料類型的流進行採樣並透過系統發送它們。 系統承諾不會儲存這些資料。
  • 範例表:已知包含整個資料集的大型配置單元表也可以用作訓練資料並作為服務通過掃描器。 這對於具有各種資料類型的表來說非常有用,因此隨機對列進行採樣相當於對該資料類型的整個集合進行採樣。
  • 合成資料:我們甚至可以使用動態生成資料的函式庫。 這對於簡單的公共資料類型(例如地址或 GPS)非常有效。
  • 資料管理員:隱私權計畫通常使用資料管理員手動將策略指派給資料片段。 這是高度準確的事實來源。

我們將所有主要事實來源與所有資料合併到一個語料庫中。 有效性的最大挑戰是確保它能夠代表資料儲存庫。 否則,分類引擎可能會過度訓練。 為了解決這個問題,利用上述所有資源來確保訓練模型或計算指標時的平衡。 此外,人類標記者統一對儲存庫中的不同欄位進行採樣,並相應地標記數據,以便真實數據的收集保持公正。

持續集成

為了確保快速迭代和改進,始終即時測量系統性能非常重要。 我們可以衡量當今系統的每項分類改進,因此我們可以根據數據從戰術上指導未來的改進。 這裡我們來看看系統如何完成由有效數據提供的回饋循環。

當調度系統遇到具有可信任來源標籤的資產時,我們會調度兩個任務。 第一個使用我們的生產掃描器以及我們的生產能力。 第二個任務使用具有最新功能的最新建置掃描器。 每個任務將其輸出寫入自己的表,標記版本以及分類結果。

這就是我們即時比較候選版本和生產模型的分類結果的方法。

當資料集比較 RC 和 PROD 特徵時,會記錄預測服務的 ML 分類引擎的許多變體。 最近建造的機器學習模型、目前生產中的模型以及任何實驗模型。 同樣的方法允許我們「切片」模型的不同版本(與我們的規則分類器無關)並即時比較指標。 這樣可以輕鬆確定機器學習實驗何時準備好投入生產。

每天晚上,當天計算的 RC 特徵都會傳送到 ML 訓練管道,其中模型會根據最新的 RC 特徵進行訓練,並根據地面實況資料集評估其效能。

每天早上,模型完成訓練並自動發佈為實驗模型。 它會自動包含在實驗列表中。

一些結果

超過 100 種不同類型的資料被高精度標記。 結構良好的類型(例如電子郵件和電話號碼)的 f2 分數大於 0,95。 用戶生成的內容和名稱等免費資料類型的表現也非常好,F2 分數大於 0,85。

所有儲存庫中每天都會對大量持久性和易失性資料的單獨欄位進行分類。 每天在 500 多個資料倉儲中掃描超過 10 TB 的資料。 大多數這些儲存庫的覆蓋率超過 98%。

隨著時間的推移,分類變得非常高效,持久離線流中的分類作業從掃描資產到計算每列的預測平均需要 35 秒。

用於安全和隱私的可擴展數據分類
米。 2. 描述持續整合流程的圖表,以了解如何產生 RC 物件並將其傳送至模型。

用於安全和隱私的可擴展數據分類
圖 3. 機器學習組件的高階圖。

機器學習系統組件

在上一節中,我們深入研究了整個系統架構,重點介紹了規模、最佳化以及離線和線上資料流。 在本節中,我們將研究預測服務並描述為預測服務提供支援的機器學習系統。

對於 100 多種資料類型和一些非結構化內容(例如訊息資料和使用者內容),使用純手動啟發式方法可以提高子參數分類的準確性,尤其是對於非結構化資料。 為此,我們也開發了機器學習系統來處理非結構化資料的複雜性。 使用機器學習可以讓您開始擺脫手動啟發式方法,並使用特徵和附加資料訊號(例如列名稱、資料來源)來提高準確性。

所實現的模型分別研究密集和稀疏物件上的向量表示[3]。 然後將它們組合起來形成一個向量,該向量經過一系列批量歸一化 [4] 和非線性步驟以產生最終結果。 最終結果是每個標籤的 [0-1] 之間的浮點數,指示範例屬於該敏感度類型的機率。 使用 PyTorch 作為模型使我們能夠更快地行動,使團隊外部的開發人員能夠快速進行和測試變更。

在設計架構時,由於稀疏(例如文字)和密集(例如數位)物件固有的差異,分別對其進行建模非常重要。 對於最終的架構,執行參數掃描以找到學習率、批量大小和其他超參數的最佳值也很重要。 優化器的選擇也是一個重要的超參數。 我們發現一個流行的優化器 亞當通常會導致過度擬合,而具有以下特徵的模型 SGD 更穩定。 我們必須將其他細微差別直接包含在模型中。 例如,靜態規則可確保模型在特徵具有特定值時做出確定性預測。 這些靜態規則由我們的客戶定義。 我們發現,將它們直接合併到模型中會產生更獨立和穩健的架構,而不是實施後處理步驟來處理這些特殊的邊緣情況。 另請注意,這些規則在訓練期間被禁用,以免干擾梯度下降訓練過程。

問題

其中一個挑戰是收集高品質、可靠的數據。 此模型需要每個類別的置信度,以便它可以學習物件和標籤之間的關聯。 在上一節中,我們討論了系統測量和模型訓練的資料收集方法。 分析表明,信用卡和銀行帳號等資料類別在我們的倉庫中並不常見。 這使得收集大量可靠數據來訓練模型變得困難。 為了解決這個問題,我們開發了獲取這些類別的合成地面實況資料的流程。 我們為敏感類型產生此類數據,包括 SSN, 信用卡號碼 и IBAN- 模型之前無法預測的數字。 這種方法允許處理敏感資料類型,而不會產生與隱藏實際敏感資料相關的隱私風險。

除了基本事實問題之外,我們正在研究一些開放的架構問題,例如 改變隔離 и 提早停止。 更改隔離對於確保當對網路的不同部分進行不同更改時,影響被隔離到特定類別並且不會對整體預測性能產生廣泛影響非常重要。 改進早期停止標準也很重要,這樣我們就可以在所有類別的穩定點停止訓練過程,而不是在某些類別過度訓練而其他類別不過度訓練的點停止。

特徵重要性

當一個新特徵被引入模型時,我們想知道它對模型的整體影響。 我們還希望確保預測是人類可解釋的,以便我們能夠準確地理解每種類型的資料使用了哪些特徵。 為此,我們開發並推出了 按班級 PyTorch 模型的特徵的重要性。 請注意,這與通常支援的整體特徵重要性不同,因為它沒有告訴我們哪些特徵對於特定類別很重要。 我們透過計算重新排列物件後預測誤差的增加來衡量物件的重要性。 當交換值增加模型誤差時,某個特徵是“重要的”,因為在這種情況下,模型依賴該特徵來進行預測。 當改組其值而使模型誤差保持不變時,某個特徵是“不重要的”,因為在這種情況下模型會忽略它[5]。

每個類別的特徵的重要性使我們能夠使模型具有可解釋性,以便我們可以看到模型在預測標籤時正在考慮什麼。 例如,當我們分析 地址,那麼我們保證與地址相關的符號,例如 位址行數,在每個類別的特徵重要性表中排名靠前,因此我們人類的直覺與模型所學到的內容非常匹配。

評估

定義單一的成功指標非常重要。 我們選擇了 F2 - 召回率和準確率之間的平衡(召回率偏差稍大)。 對於隱私用例來說,召回率比準確性更重要,因為對於團隊來說,不要錯過任何敏感資料(同時確保合理的準確性)至關重要。 我們模型的實際 F2 性能評估超出了本文的範圍。 然而,透過仔細調整,我們可以為最重要的敏感類別獲得高 (0,9+) F2 分數。

相關工作

有許多演算法可以使用各種方法對非結構化文件進行自動分類,例如模式匹配、文件相似性搜尋和各種機器學習方法(貝葉斯、決策樹、k-近鄰等)[6]。 其中任何一個都可以用作分類的一部分。 然而,問題是可擴展性。 本文中的分類方法偏向靈活性和效能。 這使我們能夠在未來支援新的類別並保持較低的延遲。

在數據指紋辨識方面也有很多工作。 例如,[7]中的作者描述了一種專注於捕捉敏感資料外洩問題的解決方案。 基本假設是可以對資料進行指紋識別,以將其與一組已知的敏感資料進行匹配。 [8]中的作者描述了類似的隱私洩露問題,但他們的解決方案基於特定的Android架構,並且僅當用戶操作導致個人資訊共享或底層應用程式洩露用戶資料時才進行分類。 這裡的情況有些不同,因為使用者資料也可能是高度非結構化的。 因此,我們需要一種比指紋辨識更複雜的技術。

最後,為了因應某些類型敏感資料的資料短缺問題,我們引入了合成資料。 有大量關於資料增強的文獻,例如,[9] 中的作者探討了訓練期間噪音注入的作用,並在監督學習中觀察到了積極的結果。 我們的隱私保護方法有所不同,因為引入噪音資料可能會適得其反,因此我們專注於高品質的合成資料。

結論

在本文中,我們提出了一個可以對資料進行分類的系統。 這使我們能夠創建系統來執行隱私和安全政策。 我們已經證明,可擴展的基礎設施、持續整合、機器學習和高品質的資料保證在我們許多隱私計劃的成功中發揮關鍵作用。

未來的工作方向很多。 這可能包括為未圖示的資料(文件)提供支持,不僅對資料類型而且對敏感度等級進行分類,以及在訓練期間透過產生準確的綜合範例來使用自我監督學習。 反過來,這將幫助模型最大程度地減少損失。 未來的工作還可以集中在調查工作流程上,我們不僅限於檢測,還提供各種侵犯隱私行為的根本原因分析。 這將有助於敏感度分析(即資料類型的隱私敏感度是高(例如用戶 IP)還是低(例如 Facebook 內部 IP))。

參考書目

  1. 大衛·本·大衛、塔瑪·多馬尼和阿比蓋爾·塔雷姆。 使用語意網路技術的企業資料分類。 編輯 Peter F.Ï Patel-Schneider、Yue Pan、Pascal Hitzler、Peter Mika、Lei Zhang、Jeff Z. Pan、Ian Horrocks 和 Birte Glimm, 語意網 – ISWC 2010,第 66-81 頁,柏林,海德堡,2010 年。施普林格柏林海德堡。
  2. Subramanian Muralidhar、Wyatt Lloyd、Sabyasachi Roy、Cory Hill、Ernest Lin、Weiwen Liu、Satadru Pan、Shiva Shankar、Viswanath Sivakumar、Linpeng Tang 和 Sanjeev Kumar。 f4:Facebook 的溫暖 BLOB 儲存系統。 在 第 11 屆 USENIX 作業系統設計與實作研討會 (OSDI 14),第 383–398 頁,科羅拉多州布魯姆菲爾德,2014 年 XNUMX 月。USENIX 協會。
  3. 托馬斯·米科洛夫、伊利亞·蘇茨克韋爾、陳凱、格雷格·S·科拉多和傑夫·迪恩。 單字和片語及其組合的分佈式表示。 在 C. J. C. Burges、L. Bottou、M. Welling、Z. Ghahramani 和 K. Q. Weinberger 編輯中, 神經信息處理系統的進展 26,第 3111-3119 頁。 Curran Associates, Inc.,2013。
  4. 謝爾蓋·約夫和克里斯蒂安·塞格迪。 批量歸一化:透過減少內部協變量偏移來加速深度網路訓練。 編輯弗朗西斯·巴赫和大衛·布萊伊: 第 32 屆國際機器學習會議論文集,第 37 卷 機器學習研究論文集,第 448-456 頁,法國裡爾,07 年 09 月 2015-XNUMX 日。PMLR。
  5. 裡奧·布雷曼. 隨機森林。 馬赫 學習。,45(1):5–32,2001 年 XNUMX 月。
  6. 泰爾·努普。 資料探勘中的分類技術綜述。
  7. X. Shu、D. Yao 和 E. Bertino。 敏感資料暴露的隱私保護檢測。 IEEE信息取證與安全事務, 10(5):1092–1103, 2015.
  8. 楊哲民、楊民、張遠、谷國飛、寧鵬和王小陽。 實習生:分析Android中的敏感資料傳輸以進行隱私外洩偵測。 第 1043–1054 頁,11 年 2013 月。
  9. Qizhe Xie、Zihang Dai、Eduard H. Hovy、Minh-Thang Luong 和 Quoc V. Le。 無監督的數據增強。

用於安全和隱私的可擴展數據分類
了解如何透過參加 SkillFactory 線上課程從頭開始獲得受歡迎的職業或在技能和薪資方面升級的詳細資訊:

更多課程

來源: www.habr.com

添加評論