如何通过系统托管标识从Databricks连接Azure Synapse?
使用系统托管标识连接Azure Synapse到Databricks
前提条件
- 确保Databricks工作区的系统托管标识已被授予Azure Synapse Analytics的相应权限(例如
db_datareader/db_datawriter,或数据库级别更高权限,可通过Azure门户在Synapse的IAM或数据库权限配置中完成授权)。
修改连接配置
替换原用户名密码认证的代码,改用系统托管标识的JDBC参数:
# Azure Synapse Connection Configuration(系统托管标识版) dwDatabase = "<<your-database-name>>" dwServer = "<<your-sql-sever-name>>" dwJdbcPort = "1433" dwJdbcExtraOptions = "encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryMSI;" sqlDwUrl = f"jdbc:sqlserver://{dwServer}:{dwJdbcPort};database={dwDatabase};{dwJdbcExtraOptions}"
关键修改说明
- 移除原配置中的
user和password参数 - 在
dwJdbcExtraOptions中添加authentication=ActiveDirectoryMSI;,这是触发系统托管标识认证的核心参数 - 将
trustServerCertificate设为false,符合Azure安全最佳实践
测试连接示例
用以下代码验证是否能正常读取Synapse中的数据:
df = spark.read \ .format("jdbc") \ .option("url", sqlDwUrl) \ .option("dbtable", "<<your-table-name>>") \ .load() df.display()
内容的提问来源于stack exchange,提问作者DataZhukov
相关产品推荐
相关产品推荐

