一千萬個為什麽

搜索

SQL在Visual Studio數據庫項目中始終加密



我正在使用SQL 2016 AlwaysEncrypted來處理客戶數據(SSN,生日等)等。我們正試圖避免在源控制Visual Studio數據庫項目中保存Encryption Value項,因為這會破壞整個加密的目的。我們希望部署在生產環境中。什麽是好的解決方案?

例子:(我們不想在我們的項目中存儲encrypted_value)

CREATE COLUMN ENCRYPTION KEY [ColumnEncryptionKey1]
WITH VALUES
(
   COLUMN_MASTER_KEY = [ColumnMasterKey1],
   ALGORITHM = 'RSA_OAEP',
   ENCRYPTED_VALUE =0x016E000001630075007200720065006E00740075007300650072002F006D0079

我的建議解決方案:

1)列主密鑰證書:需要保存在Application Web Server或Azure Data Vault中; (不是SQL生產服務器)。

我會編寫利用(動態SQL,C#,Powershell等)的預部署腳本嗎? 這將從Web服務器文本文件或Vault文件中獲取加密密鑰路徑,放入下面的語句中並運行。

CREATE COLUMN MASTER KEY [ColumnMasterKey1]
WITH
(
   KEY_STORE_PROVIDER_NAME = N'[SomeProviderName]',
   KEY_PATH = N'[SomeKeyPath]'
)

2) The Column Encryption Key: is required to be saved on SQL Server. It can be autogenerated using web resources: MSDNGenerateColumnEncryptionKey or MSFTColumnEncryptionKey

-- Generate a column encryption key, encrypt it with the column master key and create column encryption key metadata in the database. 

$cekName = "CEK1"
New-SqlColumnEncryptionKey -Name $cekName  -InputObject $database -ColumnMasterKey $cmkName

在使用powershell生成後,放入腳本。

CREATE COLUMN ENCRYPTION KEY [ColumnEncryptionKey1]
WITH VALUES
(
   COLUMN_MASTER_KEY = [ColumnMasterKey1],
   ALGORITHM = 'RSA_OAEP',
   ENCRYPTED_VALUE = Extract value from Powershell Scripts Above)

這是適當的解決方案嗎?

任何人都知道如何處理Source Control Project文件中的AlwaysEncryption設置? Guzman,Ozar,Aaron Bertrand? :)

dba, msdn

轉載註明原文: SQL在Visual Studio數據庫項目中始終加密

一共有 0 個回答: