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

为Key Vault访问策略分配用户托管标识Object ID时遇UUID错误

用户托管身份配置Key Vault访问策略报错解决

问题场景

尝试将用户托管标识的Object ID配置到Key Vault访问策略中,赋予该标识对Key Vault证书的Get和List权限,编写Terraform代码后运行报错。

原代码

# 用户托管身份
resource "azurerm_user_assigned_identity" "user_assigned_identity" {
  location            = "west europe"
  name                = "Identity_Name"
  resource_group_name = "Resource_Group_Name"
}

# Key Vault访问策略
data "azurerm_client_config" "example" {
}

resource "azurerm_key_vault_access_policy" "access_policy" {
  key_vault_id = "000000-000000-000000-000000"
  tenant_id    = data.azurerm_client_config.example.tenant_id
  object_id    = azurerm_user_assigned_identity.user_assigned_identity.id

  certificate_permissions = [
    "Get","List",
  ]
}

错误信息

Error: expected "object_id" to be a valid UUID, got /subscriptions/0000000-0000-0000-0000-0000000000/resourceGroups/Resource_Group_Name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/Identity_Name

解决方法

报错原因是object_id字段需要的是托管标识的对象UUID,但代码中传入的是托管标识的资源ID(id属性)。只需将object_id的值替换为托管标识的principal_id属性即可:

修正后代码

# 用户托管身份
resource "azurerm_user_assigned_identity" "user_assigned_identity" {
  location            = "west europe"
  name                = "Identity_Name"
  resource_group_name = "Resource_Group_Name"
}

# Key Vault访问策略
data "azurerm_client_config" "example" {
}

resource "azurerm_key_vault_access_policy" "access_policy" {
  key_vault_id = "000000-000000-000000-000000"
  tenant_id    = data.azurerm_client_config.example.tenant_id
  # 替换为principal_id获取托管标识的对象UUID
  object_id    = azurerm_user_assigned_identity.user_assigned_identity.principal_id

  certificate_permissions = [
    "Get","List",
  ]
}

principal_id是azurerm_user_assigned_identity资源的内置属性,对应托管标识的Object ID,符合Key Vault访问策略对object_id字段的UUID格式要求。

内容的提问来源于stack exchange,提问作者Kalin-the-Builder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:09:27