Ошибка 404 для значения с именем Apim (частная конечная точка) и секрета Keyvault.

Вопрос или проблема

У меня есть APIM с частной конечной точкой. Это мой код:

resource "azurerm_private_endpoint" "apim" {
  name                = "${var.organization}-apim-pep-${var.environment}"
  location            = var.azure_location
  resource_group_name = var.resourcegroups.apim.name
  subnet_id           = data.azurerm_subnet.pep.id

  private_service_connection {
    name                           = "apim_private_service_connection"
    private_connection_resource_id = azurerm_api_management.apim.id
    is_manual_connection           = false
    subresource_names              = ["Gateway"]
  }
}

resource "azurerm_api_management" "apim" {
  name                = "${var.organization}-hub-${var.environment}-apim"
  location            = var.azure_location
  resource_group_name = var.resourcegroups.apim.name
  publisher_name      = "${var.organization}-hub-${var.environment}-apim"
  publisher_email     = "email"
  sku_name            = "Developer_1"

  identity {
    type = "SystemAssigned, UserAssigned"
    identity_ids = [
      data.azurerm_user_assigned_identity.apim.id
    ]
  }
}

Я не могу получить доступ к секретам Key Vault. Я получаю 404 на них. Ранее, когда у меня была интеграция VNet и не было частной конечной точки, я мог их разрешать. Скорее всего, это проблема сети. Тем не менее, я не могу изменить настройки на VNet, потому что сеть организована Azure, подводя (тип VNet=”None” по умолчанию). Подсеть, в которой развернута частная конечная точка, имеет сервисную конечную точку для Microsoft.KeyVault.

Какой элемент головоломки я упускаю?

Ответ или решение

Для решения проблемы с доступом к секретам Key Vault из вашего Azure API Management (APIM) с частной конечной точкой (private endpoint), необходимо учитывать несколько факторов, касающихся сетевых настроек и конфигурации.

Возможные причины ошибки 404:

  1. Сетевые настройки: Убедитесь, что ваша APIM действительно имеет доступ к Azure Key Vault через созданный вами частный конечный узел. Частный конечный узел должен быть корректно настроен для предоставления доступа к необходимым ресурсам.

  2. Служебные конечные точки: Вы упомянули, что на вашей подсети включены служебные конечные точки для Microsoft.KeyVault. Это необходимо для обеспечения доступа к Key Vault из вашего виртуального сетевого округа (VNet). Убедитесь, что служебная конечная точка действительно настроена правильно и связана с тем же регионом, в котором находится ваш Key Vault.

  3. Настройки доступа Key Vault: Вам необходимо убедиться, что у системной назначенной идентификации (SystemAssigned identity) APIM есть необходимые разрешения на доступ к секретам в Key Vault. Для этого:

    • Перейдите в ваш Azure Key Vault.
    • На вкладке "Access policies" добавьте политику доступа для идентификации APIM, предоставив ей соответствующие разрешения (например, Get для секретов).
  4. Трассировка и диагностика: Используйте Azure Network Watcher для трассировки маршрута сетевых запросов и диагностики проблем с доступом. Это может помочь вам определить, на каком этапе происходит сбой.

Рекомендации по устранению проблемы:

  1. Проверьте настройки служебной конечной точки для Microsoft.KeyVault, убедившись, что они правильно настроены и активированы для соответствующей подсети.

  2. Убедитесь, что ваша APIM имеет разрешения на доступ к секретам Key Vault. Как минимум, добавьте разрешение на чтение (Get) для секретов.

  3. Проверьте, что APIM пытается получить доступ к Key Vault через правильный URL-адрес. Используйте инструмент Postman или curl для диагностики доступа к секретам Key Vault вручную.

  4. Если ваша организация использует ограничения на уровень безопасности, такие как NSG (Network Security Groups), убедитесь, что в правилах разрешен доступ к трафику между вашей APIM и Key Vault.

Пример конфигурации доступа к ключу:

Чтобы настроить разрешения для системной назначенной идентификации, выполните следующие шаги:

resource "azurerm_key_vault_access_policy" "apim_access_policy" {
  key_vault_id = azurerm_key_vault.example.id

  tenant_id = var.tenant_id
  object_id = azurerm_api_management.apim.identity[0].principal_id # Используйте ID вашей APIM

  secret_permissions = ["get"]
}

Заключение

Скорее всего, основная проблема заключается в настройках доступа или сетевых настройках, которые предотвращают APIM от доступа к Key Vault. Пожалуйста, проверьте вышеуказанные моменты, и вы сможете устранить проблему с ошибкой 404 при доступе к секретам Key Vault.

Оцените материал
Добавить комментарий

Капча загружается...