Azure Front Door から Key Vault 証明書にアクセスできない時の RBAC 設定と解決策まとめ

Azure Front Door と Azure Key Vault を組み合わせて証明書を管理しようとすると、「Key Vault は RBAC なのに、AFD から証明書一覧が見えない」「証明書追加でアルゴリズム不一致エラーになる」「Web App から Key Vault にアクセスできない」といった問題に頻繁にぶつかります。本記事では、Access Policies を使わず RBAC だけでこれらを解決するための考え方と、実際の設定手順・チェックポイントを詳しく解説します。

目次

Azure Front Door から Key Vault の証明書にアクセスできない典型パターン

まず、よくあるトラブルのシナリオを整理します。次のような状態になっていないでしょうか。

  • Key Vault は「RBAC モデル」で構成済み(Access Policies は無効)。
  • Azure ポータルの Azure Front Door(AFD)ブレードで、[セキュリティ] > [シークレット] から Key Vault を選択。
  • 証明書を選択しようとすると、「ポータルのログイン アカウントに List 権限を割り当ててください」 という趣旨のメッセージが出て一覧が表示されない。
  • とりあえず Key Vault Reader をログインユーザーに付けてみたが、状況は変わらない。
  • ようやく証明書を選べたと思ったら、AFD への追加時に “public key algorithm mismatch with signature algorithm” と表示され、証明書を取り込めない。
  • さらに、同じ Key Vault を参照する Web App(App Service)側では「サービスにアクセス権がない」と怒られる。

どれもバラバラの事象に見えますが、根っこにあるのは Key Vault RBAC とネットワーク制限の理解不足 と、AFD が扱える証明書の要件 です。順番に整理していきます。

Key Vault の RBAC を正しく理解する:管理プレーンとデータプレーン

RBAC でつまずきやすいポイントは、管理プレーン(Management Plane) と データプレーン(Data Plane) が明確に分かれていることです。

  • 管理プレーン:Key Vault リソース自体の作成・削除、設定変更、タグ、ネットワーク設定など。
  • データプレーン:Key Vault に格納された 秘密鍵・証明書・シークレット の list/get/set など。

RBAC ロールも、どちら向きの権限かで役割が分かれています。代表的なロールを表にまとめると次の通りです。

ロール名対象プレーン主な権限典型的な用途
Owner / Contributor管理プレーンKey Vault の作成・削除・設定変更が可能。中身のデータへは直接アクセスできない。インフラ管理者、IaC(Bicep / Terraform)でのリソース管理。
Key Vault Reader管理プレーンKey Vault の構成を閲覧のみ。証明書・シークレットの list/get は不可。監査・設定レビュー用。
Key Vault Secrets Userデータプレーンシークレットの list/get が可能。アプリケーションから接続文字列や API Key を読み取る。
Key Vault Certificate Userデータプレーン証明書オブジェクトの list/get が可能。AFD や App Service が TLS 証明書を取得する。

重要なのは、Key Vault Reader は「中身(証明書・シークレット)が見えるロールではない」という点です。AFD や Web App が必要としているのは データプレーンの list/get 権限 なので、Key Vault Certificate User などのデータプレーン ロールを割り当てる必要があります。

ポータルで「List 権限が必要」と表示される理由

AFD ブレードの [セキュリティ] > [シークレット] 画面で証明書一覧を取得しようとすると、次のようなメッセージが表示されることがあります。

  • 「Key Vault に対する List 権限がありません」
  • 「ポータルのログイン アカウントに List 権限を割り当ててください」

このメッセージのポイントは、Key Vault へ一覧取得を要求しているのは AFD ではなく、あなた自身のサインイン アカウントであるという点です。ポータルの UI が、あなたの権限で Key Vault の証明書一覧を list しようとし、その権限が不足しているためエラーになっています。

したがって、次の 2 つの主体に RBAC ロールを割り当てる必要があります。

主体必要なロールスコープ目的
Azure ポータルにログインしているユーザーKey Vault Certificate User対象の Key Vault(リソースレベル)ポータルから証明書一覧を list / get できるようにする。
実際に Key Vault から証明書を取得するリソース
(AFD / Web App のマネージド ID 等)
Key Vault Certificate User同じく対象の Key Vaultサービスが実行時に証明書を取得できるようにする。

ログインユーザーに Key Vault Certificate User を付与する手順

  1. Azure ポータルで対象の Key Vault を開く。
  2. 左側メニューから [アクセス制御 (IAM)] を選択。
  3. [ロールの割り当てを追加] をクリック。
  4. ロールの一覧から [Key Vault Certificate User] を選択し、[次へ] をクリック。
  5. [メンバーを選択] から、自分自身のユーザーアカウントを検索して追加。
  6. [確認および割り当て] をクリックして完了。

