如何通过托管身份实现Python免访问令牌连接Databricks
Azure托管身份连接Databricks认证方案
完全可以通过Azure托管身份实现免个人访问令牌(PAT)的身份认证,不需要手动维护固定access_token参数,适配Azure托管的Databricks服务场景。
前置要求
- 你使用的是Azure平台托管的Databricks工作区
- 所用托管身份(系统分配/用户分配均可)已在Databricks工作区完成权限配置,包括工作区访问权限、目标库表的操作权限
实现步骤
1. 安装依赖包
需要同时安装Databricks SQL连接器和Azure身份认证库:
pip install databricks-sql-connector azure-identity
2. 认证代码实现
场景1:使用系统分配托管身份
from databricks import sql from azure.identity import DefaultAzureCredential # 自动获取当前环境的系统分配托管身份令牌 credential = DefaultAzureCredential() # Azure Databricks固定资源scope databricks_scope = "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default" access_token = credential.get_token(databricks_scope).token connection = sql.connect( server_hostname='<你的Databricks工作区主机名>', http_path='<你的SQL仓库HTTP路径>', access_token=access_token ) # 后续查询逻辑和原代码一致 cursor = connection.cursor() cursor.execute('SELECT * FROM <database-name>.<table-name> LIMIT 2') result = cursor.fetchall() for row in result: print(row) cursor.close() connection.close()
场景2:使用用户分配托管身份
只需要在初始化DefaultAzureCredential时指定托管身份的客户端ID即可,其余逻辑不变:
credential = DefaultAzureCredential(managed_identity_client_id="<你的用户分配托管身份客户端ID>")
说明
- 该方案本质是通过托管身份动态获取短期有效的访问令牌,不需要你手动生成、存储长期有效的个人访问令牌,安全性更高
- 本地调试时,如果本地环境已登录Azure CLI、VS Code Azure插件,
DefaultAzureCredential会自动读取本地登录的身份凭证生成令牌,无需修改代码即可完成调试
内容的提问来源于stack exchange,提问作者anthino12
相关产品推荐
相关产品推荐

