You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已具备Databricks账户管理员权限,创建Metastore仍遇权限报错

问题描述

尝试用Terraform创建Databricks Metastore,代码如下:

resource "databricks_metastore" "this" {
  name = "primary"
  storage_root = format("abfss://%s@%s.dfs.core.windows.net/",
                        azurerm_storage_container.unity_catalog.name,
                        azurerm_storage_account.unity_catalog.name
                        )
  force_destroy = true
}

触发错误:

Error: cannot create metastore: Only account admin can create metastores.

已确认用于az login的账号拥有Databricks账户管理员角色,但当前Databricks Provider配置为:

provider "databricks" {
  azure_workspace_resource_id = data.azurerm_databricks_workspace.this.id
  host = local.databricks_workspace_host
}
问题原因

当前的Databricks Provider配置是工作区级上下文,即便你的账号有账户管理员角色,通过工作区认证的方式只会获取到该工作区内的权限,无法访问账户级资源(比如Metastore)。Metastore是Databricks账户级别的资源,必须使用账户级认证来创建。

解决方案

修改Databricks Provider配置,切换到账户级认证模式:

方式1:使用服务主体认证(推荐生产环境)

provider "databricks" {
  azure_account_id = var.databricks_account_id
  azure_client_id = var.azure_client_id
  azure_client_secret = var.azure_client_secret
  azure_tenant_id = var.azure_tenant_id
}

其中azure_account_id是你的Databricks账户ID(格式类似d-xxxxxxxxxxxx),可在Azure Portal的Databricks账户页面获取。

方式2:使用当前az login的账户级权限

如果用的是用户账户登录(az login),可直接指定账户ID,Provider会自动从Azure CLI获取账户级凭据:

provider "databricks" {
  azure_account_id = var.databricks_account_id
}

注意事项

  • 确保你的账户(或服务主体)确实拥有Databricks账户管理员权限,而非仅工作区管理员权限。
  • 账户级与工作区级认证的Provider可通过alias区分,同时存在以管理不同层级资源:
# 账户级Provider,用于创建Metastore等账户资源
provider "databricks" {
  alias = "account"
  azure_account_id = var.databricks_account_id
}

# 工作区级Provider,用于工作区内资源
provider "databricks" {
  alias = "workspace"
  azure_workspace_resource_id = data.azurerm_databricks_workspace.this.id
  host = local.databricks_workspace_host
}

# 创建Metastore时指定账户级Provider
resource "databricks_metastore" "this" {
  provider = databricks.account
  name = "primary"
  storage_root = format("abfss://%s@%s.dfs.core.windows.net/",
                        azurerm_storage_container.unity_catalog.name,
                        azurerm_storage_account.unity_catalog.name
                        )
  force_destroy = true
}

内容的提问来源于stack exchange,提问作者Chris Snow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:45:38