見出し画像

【実録】Key Vaultの証明書は更新したのに、App Gatewayが古い証明書を返し続けた話|AIで設計した再発防止策つき

Smart IT & AI Hub|AIという名の刃を、今日も抜く。

この記事はSmart IT & AI Hubが公開しているコンテンツです。
他の記事は目的別インデックスからどうぞ。

「Key Vaultの証明書は更新した。だから大丈夫。」

そう思っていました。

でも利用者からは「証明書エラーが出る」という連絡が来ました。
ブラウザで確認すると、期限切れの古い証明書が返ってきていたんです。
今回は、過去に私が経験したことを他の方は経験しなくて済むように願いを込めて、AIと一緒に設計した再発防止策をここに残しておきます。


何が起きたのか

証明書の更新作業の日です。

Key Vaultに新しい証明書をアップロードして、バージョンが上がったことをPortalで確認しました。「作業完了」と判断してチケットをクローズしました。

数日後、利用者から連絡が入りました。

「ブラウザで証明書エラーが出ている」

確認すると、App GatewayのHTTPSリスナーが古い証明書を返し続けていました。

原因:
App GatewayのHTTPSリスナーで
Key VaultのSecret URIを
バージョン付きで指定していた

例:
https://xxx.vault.azure.net/secrets/cert-name/xxxxxxxx
                     ↑このバージョン番号が問題

↓

Key Vaultに新しい証明書バージョンを追加しても、
App Gateway側のSecret URIが古いバージョン番号付きで固定されていたため、
App Gatewayは新しいバージョンを自動取得できなかった。

↓

古い証明書が期限切れになり
HTTPSアクセスエラーが発生

Key Vaultの作業は完了していた。でもApp Gateway側は何も変わっていなかったんです。



復旧までにやったこと

① App GatewayのリスナーでKey Vaultの
 Secret URIを確認
 → バージョン付きURIになっていることを発見

② Key Vault側で最新の証明書バージョンが
 有効になっているか確認
 → 有効なことを確認

③ App Gatewayに紐づくユーザー割り当てマネージドIDの権限を確認
 → Key VaultのSecretに対するGet権限、
  またはKey Vault Secrets Userロールがあることを確認

④ App GatewayのSecret URIを
 バージョンなしに変更

 変更前:
 https://xxx.vault.azure.net/secrets/cert-name/xxxxxxxx
 変更後:
 https://xxx.vault.azure.net/secrets/cert-name/

⑤ App Gatewayの設定反映後、
 対象HTTPSリスナーで新しい証明書が使われていることを確認

⑥ ブラウザとcurl -vで
 新しい証明書が返っていることを確認

設定変更後、App Gatewayの反映に少し時間がかかりましたが、無事に新しい証明書が返るようになりました。
なお、App GatewayはKey Vaultを定期的(現在は4時間毎)に確認するため、
反映まで時間がかかる場合があります。
急ぎで確認したい場合は、App Gateway側の設定変更により
Key Vaultへの再確認が走ることもあります。


AIに再発防止策を設計させた

復旧後、同じことを繰り返さないためにChatGPTに投げました。

以下の障害について、再発防止策を設計してください。

【障害概要】
・作業内容:Key Vaultへの証明書更新アップロード
・発生事象:App Gatewayが古い証明書を返し続けた
・原因:App GatewayのSecret URIがバージョン付きで
    固定されており、新しい証明書が適用されなかった
・復旧時間:バージョンなしURIに変更して約30分

以下の観点で整理してください:
① 作業前に確認すべきチェックリスト
② 作業中の確認ポイント
③ 作業後の検証手順
④ 次回同じ作業をする人への引き継ぎ事項


AIが出してきた再発防止策

① 作業前チェックリスト

・App GatewayのHTTPSリスナーで使っている
 Key Vault Secret URIがバージョンなしになっているか確認する

・App Gatewayに紐づくユーザー割り当てマネージドIDに、
 Key Vault SecretのGet権限があるか確認する
 (RBACの場合は Key Vault Secrets User ロール)

・Key Vault側で、対象証明書とSecretが有効化されているか確認する

② 作業中の確認ポイント

・Key Vaultに新しい証明書を追加したら、
 App Gateway側のリスナー状態も確認する

・App Gatewayの診断ログで、
 Key Vault参照エラーや証明書取得エラーが出ていないか確認する

・反映されない場合は、
 Secret URIのバージョン固定、権限不足、Secret無効化を疑う

③ 作業後の検証手順

・Key Vault上の更新完了だけで作業完了にしない

・ブラウザまたはcurl -vで、
 App Gateway経由で実際に返っている証明書を確認する

・証明書の有効期限、CN/SAN、拇印が新しいものになっているか確認する

④ 引き継ぎ事項

・App GatewayのSecret URIは原則バージョンなしに統一する

・証明書更新手順書には、
 App Gateway経由の証明書確認を必須項目として入れる

・証明書期限アラートはKey Vaultだけでなく、
 外形監視でも確認できるようにする

この障害から学んだこと

「Key Vaultの作業が完了した=証明書の更新が完了した」ではないんです。

App Gatewayがそのシークレットをどう参照しているか、まで確認しないと本当の完了にはなりません。

バージョン付きSecret URIは、一見「特定バージョンを明示していて安全そう」に見えますが、証明書を更新するたびに設定変更が必要になります。App Gatewayでは原則バージョンなしURIを使うのがおすすめです。



Smart IT & AI Hubの全記事はこちらにまとめています。
カテゴリ別に整理しているので、気になる記事がすぐ見つかります。

次の実験は、もう決まっている。

もし刺さったなら、スキだけ押してくれると嬉しい。 飛び上がって、次の実験に全力を注ぐ。

また会いに来てくれるなら、フォローしておいてくれ。 次も、AIに無茶ぶりしてくる。

Smart IT & AI Hub|AIという名の刃を、今日も抜く。

いいなと思ったら応援しよう!

たろっ@AIに仕事を丸投げしたいエンジニア ここまで読んでいただきありがとうございます。少しでも役に立った、また読みたいと思っていただけたら、応援してもらえると励みになります。いただいた応援は今後の記事づくりに活かします。