真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

數(shù)據(jù)脫敏的處理方法及查詢

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ù)之一?!?br/>
2)、本文介紹的脫敏數(shù)據(jù)報(bào)表查詢將利用潤(rùn)乾集算器編寫(xiě) 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ù)集使用。

創(chuàng)新互聯(lián)公司于2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元東臺(tái)做網(wǎng)站,已為上家服務(wù),為東臺(tái)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

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)乾集算器編寫(xiě) 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ù)一致性和有效性:

保持原有數(shù)據(jù)特征

數(shù)據(jù)脫敏前后必須保證數(shù)據(jù)特征的保持,例如:×××號(hào)碼由十七位數(shù)字本體碼和一位校驗(yàn)碼組成,分別為區(qū)域地址碼(6 位)、出生日期(8 位)、順序碼(3 位)和校驗(yàn)碼(1 位)。那么×××號(hào)碼的脫敏規(guī)就需要保證脫敏后依舊保持這些特征信息。

保持?jǐn)?shù)據(jù)之間的一致性

在不同業(yè)務(wù)中,數(shù)據(jù)和數(shù)據(jù)之間具有一定的關(guān)聯(lián)性。例如:出生年月或年齡和出生日期之間的關(guān)系。同樣,×××信息脫敏后仍需要保證出生年月字段和×××中包含的出生日期之間的一致性。

保持業(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)主體信息的一致性。

多次脫敏之間的數(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ù)文件中,具體如下所示:

數(shù)據(jù)脫敏的處理方法及查詢

使用集算器的 SPL 可以按照業(yè)務(wù)場(chǎng)景要求自行定義和編寫(xiě)脫敏規(guī)則,比如針對(duì)上面的人員信息:姓名、×××號(hào)、地址、電話號(hào)碼、卡號(hào)等進(jìn)行不落地脫敏,滿足數(shù)據(jù)脫敏需要。

集算器是一個(gè)無(wú)框架,可快速部署開(kāi)發(fā)的數(shù)據(jù)計(jì)算中間件工具,能夠直接運(yùn)行編寫(xiě)好的 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”文件中。

數(shù)據(jù)脫敏的處理方法及查詢

1.4.1 數(shù)據(jù)替換

數(shù)據(jù)脫敏要求:用設(shè)置的固定虛構(gòu)值替換真值。例如將手機(jī)號(hào)碼統(tǒng)一替換為 13800013800。

使用集算器 SPL 編碼實(shí)現(xiàn)的腳本,如下:


A

B

1

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").import@t()

/導(dǎo)入文本數(shù)據(jù)

2

=A1.run(mobile=13800013800)

/電話號(hào)碼數(shù)據(jù)替換

A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)。手機(jī)號(hào)碼脫敏前的顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

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)碼脫敏后的顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

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)的腳本,如下:


A

B

1

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").import@t()

/導(dǎo)入文本數(shù)據(jù)

2

=A1.run(address="******")

/地址隱藏式無(wú)效化

3

=A1.run(address=left(address,3)+"******")

/地址截?cái)酂o(wú)效化

A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)。地址脫敏前顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

A2:將地址進(jìn)行數(shù)據(jù)隱藏式的無(wú)效化脫敏。直接使用run()函數(shù)對(duì) address 地址字段數(shù)據(jù)進(jìn)行無(wú)效化的 ****** 處理。數(shù)據(jù)無(wú)效化后,地址脫敏后的顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

A3:將地址進(jìn)行數(shù)據(jù)截?cái)嗍降臒o(wú)效化脫敏。使用left()函數(shù)對(duì) address 地址源字符串的左邊三位字串加上 ****** 的截?cái)酂o(wú)效化處理。截?cái)酂o(wú)效化的地址脫敏后顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

1.4.3 隨機(jī)化

數(shù)據(jù)脫敏要求:采用隨機(jī)數(shù)據(jù)代替真值,保持替換值的隨機(jī)性以模擬樣本的真實(shí)性。例如用隨機(jī)生成的姓和名代替真值。

