天天看點

openGauss動态資料脫敏功能介紹

作者:鐘南山風

資料脫敏背景及介紹

1.1資料庫脫敏背景

伴随着網際網路大資料、雲服務等新興技術的飛速發展和普及,業務上雲、資料集中存儲、資料共享等資料應用方式已成為未來發展的趨勢,雲資料庫和雲計算服務具有易部署、低成本、高效率、高可靠的優勢,使得越來越多的消費者更傾向于将個人資料存儲在雲上而非個人移動硬碟中。實際上,由于資料使用場景愈加複雜,個人隐私資料洩露、被竊取的風險越來越高,僅近年來就發生數起重大資料庫資訊洩露事件,這對資料庫安全提出了更高的要求。

資料脫敏,顧名思義就是将敏感資料通過變形、屏蔽等方式處理,其目的是保護隐私資料資訊,防止資料洩露和惡意窺探。當企業或者機構收集使用者個人身份資料、手機、銀行卡号等敏感資訊,然後将資料通過導出(非生産環境)或直接查詢(結合生産環境)的方式投入使用時,按照隐私保護相關法律法規需将資料進行“脫敏”處理。

1.2 資料脫敏介紹

資料脫敏主要分為靜态脫敏和動态脫敏,靜态資料脫敏(Static Data Masking)采用“先脫敏-後分發”的方式,一般是将生産環境資料拷貝到測試或開發庫中,導出後的資料已經改變了原始資料的内容,使得脫敏後的資料成為了測試開發源資料。而動态資料脫敏(Dynamic Data Masking)是與生産環境緊密關聯的,通路敏感資料時實時地進行脫敏,主要用于直接通路生産資料的場景,在屏蔽敏感資訊的同時也保證了源資料的一緻性和有效性。

openGauss動态資料脫敏功能介紹

圖1:靜态脫敏與動态脫敏

動态資料脫敏和靜态資料脫敏适用于不同的場景,兩者之間沒有優劣之分,主要是以使用場景來選擇合适的脫敏模式。openGauss最新版本已正式對外支援動态資料脫敏特性,下面的章節将圍繞openGauss動态資料脫敏機制進行闡述。

目前主流的動态資料脫敏技術路線分為“結果集解析”和“語句改寫”兩條路徑:

  • 結果集解析:不改寫發給資料庫的語句,需要提前獲悉資料表結構,待資料庫傳回結果後再根據表結構判斷集合内哪些資料需要脫敏,并逐條改寫結果資料。
  • 語句改寫:将包含敏感字段查詢的語句改寫,對于查詢中涉及的敏感字段(表列)通過外層嵌套函數的方式改寫,使得資料庫運作查詢語句時傳回不包含敏感資料的結果集。

從性能上來說,結果集解析方法需要在資料庫傳回結果集後再逐行字段解析、規則比對、資料脫敏,需要逐個修改結果集中每一行資料,是以脫敏耗時與結果集容量線性相關,整體性能損耗較大;而語句改寫通過将較為簡短的查詢語句進行解析并重寫的方式,對語句中的敏感列外嵌了一層脫敏函數,資料庫執行指令時将自動執行脫敏函數實作資料脫敏,傳回的結果集即為脫敏後的資料。該方式僅僅改寫一條查詢語句而不涉及結果集的解析,是以能夠極大地降低性能損耗,openGauss便是采用了語句改寫的方式,10萬條敏感資料脫敏的性能損耗低于5%。

另外,對于比較複雜的指令,查詢字段一般包含大量同名字段、表别名、嵌套查詢等,基于結果集解析首先需要将結果集與真實查詢列進行一一對應才可判斷出該字段是否需要脫敏,查詢越複雜識别難度越高,比對的準确率就越低,而基于語句的改寫可精确的對複雜查詢涉及的字段嵌套脫敏函數。

綜上分析,基于語句改寫方法的資料脫敏無論對于性能還是準确性來說都是較為優秀的脫敏方案,openGauss基于語句改寫思想,在查詢解析擷取查詢樹後,根據使用者定義的脫敏政策識别查詢樹目标結點(Node),并對待脫敏結點進行改寫構造“脫敏查詢樹”,再交由資料庫核心執行最終傳回脫敏後資料。

openGauss 動态資料脫敏解決方案

動态資料脫敏功能在工業界通常以中間插件或資料脫敏系統(Data Masking System)的形态加載,通過在用戶端與服務端資料庫之間攔截指令或結果集來實作脫敏,而openGauss内置動态資料脫敏特性,使資料庫無需借助外部插件就可以實作資料脫敏,有效地降低資料中間傳輸而導緻敏感資料洩漏的風險。

