概要
Application Gateway を使用すると、お客様は TLS 証明書をAzure Key Vaultに安全に格納できます。 キー コンテナー リソースを使用する場合は、ゲートウェイが常にリンクされたキー コンテナーにアクセスできる必要があります。 Application Gateway で証明書をフェッチできない場合、関連付けられている HTTPS リスナーは無効な状態になります。 詳細については、「無効化されたリスナーの理解」を参照してください。
この記事は、エラーコードの詳細と、このようなキー ボールトの構成ミスを解決するための手順を理解するのに役立ちます。
ヒント
バージョンを指定しないシークレット識別子を使用します。 これにより、新しいバージョンがAzure Key Vaultで使用可能な場合、Azure Application Gatewayは証明書を自動的にローテーションします。 バージョンのないシークレット URI の例として、 があります。
Azure Advisorエラー コード
次のセクションでは、発生する可能性があるさまざまなエラーについて説明します。 ゲートウェイにこのような問題があるかどうかを確認するには、アカウントの Azure Advisor にアクセスし、このトラブルシューティングの記事を使用して問題を解決します。 ゲートウェイでキー ボールトに関する問題が検出されたときに通知を受け取れるように、Azure Advisor アラートを構成することをお勧めします。
注
Azure Application Gatewayでは、キー ボールトの診断ログが4時間ごとに生成されます。 構成を修正した後も診断でエラーが表示され続ける場合は、ログが更新されるまで待つ必要がある場合があります。
エラー コード: ユーザーアサインドアイデンティティにキー・ボールトの取得権限がありません
説明: 関連付けられているユーザー割り当てマネージド ID には、必要なアクセス許可がありません。
解決策:キー保管庫のアクセス ポリシーを構成して、ユーザー割り当てのマネージドIDにシークレットのためのアクセス許可を付与します。 これは次のいずれかの方法で行えます。
コンテナー アクセス ポリシー
- Azure ポータルでリンクされたキー コンテナーに移動します。
- アクセス ポリシー ブレードを開きます。
- アクセス許可モデルの場合は、Vault アクセス ポリシーを選択します。
- [ シークレット管理操作] で、[ 取得 ] アクセス許可を選択します。
- 保存を選びます。
アクセス許可の取得エラーを解決する方法を示すスクリーンショット。
詳細については、「Azure ポータルを使用してKey Vaultアクセス ポリシーを割り当を参照してください。
Azureロールベースのアクセス制御
- Azure ポータルでリンクされたキー コンテナーに移動します。
- [アクセス ポリシー] ブレードを開きます。
- Permission モデルでは、Azure ロールベースのアクセス制御を選択します。
- Access Control (IAM) ブレードに移動してアクセス許可を構成します。
- 次のコマンドを選択して、マネージド ID のロールの割り当てを追加します
a. Role: Key Vault シークレット ユーザー
b。 アクセスの割り当て: マネージド アイデンティティ
c. メンバー: アプリケーション ゲートウェイに関連付けたユーザー割り当てマネージド ID を選択します。 - レビュー + 割り当て を選択します。
詳細については、Key Vault の
注
Azureロールベースのアクセス制御を使用する場合、新しいキー コンテナーベースの証明書を追加するためのポータルのサポートは現在使用できません。 これを実現するには、ARM テンプレート、CLI、または PowerShell を使用します。 ガイダンスについては、Key Vault Azureロールベースのアクセス制御アクセス許可モデルを参照してください。
エラー コード: SecretDisabled
Description: 関連付けられている証明書がKey Vaultで無効になっています。
解決策: Application Gateway で現在使用されている証明書のバージョンを再有効化します。
- Azure ポータルでリンクされたキー コンテナーに移動します。
- [証明書] ウィンドウを開きます。
- 必要な証明書名を選択し、無効なバージョンを選択します。
- 管理ページで、トグルを使用してその証明書のバージョンを有効にします。
シークレットを再度有効にする方法を示すスクリーンショット。
エラー コード: SecretDeletedFromKeyVault
Description: 関連付けられている証明書がKey Vaultから削除されました。
対策: 削除された証明書を回復するには:
- Azure ポータルでリンクされたキー コンテナーに移動します。
- [証明書] ウィンドウを開きます。
- [マネージド削除済み証明書] タブを使用して、削除された証明書を回復します。
一方、証明書オブジェクトが完全に削除された場合は、新しい証明書を作成し、新しい証明書の詳細で Application Gateway を更新する必要があります。 Azure CLIまたはAzure PowerShellを使用して構成する場合は、バージョンのないシークレット識別子 URI を使用します。 この選択により、インスタンスは証明書の更新バージョン (存在する場合) を取得できます。
エラー コード: UserAssignedManagedIdentityNotFound
説明: 関連付けられているユーザー割り当てマネージド ID が削除されました。
解決策: 新しい管理対象 ID を作成し、キー ボールトで使用します。
- 以前に使用したのと同じ名前で、同じリソース グループの下にマネージド ID を再作成します。 (ヒント: 名前付けの詳細については、リソース アクティビティ ログを参照してください)。
- 目的のキー コンテナー リソースに移動し、アクセス ポリシーを設定して、この新しいマネージド ID に必要なアクセス許可を付与します。 エラー コード UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault で説明されているのと同じ手順に従うことができます。
エラー コード: KeyVaultHasRestrictedAccess
Description: Key Vaultには制限されたネットワーク設定があります。
Resolution: Key Vault ファイアウォールで制限付きアクセスを有効にすると、このエラーが発生します。 引き続き、次の手順に従って、Key Vaultの制限付きネットワークで Application Gateway を構成できます。
- Key Vaultで、Networking ペインを開きます。
- [ ファイアウォールと仮想ネットワーク ] タブを選択し、[ プライベート エンドポイント] と [選択したネットワーク] を選択します。
- 次に、[仮想ネットワーク] を使用して、Application Gateway の仮想ネットワークとサブネットを追加します。 このプロセス中に、チェックボックスをオンにして 'Microsoft.KeyVault' サービス エンドポイントも構成します。
- 最後に、Yes を選択して、信頼されたサービスがKey Vaultのファイアウォールをバイパスできるようにします。
制限付きネットワーク エラーを回避する方法を示すスクリーンショット。
エラー コード: KeyVaultSoftDeleted
説明: 関連付けられているキー ボールトがソフトデリート状態です。
Resolution: Azure ポータルで、キー コンテナーを検索します。 サービスで、キー ボルトを選択します。
[ マネージド削除されたボールト] を選択します。 ここから、削除されたKey Vaultリソースを見つけて回復できます。 削除されたキー ボールトを回復する方法を示すスクリーンショット。
エラー コード: CustomerKeyVaultSubscriptionDisabled
Description: Key Vaultのサブスクリプションが無効になっています。
Resolution: Azure サブスクリプションは、さまざまな理由で無効になる可能性があります。 解決するために必要なアクションを実行するには、「無効なAzure サブスクリプションを再アクティブ化するを参照してください。
Application Gateway のエラー コード
エラーコード: ApplicationGatewayCertificateDataまたはKeyVaultSecretIdの指定が必要です / ApplicationGatewaySslCertificateDataの指定が必要です
説明: リスナー証明書を更新しようとすると、このエラーが発生する可能性があります。 このエラーが発生すると、証明書を更新するための変更は破棄され、リスナーは以前に定義された構成でトラフィックを処理し続けます。
解決策:この問題を解決するには、証明書をもう一度アップロードしてみてください。 たとえば、次の 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
次のステップ
Application Gateway を引き続き使用する場合は、次のトラブルシューティングに関する記事が役立つ場合があります。
- 無効化されたリスナーの理解と修正
- Azure Application Gateway Resource Healthの概要