You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Databricks临时Job Cluster通过Service Principal连接Azure SQL咨询

Azure Databricks Notebook 连接 Azure SQL Database 实战方案

一、连接示例代码(结合Secret凭据)

针对按需启停的Job Cluster,直接用Databricks Secrets管理敏感凭据,代码如下:

# 从Databricks Secret Scope读取服务主体信息
sp_id = dbutils.secrets.get(scope="你的Secret Scope名称", key="service-principal-id")
sp_secret = dbutils.secrets.get(scope="你的Secret Scope名称", key="service-principal-secret")
tenant_id = dbutils.secrets.get(scope="你的Secret Scope名称", key="azure-tenant-id")

# 构建SQL DB连接地址
server_name = "你的SQL服务器名称.database.windows.net"
database_name = "你的数据库名称"
jdbc_url = f"jdbc:sqlserver://{server_name}:1433;database={database_name};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"

# AD服务主体认证参数
connection_properties = {
  "user": sp_id,
  "password": sp_secret,
  "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver",
  "authentication": "ActiveDirectoryServicePrincipal",
  "tenantId": tenant_id
}

# 读取SQL表数据示例
df = spark.read.jdbc(url=jdbc_url, table="目标表名", properties=connection_properties)

# 写入SQL表数据示例(追加模式)
df.write.jdbc(url=jdbc_url, table="目标表名", mode="append", properties=connection_properties)

二、Service Principal ID和Secret相关问题解答

1. 基本概念与管理员需配置项

  • Service Principal ID:Azure AD中注册的服务主体唯一标识,相当于服务级别的"用户名",用于代表应用/服务完成Azure资源的身份认证。
  • Service Principal Secret:服务主体的认证密码,相当于服务级别的"登录密码",仅在生成时可见,需妥善保存。

若你已有AD权限,需让管理员完成以下配置:

  • 在Azure AD中注册应用程序(服务主体),生成对应的Service Principal ID。
  • 为该服务主体创建客户端密码(Secret)。
  • 给服务主体分配Azure SQL Database的权限,比如db_datareader/db_datawriter或更高权限,确保能读写目标库。
  • 配置Azure SQL服务器的AD管理员:只有设置了AD管理员,服务主体才能通过AD认证连接SQL DB。

2. Azure门户中获取两项信息的步骤

获取Service Principal ID:

  1. 登录Azure门户,进入Azure Active Directory → 应用注册。
  2. 找到目标服务主体应用,进入详情页。
  3. 在概述页面复制应用程序(客户端)ID,即为Service Principal ID。

获取Service Principal Secret:

  1. 在服务主体应用详情页,进入证书和密码 → 客户端密码。
  2. 点击新建客户端密码,设置过期时间后点击添加。
  3. 复制生成的值(仅生成时可查看,务必立刻保存),即为Service Principal Secret。

三、Job Cluster结合Secret的注意事项

  • 确保Databricks工作区已创建Secret Scope,并将Service Principal ID、Secret、租户ID存入对应Key中。
  • Job Cluster启动时会自动加载Secret Scope权限,只要Notebook代码中的Scope和Key名称正确,即可正常读取凭据,无需额外配置。

内容的提问来源于stack exchange,提问作者Developer Rajinikanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:33:09