Терраформирование — Импорт нескольких политик доступа Azure KeyVault

#azure #terraform #azure-keyvault #azure-policy

Вопрос:

У меня есть Azure KeyVault с 4 политиками доступа. Каждая политика доступа имеет свой собственный уникальный идентификатор объекта.

Пытаясь импортировать наши устаревшие ресурсы Azure в конфигурацию Terraform, я поэтому создал блок Terraform, как показано ниже.

 resource "azurerm_key_vault" "example" {
  name                = "examplekeyvault"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  tenant_id           = data.azurerm_client_config.current.tenant_id
  sku_name            = "premium"
}

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

  key_permissions = [
    "Get",
  ]

  secret_permissions = [
    "Get",
  ]
}
 

Все вышеперечисленное работало хорошо, и я смог успешно импортировать «policy1».

Тем не менее, когда я затем скопировал блок политики и добавил его со следующей политикой, как показано ниже, он просто не принимает ее как правильно сформированную конфигурацию терраформы. Мое намерение, очевидно, состоит в том, чтобы импортировать все четыре политики (если это возможно).

 resource "azurerm_key_vault" "example" {
  name                = "examplekeyvault"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  tenant_id           = data.azurerm_client_config.current.tenant_id
  sku_name            = "premium"
}

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

  key_permissions = [
    "Get",
  ]

  secret_permissions = [
    "Get",
  ]
}

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

  key_permissions = [
    "Get",
  ]

  secret_permissions = [
    "Get",
  ]
}

 

На обеих приведенных выше иллюстрациях я использовал только фиктивные объекты.

Я делаю это совершенно неправильно или просто невозможно импортировать несколько политик в одну конфигурацию Terraform? Между тем в документации реестра Terraform говорится, что Azure разрешает не более 1024 политик доступа для каждого хранилища ключей.

Комментарии:

1. «это просто не похоже на то, чтобы принять это как правильно сформированную конфигурацию Терраформ» что это значит? Включите сообщение об ошибке в свой вопрос!

2. в чем заключается ошибка, которую вы получаете?

3. Ну, все это оказалось отвлекающим маневром. В конце концов я заставил его работать……..и да, добавление этих блоков политики множественного доступа сработало, как только я завершил импорт.

4. здравствуйте @hitman126, не могли бы вы опубликовать свое решение в качестве ответа . Это будет полезно для других членов сообщества, которые столкнутся с той же проблемой.

5. Привет @AnsumanBal-MT, поэтому, в конце концов, мое предлагаемое решение о простом добавлении дополнительных блоков политики в политику доступа к хранилищу ключей, как показано в моем втором фрагменте кода, похоже, сработало, поскольку мой последующий план терраформирования и применение прошло успешно без каких-либо сообщений об ошибках. Поэтому я могу только сделать вывод и/или предположить, что это было правильное решение.

Ответ №1:

В конце концов, предложенное мной решение просто добавить дополнительные блоки политики в политику доступа к хранилищу ключей, как показано в моем втором фрагменте кода (выше), оказалось эффективным, поскольку мой последующий план терраформирования и применение прошли успешно без каких-либо ошибок.

Поэтому я могу только сделать вывод и/или предположить, что добавление этих дополнительных блоков политики в конце концов было правильным решением.