数分待ってから再度 AFD の画面で証明書一覧を開くと、エラーが消え、Key Vault 内の証明書が参照できるようになります。

Azure Front Door に必要な RBAC 設定:サービスにもロールを付ける

AFD から Key Vault の証明書を利用するには、AFD 自身(のマネージド ID やサービス プリンシパル)にも Key Vault Certificate User を付与する必要があります。UI で一覧が見えていても、実際に証明書を取り込むのは AFD 本体であり、AFD が Key Vault にアクセスできなければ運用時に失敗します。

ここでは、AFD 側にマネージド ID があるケースを例にします。

AFD の ID を確認する

  1. AFD(Standard/Premium)のリソースを開く。
  2. 左メニューから [ID](もしくは [マネージド ID])を選択。
  3. システム割り当て が有効になっていることを確認し、有効でなければ有効化する。
  4. 表示されている オブジェクト ID を控えておく(ロール割り当ての際に利用)。

AFD のマネージド ID に Key Vault Certificate User を付与

  1. 対象の Key Vault の [アクセス制御 (IAM)] を開く。
  2. [ロールの割り当てを追加] をクリック。
  3. ロールに [Key Vault Certificate User] を選択。
  4. [メンバーを選択] から [マネージド ID] を選択し、AFD リソースを検索して選択。
  5. [確認および割り当て] で完了。

スクリプトや IaC で管理している場合は、以下のように Azure CLI を用いてロール割り当てを自動化しておくと運用が安定します。

az role assignment create \
  --assignee <AFD のプリンシパル ID> \
  --role "Key Vault Certificate User" \
  --scope <Key Vault のリソース ID>

ここまで設定すると、「見る人(あなた)」と「取得するサービス(AFD)」の両方に必要な権限が揃い、AFD からの証明書参照が RBAC のみで完結します。

Key Vault ネットワーク設定が原因で UI が失敗するケース

RBAC を正しく設定しても、Key Vault の ネットワーク制限(ファイアウォール) が原因で証明書一覧が取得できないことがあります。特に以下のような構成の場合にハマりがちです。

  • Key Vault が 「プライベート エンドポイントのみ許可」 または 「選択したネットワーク(VNet/IP)のみ許可」 になっている。
  • Azure ポータルからのアクセス(バックエンドの管理プレーン呼び出し)と、AFD / Web App からのアクセスの経路が異なる。

実際の事例では、次の操作を行ったことで UI 上のエラーが解消したケースがあります。

  1. Key Vault の [ネットワーク] 設定を開く。
  2. 一時的に 「すべてのネットワークを許可」 に変更して保存。
  3. 数分後、再度 「選択したネットワークのみ許可」 に戻し、必要な VNet / IP を再設定。

この操作によって、Key Vault のネットワーク設定が再適用され、ポータルからの一覧取得が正常に動作するようになりました。実運用では、恒久的に「すべてのネットワーク」を開くのではなく、一時的なリフレッシュ用途 として使い、最終的には 最小権限のネットワーク制限 に戻すことが重要です。

AFD で “public key algorithm mismatch with signature algorithm” が出る理由

RBAC とネットワークを整えても、AFD に証明書を追加する際に次のようなエラーに遭遇することがあります。

public key algorithm mismatch with signature algorithm

これは、証明書の 公開鍵アルゴリズム と 署名アルゴリズム の組み合わせが AFD のサポート範囲外であることを意味しています。特に問題になりやすいのが、楕円曲線暗号(EC/ECDSA)証明書を使っているケース です。

AFD は現時点で RSA ベースの証明書 を前提としており、EC/ECDSA 証明書はサポートされていません。そのため、証明書の種類によっては、Key Vault には登録できても AFD へのバインド時に上記のエラーとなります。

解決策:RSA 証明書で再発行する

対処方法はシンプルで、AFD で利用する TLS 証明書を RSA 方式で再発行 することです。

  • 証明書発行時に、キータイプ:RSA、鍵長:2048 ビット以上 を選択する。
  • ACME / Let’s Encrypt 連携や証明書ベンダーの管理画面で、ECC を選択していないか確認する。
  • Key Vault に登録済みの ECDSA 証明書は AFD 用には使えないため、RSA 証明書を別オブジェクトとして登録する。

AFD での TLS ポリシーやセキュリティ要件を踏まえつつ、「AFD 用は RSA 前提」 という運用ポリシーを設計時点で明確にしておくと、後々のトラブルを防止できます。

