クラウドサービス利用のリスク ~設定不備で数百万円の課金が発生することも~ / How I Got Pwned by My Cloud Costs

Have I Been Pwned(HIBP)はクラウドファーストのサービスとして構築され、Azure Table Storageのような最新のクラウドパラダイムを活用して、以前は達成できなかったようなレベルのパフォーマンスでコストを大幅に削減することができました。これは小さなお金で大きな成功の実現ですが、今日はその正反対、クラウド・コストに負けた話について書きます。

それは、2021年12月のAzureの請求書が、通常よりはるかに高額だったことから始まりました。問題を発見するのに少し時間がかかりました。

 


その請求書は2022年1月10日に届きましたが、武漢ウイルスの影響で、請求書を見るまでにさらに10日ほどかかってしまいました。

私が最初に見るのはAzureのコスト分析で、上記のような項目を使用しているすべての個別サービスに分解しています。HIBPは、ウェブサイト、関係データベース、サーバーレス「Functions」、ストレージなど、多くの異なるコンポーネントで構成されています。すぐに、あるサービスがトップに浮き上がりました。


最初の項目が、すべてのサービスにおける帯域幅コストの98%を占めています。すべての HIBP サービスだけでなく、Hack Yourself First から Why No HTTPS まで、Azure で実行しているすべてのサービスです。ここで話しているのは、Microsoft の Azure インフラストラクチャから送信されるデータの帯域幅(GB あたり 0.1205 豪ドル)であり、通常は Web サイトへのトラフィックなどです。しかし、これはストレージアカウントです。まず、使用量が急増し始めた時期から見てみましょう。

2021年12月20日。NCAから提供された何億もの新しいパスワードとともに、FBIのためのPwned Passwordsインジェスト・パイプラインが開始されたのです。オープンソースのコードベースが初めて製品としてリリースされたのでしょうか。それとも他に何か?私は、帯域幅の使用状況をより細かく調べることから始め、さらに深く掘り下げていく必要がありました。

一貫して、それぞれのスパイクは17.3GBでした。完全に直線的な分布ではありませんが、かなり規則的なスパイクです。Pwned Passwordsのダウンロード可能なハッシュです。しかし、これらは常にCloudflareのエッジノードにキャッシュされます。そのため、私は無料でサービスを提供することができ、オリジンサービスからの帯域幅を無視できるように、そこの人々と多くの仕事をしました。実際、それが問題だったのでしょうか?ストレージアカウントで診断を有効にして、個々のリクエストのレベルまで、もう一度深く掘り下げてみましょう。

さて、そこで問題です。これらのリクエストは定期的にログに現れ、17.3GB分のコストが発生していたのです。このIPアドレスはCloudflareのもので、トラフィックは間違いなく彼らのインフラを経由しており、したがってキャッシュされるはずでした。Cloudflareのダッシュボードが何を言っているのか見てみましょう。

Cloudflareがキャッシュすべきものをキャッシュしていないという症状は明らかでしたが、根本的な原因は明らかではありませんでした。私はすべての設定、例えば「downloads」サブドメインのキャッシュポリシーを定義するページルールを調べ直しました。

そして、その結果、両方のSHA-1アーカイブが15GBを超えていました。根本的な原因がはっきりしたので、Cloudflareのルールを微調整してみました。

HIBPのウェブサイトから直接ダウンロードできるリンクを削除し、シードがたくさんあるtorrentだけを残したので、データを入手するのはまだ簡単でした。その後、Cloudflareが15GBの上限を上げたので、torrentをダウンロードできる環境にない人たちのためにリンクを復活させました。危機は去りました。

それで、被害総額はどうなったのでしょうか?

その期間の通常の使用量に加え、11,000AUD以上の費用がかかっています。痛っ! 他の地域の人たちからすると、約8,000USD、約6,000GBP、約7,000EUR、約840,000JPYに相当します。これは、1日あたり約350豪ドルが、1カ月間かかったことになる。本当に痛かったし、起こってはならないことだった。もっと早く気づいて、このようなことが起こらないような安全策をとっておくべきだったのです。

まず、Azureの帯域幅が高価であることは常に認識し、特に最も多くのデータを扱うストレージアカウントについて、もっとよく監視するべきです。この記事の最初のグラフを見ると、トラフィックが異常になる前では、帯域幅は1日に50GBを超えることはありませんでした。この閾値を超えたときに、ストレージアカウントにアラートを設定しましょう。

出典:How I Got Pwned by My Cloud Costs


【クラウド設定で恐ろしい課金額が発生した他の記事】

AWS Lambdaで300万円以上課金されてしまった怖い話