本發(fā)明涉及數(shù)據(jù)處理,尤其涉及一種數(shù)據(jù)脫敏的方法。
背景技術(shù):
1、數(shù)據(jù)脫敏技術(shù)是采用數(shù)據(jù)變形的方式對敏感數(shù)據(jù)進(jìn)行處理,防止隱私數(shù)據(jù)泄漏的數(shù)據(jù)處理技術(shù)。
2、傳統(tǒng)的數(shù)據(jù)脫敏技術(shù)通常采用統(tǒng)一的脫敏規(guī)則,如數(shù)據(jù)替換、哈?;蚣用?,存在一些局限性,例如:(1)缺乏個(gè)性化,統(tǒng)一的脫敏規(guī)則無法適應(yīng)不同用戶的需求;(2)信息損失,過于嚴(yán)格的脫敏規(guī)則可能導(dǎo)致有價(jià)值的信息丟失,影響數(shù)據(jù)分析和建模的質(zhì)量;(3)靈活性不足,難以根據(jù)不同的分析目的調(diào)整脫敏策略;這些局限性都會(huì)導(dǎo)致無法滿足不同用戶對數(shù)據(jù)的不同需求,實(shí)用性較差。
3、為此,本發(fā)明提供了一種數(shù)據(jù)脫敏的方法。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種數(shù)據(jù)脫敏的方法。
2、根據(jù)本發(fā)明的一方面,提供了一種數(shù)據(jù)脫敏的方法,應(yīng)用于數(shù)據(jù)倉庫,該數(shù)據(jù)倉庫采用hadoop和hive技術(shù)搭建,以及采用spark?sql作為數(shù)據(jù)倉庫的數(shù)據(jù)查詢引擎,該方法包括:基于不同用戶和不同場景的需求,在配置文件中定義各個(gè)字段的默認(rèn)脫敏算法;根據(jù)用戶的角色、權(quán)限和數(shù)據(jù)脫敏需求,在配置文件中對相應(yīng)默認(rèn)脫敏算法的脫敏規(guī)則進(jìn)行自定義配置,得到個(gè)性化脫敏算法;基于默認(rèn)脫敏算法和個(gè)性化脫敏算法,生成脫敏算法文件;獲取用戶的sql查詢請求,基于邏輯執(zhí)行計(jì)劃改造策略,對目標(biāo)待脫敏數(shù)據(jù)表進(jìn)行解析處理,捕獲表格內(nèi)容信息,根據(jù)表格內(nèi)容信息,調(diào)用脫敏算法文件的restapi,獲取相應(yīng)的默認(rèn)脫敏算法或個(gè)性化脫敏算法,根據(jù)默認(rèn)脫敏算法或個(gè)性化脫敏算法對表格內(nèi)容信息進(jìn)行脫敏處理,得到脫敏后的數(shù)據(jù)。
3、在一些實(shí)施例的一些可選的實(shí)現(xiàn)方式中,所述基于默認(rèn)脫敏算法和個(gè)性化脫敏算法,生成脫敏算法文件,具體包括:將每個(gè)默認(rèn)脫敏算法和每個(gè)個(gè)性化脫敏算法的實(shí)現(xiàn)邏輯過程均編寫成獨(dú)立的java類文件或scala類文件,并將所有的java類文件或scala類文件編譯成jar文件,將所述jar文件加載到spark計(jì)算引擎的lib目錄下,用于在spark?sql查詢引擎運(yùn)行時(shí)使用。
4、在一些實(shí)施例的一些可選的實(shí)現(xiàn)方式中,所述默認(rèn)脫敏算法和個(gè)性化脫敏算法均包括規(guī)則脫敏算法或時(shí)間加權(quán)脫敏算法。
5、在一些實(shí)施例的一些可選的實(shí)現(xiàn)方式中,所述邏輯執(zhí)行計(jì)劃改造策略,具體包括:通過編譯spark?catalyst代碼,將編譯后的spark?catalyst代碼進(jìn)行打包,并生成一個(gè)新的spark?catalyst運(yùn)行包,所述新的spark?catalyst運(yùn)行包包含運(yùn)行新增的個(gè)性化脫敏算法所需依賴的jar文件,將新的spark?catalyst運(yùn)行包部署到spark?sql源碼環(huán)境中。
6、在一些實(shí)施例的一些可選的實(shí)現(xiàn)方式中,所述編譯spark?catalyst代碼,具體包括:設(shè)置一個(gè)處理邏輯計(jì)劃的規(guī)則類,用于在其apply方法中遍歷邏輯計(jì)劃樹。
7、在一些實(shí)施例的一些可選的實(shí)現(xiàn)方式中,所述遍歷邏輯計(jì)劃樹,具體包括:在遍歷過程中,對待脫敏數(shù)據(jù)表中包含的所有表節(jié)點(diǎn)及其字段信息進(jìn)行識(shí)別處理。
8、在一些實(shí)施例的一些可選的實(shí)現(xiàn)方式中,所述獲取用戶的sql查詢請求,基于邏輯執(zhí)行計(jì)劃改造策略,對目標(biāo)待脫敏數(shù)據(jù)表進(jìn)行解析處理,捕獲表格內(nèi)容信息,根據(jù)表格內(nèi)容信息,調(diào)用脫敏算法文件的restapi,獲取相應(yīng)的默認(rèn)脫敏算法或個(gè)性化脫敏算法,根據(jù)默認(rèn)脫敏算法或個(gè)性化脫敏算法對表格內(nèi)容信息進(jìn)行脫敏處理,得到脫敏后的數(shù)據(jù),具體包括:獲取用戶的sql查詢請求,采用spark?sql解析器對目標(biāo)待脫敏數(shù)據(jù)表進(jìn)行解析處理,捕獲表格內(nèi)容信息,生成邏輯計(jì)劃樹對象,遍歷計(jì)劃樹對象中的所有表節(jié)點(diǎn),篩查需要脫敏處理的字段信息,針對每個(gè)需要脫敏處理的字段信息,調(diào)用脫敏算法文件的restapi,獲取相應(yīng)的默認(rèn)脫敏算法或個(gè)性化脫敏算法,采用默認(rèn)脫敏算法或個(gè)性化脫敏算法對需要脫敏處理的字段信息進(jìn)行脫敏處理,直至所有需要脫敏處理的字段信息完成脫敏處理為止,得到脫敏后的數(shù)據(jù)。
9、在一些實(shí)施例的一些可選的實(shí)現(xiàn)方式中,在得到所述脫敏后的數(shù)據(jù)后,還包括:基于脫敏后的數(shù)據(jù),響應(yīng)所述用戶的sql查詢請求。
10、根據(jù)本發(fā)明的第二方面,提供了一種電子設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在存儲(chǔ)器中并且可以在處理器上運(yùn)行的計(jì)算機(jī)程序,該處理器執(zhí)行計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述方法的步驟。
11、根據(jù)本發(fā)明的第三方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述方法的步驟。
12、本發(fā)明的優(yōu)點(diǎn)及有益效果在于:
13、1、個(gè)性化脫敏,本發(fā)明通過編譯spark?catalyst代碼來實(shí)現(xiàn)對spark?sql查詢引擎的改造,能夠針對不同場景、不同用戶、不同數(shù)據(jù)脫敏需求,動(dòng)態(tài)匹配對應(yīng)的脫敏算法,以便根據(jù)不同用戶的需求提供定制化的脫敏效果。
14、2、最小化信息損失,本發(fā)明采用規(guī)則脫敏算法或時(shí)間加權(quán)脫敏算法,能夠在保護(hù)隱私的前提下,盡可能保留數(shù)據(jù)的分析價(jià)值,從而提高數(shù)據(jù)分析和建模的質(zhì)量。
15、3、高靈活性,本發(fā)明能夠根據(jù)不同的分析目的和數(shù)據(jù)使用場景調(diào)整脫敏策略,實(shí)現(xiàn)動(dòng)態(tài)脫敏,以支持多種場景和用戶需求。
1.一種數(shù)據(jù)脫敏的方法,其特征在于,應(yīng)用于數(shù)據(jù)倉庫,該數(shù)據(jù)倉庫采用hadoop和hive技術(shù)搭建,以及采用spark?sql作為數(shù)據(jù)倉庫的數(shù)據(jù)查詢引擎,該方法包括:
2.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)脫敏的方法,其特征在于,所述基于默認(rèn)脫敏算法和個(gè)性化脫敏算法,生成脫敏算法文件,具體包括:將每個(gè)默認(rèn)脫敏算法和每個(gè)個(gè)性化脫敏算法的實(shí)現(xiàn)邏輯過程均編寫成獨(dú)立的java類文件或scala類文件,并將所有的java類文件或scala類文件編譯成jar文件,將所述jar文件加載到spark計(jì)算引擎的lib目錄下,用于在spark?sql查詢引擎運(yùn)行時(shí)使用。
3.根據(jù)權(quán)利要求2所述的一種數(shù)據(jù)脫敏的方法,其特征在于,所述默認(rèn)脫敏算法和個(gè)性化脫敏算法均包括規(guī)則脫敏算法或時(shí)間加權(quán)脫敏算法。
4.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)脫敏的方法,其特征在于,所述邏輯執(zhí)行計(jì)劃改造策略,具體包括:通過編譯spark?catalyst代碼,將編譯后的spark?catalyst代碼進(jìn)行打包,并生成一個(gè)新的spark?catalyst運(yùn)行包,所述新的spark?catalyst運(yùn)行包包含運(yùn)行新增的個(gè)性化脫敏算法所需依賴的jar文件,將新的spark?catalyst運(yùn)行包部署到spark?sql源碼環(huán)境中。
5.根據(jù)權(quán)利要求4所述的一種數(shù)據(jù)脫敏的方法,其特征在于,所述編譯spark?catalyst代碼,具體包括:設(shè)置一個(gè)處理邏輯計(jì)劃的規(guī)則類,用于在其apply方法中遍歷邏輯計(jì)劃樹。
6.根據(jù)權(quán)利要求5所述的一種數(shù)據(jù)脫敏的方法,其特征在于,所述遍歷邏輯計(jì)劃樹,具體包括:在遍歷過程中,對待脫敏數(shù)據(jù)表中包含的所有表節(jié)點(diǎn)及其字段信息進(jìn)行識(shí)別處理。
7.根據(jù)權(quán)利要求6所述的一種數(shù)據(jù)脫敏的方法,其特征在于,所述獲取用戶的sql查詢請求,基于邏輯執(zhí)行計(jì)劃改造策略,對目標(biāo)待脫敏數(shù)據(jù)表進(jìn)行解析處理,捕獲表格內(nèi)容信息,根據(jù)表格內(nèi)容信息,調(diào)用脫敏算法文件的restapi,獲取相應(yīng)的默認(rèn)脫敏算法或個(gè)性化脫敏算法,根據(jù)默認(rèn)脫敏算法或個(gè)性化脫敏算法對表格內(nèi)容信息進(jìn)行脫敏處理,得到脫敏后的數(shù)據(jù),具體包括:獲取用戶的sql查詢請求,采用spark?sql解析器對目標(biāo)待脫敏數(shù)據(jù)表進(jìn)行解析處理,捕獲表格內(nèi)容信息,生成邏輯計(jì)劃樹對象,遍歷計(jì)劃樹對象中的所有表節(jié)點(diǎn),篩查需要脫敏處理的字段信息,針對每個(gè)需要脫敏處理的字段信息,調(diào)用脫敏算法文件的restapi,獲取相應(yīng)的默認(rèn)脫敏算法或個(gè)性化脫敏算法,采用默認(rèn)脫敏算法或個(gè)性化脫敏算法對需要脫敏處理的字段信息進(jìn)行脫敏處理,直至所有需要脫敏處理的字段信息完成脫敏處理為止,得到脫敏后的數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的一種數(shù)據(jù)脫敏的方法,其特征在于,在得到所述脫敏后的數(shù)據(jù)后,還包括:基于脫敏后的數(shù)據(jù),響應(yīng)所述用戶的sql查詢請求。
9.一種電子設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器中并且可以在所述處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如權(quán)利要求1至8中任一項(xiàng)所述方法的步驟。
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至8中任一項(xiàng)所述方法的步驟。