Web App(App Service)から Key Vault 証明書を参照する際の権限設定

同じ Key Vault を Web App からも利用している場合、次のようなエラーに遭遇することがあります。

  • 「Key Vault へのアクセス権がありません」
  • HTTP 403 / Forbidden が返却される。

これも原因はシンプルで、Web App のマネージド ID やサービス プリンシパルに Key Vault のデータプレーンロールが付与されていないためです。AFD と同様に、アプリケーション側の ID に Key Vault Certificate User(証明書)や Key Vault Secrets User(シークレット)を付与します。

Web App のマネージド ID を有効化

  1. 対象の Web App を開き、左メニューから [ID] を選択。
  2. システム割り当て を [オン] にして保存。
  3. 表示される オブジェクト ID を控えておく。

Key Vault 側でロールを付与

  1. Key Vault の [アクセス制御 (IAM)] を開く。
  2. [ロールの割り当てを追加] をクリック。
  3. [Key Vault Certificate User](証明書を使う場合)や [Key Vault Secrets User](シークレットを使う場合)を選択。
  4. [メンバーを選択] から [マネージド ID] を選び、先ほどの Web App を検索して選択。
  5. [確認および割り当て] で完了。

アプリ側では、環境変数やアプリ設定で @Microsoft.KeyVault(SecretUri=...) 形式を使うことで Key Vault の値を参照できますが、その裏側で動いているのは マネージド ID + RBAC ロール です。どの ID にどのロールを付けたかを、必ずドキュメント化しておきましょう。

誰にどのロールを付けるか:設計の早見表

ここまでの内容を、「誰に」「どのロールを」付与すべきかという観点でまとめると次のようになります。

主体用途推奨ロール(Key Vault スコープ)備考
インフラ管理者Key Vault の作成・設定・監査Contributor + Key Vault Reader など通常はデータプレーン ロールを付けず、必要最小限に。
運用担当者(証明書を確認する人)ポータルで証明書内容や期限を確認Key Vault Certificate Userデータプレーン専用の閲覧ロール。
Azure Front DoorKey Vault から TLS 証明書を取得し、エンドポイントにバインドKey Vault Certificate UserAFD のマネージド ID / サービス プリンシパルを対象に割り当てる。
Web App / App Serviceアプリから証明書やシークレットを読み取る証明書: Key Vault Certificate User
シークレット: Key Vault Secrets User
システム割り当て / ユーザー割り当てマネージド ID を利用する。

詳細チェックリスト:設定漏れを一つずつ潰す

実際にトラブルシュートする際は、次のチェックリストに沿って確認すると整理しやすくなります。

カテゴリ確認項目ポイント
Key Vault モードKey Vault が RBAC モデルになっているかAccess Policies と RBAC を混在させない。新規構築では RBAC 推奨。
ユーザー権限ログインユーザーに Key Vault Certificate User が付いているかUI の一覧取得はあなたの権限で行われる。
AFD 権限AFD の ID に Key Vault Certificate User が付いているかマネージド ID / SPN を間違えないこと。
Web App 権限Web App のマネージド ID に適切なロールがあるか証明書とシークレットでロールが違う点に注意。
ネットワークKey Vault ファイアウォール設定の整合必要に応じて「すべてのネットワークを許可」→元に戻す、でリフレッシュ。
証明書種別AFD 用証明書が RSA で発行されているかEC/ECDSA は AFD では使えない。RSA 2048 以上を基本とする。
動作確認AFD / Web App から実際に証明書・シークレットを取得できるかポータルのテストだけでなく、実際の動作ログも確認する。

よくある誤解とつまずきポイントを詳しく解説

「Key Vault Reader を付けたのに中身が見えない」

Key Vault Reader は名前から「中身が読めそう」な印象を与えますが、実際には 管理プレーン専用の閲覧ロール です。Key Vault の構成情報(SKU、エンドポイント、ネットワーク設定など)は閲覧できますが、証明書・シークレットの list/get は一切できません。

証明書やシークレットの一覧を取得したい場合は、必ず Key Vault Certificate User / Key Vault Secrets User などのデータプレーンロールを併用してください。

「ポータルのメッセージが『ログイン アカウントに List を…』と言っている意味」

これは、AFD や Web App の権限ではなく、あくまで あなた自身のサインイン アカウント に対する要求です。実際の運用では、次の 2 段階に分けて考えると整理しやすくなります。

  1. 設計・運用者のための閲覧権限:ポータルで Key Vault の証明書内容を確認するためのロール(Certificate User)。
  2. サービスのための実行時権限:AFD / Web App が実行時に証明書・シークレットを取得するためのロール。

