【入門編】 Cloud Armorのレートリミッティング(Rate Limiting)と過負荷制御 – クラウドインフラと仮想化ネットワーク実践ガイド

サーバーを守る「門番」の正体!Cloud Armorで学ぶレートリミッティングの仕組み

こんにちは!クラウドインフラの現場で、日々パケットの荒波と格闘しているSREです。

皆さんは、Webサイトを運営していて「なんだか急にアクセスが集中してサーバーが重い…」「誰かが執拗にログインを試みている?」といった不安を感じたことはありませんか?

今日は、Google Cloudの強力な防壁である「Cloud Armor(クラウドアーマー)」を使って、そんな脅威からサービスを守る「レートリミッティング(通信制限)」について、一緒に紐解いていきましょう。難しいネットワーク用語は一旦脇に置いて、身近な例えから入っていきますので安心してくださいね!

—

1. レートリミッティングって何?「郵便配達」でイメージしよう

まず、「レートリミッティング」という言葉、響きからして難しそうですよね。でも、イメージはとってもシンプルです。

想像してみてください。あなたは人気カフェの店長です。お店にはたくさんの注文が届きますが、もし「1秒間に1,000杯のコーヒーを淹れてくれ!」という無茶な注文が届いたらどうなるでしょう?当然、キッチンはパニックになり、本当に美味しいコーヒーを待っている他のお客さんに迷惑がかかってしまいますよね。

この「無茶な注文」をしてくる人やプログラムを、玄関先で「ちょっと待って!一度にそんなに頼まれたら困るから、ゆっくりにしてね」と止めるのが、レートリミッティングの役割です。

なぜこれが重要なのか

  • ブルートフォース攻撃対策: パスワードを何万通りも試すような攻撃者は、ものすごいスピードでアクセスしてきます。これを制限すれば、攻撃を無効化できます。
  • スクレイピング対策: サイトの情報を丸ごとコピーしようとするロボットの動きを抑えられます。
  • リソース保護: 想定外のアクセス過多から、背後のデータベースやサーバーを守り、サービスを安定させます。

—

2. 「429 Too Many Requests」というメッセージ

Cloud Armorで制限をかけると、制限を超えたリクエストに対してサーバーは 429 Too Many Requests というステータスコードを返します。

これは、「君、ちょっと注文しすぎだよ。今はこれ以上受け付けられないから、少し落ち着いてからまた来てね」という、サーバーからの丁寧なお断りメッセージなんです。

—

3. 実践!Cloud Armorで制限をかけてみよう

では、実際にGoogle Cloud上でどのように設定するかを見てみましょう。Google Cloudのコンソールや gcloud コマンドで設定できますが、今回はCLIでの設定例を紹介します。

例えば、「同じIPアドレスから1分間に100回以上のアクセスがあったら遮断する」というルールを作る場合、以下のような考え方で設定を行います。

# 1. セキュリティポリシーの作成(まずは空っぽの盾を作ります)
gcloud compute security-policies create my-web-policy \
    --description="レート制限付きのポリシー"

# 2. ルールの追加(ここで「1分間に100リクエストまで」というルールを定義)
gcloud compute security-policies rules create 1000 \
    --security-policy=my-web-policy \
    --expression="origin.ip == '1.2.3.4'" \
    --action=rate-based-ban \
    --rate-limit-threshold-count=100 \
    --rate-limit-threshold-interval-sec=60 \
    --ban-duration-sec=300 \
    # 1分間に100回を超えたら、300秒間(5分間)アクセス禁止にする設定です

パラメーターのポイント

  • rate-limit-threshold-count: 許容する回数です。ここを小さくすると厳しく、大きくすると緩くなります。
  • rate-limit-threshold-interval-sec: 「何秒の間に」という期間です。
  • ban-duration-sec: 制限を超えた相手を、何秒間「出入り禁止」にするかという設定です。

—

4. 現場で役立つ「設定のコツ」

初めて設定する際、一番怖いのは「普通のお客さんまでブロックしてしまわないか?」ということですよね。現場のSREが気をつけているポイントをこっそり教えます。

1. 最初は「監視モード」で始める
いきなりブロックするのではなく、まずは「どのIPがどれくらいアクセスしているか」をログで確認し、閾値(しきいち)が適切かを見極めるのが定石です。
2. IPアドレスだけで判断しないことも大事
大きなオフィスや大学など、一つのIPアドレスから多数の人がアクセスしている場合、全員をまとめてブロックしてしまうリスクがあります。必要に応じて、Cookieや特定のヘッダーを組み合わせるなど、より高度な識別方法を検討しましょう。
3. エラーページを親切に
429 エラーが出たとき、真っ白な画面が出るだけではユーザーは困惑します。「アクセスが集中しています。時間をおいて再読み込みしてください」といったメッセージを表示させるよう、バックエンド側でも準備しておくと親切ですね。

—

まとめ:クラウドの門番を味方につけよう!

Cloud Armorのレートリミッティングは、一度設定してしまえば、あとはGoogleの巨大なネットワークが自動で「門番」として働いてくれます。

最初は難しく感じるかもしれませんが、まずは「制限をかける」というより「サーバーを優しく守るための交通整理をする」という感覚で触ってみてください。皆さんのWebサイトが、より安全で快適な場所になることを心から応援しています!

インフラの道は一歩ずつ。また次の記事でお会いしましょう!

コメント

タイトルとURLをコピーしました