Поделиться через


Завершение TLS-запросов с помощью сертификатов из Key Vault

Внимание

Начиная с 31 августа 2025 г. все клиенты и серверные серверы, взаимодействующие с Шлюз приложений Azure, должны использовать tls 1.2 или более поздней версии, так как поддержка TLS 1.0 и 1.1 будет прекращена.

Управляемое платформой хранилище секретов Azure Key Vault можно применять для защиты секретов, ключей и сертификатов TLS/SSL. Шлюз приложений Azure теперь поддерживает интеграцию с Key Vault для сертификатов сервера, подключенных к прослушивателям с поддержкой HTTPS. Эта поддержка ограничена версией v2 SKU Шлюза приложений.

Шлюз приложений предлагает две модели завершения TLS:

  • Предоставьте сертификаты TLS/SSL, привязанные к слушателю. Эта модель является традиционным способом передачи сертификатов TLS/SSL в Шлюз приложений для завершения TLS.
  • Укажите ссылку на существующий сертификат или секрет Key Vault при создании прослушивателя с поддержкой HTTPS.

Интеграция Шлюза приложений с Key Vault предлагает множество преимуществ, в том числе:

  • Более высокий уровень безопасности, поскольку сертификаты TLS/SSL не обрабатываются группой разработчиков приложений напрямую. Интеграция позволяет отдельной группе безопасности:
    • Настроить шлюзы приложений.
    • Управлять жизненным циклом шлюзов приложений.
    • Предоставьте разрешения выбранным шлюзам приложений для доступа к сертификатам, хранящимся в Key Vault.
  • Поддержка импорта существующих сертификатов в Key Vault. Или использовать API Key Vault для создания и управления новыми сертификатами с любым из доверенных партнеров Key Vault.
  • Поддержка автоматического продления сертификатов, хранящихся в Key Vault.

Поддерживаемые сертификаты

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

После того как Шлюз приложений настроен для использования сертификатов Key Vault, его экземпляры получают сертификаты из Key Vault и устанавливают их локально для завершения TLS. Экземпляры опрашивают Key Vault с интервалом в четыре часа, чтобы получить обновлённую версию сертификата, если она существует. При обнаружении обновленного сертификата сертификат TLS/SSL, связанный с прослушивателем HTTPS, автоматически поворачивается.

Совет

Любое изменение шлюза приложений приводит к проверке в Key Vault на доступность новых версий сертификатов. Это включает, но не ограничивается, изменения конфигурации фронтенд IP-адресов, слушателей, правил, серверных пулов, тегов ресурсов и т. д. При обнаружении обновленного сертификата новый сертификат будет немедленно представлен.

Шлюз приложений использует идентификатор секрета в Key Vault для ссылки на сертификаты. Для Azure PowerShell, Azure CLI или Azure Resource Manager настоятельно рекомендуется использовать секретный идентификатор, который не указывает версию. Таким образом, Шлюз приложений автоматически поворачивает сертификат, если в Key Vault доступна более новая версия. Пример URI секретного ключа без версии https://myvault.vault.azure.net/secrets/mysecret/. Вы можете ознакомиться с инструкциями PowerShell, описанными в следующем разделе.

Портал Azure поддерживает только сертификаты Key Vault, а не секреты. Шлюз приложений по-прежнему поддерживает ссылки на секреты из Key Vault, но только с помощью ресурсов, отличных от портала, таких как PowerShell, Azure CLI, API и шаблоны Azure Resource Manager (шаблоны ARM). Сертификаты Key Vault должны иметь экспортируемый закрытый ключ, чтобы Шлюз приложений могли использовать их.

Ссылки на Key Vault в других подписках Azure поддерживаются, но должны быть настроены с помощью шаблона ARM, Azure PowerShell, CLI, Bicep и т. д. На данный момент конфигурация хранилищ ключей между подписками не поддерживается в Azure Шлюзом приложений через портал.

Параметры сертификата в Key Vault

Для завершения TLS Шлюз приложений поддерживает только сертификаты в формате Личный обмен данными (PFX). Вы можете импортировать существующий сертификат или создать новый сертификат в Key Vault. Чтобы избежать сбоев, убедитесь, что для сертификата задано значение "Включено " в Key Vault.

Как работает интеграция

интеграция Шлюз приложений с Key Vault — это трехэтапный процесс настройки:

На схеме показаны три шага интеграции Шлюз приложений с Key Vault.

Примечание.

Интеграция шлюза приложений Azure с Key Vault поддерживает как политику доступа к Хранилищу, так и модели разрешений управления доступом на основе ролей Azure.

Получение управляемого удостоверения пользователя

