0

我想通过 terraform 更新过期 SP 的详细信息。我可以通过更改 SP 的到期日期来重新生成 SP。但 SP 详细信息存储在密钥库中。因此,在使用相同的 id/secret 更新 keyvault 时,它会出错。有没有办法通过 terraform 更新/删除 key_vault 机密?

resource "azurerm_key_vault_secret" "sp_arm_client_id" 
{ 
name = "ARM-CLIENT-ID" 
value = az_sp.app_id key_vault_id = data.azurerm_key_vault.storable_kvs[each.key].id 
}
4

1 回答 1

0

我在我的环境中测试了您的场景,并且成功地进行了更改,并将其存储在当前版本中,而之前的版本使用以下代码存储在旧版本中:

provider "azuread" {}

provider "azurerm" {
  features{}
}
data "azuread_client_config" "current" {}
data "azuread_application" "appreg" {
  display_name="ansumanterraformtest"
}
resource "azuread_application_password" "apppass" {
  application_object_id = data.azuread_application.appreg.object_id
  end_date_relative = "3h"
}

data "azurerm_key_vault" "kv" {
  name = "kvname"
  resource_group_name = "ansumantest"
}
resource "azurerm_key_vault_secret" "demo_sp_client_id" {
  name         = "demo-sp-client-id"
  value        = data.azuread_application.appreg.application_id
  key_vault_id = data.azurerm_key_vault.kv.id
}

resource "azurerm_key_vault_secret" "demo_sp_client_secret" {
  name         = "demo-sp-client-secret"
  value        =azuread_application_password.apppass.value
  key_vault_id = data.azurerm_key_vault.kv.id
}

输出:

在此处输入图像描述

在此处输入图像描述

注意:如果 keyvault 中的密钥不是从 terraform 创建的,您可能会收到错误消息。如果它是从门户网站或任何其他来源创建的,那么您必须首先将该秘密导入到 terraform 状态,然后对其进行更改,以便 terraform 可以管理它。

导入命令:

terraform import azurerm_key_vault_secret.example "https://example-keyvault.vault.azure.net/secrets/example/fdf067c93bbb4b22bff4d8b7a9a56217"

参考:

azurerm_key_vault_secret | 资源 | 哈希公司/azurerm | Terraform 注册表

于 2021-10-01T12:40:21.787 回答