Настройка пользовательского домена для экземпляра Azure API Management

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни управления API

При создании экземпляра службы Azure API Management в облаке Azure назначается поддомен azure-api.net (например, apim-service-name.azure-api.net). Вы также можете предоставить доступ к своим конечным точкам управления API, используя собственное доменное имя, например contoso.com. В этой статье показано, как сопоставить существующее пользовательское имя DNS с конечными точками, которые открывает экземпляр службы управления API.

Important

Управление API принимает только запросы со значениями заголовка узла , соответствующими:

  • доменное имя шлюза по умолчанию;
  • любой из настроенных пользовательских доменных имен шлюза.

Note

В настоящее время имена пользовательских доменов не поддерживаются в шлюзе рабочей области .

Important

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

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

Prerequisites

  • Экземпляр управления API. Дополнительные сведения см. в разделе Создание экземпляра Azure API Management.

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

  • Действительный сертификат с открытым и закрытым ключом (PFX) (необязательно). Субъект или альтернативное имя субъекта (SAN) должны совпадать с доменным именем (это позволяет экземпляру Управления API безопасно предоставлять URL-адреса через TLS).

    См. параметры сертификата домена.

  • DNS-записи, размещенные на DNS-сервере, которые сопоставляют пользовательское доменное имя с доменным именем по умолчанию для вашего экземпляра Управления API. В этом разделе не приводятся инструкции по размещению DNS-записей.

    Дополнительные сведения о необходимых записях см. в разделе "Конфигурация DNS" далее в этой статье.

Конечные точки для личных доменов

Есть ряд конечных точек Управления API, которым вы можете назначить пользовательское доменное имя. Сейчас доступны следующие конечные точки:

Endpoint Default
Gateway По умолчанию: <apim-service-name>.azure-api.net. Шлюз — единственная конечная точка, доступная для настройки на уровне потребления.

Конфигурация конечной точки шлюза по умолчанию остается доступной после добавления домена пользовательского шлюза.
Портал разработчика (все уровни, кроме потребления) По умолчанию: <apim-service-name>.developer.azure-api.net
Управление (только классические уровни) По умолчанию: <apim-service-name>.management.azure-api.net
API конфигурации локального шлюза (версия 2) По умолчанию: <apim-service-name>.configuration.azure-api.net
SCM (только классические уровни) По умолчанию: <apim-service-name>.scm.azure-api.net

Considerations

  • Вы можете обновить любую конечную точку, поддерживаемую на уровне служб. Как правило, клиенты обновляют шлюз (этот URL-адрес используется для вызова API, предоставляемых через управление API) и портала разработчика (URL-адрес портала разработчика ).
  • Конечная точка шлюза по умолчанию остается доступной после настройки пользовательского доменного имени шлюза и не может быть удалена. Для других конечных точек управления API (например , портала разработчика), настроенных с помощью имени личного домена, конечная точка по умолчанию больше недоступна.
  • Только владельцы экземпляров API Management в классических уровнях могут использовать конечные точки Management и SCM для внутреннего доступа. Этим конечным точкам реже назначается пользовательское доменное имя.
  • Уровни "Developer", "Premium" и "Premium v2" поддерживают настройку нескольких пользовательских имен узлов для конечной точки Gateway.
  • Доменные имена с подстановочными знаками, например *.contoso.com, поддерживаются на следующих уровнях: Developer, Basic, Standard, Standard v2, Premium, Premium v2. Сертификат для определенного поддомена (например, api.contoso.com) будет иметь приоритет над маскирующим сертификатом (*.contoso.com) для запросов к api.contoso.com.
  • При настройке личного домена на портале разработчика можно включить CORS для нового доменного имени. Это необходимо для посетителей портала разработчика использовать интерактивную консоль на справочных страницах API.

Варианты сертификатов домена

Управление API поддерживает пользовательские сертификаты TLS или сертификаты, импортированные из Azure Key Vault. Вы также можете активировать бесплатный управляемый сертификат.

Warning