この 2 つを混同して「サービス側にだけロールを付けたから大丈夫」と考えると、UI での操作ができずにハマる原因になります。

「ロールを付けたのに反映されない」

RBAC ロールの変更は即時反映されることもありますが、実際には数分程度の伝播遅延が発生します。また、Key Vault のネットワーク設定が不整合な状態になっていると、権限は正しくても UI 側でエラーになることがあります。

そのため、次の順番で切り分けるのがおすすめです。

  1. ロール割り当てが正しいプリンシパルに付いているかを再確認。
  2. 数分待ってポータルをリロード。
  3. Key Vault のネットワーク設定を見直し、一時的なリフレッシュ(すべて許可 → 元に戻す)を試す。
  4. それでもダメな場合は、Activity Log や診断ログで 403 / ネットワーク関連のエラーを確認。

「Web App / AFD 本体にも権限が必要」という当たり前を忘れる

実際に Key Vault から証明書・シークレットを取得するのは、人ではなく サービス(AFD / Web App) です。そのため、どれだけ人にロールを付けても、サービス側の ID にロールを付け忘れていれば動作しません。

特に、ステージング/本番など複数の Web App を使っている場合は、それぞれのマネージド ID に対してロールが付いているか を環境単位でチェックすることが重要です。

再発防止のための設計パターンと運用のコツ

同じ問題を繰り返さないためには、最初の設計段階で 役割の分離 と ポリシー化 を行っておくことが効果的です。

人とサービスでロールを分ける

  • 人(運用者)は 閲覧専用のデータプレーンロール(Key Vault Certificate User / Secrets User)を付ける。
  • サービス(AFD / Web App)には 実行時に必要な最小権限のみ を付与し、できれば環境ごとに ID を分離する。
  • 管理プレーンの権限(Contributor など)は、できるだけ限定されたメンバーに絞る。

証明書要件を先に固定しておく

  • 「AFD で使う証明書は RSA のみ」「鍵長は 2048 以上」といったルールをチーム内で共有する。
  • 証明書ベンダーや ACME クライアントの設定テンプレートとして保存し、毎回同じ条件で発行できるようにする。
  • Key Vault 内のオブジェクト命名規則を決め、RSA / ECC の区別が名前で分かるようにする(例:myapp-tls-rsa)。

変更手順を標準化し、チェックリスト化する

証明書や Key Vault の設定を変更する際は、次の流れを標準手順としてドキュメント化しておくと安全です。

  1. RBAC の確認:ログインユーザーと対象サービスに必要なロールが付いているか。
  2. ネットワーク設定の確認:Key Vault のファイアウォールと Private Endpoint の状態。
  3. 証明書種別の確認:AFD 用の場合は RSA かどうか。
  4. UI でのテスト:AFD / Web App から証明書を選択・参照できるか。
  5. 本番リリース:切替後のログ・メトリクス監視。

この一連の流れをチェックリストとして運用チームに共有しておけば、「どこから見直せばよいか分からない」という事態を防げます。

まとめ:AFD × Key Vault をシンプルに動かすポイント

Azure Front Door と Key Vault の連携は、理解してしまえば難しくありませんが、RBAC とネットワーク、そして証明書要件が絡むため、一箇所でも誤ると「証明書が見えない」「バインドできない」「アプリからアクセスできない」といったトラブルになりがちです。

本記事のポイントをあらためて整理すると、次のようになります。

  • ポータルの UI で証明書一覧を引くのは、あなた自身のアカウント。
    Key Vault スコープで Key Vault Certificate User を自分に割り当てる。
  • 実際に証明書を取得するのは AFD や Web App。
    それぞれのマネージド ID / サービス プリンシパルにも Key Vault Certificate User(および必要なら Secrets User)を割り当てる。
  • Key Vault のファイアウォール設定が UI の一覧取得を妨げることがある。
    必要に応じて「すべてのネットワークを許可」→元に戻す、で設定を再適用する。
  • AFD は ECDSA 証明書をサポートしない。
    AFD 用の証明書は RSA(2048 ビット以上) で発行し、「public key algorithm mismatch」エラーを回避する。
  • Access Policies に頼らず、RBAC だけで完結する設計 にしておくと、役割分離と監査がしやすくなる。

これらのポイントを押さえておけば、Azure Front Door と Key Vault の連携は、セキュアかつ運用しやすい形で構成できます。既存環境で問題が出ている場合も、この記事のチェックリストに沿って一つずつ確認していけば、原因の切り分けと再発防止策の整理に役立つはずです。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次