如何使用带account_admin权限的服务主体配置账户级Databricks Terraform提供商?
解决Databricks Terraform提供商服务主体认证问题
核心问题澄清
服务主体没有独立的account_id,你混淆了两个完全不同的概念:
- Databricks的
account_id是整个账户的全局唯一标识,不管是真实用户还是服务主体,都归属于同一个账户,所以配置提供商时的account_id必须是账户本身的ID,而非服务主体的应用ID。 - 用真实用户的
account_id能正常工作,是因为这个ID确实对应你的Databricks账户;而服务主体的应用ID和账户ID毫无关联,因此会触发租户ID获取失败的错误。
正确配置步骤
获取真实的Databricks账户ID
- 登录Azure Databricks账户控制台(
https://accounts.azuredatabricks.net) - 进入「设置」页面,账户ID会显示在页面顶部或账户信息区域
- 登录Azure Databricks账户控制台(
补充服务主体的认证凭据
仅指定account_id无法完成服务主体认证,需要补充完整的认证参数,示例配置如下:provider "databricks" { alias = "account-level" host = "https://accounts.azuredatabricks.net" account_id = "你的真实账户ID" auth_type = "service_principal" client_id = "服务主体的应用ID" client_secret = "服务主体的客户端密钥" tenant_id = "Azure租户ID" }确认服务主体权限
确保该服务主体已被授予Databricks账户的account_admin权限:- 在账户控制台的「用户与组」→「服务主体」中找到目标主体
- 为其分配
account_admin角色
错误原因解析
Failed to retrieve tenant ID for given token错误的本质是:用服务主体应用ID作为account_id后,Terraform无法关联到正确的Azure租户和Databricks账户,导致整个认证流程中断。
内容的提问来源于stack exchange,提问作者Niklas Letz
相关产品推荐
相关产品推荐