Если требуется закрепление сертификатов, используйте имя личного домена и пользовательский или Key Vault сертификат, а не сертификат по умолчанию или бесплатный управляемый сертификат. Мы не рекомендуем настраивать жесткую зависимость от сертификата, которым вы не управляете.

Если у вас уже есть частный сертификат от стороннего поставщика, вы можете загрузить его в экземпляр Управления API. Он должен соответствовать следующим требованиям Если вы включите бесплатный сертификат, управляемый службой «Управление API», он уже соответствует этим требованиям.

  • экспортирован как PFX-файл, зашифрованный с помощью TRIPLE DES и при необходимости защищенный паролем;
  • Содержит закрытый ключ длиной не менее 2048 битов
  • должен содержать все промежуточные сертификаты и корневой сертификат в цепочке сертификатов.

Настройка пользовательского доменного имени на портале

Выберите шаги в соответствии с сертификатом домена , который вы хотите использовать.

  1. Перейдите к экземпляру службы управления API на портале Azure.
  2. В области навигации слева выберите "Личные домены".
  3. Нажмите кнопку +Добавить или выберите существующую конечную точку , которую требуется обновить.
  4. В окне справа выберите тип конечной точки для личного домена.
  5. В поле "Имя узла " укажите имя, которое вы хотите использовать. Например, api.contoso.com.
  6. В разделе "Сертификат" выберите "Настраиваемый"
  7. Выберите файл сертификата , чтобы выбрать и отправить сертификат.
  8. Загрузите допустимый файл .PFX и укажите его пароль, если сертификат защищен паролем.
  9. При настройке конечной точки шлюза выберите или отключите другие параметры при необходимости, включая согласование сертификата клиента или привязку SSL по умолчанию. Настройка домена шлюза с пользовательским сертификатом
  10. Выберите "Добавить" или выберите "Обновить " для существующей конечной точки.
  11. Нажмите кнопку "Сохранить".

DNS configuration (Настройка DNS)

Настройте поставщика DNS для сопоставления имени личного домена с именем домена по умолчанию экземпляра службы управления API.

CNAME record

Настройте запись CNAME, которая связывает имя личного домена (например, api.contoso.com) с именем узла службы "Управление API" (например, yourapim-service-name.azure-api.net). Запись CNAME является более стабильной, чем запись A в случае изменения IP-адреса. Дополнительные сведения см. в разделе IP-адреса Azure API Management и часто задаваемые вопросы об управлении API Management.

Note

Некоторые регистраторы доменов позволяют отображать поддомены только при использовании записи CNAME, например www.contoso.com, а не корневых имен, таких как contoso.com. Дополнительные сведения о записях CNAME см. в документации, предоставленной вашим регистратором, или в документе IETF — доменные имена: реализация и спецификация.

Синхронизация сертификатов и устранение неполадок для сертификатов, поддерживаемых Azure Key Vault

Управление API предоставляет элементы управления и диагностику, помогающие синхронизировать сертификаты и быстро устранять проблемы с доступом.

Например, из-за изменения конфигурации или проблемы с подключением экземпляр управления API может не получить сертификат имени узла из Azure Key Vault после обновления или смены сертификата. В этом случае экземпляр службы управления API продолжает использовать кэшированный сертификат, пока он не получит обновленный сертификат. Если срок действия кэшированного сертификата истекает, рабочий трафик в шлюз будет заблокирован. Любая вышестоящая служба, например Шлюз приложений, использующая конфигурацию сертификата имени узла, также может блокировать трафик среды выполнения к шлюзу при использовании кэшированного сертификата с истекшим сроком действия.

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

Синхронизация сертификатов

Выберите "Синхронизировать сертификаты " на панели команд, чтобы вручную запустить синхронизацию сертификатов при изменении отпечатков сертификатов. Этот параметр позволяет избежать ожидания задания автоматической синхронизации, которое может занять несколько часов или больше времени.

Скриншот команды для синхронизации сертификатов имени хоста в Azure Key Vault на портале.

Просмотр журналов синхронизации