使用集算器 SPL 編碼實(shí)現(xiàn)的腳本,如下:


A

B

C

1

=file("姓氏.txt").import@it()

=file("名字.txt").import@it()

/引入外部姓名字典表,用于隨機(jī)生成姓名信息

2

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").import@t()

/導(dǎo)入文本數(shù)據(jù)

3

=A2.run(name=A1(rand(A1.len())+1)+B1(rand(B1.len())+1))

/姓名隨機(jī)化

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ù)。姓名脫敏前顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

A3:將姓名進(jìn)行隨機(jī)化脫敏。直接使用run()函數(shù)對(duì) name 姓名進(jìn)行隨機(jī)化,使用rand()函數(shù)從“姓氏.txt”和“名字.txt”外部字典表隨機(jī)化組合生成姓名。隨機(jī)化后姓名的顯示值如下:

數(shù)據(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)的腳本,如下:


A

B


1

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").import@t()

/導(dǎo)入文本數(shù)據(jù)

2

=A1.run(operatetime=string(operatetime,"yyyy-MM-dd   HH:00:00"))

/日期的偏移和取整

A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)。操作日期脫敏前顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

A2:將操作日期進(jìn)行時(shí)間的偏移和取整脫敏。使用使用string()函數(shù)按照偏移和取整規(guī)則格式化成“yyyy-MM-dd HH:00:00”格式,操作時(shí)間脫敏后的顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

【注意】脫敏后的日期時(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)的腳本,如下:


A

B


1

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").import@t()

/導(dǎo)入文本數(shù)據(jù)

2

=A1.run(idnumber=left(string(idnumber),6)+"********"+

right(string(idnumber),4))

/×××號(hào)掩碼屏蔽

A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)?!痢痢撂?hào)脫敏前顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

A2:將×××號(hào)的出生日期進(jìn)行掩碼屏蔽脫敏。使用left()函數(shù)截取×××號(hào)的左邊 6 位 + 字符串 ********+right()函數(shù)截取×××號(hào)右邊 4 位替換源×××字符串,×××號(hào)碼脫敏后的顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

1.4.6 靈活編碼

數(shù)據(jù)脫敏要求:在需要特殊脫敏規(guī)則時(shí),可執(zhí)行靈活編碼以滿足各種可能的脫敏規(guī)則。比如用固定字母和固定位數(shù)的數(shù)字替代合同編號(hào)真值。

使用集算器 SPL 編碼實(shí)現(xiàn)的腳本,如下:


A

B


1

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").import@t()

/導(dǎo)入文本數(shù)據(jù)

2