openGauss從1.1.0版本定義了一套完整的内置安全政策模型,基于該模型使用者可以定義資源标簽來辨別敏感資料,針對不同的資源标簽類别和内容可定義相關的安全政策機制,而動态資料脫敏就是其中一種。

2.1 内置安全政策

内置安全政策(Security Policy)模型,是指通過配置一系列安全政策來對使用者行為進行識别和保護,提供了包括保護使用者敏感資料的能力。

資源标簽(Resource Label)是Security Policy的基礎,它的本質是一系列資料庫資源集合。為了能夠統一管理資料庫資源,資料管理者可以将多個資料庫資源添加到同一個資源标簽下,通過對資源标簽配置政策來實作批量地對資料庫資源進行管理的能力。

例如,多張資料表中均包含銀行卡号“creditcard”這種敏感資訊列,那麼可以将這些列統一地劃分到資源标簽“creditcard_label”中,随後管理者便可以通過對“creditcard_label”配置脫敏政策以實作對所有相關敏感列的批量配置。

動态資料脫敏政策(Dynamic Data Masking)是Security Policy模型支援的一類安全政策,資料控制者對使用者表中的敏感資料識别後(敏感資料發現和識别不在該特性範圍内),對包含敏感列的資源标簽配置資料脫敏政策,并依據不同的應用場景來限制使用者對資料的通路行為和資訊提取行為,以達到對敏感資訊保護的能力。

總的來說,資源标簽是用來歸類資料庫資源,并将這些資源統一地投入到各種安全政策中去管理。動态資料脫敏特性便是利用資源标簽去識别敏感資料,然後比對脫敏政策,實作對敏感資料的屏蔽。

2.2 動态資料脫敏核心思路

openGauss中的動态資料脫敏是以内置安全插件(security plugin)的方式與資料庫部署在一起的,業務方面無需額外适配就可使用,SQL的解析與脫敏政策比對交由openGauss安全政策子產品負責,業務在配置脫敏政策後即可生效。

2.2.1 配置脫敏政策

脫敏政策的配置主要包括三個方面——脫敏方式(Masking Function)、脫敏對象(Resource Label)、使用者過濾器(Masking Filter)。

  • 脫敏方式,是指該脫敏政策使用何種方式對目标字段進行脫敏,目前openGauss預置了7種脫敏方式:creditcardmasking、 basicemailmasking、fullemailmasking、alldigitsmasking、shufflemasking、randommasking、maskall。分别适用于不同的脫敏場景。
  • 脫敏對象,是指脫敏政策生效時作用的對象集合(LABEL),若查詢目标字段存在于LABEL中,則該字段将會根據脫敏政策進行敏感資料脫敏,需要注意的是,openGauss動态資料脫敏特性支援對僅包含資料列的LABEL進行脫敏。
  • 使用者過濾器,指出脫敏政策在何種使用者場景下生效,主要涉及USER(使用者名)、APP(使用者登入用戶端名稱)、IP(使用者所處的ip)。當查詢使用者同時滿足Masking Filter所指定的門檻值時,資料脫敏政策才會生效。

以下案例示範了一個資料動态脫敏政策建立的基本過程。

1.資料準備

确認内置安全政策總開關是否開啟。

openGauss動态資料脫敏功能介紹

準備兩張包含敏感字段(creditcard、customername)的表。

openGauss動态資料脫敏功能介紹

2.政策配置

政策管理者(擁有poladmin權限)登入資料庫,将兩張資料表的敏感字段分别添加到資源标簽“creditcard_label”、“customer_label”中去管理。

openGauss動态資料脫敏功能介紹

政策管理者建立兩個脫敏政策,其作用如下:

  • 脫敏政策mask_card_pol:隻有當使用者“user1”在‘10.11.12.13’ip上使用gsql通路表時,标簽creditcard_label中的列将按照‘creditcardmasking’方式脫敏。
  • 脫敏政策mask_name_pol:預設對于所有查詢使用者,标簽customer_label中的列将按照‘MASKALL’的方式脫敏。
openGauss動态資料脫敏功能介紹

2.2.2觸發脫敏政策

當系統接收到查詢指令時,security_plugin将在解析器中攔截語義分析生成的查詢樹(Query),首先根據使用者登入資訊(使用者名、用戶端、IP)篩選出滿足使用者場景的脫敏政策。由于脫敏政策是基于(僅包含表列的)資源标簽配置的,是以需要判斷查詢樹的目标節點是否屬于某個資源标簽,然後将識别到的資源标簽與脫敏政策相比對,根據政策内容将查詢樹目标節點改寫,最終将查詢樹返還給解析器。

