使用Databricks连接Azure SQL:自动添加集群IP至防火墙方案咨询
解决Databricks集群自动添加IP到Azure SQL防火墙的方案
方案一:集群初始化脚本+Azure REST API(临时IP自动管理)
这是适配临时集群场景的自动化方案,通过集群启动时的初始化脚本自动获取出口IP并添加防火墙规则,同时配合清理机制避免规则堆积:
配置权限
给Databricks集群使用的托管身份(或服务主体)授予目标Azure SQL服务器的Network Contributor角色,确保拥有修改防火墙规则的权限。编写集群初始化脚本
在Databricks工作区创建初始化脚本(例如add_sql_firewall.sh),示例内容如下:# 获取集群出口公网IP CLUSTER_IP=$(curl -s https://api.ipify.org) # 定义Azure SQL服务器核心信息 SQL_SERVER_NAME="your-sql-server-name" RESOURCE_GROUP="your-resource-group" # 用时间戳命名规则,避免重复冲突 RULE_NAME="databricks-cluster-$(date +%Y%m%d%H%M%S)" RULE_START_IP=$CLUSTER_IP RULE_END_IP=$CLUSTER_IP # 调用Azure CLI添加防火墙规则 az sql server firewall-rule create \ --resource-group $RESOURCE_GROUP \ --server $SQL_SERVER_NAME \ --name $RULE_NAME \ --start-ip-address $RULE_START_IP \ --end-ip-address $RULE_END_IP- 脚本需确保集群节点已安装Azure CLI,若未预装,可在脚本开头添加安装命令;也可直接调用Azure REST API完成规则创建。
- 敏感信息(如服务主体凭据)需存储在Databricks Secrets中,脚本通过密钥读取方式调用。
配置规则清理机制
为避免防火墙规则过多,可通过Databricks集群生命周期钩子,在集群终止时触发作业调用API删除对应规则;或使用Azure自动化账户定期清理过期的临时规则。
方案二:VNet集成(长期稳定方案)
若流水线为长期固定运行,推荐采用VNet注入将Databricks集群部署至Azure虚拟网络,后续只需一次配置即可永久解决IP问题:
- 在Azure SQL服务器防火墙规则中添加该VNet的子网IP范围,允许内网直接访问;
- 或给Azure SQL服务器配置VNet服务端点,限制仅指定VNet子网能访问,全程无需依赖公网IP,安全性更高。
方案三:允许所有Azure服务访问(仅测试环境可用)
Azure SQL提供"允许Azure服务和资源访问此服务器"的开关,开启后所有Azure服务(含Databricks)均可访问,但此配置会大幅扩大攻击面,生产环境严禁使用,仅适合临时测试场景。
内容的提问来源于stack exchange,提问作者harsh panday
相关产品推荐
相关产品推荐

