是否有人成功使用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的签名。
答案 0 :(得分:2)
这个问题的简短答案是,如果您使用ODBC驱动程序连接到始终加密的数据库,则可以支持所请求的方案。 ODBC驱动程序允许您在连接字符串中指定AKV凭据,驱动程序使用该凭证与AKV连接并对SQL执行加密/解密操作。
最佳, 约什
答案 1 :(得分:0)
这是一个有点旧的线程,但是如果有人遇到类似的错误“ [Microsoft] [用于SQL Server的ODBC驱动程序13] [SQL Server]验证ECEK签名时出错”,请在此处进行更新。
确保用于对Azure Key Vault进行身份验证的Service Principle / AD App具有以下密钥权限。
获取,列出,解密,解包和验证