Устранение типичных ошибок Key Vault в Шлюз приложений Azure

Сводка

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

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

Подсказка

Используйте секретный идентификатор, который не указывает версию. С помощью этого идентификатора шлюз приложений Azure автоматически поворачивает сертификат, если новая версия доступна в Azure Key Vault. Пример секретного универсального идентификатора ресурса (URI) без версии: https://myvault.vault.azure.net/secrets/mysecret/

коды ошибок Помощник по Azure

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

Замечание

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

Код ошибки — UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault.

Description

Связанное управляемое удостоверение, назначаемое пользователем, не имеет требуемого разрешения.

Solution

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

Политика доступа к хранилищу

  1. На портале Azure перейдите в связанное хранилище ключей.
  2. Выберите Политики доступа.
  3. Для модели разрешений выберите политику доступа Vault.
  4. В разделе «Операции управления секретами» выберите разрешение «Получить».
  5. Нажмите Сохранить.

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

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

Управление доступом на основе ролей в Azure (RBAC)

  1. На портале Azure перейдите в связанное хранилище ключей.
  2. Выберите Политики доступа.
  3. Для модели разрешений выберите управление доступом на основе ролей Azure.
  4. Перейдите к элементу управления доступом (IAM), чтобы настроить разрешения.
  5. Добавьте назначение роли для управляемой идентификации, выбрав следующие значения: a. Роль: Пользователь секретов Key Vault b. Назначение доступа: Управляемое удостоверение c. Участники: выберите управляемое удостоверение, назначенное пользователем, которое вы связали с вашим шлюзом приложений.
  6. Выберите кнопку Проверить + назначить.

Дополнительные сведения см. в разделе Azure управление доступом на основе ролей в Key Vault.

Замечание

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

Код ошибки — SecretDisabled

Description

Связанный сертификат отключен в Azure Key Vault.

Solution

Включите версию сертификата, которую использует шлюз приложений. Для этого выполните следующие действия.

  1. На портале Azure перейдите в связанное хранилище ключей.
  2. Выберите Сертификаты.
  3. Выберите нужное имя сертификата и выберите отключенную версию.
  4. На странице управления используйте переключатель для включения этой версии сертификата.

Снимок экрана: переключатель версии сертификата Key Vault, используемой для повторного включения отключенного секрета.

Код ошибки — SecretDeletedFromKeyVault

Description

Связанный сертификат удаляется из Key Vault.

Solution

Чтобы восстановить удаленный сертификат, выполните следующие действия.

  1. На портале Azure перейдите в связанное хранилище ключей.
  2. Откройте область "Сертификаты ".
  3. Перейдите на вкладку "Управляемые удаленные сертификаты" для восстановления удаленного сертификата.

При окончательном удалении объекта сертификата создайте сертификат и обновите шлюз приложений с новыми сведениями о сертификате. При настройке с помощью Azure CLI или Azure PowerShell используйте URI идентификатора секрета, не содержащий версию. Этот выбор позволяет экземплярам получить обновленную версию сертификата, если она существует.

Снимок экрана: вкладка

Код ошибки — UserAssignedManagedIdentityNotFound

Description

Связанное управляемое удостоверение, назначаемое пользователем, удаляется.

Solution

Создайте новое управляемое удостоверение личности и используйте его с хранилищем ключей. Для этого выполните следующие действия.

  1. Повторно создайте управляемое удостоверение с тем же именем, которое вы использовали ранее, и в той же ресурсной группе. Дополнительные сведения об именовании см. в журналах действий ресурсов.
  2. Перейдите к нужному ресурсу хранилища ключей и задайте политики доступа, чтобы предоставить этому новому управляемому удостоверению требуемое разрешение. Дополнительные сведения см. в разделе "Код ошибки: UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault".

Код ошибки : KeyVaultHasRestrictedAccess

Description

Key Vault имеет параметр ограниченной сети.

Solution

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

  1. В Key Vault выберите "Сеть".
  2. Перейдите на вкладку "Брандмауэры и виртуальные сети ", а затем выберите частную конечную точку и выбранные сети.
  3. Используйте Azure Virtual Network для добавления виртуальной сети и подсети шлюза приложений.
  4. Установите флажок Microsoft.KeyVault.
  5. Выберите Да. Это действие позволяет доверенным службам обойти брандмауэр Key Vault.

Снимок экрана параметров сети Key Vault, используемых для настройки ограниченного сетевого доступа.

Код ошибки : KeyVaultSoftDeleted

Description

Связанное хранилище ключей находится в состоянии обратимого удаления.

Solution

Найдите удаленный ресурс хранилища ключей. Для этого выполните следующие действия.

  1. На портале Azure найдите хранилище ключей.
  2. В службах выберите хранилища ключей.

Снимок экрана: поиск службы Key Vault на портале Azure.

  1. Выберите Управляемые удаленные хранилища.
  2. Найдите удаленный ресурс хранилища ключей и восстановите его.

Снимок экрана: управляемые удаленные хранилища с параметром восстановления удаленного хранилища ключей.

Код ошибки — CustomerKeyVaultSubscriptionDisabled

Description

Подписка для Key Vault отключена.

Solution

Различные причины могут привести к отключению подписки Azure. Чтобы устранить эту проблему, см. статью "Повторно активировать отключенную подписку Azure".

Коды ошибок шлюза приложений

Код ошибки : ApplicationGatewayCertificateDataOrKeyVaultSecretIdMustBeSpecified / ApplicationGatewaySslCertificateDataMustBeSpecified»

Description

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

Solution

Чтобы устранить эту проблему, попробуйте снова отправить сертификат. Например, используйте следующие команды PowerShell для обновления сертификатов, отправленных в шлюз приложений или на которые ссылается Azure Key Vault.

Обновите сертификат, отправленный непосредственно в Шлюз приложений.

$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"

$password = ConvertTo-SecureString -String "<password>" -Force -AsPlainText

Set-AzApplicationGatewaySSLCertificate -Name "<oldcertname>" -ApplicationGateway $appgw -CertificateFile "<newcertPath>" -Password $password

Set-AzApplicationGateway -ApplicationGateway $appgw 

Обновите сертификат, на который ссылается Azure Key Vault.

$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"

$secret = Get-AzKeyVaultSecret -VaultName "<KeyVaultName>" -Name "<CertificateName>" 
$secretId = $secret.Id.Replace($secret.Version, "") 
$cert = Set-AzApplicationGatewaySslCertificate -ApplicationGateway $AppGW -Name "<CertificateName>" -KeyVaultSecretId $secretId 

Set-AzApplicationGateway -ApplicationGateway $appgw 

Ссылки