向 Keyvault terraform 分配权限时出错

问题描述 投票:0回答:2

不确定为什么会发生这种情况,但我收到以下定义的错误:

错误:检查现有 Secret 是否存在 “auditmeta-storage-account-key”(Key Vault “https://abckv.vault.azure.net/”):keyvault.BaseClient#GetSecret: 未能响应请求:StatusCode=403 -- 原始错误: autorest/azure:服务返回错误。状态 = 403 代码 =“禁止” Message="用户、组或应用程序 'appid=2406-df1c-44b0-a89d-xxxx;oid=9xxxx02-5xx9-404a-axxe-exxxf;numgroups=4;iss=https://sts.windows.net/a9x-36xx-4xx7-a9dc-30xxxx3 /' 没有秘密获得密钥保管库的权限 'abckv;位置=eastus'。如需解决此问题的帮助,请参阅 https://go.microsoft.com/fwlink/?linkid=2125287” InnerError={"code":"AccessDenied"}

地形定义:

   resource "azurerm_role_assignment" "keyvault_role" {
  scope                = azurerm_key_vault.vault.id
  role_definition_name = "Key Vault Administrator"
  principal_id         = data.azurerm_client_config.current.object_id
}

resource "azurerm_key_vault_secret" "storage_account_key" {
  name         = "auditmeta-storage-account-key"
  value        = azurerm_storage_account.storage_account.primary_access_key
  key_vault_id = azurerm_key_vault.vault.id

  tags = {
    Environment = var.environment
    service     = var.service
    team        = var.team
  }
}

我在这里做错了什么?我基本上是尝试将存储帐户的主访问密钥存储在我定义的密钥库之一中。

azure terraform azure-keyvault terraform-provider-azure
2个回答
2
投票

这是关键消息“用户、组或应用程序...没有秘密获得密钥保管库的权限

您必须授予 秘密以获得密钥保管库的许可

有了这样的块,它应该可以工作:

resource "azurerm_key_vault_access_policy" "example" {
  key_vault_id = azurerm_key_vault.vault.id
  tenant_id    = data.azurerm_client_config.current.tenant_id
  object_id    = data.azurerm_client_config.current.object_id

  secret_permissions = [
    "Get",
  ]
}

希望这有帮助!


0
投票

添加下面给出的答案,只是为了帮助那些正在寻找使用 RBAC 向 keyvault 添加秘密的人,上面的答案将不起作用,因为您可以拥有访问策略或访问控制。 Terraform 最终抛出错误“检查现有 Secret 的存在”但是我能够使用 azapi 让它工作

resource "azapi_resource" "sftpsecret" {
  type = "Microsoft.KeyVault/vaults/secrets@2022-07-01"
  name = "sftpsecret1"
  parent_id = module.kv_adf.id
 
  body = jsonencode({
    properties = {
   
      value = "string"
    }
  })
}

这样我就能够创造一个秘密

© www.soinside.com 2019 - 2024. All rights reserved.