使用SQL Server始终使用SSIS和Azure密钥保管库加密

时间:2017-05-24 17:28:07

标签: c# sql-server azure ssis odbc

是否有人成功使用SSIS从使用始终加密的SQL Server中提取和解密数据,该密钥存储位于Azure Key Vault中(不是Windows Cert Store,我知道可能)?

由于设置对Azure Key Vault的访问涉及以编程方式将提供程序注册到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。

我希望找到一个例子,因为设置它需要注册Key Vault&amp; GAC中的所有依赖关系程序集。

2017年5月5日更新 感谢@Josh G,我能够使用ODBC驱动程序使这95%工作。

在我的ODBC Source中,当我选择预览时,我现在可以看到未加密的数据,但是在运行包之后,我会收到以下错误:

  

错误:Broker的ODBC384,ODBC源[12]:开放数据库连接   发生(ODBC)错误。州:&#39; CE202&#39;。本机错误代码:0。   [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]密钥库   提供商AZURE_KEY_VAULT无法解密ECEK   https://keyvault.vault.azure.net:443/keys/CMKAuto1/mykey   与RSA_OAEP。

     

错误:Broker上的0x384,ODBC源[12]:打开数据库   发生连接(ODBC)错误。州:&#39; CE269&#39;。本机错误代码:   0. [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]错误12038向https://mykeyvault.vault.azure.net:443发送请求   错误:Broker上的0x384,ODBC源[12]:开放数据库连接   发生(ODBC)错误。州:&#39; CE263&#39;。本机错误代码:0。   [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]验证时出错   ECEK的签名。

2 个答案:

答案 0 :(得分:2)

这个问题的简短答案是,如果您使用ODBC驱动程序连接到始终加密的数据库,则可以支持所请求的方案。 ODBC驱动程序允许您在连接字符串中指定AKV凭据,驱动程序使用该凭证与AKV连接并对SQL执行加密/解密操作。

最佳, 约什

答案 1 :(得分:0)

这是一个有点旧的线程,但是如果有人遇到类似的错误“ [Microsoft] [用于SQL Server的ODBC驱动程序13] [SQL Server]验证ECEK签名时出错”,请在此处进行更新。

确保用于对Azure Key Vault进行身份验证的Service Principle / AD App具有以下密钥权限。

获取,列出,解密,解包和验证