=A1.run(contractno="RAQA"+string(year(now()))+

mid(string(contractno),9,4)+string(#,"#000000000"))

/合同編號(hào)靈活編碼

A1:導(dǎo)入“數(shù)據(jù)脫敏驗(yàn)證表”的文本數(shù)據(jù)。合同編號(hào)脫敏前顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

A2:將合同編號(hào)進(jìn)行自定義編碼脫敏。自定義編碼規(guī)則:4 位固定碼 + 當(dāng)前年份 + 源目標(biāo)字符串 4 位號(hào)碼 +9 位數(shù)值組成,使用的函數(shù)已有介紹,不再贅述,合同編號(hào)脫敏后顯示值如下:

數(shù)據(jù)脫敏的處理方法及查詢

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ā)到文本的腳本如下:


A

B

C

1

=file("姓氏.txt").import@it()

=file("名字.txt").import@it()

/引入外部姓名字典表,用于隨機(jī)組合生成姓名信息

2

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").cursor@t()

/導(dǎo)入大數(shù)據(jù)量文本數(shù)據(jù)


3

=A2.run(contractno="RAQA"+string(year(now()))+mid(string(contractno),9,4)+string(#,"#000000000"),name=A1(rand(A1.len())+1)  +B1(rand(B1.len())+1),address=left(address,3)+"******",mobile=13800013800,idnumber=left(string(idnumber),6)+"********"+right(string(idnumber),4),operatetime=string(operatetime,"yyyy-MM-dd   HH:00:00"))

/按照脫敏規(guī)則進(jìn)行數(shù)據(jù)表脫敏

4

>file("脫敏數(shù)據(jù)結(jié)果表.txt").export@at(A3)

/直接導(dǎo)出到文本文件


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表示追加寫(xiě), 不使用 @a 表示覆蓋,分發(fā)到文本的脫敏結(jié)果如下:

數(shù)據(jù)脫敏的處理方法及查詢

【注意】集算器 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 為例)的腳本如下:


A

B

C

1

=file("姓氏.txt").import@it()

=file("名字.txt").import@it()

/引入外部姓名字典表,用于隨機(jī)組合生成姓名信息

2

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").cursor@t()

/導(dǎo)入大數(shù)據(jù)量文本數(shù)據(jù)

3

=A2.run(contractno="RAQA"+string(year(now()))+mid(string(contractno),9,4)+string(#,"#000000000"),name=A1(rand(A1.len())+1)  +B1(rand(B1.len())+1),address=left(address,3)+"******",mobile=13800013800,idnumber=left(string(idnumber),6)+"********"+right(string(idnumber),4),operatetime=string(operatetime,"yyyy-MM-dd   HH:00:00"))

/按照脫敏規(guī)則進(jìn)行數(shù)據(jù)表脫敏

4

=connect("MySQL")

/連接 MySQL 數(shù)據(jù)源

5

>A4.update(A3,personinfo,code,contractno,name,address,

mobile,idnumber,operatetime;code)

/執(zhí)行 update 更新,直接導(dǎo)出到數(shù)據(jù)庫(kù)中

6

>A4.close()

/關(guān)閉數(shù)據(jù)庫(kù)連接

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é)果如下

數(shù)據(jù)脫敏的處理方法及查詢

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 為例):


A

B


1

同上

/引入外部姓名字典表,用于隨機(jī)組合生成姓名信息

2

=connect("MySQL")

/連接 MySQL 數(shù)據(jù)源

3

=A2.cursor("select *   from personinfo_copy")

/游標(biāo)讀取 MySQL 中 personinfo_copy 表待脫敏數(shù)據(jù)

4

同上 A3 單元格

/按照脫敏規(guī)則進(jìn)行數(shù)據(jù)表脫敏

5

>A2.update(A4,personinfo_copy_test,code,contractno,

name,address,mobile,idnumber,operatetime;code)  

/執(zhí)行 update 更新,直接將脫敏數(shù)據(jù)導(dǎo)出到數(shù)據(jù)庫(kù)的 personinfo_copy_test 表中

6

>A2.close()

/關(guān)閉數(shù)據(jù)庫(kù)連接

A1:同上。

A2:連接 MySQL 數(shù)據(jù)源。

A3:游標(biāo)讀取 MySQL 中表“personinfo_copy”的待脫敏數(shù)據(jù)。該表的數(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é)果如下:

數(shù)據(jù)脫敏的處理方法及查詢

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ā)到文本的腳本如下:


A

B


1

同上

/引入外部姓名字典表,用于隨機(jī)組合生成姓名信息

2

同上

/連接 MySQL 數(shù)據(jù)源

3

同上

/游標(biāo)讀取 MySQL 中 personinfo_copy 表待脫敏數(shù)據(jù)

4

同上 A4 單元格

/按照脫敏規(guī)則進(jìn)行數(shù)據(jù)表脫敏

5

>file("脫敏數(shù)據(jù)結(jié)果表.txt").export@at(A4)

/直接導(dǎo)出到文本文件

6

>A2.close()

/關(guān)閉數(shù)據(jù)庫(kù)連接

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í)例,大致流程如下:數(shù)據(jù)脫敏的處理方法及查詢

1.5.1 集算器數(shù)據(jù)脫敏 SPL 腳本準(zhǔn)備

   利用上面已有的"數(shù)據(jù)脫敏驗(yàn)證表.txt" 文本數(shù)據(jù),實(shí)現(xiàn)脫敏數(shù)據(jù)報(bào)表查詢,具體腳本如下:


