
概要
標題の通り、FrontDoorからキーコンテナへのアクセスを行なおうとした際にハマりましたので、内容をまとめます。
対応内容
まず最初は、シンプルに権限付与で本対応を行うおうと考えました。
- FrontDoorのサービスプリンシパルを作成(azコマンド)
- キーコンテナに対するアクセスポリシーを設定
- FrontDoorの[設定]-[シークレット]から証明書取得するよう設定
しかし、手順1でazコマンド(az ad sp create --id 205478c0-bd83-4e1b-a9d6-db63a3e1e1c8)を実行したところ、"When using this permission, the backing application of the service principal being created must in the local tenant"というエラーが表示され、FrontDoorのサービスプリンシパルを作成することができませんでした。
原因として、上記コマンドを実行するためにはEntraID全体管理者のアクセス許可が必要であることが分かり、別案での対応を模索しました。(会社が貸し出しているAzure検証環境のため、EntraID全体管理者のアクセス権付与が困難なアカウントでありました)
別案として、作成したFrontDoorのセキュリティ欄のIDからシステム割り当てを行い、生成されたオブジェクト(プリンシパル)IDをキーコンテナーのアクセスポリシーに追加する手順を試しました。しかし、アクセス権限が不足しているエラーが出力され、試しに全権限を付与しましたがそれでも失敗したため、権限以外のところに原因があるところまで絞り込むことができました。
エラー詳細
シークレット '<***>' を作成できませんでした。エラー: We don't have permission to access this secret. Go to 'Access policies' in your Key Vault account to give Microsoft.AzureFrontDoor-Cdn or managed identities (if you enabled managed identities in profile) permission to get secrets.
原因
キーコンテナー側でネットワークアクセス制限を設定していたことが原因でした。
キーコンテナー側でネットワークアクセス制限を設定している場合、FrontDoorの利用にあたり、信頼されたMicrosoftサービスからの通信が許可されるよう例外を構成する必要があります。「信頼されたMicrosoftサービスがこのファイアウォールをバイパスすることを許可する」(Microsoftが運用しているサービスだけは特別に通してあげるよ)にチェックを入れることで、FrontDoorがキーコンテナーにアクセスできるようになりました。