本文將說明SQL Server 2016中三項與安全性有關的新功能:一律加密、資料列層級安全性及動態資料遮罩,讓企業即使將資料放在公有雲上也能擁有資料的所有權,並且可以管理資料存取權限,為資料建立遮罩避免外流。
此外,也可以利用Always Encrypted Wizard來達到相同目的,如圖3所示。
|
▲圖3 使用Always Encrypted Wizard建立資料行主要金鑰與資料行加密金鑰。 |
在AdventureWorks2016CTP3範例資料庫內,已經事先將Sales.CustomerPII資料表的SSN和CreditCardNumber資料行啟用一律加密,因此在沒有資料行主要金鑰(Column Master Keys)的環境中只會看到加密後的結果,如圖4所示。
|
▲圖4 SSN和CreditCardNumber資料行已啟用一律加密,若無資料行主要金鑰,則會看到編碼後的內容。 |
若要解密,必須匯入建立資料行主要金鑰所使用的憑證,其路徑為「範例程式碼解壓縮路徑SQLServer2016CTP3Samples\AlwaysEncrypted\Always EncryptedCMK.pfx」。
於憑證匯入精靈選擇預設存放位置為目前使用者後,按下〔下一步〕按鈕,如圖5所示。
|
▲圖5 匯入範例程式碼中用來建立資料行主要金鑰的憑證。 |
如圖6所示,確認憑證檔案路徑無誤後,再按下〔下一步〕按鈕。
|
▲圖6 確認憑證路徑。 |
輸入私密金鑰密碼為「AlwaysEncrypted」,並按下〔下一步〕按鈕,如圖7所示。
|
▲圖7 輸入私密金鑰密碼。 |
然後,使用預設值來自動依據憑證類型選取憑證存放區,如圖8所示。
|
▲圖8 選擇憑證存放位置。 |
若一切順利,按下〔完成〕按鈕即可匯入憑證(圖9)。有了這張憑證,才可以正常使用資料行主要金鑰來解開一律加密所保護的資料行。
|
▲圖9 完成憑證匯入。 |
隨即重新連接到Database Engine,並如圖10所示在〔Additional Connection Parameters〕頁籤內輸入「Column Encryption Setting=Enabled」的連線
參數。
|
▲圖10 使用Column Encryption Setting連線參數。 |
如圖11所示,接著重新查詢Sales.CustomerPII資料表的SSN和CreditCardNumber資料行,就可以看到解密後的明文。
|
▲圖11 SSN和CreditCardNumber資料行解密後的結果。 |