Automation Terraform for_每个azure客户管理的密钥

Automation Terraform for_每个azure客户管理的密钥,automation,terraform,terraform-provider-azure,Automation,Terraform,Terraform Provider Azure,我正在尝试为每个用户使用一个,以创建多个azure存储帐户以及azure机密和密钥 到目前为止,一切都很好,并按照预期使用以下代码创建: variable "storage-foreach" { type = list(string) default = ["storage1", "storage2"] } variable "key-name" { type = list(string)

我正在尝试为每个用户使用一个
,以创建多个azure存储帐户以及azure机密和密钥

到目前为止,一切都很好,并按照预期使用以下代码创建:


variable "storage-foreach" {
  type    = list(string)
  default = ["storage1", "storage2"]
}

variable "key-name" {
  type    = list(string)
  default = ["key1", "key2"]
}

resource "azurerm_storage_account" "storage-foreach" {
  for_each                 = toset(var.storage-foreach)
  access_tier              = "Hot"
  account_kind             = "StorageV2"
  account_replication_type = "LRS"
  account_tier             = "Standard"
  location                 = var.location
  name                     = each.value
  resource_group_name      = azurerm_resource_group.tenant-testing-test.name
  lifecycle {
    prevent_destroy = false
  }
}

resource "azurerm_key_vault_secret" "storagesctforeach" {
  for_each     = toset(var.storage-foreach)
  key_vault_id = azurerm_key_vault.tenantsnbshared.id
  name         = each.value
  value        = azurerm_storage_account.storage-foreach[each.key].primary_connection_string
  content_type = "${each.value} Storage Account Connection String"
  lifecycle {
    prevent_destroy = false
  }
}

resource "azurerm_storage_table" "tableautomation" {
  for_each             = toset(var.storage-foreach)
  name                 = "UserAnswer"
  storage_account_name = azurerm_storage_account.storage-foreach[each.key].name
  lifecycle {
    prevent_destroy = false
  }
}

resource "azurerm_key_vault_key" "client-key" {
  for_each     = toset(var.key-name)
  key_vault_id = azurerm_key_vault.tenantsnbshared.id
  name         = "Key-Client-${each.value}"
  key_opts = [
    "decrypt",
    "encrypt",
    "sign",
    "unwrapKey",
    "verify",
    "wrapKey",
  ]
  key_type = "RSA"
  key_size = 2048
}

在我尝试创建客户管理的密钥资源并自动将密钥分配给存储帐户之前,这段代码工作得非常好

resource "azurerm_storage_account_customer_managed_key" "storage-managed-key" {
  for_each           = toset(var.key-name)
  key_name           = each.value
  key_vault_id       = azurerm_key_vault.tenantsnbshared.id
  storage_account_id = azurerm_storage_account.storage-foreach[each.value].id
  key_version        = "current"
}
我所面临的问题是,由于我使用
创建了所有以前的资源,上面的资源中的每个
都希望在我的存储帐户id中有一个
[each.value]
。我放置了该id,但该参数的目标是
var.key-name
,这会引发一个错误,因为它无法在我的存储帐户中找到这些字符串。 我想知道您是否可以帮助我考虑一个好的做法,使此过程自动化,并确保它选择正确的密钥来加密资源组中正确的存储帐户id


非常感谢大家,我很抱歉,但我一直在努力解决这段代码以及如何使其自动化。

问题是您试图使用
var.key-name
访问
var.storage-foreach

我认为以下几点对你有用:

resource "azurerm_storage_account_customer_managed_key" "storage-managed-key" {
  count              = length(var.key-name)
  
  key_name           = var.key-name[count.index]
  key_vault_id       = azurerm_key_vault.tenantsnbshared.id
  storage_account_id = azurerm_storage_account.storage-foreach[var.storage-foreach[count.index]].id
  key_version        = "current"
}

问题是您试图使用
var.key-name
访问
var.storage-foreach

我认为以下几点对你有用:

resource "azurerm_storage_account_customer_managed_key" "storage-managed-key" {
  count              = length(var.key-name)
  
  key_name           = var.key-name[count.index]
  key_vault_id       = azurerm_key_vault.tenantsnbshared.id
  storage_account_id = azurerm_storage_account.storage-foreach[var.storage-foreach[count.index]].id
  key_version        = "current"
}

您好,您可以将您的存储帐户块添加到问题中吗?@adp Done。对不起,伙计,我以为我加了。谢谢您好,您可以将您的存储帐户块添加到问题中吗?@adp Done。对不起,伙计,我以为我加了。谢谢,太好了。我在计划期间没有任何错误,它确实识别出密钥,但有一个错误显示“EncryptionAtRest/此存储帐户的客户管理密钥”您知道为什么会出现此错误吗?非常感谢你对adp的帮助。你是一个十足的传奇人物。你有如图所示的KV访问策略吗?我的意思是,为了让您的存储能够访问KV,应该定义一个访问策略。我本身没有资源,但在我的密钥库中,我为密钥、机密和证书设置了
access\u policy
。您能为这个问题创建一个单独的问题吗?然后粘贴KV访问策略页面的截图?太好了。我在计划期间没有任何错误,它确实识别出密钥,但有一个错误显示“EncryptionAtRest/此存储帐户的客户管理密钥”您知道为什么会出现此错误吗?非常感谢你对adp的帮助。你是一个十足的传奇人物。你有如图所示的KV访问策略吗?我的意思是,为了让您的存储能够访问KV,应该定义一个访问策略。我本身没有资源,但在我的密钥库中,我为密钥、机密和证书设置了
access\u policy
。您能为这个问题创建一个单独的问题吗?并粘贴KV访问策略页面的屏幕截图?