Azure Application Gateway での Azure Key Vault の一般的なエラーのトラブルシューティング

概要

この記事では、Azure Application Gatewayで一般的なキー コンテナー エラーのトラブルシューティングを行い、証明書の管理を中断し、HTTPS 接続をセキュリティで保護する可能性がある構成の誤りを解決する方法について説明します。

Application Gateway を使用すると、TLS 証明書を Azure Key Vault に安全に格納できます。 キー コンテナー リソースを使用する場合は、ゲートウェイが常にリンクされたキー コンテナーにアクセスできる必要があります。 Application Gateway で証明書をフェッチできない場合は、関連付けられている HTTPS リスナーが無効になります。 詳細については、「非アクティブなリスナーの理解」を参照してください。

ヒント

バージョンを指定しないシークレット識別子を使用します。 この識別子を使用すると、Azure Key Vault で新しいバージョンが使用可能な場合、Azure Application Gateway によって証明書が自動的にローテーションされます。 バージョンのないシークレット Uniform Resource Identifier (URI) の例は、 https://myvault.vault.azure.net/secrets/mysecret/です。

Azure Advisorエラー コード

次のセクションでは、発生する可能性があるさまざまなエラーについて説明します。 ゲートウェイにこれらの問題があるかどうかを確認するには、アカウントのAzure Advisorにアクセスしてください。 このトラブルシューティングの記事を使用して、問題を解決します。 ゲートウェイでキー コンテナーの問題が検出された際に情報を得るために、Azure Advisor のアラートを設定してください。

Application Gateway は、Key Vault の診断ログを 4 時間ごとに生成します。 構成を修正した後も診断にエラーが表示され続ける場合は、ログが更新されるまで待つ必要がある場合があります。

エラー コード - "UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault"

Description

関連付けられているユーザー割り当てマネージド ID には、必要なアクセス許可がありません。

ソリューション

Key Vault のアクセス ポリシーを構成し、ユーザー割り当てマネージド ID にシークレットへのアクセス許可を付与します。 これは、次の 2 つの方法のいずれかで行うことができます。

コンテナー アクセス ポリシー

  1. Azure ポータルで、リンクされたキー コンテナーに移動します。
  2. アクセス ポリシーを選択します。
  3. アクセス許可モデルの場合は、Vault アクセス ポリシーを選択します。
  4. [シークレット管理操作] で、[取得] アクセス許可を選択します。
  5. 保存を選びます。

マネージド ID に Get アクセス許可を付与するために使用される Key Vault のアクセス ポリシー設定のスクリーンショット。

詳細については、「Azure ポータルを使用してKey Vaultアクセス ポリシーを割り当を参照してください。

Azure のロールベースのアクセス制御 (RBAC)

  1. Azure ポータルで、リンクされたキー コンテナーに移動します。
  2. アクセス ポリシーを選択します。
  3. Permission モデルでは、Azure ロールベースのアクセス制御を選択します。
  4. アクセス制御 (IAM) に移動してアクセス許可を構成します。
  5. マネージド ID のロールの割り当てを追加するには、次の値を選択します。 ロール: Key Vault シークレット ユーザー b. アクセス権を割り当てる: マネージド ID c. メンバー: アプリケーション ゲートウェイに関連付けたユーザー割り当てマネージド ID を選択します。
  6. レビュー + 割り当て を選択します。

詳細については、Key Vault のAzureロールベースのアクセス制御に関するページを参照してください。

Azure ロールベースのアクセス制御を使用する場合、新しいキー コンテナーベースの証明書を追加するためのポータルのサポートは現在使用できません。 これを実現するには、Azure リソース管理 (ARM) テンプレート、Azure CLI、またはAzure PowerShellを使用します。 詳細については、 Key Vault の Azure ロールベースのアクセス制御アクセス許可モデルに関するページを参照してください。

エラー コード - "SecretDisabled"

Description

関連付けられている証明書は、Azure Key Vaultで無効になっています。

ソリューション

Application Gateway で使用される証明書のバージョンを有効にします。 その手順は次のとおりです。

  1. Azure ポータルで、リンクされたキー コンテナーに移動します。
  2. [ 証明書] を選択します
  3. 目的の証明書名を選択し、無効になっているバージョンを選択します。
  4. 管理ページで、トグルを使用してその証明書のバージョンを有効にします。

