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


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

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

В этой статье вы узнаете о кодах ошибок и шагах по устранению ошибок в таких неправильно настроенных хранилищах ключей.

Совет

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

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

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

Примечание.

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

Код ошибки: UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault

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

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

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

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

 Снимок экрана, на котором показано, как устранить ошибку разрешения get.

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

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

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

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

Примечание.

Поддержка портала для добавления нового сертификата на основе хранилища ключей в настоящее время недоступна при использовании управления доступом на основе ролей Azure. Это можно сделать с помощью шаблона ARM, ИНТЕРФЕЙСА командной строки или PowerShell. Посетите эту страницу для получения рекомендаций .

Код ошибки: SecretDisabled

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

Решение: повторно включите версию сертификата, которая в настоящее время используется для Шлюза приложений.

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

Снимок экрана, на котором показано, как повторно включить секрет.

Код ошибки: SecretDeletedFromKeyVault

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

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

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

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

Снимок экрана: восстановление удаленного сертификата в Key Vault.

Код ошибки: UserAssignedManagedIdentityNotFound

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

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

  1. Повторно создайте управляемое удостоверение с тем же именем, которое ранее использовалось, и в той же группе ресурсов. (СОВЕТ. Сведения о именовании см. в журналах действий ресурсов.
  2. Перейдите к нужному ресурсу хранилища ключей и задайте политики доступа, чтобы предоставить этому новому управляемому удостоверению требуемое разрешение. Вы можете выполнить те же действия, что упоминалось в разделе UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault.

Код ошибки: KeyVaultHasRestrictedAccess

Описание. Существует параметр ограниченной сети для Key Vault.

Решение. Эта ошибка возникает при включении брандмауэра Key Vault для ограниченного доступа. Вы по-прежнему можете настроить Шлюз приложений в ограниченной сети Key Vault, выполнив следующие действия.

  1. В Key Vault откройте панель "Сеть ".
  2. Перейдите на вкладку "Брандмауэры и виртуальные сети " и выберите частную конечную точку и выбранные сети.
  3. Затем, используя виртуальная сеть, добавьте виртуальную сеть и подсеть Шлюз приложений. Во время процесса также настройте конечную точку службы Microsoft.KeyVault, установив его флажок.
  4. Наконец, выберите "Да ", чтобы разрешить доверенным службам обойти брандмауэр Key Vault.

Снимок экрана, на котором показано, как обойти ошибку ограниченной сети.

Код ошибки: KeyVaultSoftDeleted

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

Разрешение. В портал Azure найдите хранилище ключей. В разделе "Службы" выберите хранилища ключей.

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

Выберите управляемые удаленные хранилища. Здесь вы можете найти удаленный ресурс Key Vault и восстановить его. Снимок экрана: восстановление удаленного хранилища ключей.

Код ошибки: CustomerKeyVaultSubscriptionDisabled

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

Решение. Подписка Azure может быть отключена по различным причинам. Чтобы устранить необходимые действия, см . статью "Повторное активация отключенной подписки Azure".

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

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

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

Решение. Чтобы устранить эту проблему, повторите попытку отправки сертификата. Например, следующие команды 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 

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

Эти статьи по устранению неполадок могут оказаться полезными, так как вы продолжаете использовать Шлюз приложений: