【问题标题】:Unable to get SystemAssigned identity attributes in terraform azure provider无法在 terraform azure 提供程序中获取 SystemAssigned 身份属性
【发布时间】:2020-04-20 22:31:06
【问题描述】:

使用以下应用服务定义

data "azurerm_resource_group" "rg" {
  name = var.resource_group_name
}

# Creates our new App Service
resource "azurerm_app_service" "app" {
  name                    = var.app_name
  app_service_plan_id     = var.app_service_plan_id
  location                = data.azurerm_resource_group.rg.location
  resource_group_name     = data.azurerm_resource_group.rg.name
  client_affinity_enabled = false
  enabled                 = true
  https_only              = true

  app_settings = var.app_settings

  site_config {
    always_on                 = true
    http2_enabled             = true
    use_32_bit_worker_process = false
    scm_type                  = "LocalGit"
    default_documents         = var.default_documents

    cors {
      allowed_origins     = var.cors_allowed_origins
      support_credentials = var.cors_enabled
    }
  }

  identity {
    type = "SystemAssigned"
  }

我正在设置 keyvault 访问策略

resource "azurerm_key_vault_access_policy" "app" {
  key_vault_id       = var.key_vault_id
  tenant_id          = azurerm_app_service.app.identity[0].tenant_id
  object_id          = azurerm_app_service.app.identity[0].principal_id
  secret_permissions = ["get", "list"]
}

然而 azure provider for terraform 给出了这个错误

Error: "object_id": required field is not set

  on ..\modules\app-service\main.tf line 68, in resource "azurerm_key_vault_access_policy" "app":
  68: resource "azurerm_key_vault_access_policy" "app" {



Error: "tenant_id": required field is not set

  on ..\modules\app-service\main.tf line 68, in resource "azurerm_key_vault_access_policy" "app":
  68: resource "azurerm_key_vault_access_policy" "app" {

好像身份块没有提供tenant_id和principal_id属性

有什么想法吗?

【问题讨论】:

  • 我在密钥保管库访问策略中没有看到任何错误,您确定您在代码中提供的内容相同吗?

标签: azure azure-devops terraform terraform-provider-azure


【解决方案1】:

应该是这样的:

${azurerm_app_service.app.identity.0.tenant_id}
${azurerm_app_service.app.identity.0.principal_id}

https://www.terraform.io/docs/providers/azurerm/r/app_service.html#attributes-reference

【讨论】:

  • 试过这个语法。抛出错误:此字符未使用
  • '''错误:..\modules\app-service\main.tf 第 70 行,资源“azurerm_key_vault_access_policy”“app”中的无效字符:70:tenant_id = ${azurerm_app_service.app。 identity.0..tenant_id} 该字符未在该语言中使用。
  • 你有 2 个. 那里
【解决方案2】:

问题原来是 azure 中的应用服务关闭了“SystemAssigned”,这导致计划和申请失败。修复 azure 服务解决了我们的问题。我们的问题可能也可以通过污染应用服务以及破坏和重建基础设施来解决。

【讨论】:

  • 感谢您在此处分享您的解决方案,如果是,请您接受您的解决方案作为答案吗?因此,对于遇到相同问题的其他成员轻松找到解决方案将很有帮助。祝你有美好的一天:)
  • 面临同样的问题。原因是以前的部署没有启用 SystemAssigned Identity。销毁并重新创建资源,它工作正常。
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 2022-08-19
  • 2020-03-29
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
相关资源
最近更新 更多