タグ別アーカイブ: Heroku

Expedited WAFの障害で半日放置を食らった話

一昔前までHerokuでWAFといえばsqreenでしたが、現在はHeroku add-onから消滅してしまい、導入のお手軽さも含めてExpedited WAFを導入されている方も多いかと思います。

Expedited WAFとは

Expedited WAFはHeroku アプリケーションとクライアントとの間に配置され、Expedited WAFを経由することで、機能します。また、導入が比較的簡単なので当社でも導入しているプロジェクトは増えつつあります。

また、WAF以外のサービスも提供されており、DDos対策やトラフィックコントロール、HTTPメソッドの制限なんてこともできます。また、サイトアクセレーションなんて機能もついているなかなか優秀なadd-onです。

【参照】Expedited WAF

https://elements.heroku.com/addons/expeditedwaf

今回何が起こったか

Expedited WAFを導入することによりカスタムドメインのDNS AレコードはExpedited WAFに向ける必要があり、結果SSLについてもExpedited WAFに依存します。
すなわち、Expedited WAFが証明書を発行してくれる形になります。

Expedited WAFにおいても証明書の有効期限が近づいてきた場合、HerokuのAutomated Certificate Management​ (ACM)と同様、自動で証明書を更新してくれる(おそらく期限が近づいてきた証明書を検知し中の人が手作業で更新してそう)わけですが、今回この有効期限が近づいた証明書を検知する処理にてエラーが発生(Expedited WAF側の見解)しSSLが更新されず期限を迎え、HTTPS通信ができない状態が発生したことにより稼働しているサービスが丸々一日証明書期限切れの状態となってしまいました。

復旧までの道のり

こちら側では、SSLを再設定することは一切できないため、早速Expedited WAF管理画面にある、「Need Help?」からSSLの有効期限が切れている旨のメッセージを送りました。

ほどなくしてサポートから連絡があり、現在サブドメインにてAレコードを設定してもらっているが何かしらのエラーで検知できないのでルートドメインも併せてAレコードをExpedited WAFに向けてほしいと指示がありました。

今回の場合、Herokuにてカスタムドメインを使用する際、CNAMEでの設定になるためサブドメインにて運用しておりルートドメインは空きがあったことから指示通りルートドメインのAレコードをExpedited WAFに向けることにしました。

【参照】DNSにルートドメインを設定する

https://devcenter.heroku.com/ja/articles/custom-domains#configuring-dns-for-root-domains

1時間程度で証明書の再発行手続きが完了したと連絡があり安堵し早速確認したところ、発行されたのはルートドメインの証明書のみで、その証明書がサブドメインにても適用されており、有効期限こそ来年になっていたものの証明書が一致せず引き続きエラーの状態が発生していました。

早速メッセージを送りサブドメインの証明書を発行してもらうようお願いしました。この時点で13時だったのですが連絡が途絶えてしまい、その後複数メッセージをプッシュしても折り返しのない状態が続きました。
緊急対応として一旦WAFを外すという選択肢もあったものの、外した後の再設定の工数等を考慮して1日待って連絡がなければ外そうということにしました。

結局この件について折返しの連絡があったのは23時過ぎとなりその日は日中丸々サービスが止まった状態となってしまいました。
折返しがあってから2〜3時間程度でサブドメインの証明書を発行してもらい復旧したのですが、障害発生から復旧まで13時間を要しました。

先方の活動時間からしてアメリカの東海岸側にある会社かなと思われますが連絡がつかないというのはかなりの痛手でした。

まとめ

add-onに関してだけではないですがサードパーティのパッケージにサイト運用の可用性の一部を委ねる際は注意が必要で、できるだけ状況を監視できる体制を作っておかないといけない(今回ですとSSL証明書の有効期限)ということをまさに今回思い知らされた出来事でした。

副次的な知見

HerokuではCNAMEによるカスタムドメインの紐付けを行っており、そのままではルートドメインを指定することができません。ルートドメインを設定する方法として、レコードに*(ワイルドカード)を使用したり、PointDNSというadd-onを使用したりすることで達成されますが、今回の障害の内容で気づいたのですが、Expedited WAFにおいてはAレコードにて設定しているわけですからネームサーバを変更することなくルートドメインの使用が可能になります。

さいごに

ソリューションウェアでは、さまざまな分野の案件を幅広く持ち合わせておりスキルアップには最適の環境です。自身のスキル向上に悩んでいる方、エンジニアとしてもう一皮むけたいと考えている方、一緒に私達と働きませんか?お気軽に一度ソリューションウェアにご相談ください。

ソリューションウェアキャリア採用説明応募フォーム