security_plugin子產品由于内置查詢樹脫敏方式,資料通路者不會感覺内置安全政策重寫查詢樹的過程,如同執行普通查詢一樣去通路資料,同時保護資料隐私。

openGauss動态資料脫敏功能介紹

圖2:openGauss動态資料脫敏架構

基于配置脫敏政策小節舉出的案例,我們可以通過查詢資料表來觸發脫敏政策。

觸發脫敏政策

使用者user1在滿足mask_card_pol政策的情況下使用gsql登入資料查詢敏感資料,系統将傳回脫敏後的資料結果。而使用者user2不滿足該條政策,是以該使用者查詢的資料未做脫敏處理。

openGauss動态資料脫敏功能介紹

而無論對于user1還是user2使用者,他們查詢order表時都會觸發脫敏政策mask_name_pol,是以customername字段将會被脫敏處理。

openGauss動态資料脫敏功能介紹

openGauss動态資料脫敏優勢

openGauss動态資料脫敏關注通路使用者身份識别問題,使用者過濾器(Masking Filter)的配置細化到指定使用者、用戶端工具、登入IP,政策管理者可以靈活地根據不同業務、不同使用者場景來制定不同的脫敏政策,賦予他們不同級别的敏感資料通路能力以适用于各種複雜的生産環境。例如金融、醫療行業中前台服務人員隻允許看到身份證、銀行卡号部分資訊,而運維管理者則可以查詢并維護所有使用者資訊。在保證脫敏場景多樣性的前提下,指定使用者過濾器時系統會進行嚴格的互斥校驗,避免同一使用者同時滿足多個使用者過濾器而出現政策選擇的二義性。

openGauss動态資料脫敏功能介紹

圖3:openGauss根據過濾條件脫敏

其次,openGauss動态資料脫敏更加注重資料庫資源的批量管理,在安全政策模型中,将需要管控的資料庫資源集中歸類劃分成标簽,對标簽的操作實際上就是對指定一簇資源的操作,極大的簡化管理流程,提高管理效率。在其他資料庫上的動态資料脫敏特性一般是基于單個列或單張表的,脫敏政策與資料庫資源是一一對應的,即使想要采用相同的脫敏方式,不同的資料庫資源也要配置多個對應的脫敏政策,這無疑是提高了政策配置成本,增加了後期運維、批量資源政策管理的難度。是以将需要批量管理的資料庫資源劃分到資源标簽中是openGauss動态資料脫敏的基礎,也是其優勢之一。

openGauss動态資料脫敏功能介紹

圖4:openGauss資源标簽批量配置政策

動态資料脫敏内置在openGauss核心中,能夠在一定程度上保證資料傳輸路徑上的安全性,而外部插件存在繞過風險:當外部插件将用戶端發送的SQL或服務端傳回的結果集改寫後,攻擊者依然可以繞過插件直接向資料庫發送SQL或截取資料庫傳回的源資料結果集,導緻脫敏插件失效。是以相較于外部插件脫敏的方式,openGauss動态資料脫敏在一定程度上也能降低傳輸路徑上的敏感資料洩漏風險。

動态資料脫敏其目的是屏蔽結果集中的敏感資料,動态資料脫敏是與生産環境相結合,由業務方提供查詢接口,再由接口觸發資料脫敏,openGauss為了盡可能的保證敏感資料的安全性,在絕大多數場景包括帶有RETURNING的增删改、Merge into、CTE、Subquery等場景也适配了脫敏政策,這樣能夠豐富業務方對敏感資料的操作接口而不單單隻能提供資料查詢接口。

openGauss為了提高易用性,提供了一套簡潔的政策配置文法,涵蓋了資源标簽以及脫敏政策的增删改,使用者使用定義文法可以輕松地配置脫敏政策,簡化了管理者操作流程。

openGauss 動态資料脫敏的展望

openGauss動态資料脫敏特性提供了相對簡潔、靈活的政策配置方案,在一定程度上保使用者隐私資料不被洩漏,是openGauss多層級安全防禦架構中不可或缺的一環。

未來openGauss動态資料脫敏特性将開放更加靈活的政策配置手段包括UDF(User Defined Function)Masking以及條件脫敏(Conditional Masking)等,以期支援更加靈活、豐富的隐私保護場景。

更多内容請參考:

https://docs.opengauss.org/

繼續閱讀