Terraform部署Azure Databricks授权报错及配置问题咨询
问题1:报错是否由当前databricks provider配置块导致?
是的,报错直接和该配置相关,根因有两个:
- 你配置了
azure_use_msi = true,代表要求Databricks provider使用Azure托管身份(MSI)进行认证,但你执行terraform apply的环境(本地电脑、未配置MSI的流水线代理等)不存在可用的托管身份,所以请求实例元数据服务169.254.169.254获取MSI token时返回500错误。 - 就算执行环境配置了MSI,该MSI也未被授予Databricks工作区的管理员权限,所以操作用户、组等RBAC资源时会返回
User not authorized错误。
临时本地测试可以将provider调整为Azure CLI认证模式,修改配置如下:
provider "databricks" { host = azurerm_databricks_workspace.db-workspace.workspace_url }
调整后先在本地执行az login登录拥有Databricks工作区管理员权限的AAD账号,再执行terraform apply即可正常认证。如果是在Azure环境的自动化流水线中使用,需要为执行资源分配MSI,并为该MSI授予Databricks工作区的管理员角色。
问题2:从Azure门户点击Databricks URL自动登录的配置
Azure Databricks默认集成Azure AD身份认证,无需额外特殊配置即可实现自动登录,只需满足两个条件:
- 你登录Azure门户使用的AAD账号,和Databricks工作区所属的AAD租户为同一租户
- 该账号已被授予Databricks工作区的访问权限(可在Azure门户Databricks资源的「访问控制(IAM)」中分配
Databricks Admin或Databricks User角色,也可在工作区内部配置RBAC权限)
如果开启了Databricks工作区的私有端点,需要确保访问端的网络可以连通工作区私有地址,避免跳转失败。
问题3:为什么需要分别在required_providers和provider块中声明databricks provider
两个配置的作用完全不同:
required_providers块属于依赖声明配置,作用是告诉Terraform工具,当前项目需要用到databricks provider,以及该provider的下载源、版本约束范围,执行terraform init时会根据这个配置拉取对应版本的provider二进制文件provider块属于运行时参数配置,作用是给databricks provider传入连接、认证所需的参数,比如工作区地址、认证方式等,如果不配置该块,provider不知道该连接哪个Databricks实例、用什么身份认证,自然会报authentication is not configured for provider错误。
内容的提问来源于stack exchange,提问作者Pallab
相关产品推荐
相关产品推荐