無効なシークレットを再度有効にするために使用されるKey Vault証明書のバージョン切り替えのスクリーンショット。

エラー コード - "SecretDeletedFromKeyVault"

Description

関連付けられている証明書がKey Vaultから削除されます。

ソリューション

削除された証明書を回復するには、次の手順に従います。

  1. Azure ポータルで、リンクされたキー コンテナーに移動します。
  2. [証明書] ウィンドウを開きます。
  3. [マネージド削除済み証明書] タブを使用して、削除された証明書を回復します。

証明書オブジェクトを完全に削除する場合は、新しい証明書を作成し、新しい証明書の詳細で Application Gateway を更新します。 Azure CLIまたはAzure PowerShellを使用して構成する場合は、バージョンのないシークレット識別子 URI を使用します。 この選択により、インスタンスは証明書の更新バージョン (存在する場合) を取得できます。

削除されたKey Vault証明書を回復するために使用される [マネージド削除済み証明書] タブのスクリーンショット。

エラー コード - "UserAssignedManagedIdentityNotFound"

Description

関連付けられているユーザー割り当てマネージド ID が削除されます。

ソリューション

新しいマネージド ID を作成し、Key Vault で使用します。 そのためには、次の手順に従います。

  1. 以前に使用したのと同じ名前で、同じリソース グループの下にマネージド ID を再作成します。 名前付けの詳細については、リソース アクティビティ ログを参照してください。
  2. 目的のキー コンテナー リソースに移動し、そのアクセス ポリシーを設定して、この新しいマネージド ID に必要なアクセス許可を付与します。 詳細については、「 エラー コード: UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault」を参照してください。

エラー コード - "KeyVaultHasRestrictedAccess"

Description

Key Vaultには制限されたネットワーク設定があります。

ソリューション

このエラーは、制限付きアクセスに対して Key Vault ファイアウォールを有効にすると発生します。 制限付きネットワークのKey Vaultで Application Gateway を構成します。 そのためには、次の手順に従います。

  1. Key Vaultで、[ネットワーク] を選択します。
  2. [ ファイアウォールと仮想ネットワーク ] タブを選択し、[ プライベート エンドポイント] と [選択したネットワーク] を選択します
  3. Azure Virtual Networkを使用して、Application Gateway の仮想ネットワークとサブネットを追加します。
  4. Microsoft.KeyVault チェック ボックスをオンにします。
  5. はいを選択します。 このアクションにより、信頼されたサービスはKey Vaultファイアウォールをバイパスできます。

制限付きネットワーク アクセスの構成に使用Key Vaultネットワーク設定のスクリーンショット。

エラー コード - "KeyVaultSoftDeleted"

Description

関連付けられたキー コンテナーはソフト削除状態です。

ソリューション

削除された Key Vault リソースを探します。 そのためには、次の手順に従います。

  1. Azure ポータルで、キー コンテナーを検索します。
  2. サービス で、キー コンテナーを選択します。

Azure ポータルでKey Vault サービスを検索するスクリーンショット。

  1. 管理された削除済みのボルトを選択します。
  2. 削除された Key Vault リソースを見つけて回復します。

削除されたキー コンテナーを復旧するためのオプションが表示された、管理された削除済みコンテナーのスクリーンショット。

エラー コード - "CustomerKeyVaultSubscriptionDisabled"

Description

Key Vaultのサブスクリプションが無効になっています。

ソリューション

さまざまな理由により、Azureがサブスクリプションを無効にすることがあります。 この問題を解決するために必要なアクションを実行するには、「 無効な Azure サブスクリプションを再アクティブ化する」を参照してください。

Application Gateway のエラー コード

エラー コード - "ApplicationGatewayCertificateDataOrKeyVaultSecretIdMustBeSpecified / ApplicationGatewaySslCertificateDataMustBeSpecified"

Description

リスナー証明書を更新しようとすると、このエラーが発生します。 このエラーが発生すると、証明書を更新するための変更は破棄され、リスナーは以前に定義された構成でトラフィックを処理し続けます。

ソリューション

この問題を解決するには、証明書をもう一度アップロードしてみてください。 たとえば、次の PowerShell コマンドを使用して、Application Gateway にアップロードされた証明書または Azure Key Vault 経由で参照される証明書を更新します。

Application Gateway に直接アップロードされた証明書を更新します。

$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 

参考資料