在Databricks中使用Python获取Azure托管标识令牌
在Databricks中通过托管标识连接SQL Server(含令牌获取示例)
可行性说明
完全可行。在Azure Databricks环境中,你可以借助Azure托管标识(系统分配或用户分配类型)获取访问Azure SQL Server的令牌,全程无需硬编码凭据,安全性更高。
一、Python手动获取托管标识令牌示例
如果需要在自定义场景中手动获取令牌,可调用Databricks内置的元数据服务接口实现:
import requests # 目标资源为Azure SQL Server的标准资源ID resource_id = "https://database.windows.net/" token_request_url = f"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={resource_id}" # 请求头必须携带Metadata标识 headers = {"Metadata": "true"} response = requests.get(token_request_url, headers=headers) response.raise_for_status() # 解析返回的令牌 access_token = response.json()["access_token"] print(f"获取到的令牌片段:{access_token[:50]}...")
注:实际连接SQL Server时,Databricks可自动处理令牌获取逻辑,无需手动执行此步骤。
二、PySpark通过托管标识连接Azure SQL Server完整示例
这是更高效的直接连接方式,利用JDBC驱动结合托管标识自动完成身份验证:
1. 前置准备
- 已为Databricks工作区分配系统分配托管标识,或创建并关联了用户分配托管标识至集群
- 该托管标识已被授予Azure SQL Server的对应权限(如添加为数据库用户、分配读写角色)
2. 连接代码示例
# 配置SQL Server基础信息 sql_server_name = "your-sql-server-name.database.windows.net" database_name = "your-target-database" jdbc_connection_url = f"jdbc:sqlserver://{sql_server_name}:1433;database={database_name};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;" # 托管标识认证的JDBC属性 jdbc_properties = { "authentication": "ActiveDirectoryMSI", "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver" } # 读取SQL Server表数据 df = spark.read.jdbc(url=jdbc_connection_url, table="your-source-table", properties=jdbc_properties) df.show() # 写入数据到SQL Server(示例) # df.write.jdbc(url=jdbc_connection_url, table="your-target-table", mode="append", properties=jdbc_properties)
3. 关键说明
- 设置
authentication为ActiveDirectoryMSI后,Databricks会自动关联托管标识并获取令牌,无需手动传入凭据 - Databricks Runtime通常默认包含SQL Server JDBC驱动,若缺失可通过集群库管理功能安装
三、用户分配托管标识的适配
若使用用户分配类型的托管标识,只需在JDBC属性中添加标识的Client ID:
jdbc_properties = { "authentication": "ActiveDirectoryMSI", "msiClientId": "your-user-assigned-msi-client-id", "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver" }
内容的提问来源于stack exchange,提问作者CzarSvk
相关产品推荐
相关产品推荐

