通过 Terraform 更新 SP 和更新密钥库

SP renewal and update keyvault through terraform

我想通过 Terraform 更新过期 SP 的详细信息。我可以通过更改 SP 的到期日期来重新生成 SP。但 SP 详细信息存储在密钥库中。因此,在使用相同的 id/secret 更新密钥库时,它会出错。有没有办法通过 terraform update/delete 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 
}

我在我的环境中测试了你的场景,我成功地进行了更改,它被存储在当前版本中,而前一个是使用以下代码的旧版本:

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 | Resources | hashicorp/azurerm | Terraform Registry