2017-05-24 41 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

几乎到了那里所有的方式 - 可以看到,当我选择“预览”未加密的数据,但它与上面的错误执行的包失败 –