【入門編】 Cloud Armorのセキュリティポリシーにおける事前構成済みWAFルール(ModSecurityベース) – クラウドインフラと仮想化ネットワーク実践ガイド

門番はAIにお任せ!GCP Cloud ArmorでWebサイトを「鉄壁」にする方法

皆さん、こんにちは!SREの現場で日々クラウドのパケットと格闘しているエンジニアです。

Webサイトを公開すると、世界中から色々な「郵便(リクエスト)」が届きます。もちろん、心温まるお手紙(正当なユーザーからのアクセス)もあれば、中には「爆発物」や「怪しい勧誘チラシ」のような攻撃的な郵便物も混ざっています。

これらをすべて人間が目で見て選別していたら、あっという間に夜が明けてしまいますよね。そこで登場するのが、GCPの「Cloud Armor(クラウド・アーマー)」です。今日は、この「最強の門番」がどのようにして悪いリクエストをブロックしているのか、その仕組みとコツを優しく紐解いていきましょう!

—

Cloud Armorって、一体何者?

簡単に言えば、Cloud Armorは「Webサイト専用の高性能な受付係兼セキュリティガードマン」です。

Googleの巨大なネットワークの入り口で、やってくるリクエストを一つひとつチェックし、「これはOK!」「これは怪しいからポイッ!」と瞬時に判断してくれます。特に便利なのが、世界中で猛威を振るっている攻撃手法をあらかじめ学習済みの「事前構成済みルール」です。

なぜ「事前構成済み」が重要なのか?

攻撃者の手口は日々進化しています。自分で「こんな文字列が来たらブロックして」とイチからルールを書くのは、イタチごっこで疲弊してしまいますよね。

Cloud Armorの「事前構成済みルール」は、セキュリティの専門家たちが「これぞ鉄板の攻撃パターン!」と定義したデータベース。これを使うことで、私たちは複雑な攻撃の仕組みを深く理解していなくても、プロレベルの防御を数クリックで導入できるんです。

—

代表的な「困った郵便物」たち

Cloud Armorが守ってくれる、主な脅威を見てみましょう。

  • SQLインジェクション (SQLi): データベースに「お前の秘密を全部教えろ!」と命令を送るような、卑劣な小細工です。
  • クロスサイトスクリプティング (XSS): 掲示板などに「開くとウイルスに感染する罠」を仕込むような悪質な手口です。
  • レートリミット (EXCEEDS-RATE-LIMIT): 短時間に大量の郵便を送りつけて、郵便受けをパンクさせる嫌がらせ(DDoS攻撃の入り口ですね)。

これらを、Cloud Armorは「ModSecurity」という世界的に有名なルールセットをベースに検知してくれます。

—

さあ、設定してみよう!

まずは、基本的なルールを適用するコマンドを見てみましょう。怖がらなくて大丈夫、gcloud コマンドで簡単に設定できます。

# セキュリティポリシーを作成します
gcloud compute security-policies create my-web-policy \
    --description="Webサイトを守るためのポリシー"

# SQLインジェクション攻撃を防御するルールを追加
gcloud compute security-policies rules create 1000 \
    --security-policy=my-web-policy \
    --expression="evaluatePreconfiguredExpr('sqli-stable')" \
    --action=deny-403 \
    --description="SQLインジェクションをブロックする"

このコマンドで、sqli-stable という設定を有効にしました。これで、悪意あるSQL文が含まれたリクエストは、門前払いで 403 Forbidden(拒否)されるようになります。

—

現場の知恵:チューニングという名の「見極め」

ここで一つ注意点です。最初から厳しくしすぎると、「本物のお客さんまで追い返してしまう(誤検知)」という悲しい事件が起きます。

例えば、ブログのコメント欄で「SQLの勉強方法」なんて書いたら、それがSQLインジェクションだと誤解されてブロックされる……なんてこともあり得ますよね。

そんな時は、まずは「プレビューモード」を使いましょう。

1. いきなりブロックせず「記録」だけ残す

まずは deny-403 にせず、preview オプションを付けて様子を見ます。

# プレビューモードで設定(ブロックはせず、ログだけ残す)
gcloud compute security-policies rules update 1000 \
    --security-policy=my-web-policy \
    --preview

2. ログを見て、本物か攻撃かを見分ける

GCPの「ログエクスプローラー」を開いてみてください。jsonPayload.enforcedSecurityPolicy.preconfiguredExprIds のような項目に、どのルールに引っかかったかが記録されています。

「あ、これ自分たちが書いた正当なリクエストだ!」と分かったら、そのルールだけを除外する「上書きルール」を先に追加してあげましょう。

—

最後に:完璧を目指さない勇気

インフラエンジニアとして大切なことは、「一度設定したら終わりではない」ということです。

セキュリティは、常に「利便性」と「安全性」のバランスです。Cloud Armorは強力ですが、まずは基本ルールを適用し、ログを見ながら少しずつ調整していく……。この「対話」こそが、堅牢なシステムを作るための最も確実な道です。

皆さんのWebサイトが、今日も元気に、そして安全に世界中のユーザーと繋がれることを願っています。もし迷ったら、いつでもこの記事を見返して、一歩ずつ設定を進めてみてくださいね!

それでは、良いクラウド・ライフを!

コメント

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