Azure Application Gateway の一般的なキー コンテナー エラー

Application Gateway を使うと、TLS 証明書を Azure Key Vault に安全に格納できます。 キー コンテナー リソースを使う場合、ゲートウェイからリンクされたキー コンテナーに常にアクセスできることが重要です。 Application Gateway から証明書をフェッチできない場合、関連付けられた HTTPS リスナーは無効な状態になります。 詳細情報 を参照してください。

この記事は、エラー コードの詳細と、このようなキー コンテナーの構成ミスを解決する手順を理解するのに役立ちます。

ヒント

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

Azure Advisor のエラー コード

以降のセクションでは、発生する可能性のあるさまざまなエラーについて説明します。 ゲートウェイにこのような問題があるかどうかを確認するには、ご自分のアカウントの Azure Advisor にアクセスして、このトラブルシューティングの記事を使用して問題を修正します。 ゲートウェイでキー コンテナーの問題が検出されたときに常に情報を得るために、Azure Advisor アラートを構成することをお勧めします。

Note

Azure Application Gateway では、キー コンテナーの診断に関するログを 4 時間ごとに生成します。 構成を修正した後も診断で引き続きエラーが表示される場合は、ログが更新されるまで待つことが必要になる可能性があります。

エラー コード: UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault

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

解決方法: ユーザー割り当てマネージド ID にシークレットに対するアクセス許可を付与するようにキー コンテナーのアクセス ポリシーを構成します。 これは次のいずれかの方法で行えます。

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

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

 Screenshot that shows how to resolve the Get permission error.

詳細については、Azure portal を使用した Key Vault アクセス ポリシーの割り当てに関するページを参照してください。

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

  1. Azure portal で、リンクされたキー コンテナーに移動します。
  2. [アクセス ポリシー] ブレードを開きます。
  3. [アクセス許可モデル][Azure ロールベースのアクセス制御] を選びます。
  4. [アクセス制御 (IAM)] ブレードに移動してアクセス許可を構成します。
  5. 次を選んで、マネージド ID のロールの割り当てを追加します
    a. [ロール]: Key Vault Secrets User
    b. [アクセスの割り当て先]: マネージド ID
    c. [メンバー]: 自分のアプリケーション ゲートウェイに関連付けたユーザー割り当てマネージド ID を選びます。
  6. [レビューと割り当て] を選択します。

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

Note

Azure ロールベースのアクセス制御を使用する場合、新しいキー コンテナーベースの証明書を追加するためのポータルのサポートは現在利用できません。 これは、ARM テンプレート、CLI、または PowerShell を使用して実行できます。 ガイダンスについては、こちらのページを参照してください。

エラー コード: SecretDisabled

説明: 関連付けられている証明書が Key Vault で無効になっています。

解決方法: Application Gateway に現在使用されている証明書のバージョンを再び有効にします。

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

Screenshot that shows how to re-enable a secret.

エラー コード: SecretDeletedFromKeyVault

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

解決方法: 削除された証明書を復旧するには、次の手順を実行します。

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

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

Screenshot that shows how to recover a deleted certificate in Key Vault.

エラー コード: UserAssignedManagedIdentityNotFound

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

解決方法: 新しいマネージド ID を作成し、キー コンテナーで使用します。

  1. 以前使用されていたのと同じ名前を持つマネージド ID を同じリソース グループに再作成します。 (ヒント: 名前付け規則について詳しくは、リソースのアクティビティ ログを参照してください)。
  2. 目的のキー コンテナー リソースに移動し、この新しいマネージド ID に必要なアクセス許可を付与するようそのアクセス ポリシーを設定します。 UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault で説明されているのと同じ手順に従うことができます。

エラー コード: KeyVaultHasRestrictedAccess

説明: Key Vault の制限されたネットワーク設定が存在します。

解決方法: このエラーは、制限されたアクセスのために Key Vault ファイアウォールを有効にした場合に発生します。 次の手順に従うことによって、引き続き Key Vault の制限されたネットワークで Application Gateway を構成できます。

  1. Key Vault で、[ネットワーク] ペインを開きます。
  2. [ファイアウォールと仮想ネットワーク] タブを選択し、[プライベート エンドポイントと選択されたネットワーク] を選択します。
  3. 次に、[仮想ネットワーク] を使用して、Application Gateway の仮想ネットワークとサブネットを追加します。 このプロセス中に、チェックボックスをオンにして 'Microsoft.KeyVault' サービス エンドポイントも構成します。
  4. 最後に、[はい] を選択して、信頼されたサービスが Key Vault のファイアウォールをバイパスできるようにします。

Screenshot that shows how to work around the restricted network error.

エラー コード: KeyVaultSoftDeleted

説明: 関連付けられているキー コンテナーが論理的な削除の状態にあります。

解決方法: Azure portal で、キー コンテナーを検索します。 [サービス] で、[キー コンテナー] を選択します。

Screenshot that shows how to search for the Key Vault service.

[マネージド削除されたコンテナー] を選択します。 ここから、削除された Key Vault リソースを見つけ、それを復旧することができます。 Screenshot that shows how to recover a deleted key vault.

エラー コード: CustomerKeyVaultSubscriptionDisabled

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

解決方法: Azure サブスクリプションは、さまざまな理由で無効になることがあります。 解決するために必要なアクションを実行するには、無効になっている Azure サブスクリプションの再アクティブ化に関するページを参照してください。

Application Gateway のエラー コード

エラー コード: ApplicationGatewayCertificateDataOrKeyVaultSecretIdMustBeSpecified / ApplicationGatewaySslCertificateDataMustBeSpecified

説明: リスナーの証明書を更新しようとすると、このエラーが発生する可能性があります。 このエラーが発生すると、証明書を更新するための変更は破棄され、リスナーは引き続き以前に定義されていた構成を使ってトラフィックを処理します。

解決策: この問題を解決するには、証明書をもう一度アップロードしてみてください。 たとえば、次の 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 を引き続き使用する場合は、次のトラブルシューティングに関する記事が役立つことがあります。