首页 > 解决方案 > 从 Databricks 访问始终加密的数据

问题描述

我在 Azure SQL 托管实例中有一个带有“始终加密”列的表。我将列和主密钥存储在 Azure 密钥保管库中。

  1. 我的第一个问题是 - 如何从 Databricks 访问 Azure SQL 中的解密数据。为此,我通过 jdbc 连接到 Azure SQL。对于用户名和密码,我手动传递我的凭据
val jdbcHostname = "XXXXXXXXXXX.database.windows.net"
val jdbcPort = 1433
val jdbcDatabase = "ABCD"

val jdbcUrl = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcDatabase}"

// Create a Properties() object to hold the parameters.
import java.util.Properties
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")

val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionProperties.setProperty("Driver", driverClass)

import java.sql.DriverManager
val connection = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword)
connection.isClosed()

val user = spark.read.jdbc(jdbcUrl, "dbo.bp_mp_user_test", connectionProperties)
display(user)

当我这样做时,我可以显示数据,但它是加密数据。如何查看解密数据

  1. 我是 Azure 和 Databricks 组合的新手,所以仍在学习 Azure/Microsoft 堆栈。是否有任何其他形式的 jdbc 连接语法允许您解密。

  2. 我在 Azure Keyvault 中有密钥。那么我如何利用这些密钥以及与这些密钥相关的安全性,这样当有人访问此表时,它会在访问时在 Databricks 中显示加密/解密的数据。

标签: jdbcazure-sql-databasedatabricksazure-keyvaultalways-encrypted

解决方案


推荐阅读