【摘要】?
?關(guān)鍵詞:集算器莉擒、SPL酿炸、數(shù)據(jù)脫敏瘫絮、報(bào)表?
1)、數(shù)據(jù)脫敏是“指對(duì)某些敏感信息通過(guò)脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形填硕,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù)麦萤。在涉及客戶安全數(shù)據(jù)或者一些商業(yè)性敏感數(shù)據(jù)的情況下,在不違反系統(tǒng)規(guī)則條件下扁眯,對(duì)真實(shí)數(shù)據(jù)進(jìn)行改造并提供測(cè)試使用壮莹,如身份證號(hào)、手機(jī)號(hào)姻檀、卡號(hào)命满、客戶號(hào)等個(gè)人信息都需要進(jìn)行數(shù)據(jù)脫敏。是數(shù)據(jù)庫(kù)安全技術(shù)之一绣版〗禾ǎ”?
2)、本文介紹的脫敏數(shù)據(jù)報(bào)表查詢將利用潤(rùn)乾集算器編寫 SPL 腳本杂抽,對(duì)敏感信息字段 (如: 姓名诈唬、證件號(hào)、銀行賬戶缩麸、住址铸磅、電話號(hào)碼、企業(yè)名稱杭朱、工商注冊(cè)號(hào)阅仔、納稅人識(shí)別號(hào)) 等通過(guò)預(yù)定義的脫敏規(guī)則進(jìn)行數(shù)據(jù)脫敏、變形弧械,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的保護(hù)八酒。
?3)、潤(rùn)乾集算器能使脫敏工作變得的簡(jiǎn)單易行梦谜,同時(shí)可以減少大量重復(fù)性工作丘跌。通過(guò)集算器 SPL 腳本實(shí)現(xiàn)的脫敏數(shù)據(jù),可直接作為報(bào)表數(shù)據(jù)集進(jìn)行查詢分析唁桩,也可以作為開(kāi)發(fā)闭树、測(cè)試和其它非生產(chǎn)環(huán)境或外包環(huán)境下的真實(shí)數(shù)據(jù)集使用。
數(shù)據(jù)脫敏的處理方法及查詢
1.1? 數(shù)據(jù)脫敏介紹
根據(jù)百度詞條的解釋荒澡,數(shù)據(jù)脫敏是“指對(duì)某些敏感信息通過(guò)脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形报辱,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù)。在涉及客戶安全數(shù)據(jù)或者一些商業(yè)性敏感數(shù)據(jù)的情況下单山,在不違反系統(tǒng)規(guī)則條件下碍现,對(duì)真實(shí)數(shù)據(jù)進(jìn)行改造并提供測(cè)試使用幅疼,如身份證號(hào)、手機(jī)號(hào)昼接、卡號(hào)爽篷、客戶號(hào)等個(gè)人信息都需要進(jìn)行數(shù)據(jù)脫敏。是數(shù)據(jù)庫(kù)安全技術(shù)之一慢睡,數(shù)據(jù)庫(kù)安全技術(shù)主要包括:數(shù)據(jù)庫(kù)漏掃逐工、數(shù)據(jù)庫(kù)加密、數(shù)據(jù)庫(kù)防火墻漂辐、數(shù)據(jù)脫敏泪喊、數(shù)據(jù)庫(kù)安全審計(jì)系統(tǒng)∷柩模”
隨著信息時(shí)代的發(fā)展袒啼,我們對(duì)數(shù)據(jù)信息的安全要求越來(lái)越重視,比如對(duì)非生產(chǎn)環(huán)境下的敏感數(shù)據(jù)的脫敏保護(hù)纬纪。在金融辙浑、運(yùn)營(yíng)商蜓陌、政府炫彩、能源等部門改执,非生產(chǎn)環(huán)境下數(shù)據(jù)脫敏已列入監(jiān)管部門的法規(guī)要求。非生產(chǎn)環(huán)境數(shù)據(jù)多用于開(kāi)發(fā)髓棋、測(cè)試实檀、培訓(xùn)以及第三方數(shù)據(jù)分析、挖掘按声,如果不能有效實(shí)施敏感數(shù)據(jù)保護(hù)膳犹,極易造成敏感數(shù)據(jù)的泄露。所以签则,保證非生產(chǎn)數(shù)據(jù)的安全已經(jīng)成為一個(gè)重要的課題须床,要求我們能夠通過(guò)對(duì)敏感信息進(jìn)行脫敏、變形渐裂,實(shí)現(xiàn)有效的數(shù)據(jù)保護(hù)豺旬。
1.2? 對(duì)數(shù)據(jù)脫敏工具的要求
數(shù)據(jù)脫敏工具應(yīng)該具有對(duì)多種異構(gòu)數(shù)據(jù)源的支持,從而將一個(gè)脫敏規(guī)則應(yīng)用于不同的數(shù)據(jù)源柒凉,比如針對(duì)“客戶名稱”字段的修改族阅,脫敏規(guī)則基本一致,所以應(yīng)該可以在 Excel膝捞、TXT坦刀、Oracle、MS SQLServer、MySQL鲤遥、Hadoop 等數(shù)據(jù)源上直接引用沐寺。另外,工具還應(yīng)支持將脫敏數(shù)據(jù)完全不落地分發(fā)盖奈,提供文件到文件混坞、文件到數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)到數(shù)據(jù)庫(kù)卜朗、數(shù)據(jù)庫(kù)到文件等方式拔第,并且不需要在生產(chǎn)系統(tǒng)或本地安裝任何客戶端咕村。
本文介紹的脫敏數(shù)據(jù)報(bào)表查詢將利用潤(rùn)乾集算器編寫 SPL 腳本场钉,對(duì)敏感信息字段 ( 如: 姓名、證件號(hào)懈涛、銀行賬戶逛万、住址、電話號(hào)碼批钠、企業(yè)名稱宇植、工商注冊(cè)號(hào)、納稅人識(shí)別號(hào)) 等通過(guò)預(yù)定義的脫敏規(guī)則進(jìn)行數(shù)據(jù)脫敏埋心、變形指郁,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的保護(hù)。
潤(rùn)乾集算器能使脫敏工作變得的簡(jiǎn)單易行拷呆,同時(shí)可以減少大量重復(fù)性工作闲坎。通過(guò)集算器 SPL 腳本實(shí)現(xiàn)的脫敏數(shù)據(jù),可直接作為報(bào)表數(shù)據(jù)集進(jìn)行查詢分析茬斧,也可以作為開(kāi)發(fā)腰懂、測(cè)試和其它非生產(chǎn)環(huán)境或外包環(huán)境下的真實(shí)數(shù)據(jù)集使用。
1.3? 脫敏數(shù)據(jù)的特征
數(shù)據(jù)脫敏不僅要執(zhí)行數(shù)據(jù)漂白项秉,抹去數(shù)據(jù)中的敏感內(nèi)容绣溜,同時(shí)也需要保持原有的數(shù)據(jù)特征、業(yè)務(wù)規(guī)則和數(shù)據(jù)關(guān)聯(lián)性娄蔼,保證開(kāi)發(fā)怖喻、測(cè)試、培訓(xùn)以及大數(shù)據(jù)類業(yè)務(wù)不會(huì)受到脫敏的影響岁诉,達(dá)成脫敏前后的數(shù)據(jù)一致性和有效性:
l?保持原有數(shù)據(jù)特征
數(shù)據(jù)脫敏前后必須保證數(shù)據(jù)特征的保持锚沸,例如:身份證號(hào)碼由十七位數(shù)字本體碼和一位校驗(yàn)碼組成,分別為區(qū)域地址碼(6 位)唉侄、出生日期(8 位)咒吐、順序碼(3 位)和校驗(yàn)碼(1 位)。那么身份證號(hào)碼的脫敏規(guī)就需要保證脫敏后依舊保持這些特征信息。
l?保持?jǐn)?shù)據(jù)之間的一致性
在不同業(yè)務(wù)中恬叹,數(shù)據(jù)和數(shù)據(jù)之間具有一定的關(guān)聯(lián)性候生。例如:出生年月或年齡和出生日期之間的關(guān)系。同樣绽昼,身份證信息脫敏后仍需要保證出生年月字段和身份證中包含的出生日期之間的一致性唯鸭。
l?保持業(yè)務(wù)規(guī)則的關(guān)聯(lián)性
保持?jǐn)?shù)據(jù)業(yè)務(wù)規(guī)則的關(guān)聯(lián)性是指數(shù)據(jù)脫敏時(shí)數(shù)據(jù)關(guān)聯(lián)性以及業(yè)務(wù)語(yǔ)義等保持不變,其中數(shù)據(jù)關(guān)聯(lián)性包括:主硅确、外鍵關(guān)聯(lián)性目溉、關(guān)聯(lián)字段的業(yè)務(wù)語(yǔ)義關(guān)聯(lián)性等。特別是高度敏感的賬戶類主體數(shù)據(jù)往往會(huì)貫穿主體的所有關(guān)系和行為信息菱农,因此需要特別注意保證所有相關(guān)主體信息的一致性缭付。
l?多次脫敏之間的數(shù)據(jù)一致性
相同的數(shù)據(jù)進(jìn)行多次脫敏,或者在不同的測(cè)試系統(tǒng)進(jìn)行脫敏循未,需要確保每次脫敏的數(shù)據(jù)始終保持一致性陷猫,只有這樣才能保障業(yè)務(wù)系統(tǒng)數(shù)據(jù)變更的持續(xù)一致性以及廣義業(yè)務(wù)的持續(xù)一致性。
1.4? 數(shù)據(jù)脫敏應(yīng)用場(chǎng)景
一般常見(jiàn)的數(shù)據(jù)脫敏場(chǎng)景的妖,是將生產(chǎn)數(shù)據(jù)或是生產(chǎn)數(shù)據(jù)文件按照脫敏規(guī)則绣檬,將數(shù)據(jù)不落地脫敏至測(cè)試數(shù)據(jù)庫(kù)或是測(cè)試數(shù)據(jù)文件中,具體如下所示:
使用集算器的 SPL 可以按照業(yè)務(wù)場(chǎng)景要求自行定義和編寫脫敏規(guī)則嫂粟,比如針對(duì)上面的人員信息:姓名娇未、身份證號(hào)、地址星虹、電話號(hào)碼零抬、卡號(hào)等進(jìn)行不落地脫敏,滿足數(shù)據(jù)脫敏需要搁凸。
集算器是一個(gè)無(wú)框架媚值,可快速部署開(kāi)發(fā)的數(shù)據(jù)計(jì)算中間件工具,能夠直接運(yùn)行編寫好的 SPL 數(shù)據(jù)脫敏腳本即時(shí)進(jìn)行數(shù)據(jù)脫敏护糖,支持各種常見(jiàn)的數(shù)據(jù)脫敏的處理方式褥芒,包括數(shù)據(jù)替換、無(wú)效化嫡良、隨機(jī)化锰扶、偏移和取整、掩碼屏蔽寝受、靈活編碼等坷牛,本文介紹的數(shù)據(jù)脫敏方法都可以在實(shí)際應(yīng)用中混合替換使用。
本文中應(yīng)用場(chǎng)景的數(shù)據(jù)脫敏都是基于下表數(shù)據(jù)內(nèi)容進(jìn)行的很澄,數(shù)據(jù)存儲(chǔ)在“數(shù)據(jù)脫敏驗(yàn)證表.txt”文件中京闰。
1.4.1 數(shù)據(jù)替換
數(shù)據(jù)脫敏要求:用設(shè)置的固定虛構(gòu)值替換真值颜及。例如將手機(jī)號(hào)碼統(tǒng)一替換為 13800013800。
使用集算器 SPL 編碼實(shí)現(xiàn)的腳本蹂楣,如下:
A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)俏站。手機(jī)號(hào)碼脫敏前的顯示值如下:
A2:將手機(jī)號(hào)碼統(tǒng)一數(shù)據(jù)替換。直接使用run()函數(shù)對(duì) mobile 手機(jī)號(hào)碼字段數(shù)據(jù)進(jìn)行賦值替換為13800013800痊土。數(shù)據(jù)替換后肄扎,手機(jī)號(hào)碼脫敏后的顯示值如下:
1.4.2 無(wú)效化
數(shù)據(jù)脫敏要求:通過(guò)對(duì)數(shù)據(jù)值得截?cái)唷⒓用芰拊汀㈦[藏等方式使敏感數(shù)據(jù)脫敏犯祠,使其不再具有利用價(jià)值,例如將地址以 ****** 代替真值酌呆。數(shù)據(jù)無(wú)效化與數(shù)據(jù)替換所達(dá)成的效果基本類似衡载。
使用集算器 SPL 編碼實(shí)現(xiàn)的腳本,如下:
A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)肪笋。地址脫敏前顯示值如下:
A2:將地址進(jìn)行數(shù)據(jù)隱藏式的無(wú)效化脫敏月劈。直接使用run()函數(shù)對(duì) address 地址字段數(shù)據(jù)進(jìn)行無(wú)效化的 ****** 處理。數(shù)據(jù)無(wú)效化后藤乙,地址脫敏后的顯示值如下:
A3:將地址進(jìn)行數(shù)據(jù)截?cái)嗍降臒o(wú)效化脫敏。使用left()函數(shù)對(duì) address 地址源字符串的左邊三位字串加上 ****** 的截?cái)酂o(wú)效化處理惭墓。截?cái)酂o(wú)效化的地址脫敏后顯示值如下:
1.4.3 隨機(jī)化
數(shù)據(jù)脫敏要求:采用隨機(jī)數(shù)據(jù)代替真值坛梁,保持替換值的隨機(jī)性以模擬樣本的真實(shí)性。例如用隨機(jī)生成的姓和名代替真值腊凶。
使用集算器 SPL 編碼實(shí)現(xiàn)的腳本划咐,如下:
A1:導(dǎo)入外部姓名字典表,用于隨機(jī)化替換姓名真值钧萍。此處需特別注意一下褐缠,由于“姓氏”和“名字”文本數(shù)據(jù)都是單列數(shù)據(jù)表,在使用import()函數(shù)時(shí)需要增加 @i 選項(xiàng)风瘦,@i 表示文本數(shù)據(jù)只有1列時(shí)返回成序列队魏,在單元格 A3 中可以直接位置獲取隨機(jī)值。
A2:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)万搔。姓名脫敏前顯示值如下:
A3:將姓名進(jìn)行隨機(jī)化脫敏胡桨。直接使用run()函數(shù)對(duì) name 姓名進(jìn)行隨機(jī)化,使用rand()函數(shù)從“姓氏.txt”和“名字.txt”外部字典表隨機(jī)化組合生成姓名瞬雹。隨機(jī)化后姓名的顯示值如下:
【注意】這個(gè)例子中我們針對(duì)數(shù)據(jù)脫敏引入了外部字典表昧谊,實(shí)際情況中可以根據(jù)數(shù)據(jù)脫敏要求,隨時(shí)引入任意外部字典表酗捌,通過(guò)數(shù)據(jù)的隨機(jī)化組合呢诬,實(shí)現(xiàn)替換真值數(shù)據(jù)的脫敏處理涌哲。
1.4.4 偏移和取整
數(shù)據(jù)脫敏要求:通過(guò)隨機(jī)移位改變數(shù)字?jǐn)?shù)據(jù),例如日期 2018-01-02 8:12:25 變?yōu)?2018-01-02 8:00:00尚镰,偏移取整在保持了數(shù)據(jù)的安全性的同時(shí)保證了范圍的大致真實(shí)性膛虫,此項(xiàng)功能在大數(shù)據(jù)利用環(huán)境中具有重大價(jià)值。
使用集算器 SPL 編碼實(shí)現(xiàn)的腳本钓猬,如下:
A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)稍刀。操作日期脫敏前顯示值如下:
A2:將操作日期進(jìn)行時(shí)間的偏移和取整脫敏。使用使用string()函數(shù)按照偏移和取整規(guī)則格式化成“yyyy-MM-dd HH:00:00”格式敞曹,操作時(shí)間脫敏后的顯示值如下:
【注意】脫敏后的日期時(shí)間保持了原有的數(shù)據(jù)特征账月,方便脫敏數(shù)據(jù)的后續(xù)使用。
1.4.5 掩碼屏蔽
數(shù)據(jù)脫敏要求:掩碼屏蔽是針對(duì)賬戶類數(shù)據(jù)的部分信息進(jìn)行脫敏時(shí)的有力工具澳迫,比如銀行卡號(hào)或是身份證號(hào)的脫敏局齿。
使用集算器 SPL 編碼實(shí)現(xiàn)的腳本,如下:
A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)橄登。身份證號(hào)脫敏前顯示值如下:
A2:將身份證號(hào)的出生日期進(jìn)行掩碼屏蔽脫敏抓歼。使用left()函數(shù)截取身份證號(hào)的左邊 6 位 + 字符串 ********+right()函數(shù)截取身份證號(hào)右邊 4 位替換源身份證字符串,身份證號(hào)碼脫敏后的顯示值如下:
1.4.6 靈活編碼
數(shù)據(jù)脫敏要求:在需要特殊脫敏規(guī)則時(shí)拢锹,可執(zhí)行靈活編碼以滿足各種可能的脫敏規(guī)則谣妻。比如用固定字母和固定位數(shù)的數(shù)字替代合同編號(hào)真值。
使用集算器 SPL 編碼實(shí)現(xiàn)的腳本卒稳,如下:
碼?
A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)蹋半。合同編號(hào)脫敏前顯示值如下:
A2:將合同編號(hào)進(jìn)行自定義編碼脫敏。自定義編碼規(guī)則:4 位固定碼 + 當(dāng)前年份 + 源目標(biāo)字符串 4 位號(hào)碼 +9 位數(shù)值組成充坑,使用的函數(shù)已有介紹减江,不再贅述,合同編號(hào)脫敏后顯示值如下:
1.4.7 脫敏數(shù)據(jù)的分發(fā)
集算器 SPL 支持文件到文件捻爷、文件到數(shù)據(jù)庫(kù)辈灼、數(shù)據(jù)庫(kù)到數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)到文件的脫敏數(shù)據(jù)分發(fā)也榄。下面分別進(jìn)行具體說(shuō)明:
1.4.7.1??? 文本分發(fā)到文本
使用集算器 SPL 編碼實(shí)現(xiàn)的文本分發(fā)到文本的腳本如下:
A1-B1:引入外部字典表“姓氏”和“名字”的文本數(shù)據(jù)巡莹,用于隨機(jī)組合生成姓名信息。
A2:使用游標(biāo)導(dǎo)入大數(shù)據(jù)量的“數(shù)據(jù)脫敏驗(yàn)證表”文本數(shù)據(jù)手蝎。
A3:按照脫敏規(guī)則進(jìn)行數(shù)據(jù)表脫敏榕莺。
A4:直接將脫敏的數(shù)據(jù)導(dǎo)出到文本文件。使用export()函數(shù)導(dǎo)出脫敏數(shù)據(jù)棵介,其中钉鸯,其中 @t 指定將第一行記錄作為字段名, 如果不使用 @t 選項(xiàng)就會(huì)以 _1,_2,…作為字段名邮辽,@a表示追加寫, 不使用 @a 表示覆蓋唠雕,分發(fā)到文本的脫敏結(jié)果如下:
【注意】集算器 SPL 的文件處理能力還支持導(dǎo)入贸营、導(dǎo)出 xls、xlsx岩睁、csv 等多種類型文件钞脂。
1.4.7.2??? 文本分發(fā)到數(shù)據(jù)庫(kù)
使用集算器 SPL 編碼實(shí)現(xiàn)的文本分發(fā)到數(shù)據(jù)庫(kù)(以 MySQL 為例)的腳本如下:
A1-A3:同上。
A4:連接 MySQL 數(shù)據(jù)源捕儒。使用connect()進(jìn)行 MySQL 數(shù)據(jù)庫(kù)的連接冰啃。如果用鼠標(biāo)點(diǎn)擊 A4 單元格,可以直接查看 MySQL 數(shù)據(jù)庫(kù)的連接信息刘莹。具體查看數(shù)據(jù)庫(kù)配置教程相關(guān)章節(jié)文檔配置說(shuō)明阎毅。
A5:更新 MySQL 數(shù)據(jù)庫(kù)中“personinfo”庫(kù)表的數(shù)據(jù)。使用update()將單元格 A3 的游標(biāo)數(shù)據(jù)更新到 MySQL 數(shù)據(jù)庫(kù)“personinfo”庫(kù)表中点弯。使用數(shù)據(jù)庫(kù)工具查看結(jié)果如下
A6:使用close()函數(shù)關(guān)閉 A4 建立起的 MySQL 數(shù)據(jù)源連接扇调。
1.4.7.3??? 數(shù)據(jù)庫(kù)分到數(shù)據(jù)庫(kù)
使用集算器 SPL 編碼實(shí)現(xiàn)的數(shù)據(jù)庫(kù)分發(fā)到數(shù)據(jù)庫(kù)的腳本如下(均以 MySQL 為例):
A1:同上。
A2:連接 MySQL 數(shù)據(jù)源抢肛。
A3:游標(biāo)讀取 MySQL 中表“personinfo_copy”的待脫敏數(shù)據(jù)狼钮。該表的數(shù)據(jù)如下:
A4:同上。
A5:更新 MySQL 數(shù)據(jù)庫(kù)中“personinfo_copy_test”庫(kù)表的數(shù)據(jù)捡絮。使用update()將單元格 A3 的游標(biāo)數(shù)據(jù)更新到 MySQL 數(shù)據(jù)庫(kù)的“personinfo_copy_test”庫(kù)表中熬芜。結(jié)果如下:
A6:使用close()函數(shù)關(guān)閉 A2 建立起的 MySQL 數(shù)據(jù)源連接。
1.4.7.4??? 數(shù)據(jù)庫(kù)分到文本
使用集算器 SPL 編碼實(shí)現(xiàn)的數(shù)據(jù)庫(kù)(以 MySQL 為例)分發(fā)到文本的腳本如下:
A1-A4:同上锦援。
A5:直接將脫敏的數(shù)據(jù)庫(kù)(MySQL)數(shù)據(jù)分發(fā)到文本文件猛蔽。分發(fā)到文本的脫敏結(jié)果同上。
A6:使用close()函數(shù)關(guān)閉 A2 建立起的 MySQL 數(shù)據(jù)源連接灵寺。
1.5? 脫敏數(shù)據(jù)報(bào)表查詢實(shí)例
下面我們就結(jié)合上面介紹的數(shù)據(jù)脫敏方法,具體實(shí)現(xiàn)一個(gè)可以動(dòng)態(tài)配置是否脫敏數(shù)據(jù)的報(bào)表查詢實(shí)例区岗,大致流程如下:
1.5.1 集算器數(shù)據(jù)脫敏 SPL 腳本準(zhǔn)備
?? 利用上面已有的"數(shù)據(jù)脫敏驗(yàn)證表.txt" 文本數(shù)據(jù)略板,實(shí)現(xiàn)脫敏數(shù)據(jù)報(bào)表查詢,具體腳本如下:
A1-B1:引入外部字典表“姓氏”和“名字”的文本數(shù)據(jù)慈缔,用于隨機(jī)組合生成姓名信息叮称。
A2:定義一個(gè)子程序。使用func函數(shù)定義一個(gè)通用的數(shù)據(jù)脫敏規(guī)則處理子程序藐鹤,該子程序主要是調(diào)用配置文件中的數(shù)據(jù)脫敏規(guī)則進(jìn)行數(shù)據(jù)脫敏瓤檐。不同數(shù)據(jù)字段可以根據(jù)自身特點(diǎn)和業(yè)務(wù)要求進(jìn)行規(guī)則復(fù)用。關(guān)于子程序的內(nèi)容可以參考:集算器 -> 教程 -> 高級(jí)代碼 ->子程序文檔說(shuō)明娱节。
B3:讀取數(shù)據(jù)脫敏規(guī)則配置文件信息挠蛉。使用property()函數(shù)從“數(shù)據(jù)脫敏規(guī)則配置.ini”屬性文件中讀取 type 屬性值。
B4-B5:使用動(dòng)態(tài)解析并計(jì)算規(guī)則配置文件中的規(guī)則肄满,實(shí)現(xiàn)對(duì)應(yīng)字段的數(shù)據(jù)脫敏處理谴古。其中质涛,子程序中使用eval()函數(shù)動(dòng)態(tài)解析并計(jì)算表達(dá)式,實(shí)現(xiàn)動(dòng)態(tài)解析并替換脫敏規(guī)則配置文件(*.ini)中的 "?" 值掰担,增加一個(gè) type 值判斷汇陆,將一般 type 中的 "?" 替換為調(diào)用 func 子程序主格的位置值,對(duì)引入外部數(shù)據(jù)字典表的 tpye2 規(guī)則带饱,單獨(dú)判斷替換 "?" 值為外部字典所在單元格值毡代,最終計(jì)算替換的表達(dá)式并執(zhí)行對(duì)應(yīng)字段的數(shù)據(jù)脫敏。
B6:使用宏動(dòng)態(tài)計(jì)算表達(dá)式并返回運(yùn)算結(jié)果勺疼,使用return函數(shù)將從屬性配置文件中讀取的 type 屬性值通過(guò)“${}”宏替換并返回運(yùn)算結(jié)果給被 B9 單元格調(diào)用的程序中教寂。
A7:游標(biāo)獲取未脫敏的源端生產(chǎn)數(shù)據(jù)。
A8:通過(guò)傳遞的網(wǎng)格參數(shù) type(type=0:不脫敏)值判斷是否對(duì)數(shù)據(jù)脫敏恢口,如果脫敏孝宗,則執(zhí)行 B9 單元格的源端生產(chǎn)數(shù)據(jù)的脫敏處理。
B9:按照脫敏規(guī)則進(jìn)行數(shù)據(jù)表脫敏耕肩,直接調(diào)用 A2 主格子程序 func 進(jìn)行數(shù)據(jù)脫敏因妇。
A10:根據(jù) type 值返回對(duì)應(yīng)的脫敏或未脫敏數(shù)據(jù)。
接下來(lái)猿诸,需要在集算器設(shè)計(jì)器的功能菜單“程序 -> 網(wǎng)格參數(shù)”中設(shè)置一個(gè)參數(shù)“type”婚被,用于接收?qǐng)?bào)表參數(shù)傳遞進(jìn)行是否脫敏的數(shù)據(jù)權(quán)限控制。
至此梳虽,集算器的 SPL 腳本編寫和設(shè)置完成址芯,下一步進(jìn)行“數(shù)據(jù)脫敏規(guī)則配置.ini”文件的新建設(shè)置。
1.5.2 數(shù)據(jù)脫敏規(guī)則配置文件
文件“數(shù)據(jù)脫敏規(guī)則配置.ini”為集算器 SPL 腳本提供了對(duì)數(shù)據(jù)字段的脫敏規(guī)則配置窜觉,從而實(shí)現(xiàn)脫敏規(guī)則與腳本分離的設(shè)計(jì)谷炸,可以在不修改腳本的情況下自定義脫敏規(guī)則。當(dāng)然禀挫,這個(gè)配置文件也可以數(shù)存儲(chǔ)在數(shù)據(jù)庫(kù)中旬陡,提供全局的脫敏規(guī)則配置管理。該配置文件的內(nèi)容如下:
配置文件說(shuō)明:#自定義配置脫敏規(guī)則语婴,使用 eval() 函數(shù)實(shí)現(xiàn)動(dòng)態(tài)解析替換解析 "?"描孟,通常 type 中的 "?" 是指固定調(diào)用 func 子程序的主格,這里 tpye2 規(guī)則特殊砰左,需要單獨(dú)判斷替換 "?"匿醒。
【注意】這里僅是提供一種脫敏規(guī)則的配置思路,目的是可以最大限度的復(fù)用和靈活調(diào)用缠导,相似的數(shù)據(jù)字段就不需要重復(fù)定義和編寫脫敏規(guī)則了廉羔。實(shí)際應(yīng)用中,程序員們可以根據(jù)需求自定義配置酬核。
1.5.3 報(bào)表模板準(zhǔn)備
使用最新版本的潤(rùn)乾報(bào)表 V2018 版本開(kāi)發(fā)一張報(bào)表模板蜜另,并設(shè)置報(bào)表是否脫敏參數(shù)“type”(與集算器 SPL 腳本中的網(wǎng)格參數(shù)對(duì)應(yīng)使用)适室。
設(shè)置集算器 SPL 腳本為報(bào)表的數(shù)據(jù)集“ds1”,選中對(duì)應(yīng)的 dfx 腳本举瑰,并配置 type 參數(shù)表達(dá)式捣辆,具體如下:
開(kāi)發(fā)的報(bào)表模板“報(bào)表數(shù)據(jù)脫敏.rpx”如下:
【注意】這里面調(diào)用的集算器數(shù)據(jù)集返回的是游標(biāo),需要在報(bào)表屬性 -> 常規(guī) 設(shè)置集算器數(shù)據(jù)集為大數(shù)據(jù)集此迅,并且該功能需要報(bào)表產(chǎn)品包含集算器授權(quán)汽畴。
1.5.4 脫敏數(shù)據(jù)報(bào)表發(fā)布
直接在報(bào)表設(shè)計(jì)器中啟動(dòng) web 服務(wù),使用瀏覽器瀏覽報(bào)表耸序,當(dāng)設(shè)置參數(shù) type 值為“0”不脫敏時(shí)忍些,報(bào)表展示數(shù)據(jù)如下:
當(dāng)參數(shù) type 設(shè)置非“0”值時(shí),報(bào)表展示數(shù)據(jù)如下:
1.5.5 脫敏數(shù)據(jù)報(bào)表查詢總結(jié)
這個(gè)脫敏數(shù)據(jù)報(bào)表查詢實(shí)例有以下四個(gè)特點(diǎn):
l?1)直接對(duì)源數(shù)據(jù)脫敏后在報(bào)表 WEB 端進(jìn)行數(shù)據(jù)查詢和展示坎怪。
沒(méi)有按常規(guī)數(shù)據(jù)脫敏的方式罢坝,先將脫敏數(shù)據(jù)進(jìn)行分發(fā)入庫(kù)或入文件,而是直接將數(shù)據(jù)使用集算器 SPL 腳本進(jìn)行脫敏搅窿,配合報(bào)表的大數(shù)據(jù)集異步數(shù)據(jù)加載實(shí)現(xiàn)了大數(shù)據(jù)的即時(shí)脫敏數(shù)據(jù)查詢展示嘁酿。免去源數(shù)據(jù)脫敏 -> 目標(biāo)入庫(kù) -> 數(shù)據(jù)展示的目標(biāo)入庫(kù)步驟。
l?2)免去新建數(shù)據(jù)脫敏庫(kù)步驟男应,減少脫敏工作量闹司。
為了應(yīng)對(duì)一些老項(xiàng)目或特殊情況,比如脫敏的數(shù)據(jù)表都是明文顯示沐飘,但是不能分發(fā)或新建脫敏后的數(shù)據(jù)庫(kù)表游桩,通過(guò)對(duì)明文數(shù)據(jù)直接抽取加密,免去新建脫密庫(kù)步驟耐朴,減少整體脫敏工作量借卧。
l?3)自定義配置數(shù)據(jù)脫敏規(guī)則。
可以靈活配置規(guī)則文件筛峭,滿足不同的規(guī)則配置需求谓娃。
l?4)動(dòng)態(tài)控制數(shù)據(jù)是否開(kāi)啟脫敏權(quán)限。
可以根據(jù)平臺(tái)用戶查看數(shù)據(jù)的權(quán)限蜒滩,動(dòng)態(tài)的傳遞參數(shù)值控制是否對(duì)數(shù)據(jù)進(jìn)行脫敏顯示,一方面防止數(shù)據(jù)的泄密奶稠,從底層保證數(shù)據(jù)安全俯艰,另一方面也為高權(quán)限客戶提供查看敏感數(shù)據(jù)的途徑。