Выберите "Просмотреть журналы синхронизации " на панели команд, чтобы открыть панель с подробными сведениями о первопричине при сбое синхронизации сертификатов. Эти журналы помогают быстрее диагностировать и устранять проблемы синхронизации.

Восстановление доступа к хранилищу ключей

Управление API отображает упреждающие предупреждения при обнаружении проблем с доступом между экземпляром службы управления API и хранилищем ключей, используемым в пользовательском домене. Эти проблемы с доступом часто вызывают сбои синхронизации сертификатов.

Если появится предупреждение, выберите "Восстановить ", чтобы автоматически исправить доступ на основе модели авторизации хранилища ключей. В зависимости от модели управление API выполняет одно из следующих действий для восстановления доступа:

  • Назначает роль пользователя секретов хранилища ключей для хранилища ключей Azure, основанного на RBAC.
  • Предоставляет разрешение GET для хранилища ключей, управляемого на основе политики доступа.

Дополнительные советы по устранению неполадок при сбое процесса ротации сертификатов в Azure Key Vault

  • Убедитесь, что управляемое удостоверение, используемое для доступа к хранилищу ключей, существует.

  • Если экземпляр службы управления API развернут в виртуальной сети, подтвердите исходящее подключение к тегу службы AzureKeyVault.

Как прокси-сервер менеджмента API отвечает SSL-сертификатами в ходе TLS-рукопожатия

При настройке личного домена для конечной точки шлюза можно задать дополнительные свойства, определяющие способ ответа службы "Управление API" сертификатом сервера в зависимости от запроса клиента.

Клиенты, выполняющие вызов с заголовком SNI (Server Name Indication, указание имени сервера)

При наличии одного или нескольких личных доменов, настроенных для конечной точки шлюза, служба "Управления API" может отвечать на запросы HTTPS из следующих источников.

  • Личный домен (например, contoso.com)
  • Домен по умолчанию (например, apim-service-name.azure-api.net).

В зависимости от информации в заголовке SNI, служба управления API отвечает соответствующим сертификатом сервера.

Клиенты, осуществляющие вызов без заголовка SNI

Если вы используете клиент, который не отправляет заголовок SNI , управление API создает ответы на основе следующей логики:

  • Если служба имеет только один личный домен, настроенный для шлюза, сертификат по умолчанию является сертификатом, выданным пользовательскому домену шлюза.

  • Если служба настроила несколько пользовательских доменов для шлюза (поддерживается на уровне "Разработчик " и "Премиум "), можно назначить сертификат по умолчанию, установив для свойства defaultSslBinding значение true ("defaultSslBinding":"true"). На портале установите флажок привязки SSL по умолчанию .

    Если вы не задали свойство, сертификатом по умолчанию является сертификат, выданный домену шлюза по умолчанию по адресу *.azure-api.net.

Поддержка запросов PUT/POST с большим объемом полезных данных

Прокси-сервер управления API поддерживает запросы с большим объемом (>40 КБ) полезных данных при использовании клиентских сертификатов в HTTPS. Чтобы предотвратить замораживание запроса сервера, можно задать для свойства negotiateClientCertificate значение true ("negotiateClientCertificate": "true") в имени узла шлюза. На портале установите флажок "Согласование сертификата клиента ".

Если свойство имеет значение true, сертификат клиента запрашивается во время подключения SSL/TLS перед обменом HTTP-запросами. Так как параметр применяется на уровне имени узла шлюза , все запросы на подключение запрашивают сертификат клиента. Это ограничение можно обойти и настроить до 20 пользовательских доменов для шлюза (только для уровня "Премиум ").

Ограничение для имени личного домена на уровнях версии 2

В настоящее время на уровнях "Стандартная v2" и "Премиум v2", для управления API необходимо DNS-имя, доступное для разрешения в публичной сети, чтобы обеспечить возможность трафика к конечной точке шлюза. Если вы настраиваете имя личного домена для конечной точки шлюза, это имя должно быть общедоступным, не ограничено частной зоной DNS.

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