2017-05-24 57 views
2

有沒有人成功地使用SSIS從SQL服務器,它使用始終在Azure中的關鍵庫(而不是Windows證書商店,這是我所知道的是可能的密鑰存儲加密的拉動和解密數據)?使用SQL Server始終用SSIS和Azure的主要跳馬加密

由於設置進入Azure的主要庫包括編程註冊提供給SqlClient,我在想:

是否SSIS的腳本任務共享相同的應用程序域/上下文隨後的ADO.NET數據流任務,因爲它必須訪問SqlClient提供商,設置如下:

var provs = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>(); 
provs.Add(SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider); 
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers); 

此外,腳本任務默認爲.NET 4.5,但始終處於加密功能僅適用於4.6.1可用。當我嘗試在腳本編輯器中設置框架時,當我重新打開項目時,它總是會重置爲4.5。

我希望能找到一個例子,因爲這一設置涉及到註冊密鑰庫&在GAC的所有依賴組件。

更新2017年5月5日 感謝@Josh G,我能夠使用ODBC驅動程序獲得95%的工作效率。

在我的ODBC數據源,我現在可以看到未加密的數據時,我選擇「預覽」,但是運行程序包,我碰到下面的錯誤後:

Error: 0x384 at Broker, ODBC Source [12]: Open Database Connectivity (ODBC) error occurred. state: 'CE202'. Native Error Code: 0. [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]The keystore provider AZURE_KEY_VAULT failed to decrypt the ECEK https://keyvault.vault.azure.net:443/keys/CMKAuto1/mykey with RSA_OAEP.

Error: 0x384 at Broker, ODBC Source [12]: Open Database Connectivity (ODBC) error occurred. state: 'CE269'. Native Error Code: 0. [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Error 12038 sending request to https://mykeyvault.vault.azure.net:443 Error: 0x384 at Broker, ODBC Source [12]: Open Database Connectivity (ODBC) error occurred. state: 'CE263'. Native Error Code: 0. [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Error verifying signature of ECEK.

+0

的4.6.1沒有堅持似乎是對我的錯誤。我的猜測/希望是當編譯/保存項目時使用正確的框架將序列化到SSIS包中的程序集 - 否則任務將具有無效的字節碼。我感到沉悶的感覺是,數據流中的OOB ADO.NET源組件不知道如何解密數據,您必須編寫自定義腳本組件才能訪問它。我沒有一個AE實例或Azure的密鑰存儲確認,只是很多假設 – billinkc

+0

我知道OOB ADO工作與Windows證書商店,所以是希望上面的代碼將爲keyvault工作。 –

回答

2

對於這個問題的答案很簡單,它如果使用ODBC驅動程序連接到始終加密的數據庫,則可以支持所請求的方案。 ODBC驅動程序允許您在連接字符串中指定驅動程序用於連接AKV並對SQL執行加密/解密操作的AKV憑據。

最佳, 喬希

+0

幾乎到了那裏所有的方式 - 可以看到,當我選擇「預覽」未加密的數據,但它與上面的錯誤執行的包失敗 –