Шлюз приложений использует управляемое удостоверение для получения сертификатов из Key Vault от вашего имени.

Можно либо создать новое управляемое удостоверение, назначаемое пользователем, либо повторно использовать существующее удостоверение в рамках интеграции. Чтобы создать новое управляемое удостоверение, назначаемое пользователем, см. раздел Создание управляемого удостоверения, назначаемого пользователем, с помощью портала Azure.

Примечание.

На шлюзе приложений можно использовать только одно управляемое удостоверение.

Делегирование управляемой идентификации, назначенной пользователем, в Key Vault.

Определите политики доступа для использования управляемого удостоверения, назначаемого пользователем, в Key Vault:

  1. В портал Azure перейдите в Key Vault.

  2. Выберите Key Vault, содержащий сертификат.

  3. Если вы используете модель разрешений Политики доступа в хранилище: выберите Политики доступа, выберите + Добавить политику доступа, выберите Получить для разрешений на секреты и выберите назначенное пользователем управляемое удостоверение для Выбор субъекта. Затем выберите Сохранить.

    Если вы используете управление доступом на основе ролей Azure, следуйте инструкциям в статье Назначьте управляемому удостоверению доступ к ресурсу и назначьте назначаемой пользователем управляемой идентичности роль пользователя секретов Key Vault в Azure Key Vault.

    Примечание.

    При использовании Azure RBAC с Key Vault, если вы настраиваете интеграцию Application Gateway с помощью PowerShell, Azure CLI или REST API (например, с помощью Get-AzKeyVaultSecret или az keyvault secret show), пользователь или субъект-служба, выполняющие эти операции, также нуждается в роли пользователя секретов Key Vault (или эквивалентных разрешений) в Key Vault. Это связано с тем, что эти операции управления выполняются в контексте безопасности, а не в контексте управляемого удостоверения шлюза приложений. Управляемая идентичность используется шлюзом приложений во время выполнения для получения сертификатов.

Проверка разрешений брандмауэра в Key Vault

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

При использовании ограниченного хранилища ключей выполните следующие действия, чтобы настроить Шлюз приложений для использования брандмауэров и виртуальных сетей:

Совет

Шаги 1–3 не требуются, если в Key Vault включена частная конечная точка. Шлюз приложений может получить доступ к Key Vault с помощью частного IP-адреса.

Внимание

Если для доступа к Key Vault используются частные конечные точки, свяжите частную зону DNS privatelink.vaultcore.azure.net , содержащую соответствующую запись для указанного хранилища Key Vault, с виртуальной сетью, в которой находится шлюз приложений. Пользовательские DNS-серверы могут продолжать использоваться в виртуальной сети вместо предоставленных сопоставителей Azure DNS, однако частная зона DNS должна оставаться связанной с виртуальной сетью.

  1. В портале Azure в вашем Key Vault выберите Сетевое взаимодействие.

  2. На вкладке "Брандмауэры и виртуальные сети " выберите выбранные сети.

  3. Для виртуальных сетей выберите + Добавить существующие виртуальные сети, а затем добавьте виртуальную сеть и подсеть для экземпляра вашего Шлюза приложений. Если появится запрос, убедитесь, что флажок "Не настраивать конечные точки службы Microsoft.KeyVault" снят, чтобы конечная точка службы была включена в подсети.

  4. Выберите "Да ", чтобы разрешить доверенным службам обход брандмауэра Key Vault.

    Снимок экрана, показывающий параметры для настройки Application Gateway для использования брандмауэров и виртуальных сетей.

Примечание.

При развертывании экземпляра Шлюза приложений с помощью шаблона ARM, используя Azure CLI или PowerShell, или приложения Azure, развернутого из портала Azure, SSL-сертификат хранится в Хранилище ключей (Key Vault) в виде зашифрованного в кодировке Base64 файла PFX. Необходимо выполнить действия, описанные в Использование Azure Key Vault для передачи безопасного значения параметра во время развертывания.

Особенно важно установить enabledForTemplateDeployment на true. Сертификат может или не имеет пароля. Для сертификата с паролем в следующем примере показано, как может быть настроена запись sslCertificates в шаблоне конфигурации ARM для шлюза приложений properties.

"sslCertificates": [
     {
         "name": "appGwSslCertificate",
         "properties": {
             "data": "[parameters('appGatewaySSLCertificateData')]",
            "password": "[parameters('appGatewaySSLCertificatePassword')]"
        }
    }
]

Значения appGatewaySSLCertificateData и appGatewaySSLCertificatePassword отображаются из Key Vault, как описано в разделе "Справочные секреты с динамическим идентификатором". Чтобы увидеть, как выполняется поиск, перейдите по ссылкам назад с parameters('secretName'). Если сертификат не защищен паролем, пропустите запись password.

