我想在我的 SQL Server 数据库中激活 Always Encrypted,以保护一些敏感列并从外部应用程序访问它。
根据我的理解,我必须:
要点是我需要在我的客户端应用程序上处理 CMK。
我的 CMK 将是存储在 Wibu CodeMeter 中的加密密钥,作为许可证中的秘密,并且不允许直接从许可证中提取密钥。相反,它提供了一个 API 来加密/解密数据,指定密钥存储在哪个许可证中。
到目前为止,似乎还没有办法将这两种技术结合起来,因为我无法从 CodeMeter 获取密钥以将其传递给驱动程序库。这让我提出了这些问题:
鉴于我不是安全专家,我想要么我错过了一些东西,要么这种组合是不可能的,从架构的角度来看,我试图做的事情根本没有意义。
我的理解是错误的。要连接到启用始终加密的 SQL Server,只要在客户端应用程序中安装了 SQL Server ODBC 驱动程序,具有适当参数的 ODBC URL 就足够了。
连接字符串示例:
jdbc:sqlserver://host\dbname;integratedSecurity=true;encrypt=true;database=MyDB;trustServerCertificate=true;columnEncryptionSetting=Enabled
设置
columnEncryptionSetting=Enabled
是连接到启用“始终加密”的实例所需的设置。
仅支持开箱即用的 Azure Key Store 和 Windows Credential Store;可以通过使用专用 API 实现连接器来连接到其他商店:更多详细信息,请参阅官方 MS 文档。