>我正在尝试使用 SSIS(Visual Studio 2017)将数据插入到 Azure SQL 表中,其中包含通过始终加密加密的列和存储在 Azure 密钥保管库中的列主密钥,但我不断收到错误。
根据我在其他帖子中找到的建议,我正在使用 ODBC 数据提供程序的 ADO.NET 目标。该用户是在 Azure SQL 数据库中预配的 Azure Active Directory 用户,因此能够登录。它具有在密钥保管库的访问策略中授予的所有密钥特权。
我的 ODBC 连接字符串如下所示:
DRIVER=ODBC Driver 17 for SQL Server;SERVER=[dbs].database.windows.net;UID=[uid@example.com];PWD=[password];Authentication=ActiveDirectoryPassword;DATABASE=[database];ColumnEncryption=Enabled;KeyStoreAuthentication=KeyVaultPassword;KeyStorePrincipalId=[uid@example.com];KeyStoreSecret=[password]
我希望将其插入到表中,但它会导致此错误:
[ADO NET 目标 [2]] 错误:数据期间发生异常 插入时,从提供程序返回的消息是:错误 [CE269] [Microsoft][ODBC 驱动程序 17 for SQL Server][SQL Server]12038 错误 向 https://[keyVault].vault.azure.net:443 发送请求错误 [CE263][Microsoft][ODBC 驱动程序 17 for SQL Server][SQL Server]错误 验证 ECEK 的签名。错误 [CE202] [Microsoft][ODBC 驱动程序 17 for SQL Server][SQL Server]密钥库提供程序AZURE_KEY_VAULT 无法解密 ECEK https://[keyvault].vault.azure.net:443/keys/[cmk]/[version] with RSA_OAEP。
我能够通过 SSMS 和自定义控制台应用成功插入到表中,并验证加密是否按预期工作。此错误仅从 SSIS 发生。
我最近花了很多时间来做这件事。如果使用 ECEK 收到错误 12038,则需要在 Azure SQL 数据库中更新主密钥,而无需使用 :443。当 ODBC 连接尝试将 URL 与 AKV 中的 URL 匹配时,这将创建错误。这是简短的答案。我计划在有时间后立即提供整个解决方案。