A

B

C

D

1

=file("姓氏.txt").import@it()

=file("名字.txt").import@it()

/引入外部姓名字典表,用于隨機(jī)組合生成姓名信息

2

func

/調(diào)用配置文件中的數(shù)據(jù)脫敏規(guī)則進(jìn)行數(shù)據(jù)脫敏


3


=file("數(shù)據(jù)脫敏規(guī)則配置.ini").property(A2(2))

4


if   type=="type2"

=eval(B3,"A1","A1","B1","B1")

/特殊規(guī)則的動(dòng)態(tài)解析替換 "?" 值

5



=eval(B3,A2(1))

/通用規(guī)則的動(dòng)態(tài)解析替換 "?" 值

6


return ${B3}



7

=file("數(shù)據(jù)脫敏驗(yàn)證表.txt").cursor@t()



8

if type!=0

=



9


=A7.run(contractno=func(A2,[contractno,"type1"]),name=func(A2,[name,"type2"]),address=func(A2,[address,"type3"]),

mobile=func(A2,[mobile,"type4"]),idnumber=func(A2,[idnumber,"type5"]),operatetime=func(A2,[operatetime,"type6"]))

/按照脫敏規(guī)則進(jìn)行數(shù)據(jù)表脫敏

10

return if(type!=0,B9,A7)

/說(shuō)明:參數(shù) type 控制是否對(duì)數(shù)據(jù)進(jìn)行脫敏 (0: 不脫敏)

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)限控制。

數(shù)據(jù)脫敏的處理方法及查詢

至此,集算器的 SPL 腳本編寫(xiě)和設(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)容如下:

數(shù)據(jù)脫敏的處理方法及查詢

配置文件說(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ù)定義和編寫(xiě)脫敏規(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ù)據(jù)脫敏的處理方法及查詢

設(shè)置集算器 SPL 腳本為報(bào)表的數(shù)據(jù)集“ds1”,選中對(duì)應(yīng)的 dfx 腳本,并配置 type 參數(shù)表達(dá)式,具體如下:

數(shù)據(jù)脫敏的處理方法及查詢

開(kāi)發(fā)的報(bào)表模板“報(bào)表數(shù)據(jù)脫敏.rpx”如下:

數(shù)據(jù)脫敏的處理方法及查詢

【注意】這里面調(diào)用的集算器數(shù)據(jù)集返回的是游標(biāo),需要在報(bào)表屬性 -> 常規(guī) 設(shè)置集算器數(shù)據(jù)集為大數(shù)據(jù)集,并且該功能需要報(bào)表產(chǎn)品包含集算器授權(quán)。

數(shù)據(jù)脫敏的處理方法及查詢

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ù)如下:

數(shù)據(jù)脫敏的處理方法及查詢

當(dāng)參數(shù) type 設(shè)置非“0”值時(shí),報(bào)表展示數(shù)據(jù)如下:

數(shù)據(jù)脫敏的處理方法及查詢

1.5.5 脫敏數(shù)據(jù)報(bào)表查詢總結(jié)

這個(gè)脫敏數(shù)據(jù)報(bào)表查詢實(shí)例有以下四個(gè)特點(diǎn):

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ù)步驟。

2)免去新建數(shù)據(jù)脫敏庫(kù)步驟,減少脫敏工作量。

為了應(yīng)對(duì)一些老項(xiàng)目或特殊情況,比如脫敏的數(shù)據(jù)表都是明文顯示,但是不能分發(fā)或新建脫敏后的數(shù)據(jù)庫(kù)表,通過(guò)對(duì)明文數(shù)據(jù)直接抽取加密,免去新建脫密庫(kù)步驟,減少整體脫敏工作量。

3)自定義配置數(shù)據(jù)脫敏規(guī)則。

可以靈活配置規(guī)則文件,滿足不同的規(guī)則配置需求。

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ù)的途徑。


本文名稱:數(shù)據(jù)脫敏的處理方法及查詢
URL網(wǎng)址:http://weahome.cn/article/jjojsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部