AzureのApplication Gateway V2だとリスナーの証明書の設定でKey Vaultから証明書をインポートできる。
しかしそのためにはKey Vaultのアクセスポリシーの権限の設定が必要。
PowerShellで設定するためのアクセスポリシーについてはPowerShellで設定ができる。
その設定はドキュメントに載っている。
Azure PowerShell で Key Vault 証明書を使用して TLS 終端を構成する
しかしポータルのGUIから設定するための設定はどうだろうか。
目次
Application GatewayでKey Vaultから証明書を読み込むために必要な設定
結論から言えば、Key Vaultのアクセスポリシーの設定には以下の設定が必要になる。
- マネージドIDの「シークレットのアクセス許可」の「取得」
- ユーザーの「証明書のアクセス許可」の「取得」と「一覧」
- ユーザーの「シークレットのアクセス許可」の「取得」
また、Key Vaultのネットワーク設定は「すべてのネットワーク」になっていなければならず、制限などをかけてはならない。
これらの設定がないときにどういうパターンのエラーがでるかというのが以下。
このキーコンテナーは、マネージド ID へのアクセスを許可しません。
このエラーが表示されるときはマネージドIDのアクセスポリシーの設定で「シークレットのアクセス許可」の「取得」がないために発生する。
そのため「取得」にチェックを入れて保存しておけば解消する。
証明書が「読み込んでいます ...」のままとなる
キー コンテナーでKey Vaultを選択したのにもかかわらず、証明書の欄がずっと「読み込んでいます...」は以下の状況の場合に発生する。
- 操作しているユーザのアクセスポリシーの設定に不備がある。
- Key Vaultのネットワークの「ファイアウォールと仮想ネットワーク」で「許可するアクセス元」が「すべてのネットワーク」になっていない。(自分のIPアドレスが許可されていない)
ユーザーのアクセスポリシーでは「証明書のアクセス許可」の「取得」と「一覧」が必要。
ネットワークの許可するアクセス元は「すべてのネットワーク」になっている必要があり、「プライベート エンドポイントと選択されたネットワーク」を選んでVnetを追加したり、Application GatewayのIPアドレスを設定したりしても駄目である。一応自分のIPアドレスを入れればこの問題は解消できるものの、Application Gatewayからは証明書の読み込みができないので結局「すべてのネットワーク」にする必要がある。
Data または KeyVaultSecretId のいずれかを指定する必要があります。
以下のエラーが出るような場合はユーザーのシークレットアクセスの「取得」のチェックが入っていない。
アプリケーション ゲートウェイ 'xxx' に構成の変更を保存できませんでした。エラー: Application Gateway の証明書 'Application GatewayのリソースID' では、Data または KeyVaultSecretId のいずれかを指定する必要があります。
アプリケーションゲートウェイの変更を保存できませんでした
以下のエラーが出るような場合はKey Vaultのネットワークの「ファイアウォールと仮想ネットワーク」で「許可するアクセス元」が「すべてのネットワーク」になっていない。
または、制限をかけている場合は以下の設定がされていない。
・「ファイアウォールと仮想ネットワーク」でApplication Gatewayのサブネットを許可していない
・Application Gatewayのサブネットでサービスエンドポイントが有効になっていない。
・「ファイアウォールと仮想ネットワーク」で信頼されたサービスが有効になっていない。
アプリケーション ゲートウェイ 'xxx' に構成の変更を保存できませんでした。エラー: 要求を解析できません。
ネットワークの許可するアクセス元は「すべてのネットワーク」になっている必要があり、「プライベート エンドポイントと選択されたネットワーク」を選んでVnetを追加したり、Application GatewayのIPアドレスを設定したりしても駄目である。