Настройка слушателя шлюза приложений

Модель политики доступа к хранилищу разрешений Key Vault

Перейдите к Шлюз приложений в портал Azure и выберите вкладку "Прослушиватели". Выберите "Добавить прослушиватель" (или выберите существующий прослушиватель) и укажите ПРОТОКОЛ HTTPS.

В разделе «Выбор сертификата» выберите «Создать новый», а затем выберите «Выбрать сертификат из Key Vault» в разделе «Параметры Https».

В поле "Имя сертификата" введите понятное название для ссылки на сертификат в Key Vault. Выберите управляемое удостоверение, Хранилище ключей и сертификат.

После выбора нажмите кнопку "Добавить " (при создании) или "Сохранить " (при редактировании), чтобы применить к прослушивателю сертификат Key Vault, на который ссылается ссылка.

Модель разрешений контроля доступа на основе ролей Azure для хранилища ключей

Шлюз приложений поддерживает сертификаты, на которые ссылается Key Vault, с помощью модели разрешений управления доступом на основе ролей. Первые несколько шагов для ссылки на Key Vault необходимо выполнить с помощью шаблона ARM, Bicep, CLI или PowerShell. В ходе этого процесса используется управляемое удостоверение, содержащее соответствующие разрешения управления доступом на основе ролей.

Примечание.

Указание сертификатов Azure Key Vault, которые применяются к модели разрешений управления доступом на основе ролей, не поддерживаются через портал.

В этом примере мы будем использовать PowerShell для ссылки на новый секрет Key Vault.

# Get the Application Gateway we want to modify
$appgw = Get-AzApplicationGateway -Name MyApplicationGateway -ResourceGroupName MyResourceGroup
# Specify the resource id to the user assigned managed identity - This can be found by going to the properties of the managed identity
Set-AzApplicationGatewayIdentity -ApplicationGateway $appgw -UserAssignedIdentityId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity"
# Get the secret ID from Key Vault
$secret = Get-AzKeyVaultSecret -VaultName "MyKeyVault" -Name "CertificateName"
$secretId = $secret.Id.Replace($secret.Version, "") # Remove the secret version so Application Gateway uses the latest version in future syncs
# Specify the secret ID from Key Vault 
Add-AzApplicationGatewaySslCertificate -KeyVaultSecretId $secretId -ApplicationGateway $appgw -Name $secret.Name
# Commit the changes to the Application Gateway
Set-AzApplicationGateway -ApplicationGateway $appgw

После выполнения команд можно перейти к Шлюз приложений в портал Azure и выбрать вкладку "Прослушиватели". Нажмите кнопку "Добавить прослушиватель" (или выберите существующий) и укажите протокол HTTPS.

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

Изучение и устранение ошибок Key Vault

Примечание.

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

Это событие, управляемое пользователем, можно определить, просмотрев Работоспособность ресурсов шлюза приложений. Подробнее.

Шлюз приложений Azure не просто опрашивает версию обновленного сертификата в Key Vault каждые четыре часа. Он также регистрирует любые ошибки и интегрируется с Azure Advisor, чтобы выявлять ошибки конфигурации и давать рекомендации по их исправлению.

  1. Вход в портал Azure
  2. Выбор помощника
  3. Выберите категорию "Эффективность работы" в меню слева.
  4. Вы найдете рекомендацию под названием Устранение проблемы с Azure Key Vault для шлюза приложений, если ваша служба сталкивается с этой проблемой. Убедитесь, что выбрана правильная подписка в раскрывающемся списке выше.
  5. Выберите вариант, чтобы просмотреть сведения об ошибке, связанные ресурсы хранилища ключей и руководство по устранению неполадок, чтобы решить вашу конкретную проблему.

Определив такое событие с помощью Azure Advisor или Здоровья ресурсов, вы можете быстро устранить любые проблемы конфигурации с Key Vault. Настоятельно рекомендуем воспользоваться Azure Advisor и оповещениями Resource Health, чтобы оставаться в курсе, когда обнаруживается проблема.

Для оповещения Advisor используйте "Устранение проблемы Azure Key Vault для Шлюза приложений" в приведенном ниже типе рекомендаций:
Схема, показывающая шаги для оповещения Advisor.

Вы можете настроить оповещение о работоспособности ресурсов, как показано ниже.
Схема, показывая шаги для оповещения о работоспособности ресурсов.

Следующие шаги

Настройка сертификатов из Key Vault для завершения TLS-запросов с помощью Azure PowerShell