Visual Studio Code SQL Server 连接到使用 Azure Key Vault 的加密数据库(始终加密)

msc*_*der 5 sql-server odbc visual-studio-code azure-keyvault always-encrypted

我正在尝试从 macOS 上的 VSCode 到 SQL Server 数据库的连接,该数据库使用始终加密的机制来保护某些列。主密钥存储在Azure Key Vault中。

使用微软提供的始终加密的指南能够成功连接到数据库。

在我的 mac 上使用 VSCode 不打开加密/解密的简单连接也是如此。我使用了mssql-extension插件并在设置中提供了必要的信息,我能够查询数据

设置

"mssql.connections": [
    {
        "server": "XXXXXXXX.database.windows.net",
        "database": "AlwaysEncrypted",
        "authenticationType": "SqlLogin",
        "user": "XXXXX",
        "password": "",
        "emptyPasswordInput": false,
        "savePassword": true,
        "profileName": "AlwaysEncrypted"
    }
]
Run Code Online (Sandbox Code Playgroud)

询问

SELECT * FROM EmployeeDetails
Run Code Online (Sandbox Code Playgroud)

结果

[
  {
    "EmployeeDetailsId": "1",
    "EmployeeNo": "FE00000001",
    "FirstName": "0x013EC8AB61767E1C3D934AB061BCA658B6948637812450C8245DCE4C447F59FD1D6252069A36A67E3477E1C5FB24D860E72FBCC65F98C92B92AB873CE55349672A",
    "MiddleName": "0x015354526EC17EB1151AE918514E565507EDCB5691B4215C45798CA86EB11C47EECA579242926EDFE9F6543006177CBFC03E0F95CD0D8CAE6C941AE173AAF2B925",
    "LastName": "0x0170B3FD2B0416E0607312FB2A67B0F42798EC1871FEAB90AB81235ADACDE1C4F5614099FA3B61E59FEB2D6AD599CB3A9FD031FE56F327F0C80F4BA963EE7E155A",
    "DateOfBirth": "1985-08-12 00:00:00.000"
  }
]
Run Code Online (Sandbox Code Playgroud)

遵循两个指南

我确实尝试使用mssql 扩展创建另一个连接并提供ODBC 连接字符串,但最终在查询时未能获得解密数据(连接建立得很好)。结果与上面发布的结果相同

连接字符串设置

"mssql.connections": [
    {
        "server": "XXXXXXXX.database.windows.net",
        "database": "AlwaysEncrypted",
        "authenticationType": "SqlLogin",
        "user": "XXXXX",
        "password": "",
        "emptyPasswordInput": false,
        "savePassword": true,
        "profileName": "AlwaysEncrypted_WithKeyVault",
        "connectionString": "SERVER=XXXXXX.database.windows.net;Trusted_Connection=Yes;DATABASE=AlwaysEncrypted;ColumnEncryption=Enabled;KeyStoreAuthentication=KeyVaultPassword;KeyStorePrincipalId=USER.NAME@DOMAIN.com;KeyStoreSecret=PASSWORD"
    }
]
Run Code Online (Sandbox Code Playgroud)

谁能帮我弄清楚如何正确设置连接,以便在使用 VSCode 时透明地完成加密/解密?

小智 1

这是一个陈旧的问题,但对于最终也发现这个问题的人来说:

我通过在 settings.json 数组中进行以下设置,成功连接到 VS Code SQL Server mssql.connections

   {
      "server": "XXXX.serverhost.domain",
      "database": "XXXX",
      "authenticationType": "SqlLogin",
      "user": "XXXX",
      "password": "",
      "savePassword": true,
      "profileName": "XXXX",

      // specifically the settings below were the important ones
      "encrypt": true,
      "trustServerCertificate": true,
      "persistSecurityInfo": true
    }
Run Code Online (Sandbox Code Playgroud)