跳轉到主要內容
公司博客上

執行與PII列級加密,避免數據重複

使用Fernet加密庫、udf和磚秘密PII悄悄地安全數據

2020年11月20日 公司博客上

分享這篇文章

這篇文章通過Keyuri國王,帶領軟件工程師,Fred Kimball,軟件工程師,西北相互的。


保護PII(個人身份信息)是非常重要的數據泄露和記錄的數量與敏感信息暴露每天向上趨勢。為了避免成為下一個受害者和保護用戶身份盜竊和欺詐,我們需要把多層的數據和信息安全。

當我們使用磚平台,我們需要確保我們隻允許正確的人對Beplay体育安卓版本敏感信息的訪問。使用結合Fernet加密庫,用戶定義函數(udf)和磚的秘密,西北PII相互已經開發了一個程序加密信息,隻允許那些有業務需要解密,沒有額外的步驟讀者所需的數據。

PII保護的必要性

管理任何數量的客戶數據PII這些天幾乎肯定需要保護。這是一個大的風險情況下,如各種規模的組織資本一個數據違反導致數以百萬計的敏感客戶記錄被盜由於一個簡單的配置錯誤。而加密的存儲設備和column-masking在表級別是有效的安全措施,未經授權的內部訪問敏感數據仍然構成了重大威脅。因此,我們需要一個解決方案限製普通用戶檢索的文件或表訪問敏感信息在磚。

然而,我們還需要那些有業務需要讀取敏感信息能夠這樣做。我們不希望有不同的每種類型的用戶如何讀取表。正常和解密讀取都應該發生在同一個三角洲湖對象來簡化查詢數據分析和報告建設施工。

構建過程執行列級加密

鑒於這些安全需求,我們試圖創建一個過程是安全的,低調的,容易管理。以下圖提供了一個高度概括這一過程所需的組件

過程數據磚三角洲湖PII執行列級加密和安全數據。

與Fernet PII寫保護

這個過程的第一步是通過加密來保護數據。一個可能的解決方案是Fernet Python庫。Fernet使用對稱加密,建立一些標準加密原語。這個圖書館是加密中使用UDF將使我們dataframe加密任何給定的列。存儲加密密鑰,我們使用磚秘密訪問控製,隻允許數據攝入過程來訪問它。一旦數據被寫入我們的三角洲湖表、PII列持有的價值觀如社會安全號碼、電話號碼、信用卡號碼和其他未經授權的用戶標識符將無法閱讀。

閱讀受保護的數據從一個視圖定製UDF

一旦我們有書麵和保護敏感數據,我們需要一種方法對特權用戶的敏感數據。需要做的第一件事是創建一個永久的UDF的蜂巢實例運行在磚上。為了讓一個UDF是永久性的,必須用Scala編寫的。幸運的是,Fernet還有一個Scala實現,我們可以利用解密。這個UDF還訪問相同的秘密我們寫執行解密,加密中使用,在這種情況下,它被添加到火花集群的配置。這要求我們增加集群為特權和非特權用戶訪問控製來控製他們的訪問鍵。UDF創建之後,我們可以使用它在我們的視圖定義特權用戶的數據進行解密。

目前,我們有兩個視圖對象為單個數據集,分別為特權和非特權用戶。非特權用戶的觀點沒有UDF,所以他們會看到PII值作為加密的值。的其他視圖特權用戶確實有UDF,所以他們可以看到解密值在純文本為他們的業務需求。訪問控製的這些觀點也表提供的訪問控製數據磚。

在不久的將來,我們要利用新磚特性動態視圖功能。這些動態視圖函數允許我們隻使用一個視圖和輕鬆地返回加密或解密值基於磚集團的一員。這將減少我們在三角洲湖創建對象和簡化我們的表訪問控製規則。

實現允許用戶做開發或分析而不用擔心他們是否需要解密值讀取視圖,僅允許訪問那些業務需求。

這種方法的優點列級加密

總之,使用這個過程的優點是:

  • 加密可以使用現有的執行Python或Scala庫
  • PII敏感數據時,一個附加的安全層存儲在三角洲湖
  • 使用同一個三角洲湖對象表示用戶提供所有級別的訪問對象
  • 分析師通暢PII是否有權閱讀

這可能是什麼樣子的一個例子,下麵的筆記本電腦可能會提供一些指導:

額外的資源:

Fernet庫

創建永久UDF

動態視圖功能

免費試著磚

相關的帖子

看到所有公司博客上的帖子
Baidu
map