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