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

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

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

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

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

  • Более высокий уровень безопасности, поскольку сертификаты TLS/SSL не обрабатываются группой разработчиков приложений напрямую. Интеграция позволяет отдельной группе безопасности:
    • Настроить шлюзы приложений.
    • Управлять жизненным циклом шлюзов приложений.
    • Предоставьте разрешения выбранным шлюзам приложений для доступа к сертификатам, хранящимся в Key Vault.
  • Поддержка импорта существующих сертификатов в Key Vault. Или использовать AP Key VaultI для создания новых сертификатов и управления ими с любыми доверенными партнерами 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 в других подписках Azure поддерживаются, но их необходимо настроить с помощью шаблона ARM, Azure PowerShell, CLI, Bicep и т. д. Конфигурация хранилища ключей между подписками не поддерживается Шлюз приложений через портал Azure сегодня.

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

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

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

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

Diagram that shows three steps for integrating Application Gateway with 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.

Проверка разрешений брандмауэра в 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 в настоящее проверка время не настроена проверка, чтобы убедитьсяMicrosoft.KeyVault, что конечная точка службы включена в подсети.

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

    Screenshot that shows selections for configuring Application Gateway to use firewalls and virtual networks.

Примечание.

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

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

"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 и сертификат.

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

Модель разрешений на основе ролей Azure Key Vault

Шлюз приложений поддерживает сертификаты, на которые ссылается 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, чтобы устранить любые ошибки конфигурации с рекомендацией по ее исправлению.

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

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

Для оповещения Помощника используйте команду "Разрешить проблему Azure Key Vault для Шлюз приложений" в приведенном ниже типе рекомендаций:
Diagram that shows steps for Advisor alert.

Вы можете настроить оповещение о работоспособности ресурсов, как показано ниже.
Diagram that shows steps for Resource health alert.

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

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