あなたのWebサイトを守る「最強の門番」:Google Cloud Armorの世界へようこそ
こんにちは!日夜クラウドインフラの荒波を乗りこなしているSREです。
皆さんは、自分が丹精込めて作ったWebサイトやサービスが、ある日突然、世界中からの「嫌がらせ」によってダウンしてしまったらどうしますか? 想像するだけでゾッとしますよね。
今回は、Google Cloud(GCP)における最強の門番、「Google Cloud Armor(クラウドアーマー)」についてお話しします。難解なネットワーク用語を、郵便配達に例えながら紐解いていきましょう!
—
1. そもそも、Cloud Armorって何者?
Webサイトを運営するということは、「誰でも入れるお店をネット上に構える」ことと似ています。
- ロードバランサー(LB): お店の入り口に立つ「呼び込み係」。たくさんのお客さんを効率よく店内へ誘導します。
- Cloud Armor: 入り口に立つ「凄腕の警備員」。
悪いことをしようと企む人(攻撃者)を見抜き、入店を拒否したり、怪しい動きを検知して追い返したりするのが彼らの仕事です。
なぜ「レイヤー7」が重要なのか?
ネットワークの世界には「OSI参照モデル」という階層があるのですが、難しい話は置いておきましょう。重要なのは、「郵便物の表書き(宛先)」だけを見るのか、「封筒の中身(手紙の内容)」まで検閲するのかの違いです。
- L3/L4(ネットワーク層): 郵便の宛先や差出人だけを見て「この住所からは受け取らない!」と門前払いするイメージ。
- L7(アプリケーション層): 封筒を開け、「中身に爆弾や脅迫状が入っていないか?」を確認するイメージ。
Cloud Armorは、この「中身の検閲」までやってのける、非常に頼もしい存在なんです。
—
2. 郵便の仕分けのように:セキュリティポリシーの仕組み
Cloud Armorの基本は「ルール」です。これを「セキュリティポリシー」と呼びます。
例えば、「特定の悪い地域からの手紙を拒否する」「大量に押し寄せる不審な注文(DDoS攻撃)をブロックする」といったルールをあらかじめ決めておきます。
実践:Cloud Armorのルールを作ってみよう!
GCPのコンソールをポチポチするのも良いですが、SREらしくコマンド(gcloud)で設定してみましょう。今回は「特定のIPアドレスからのアクセスを拒否する」という一番シンプルなルールを作ります。
# 1. セキュリティポリシーの箱(ポリシー名)を作成します
gcloud compute security-policies create my-web-policy \
--description "悪い人たちをブロックする門番ポリシー"
# 2. 優先度1000番で「指定したIPからのアクセスを拒否(deny-403)」するルールを追加
gcloud compute security-policies rules create 1000 \
--security-policy my-web-policy \
--action deny-403 \
--src-ip-ranges "1.2.3.4/32" \
--description "悪質な特定のIPをブロック"
このコマンドを打つだけで、1.2.3.4 という住所からの郵便(リクエスト)は、お店に届く前に「門前払い(HTTP 403 Forbidden)」されます。簡単ですよね!
—
3. なぜGoogleはDDoSに強いのか?
皆さんは「DDoS攻撃」という言葉を聞いたことがありますか? 一言で言えば「お店の入り口に何万人ものサクラを送り込み、本当のお客さんが入れないようにする嫌がらせ」です。
Google Cloud Armorが凄いのは、Googleが世界中に持っている巨大なネットワーク網(グローバルエッジ)をそのまま盾にできる点です。
- 攻撃者がいくら大量のパケットを送りつけても、Googleの巨大なインフラが「おっと、混雑してるな」と全世界にパケットを分散させて受け流してしまいます。
- あなたのWebサーバーに攻撃が届く前に、Googleの門番が「こいつは怪しい!」と判断して瞬時に排除してくれます。
—
4. Web攻撃を防ぐ:WAFとしてのCloud Armor
先ほど「封筒の中身を見る」と言いましたが、具体的には以下のような攻撃を検知します。
- SQLインジェクション: 注文票に「全部無料にしろ」といった悪意ある命令を書き込んでデータベースを操ろうとする攻撃。
- クロスサイトスクリプティング (XSS): 掲示板に「クリックした人を別の怪しいサイトへ飛ばす」罠を仕掛ける攻撃。
これらは、ルールを一つ一つ書くのは大変です。そこで便利なのが「事前構成済みルール(Preconfigured rules)」です。
# 「SQLインジェクション」という名前の攻撃パターンを自動で防ぐ設定
gcloud compute security-policies rules create 2000 \
--security-policy my-web-policy \
--action deny-403 \
--expression "evaluatePreconfiguredExpr('sqli-stable')" \
--description "SQLインジェクション攻撃を自動ブロック"
evaluatePreconfiguredExpr という魔法の言葉を使うだけで、Googleが日々更新している最新の攻撃パターンリストと照らし合わせて自動防御してくれます。これぞ、クラウドの醍醐味ですね。
—
最後に:完璧なセキュリティなんてない
いかがでしたか? Cloud Armorは非常に強力な味方ですが、設定を間違えると「大事なお客様まで追い返してしまう」というリスクもあります。
まずは「プレビューモード(攻撃を遮断せず、ログだけ残すモード)」で運用して、「本当にお客様をブロックしていないか?」を確認してから本番適用するのが、現場のSREとしての鉄則です。
皆さんのサービスが、Cloud Armorという最強の門番に守られ、安心して成長していけることを願っています! 何か分からないことがあれば、またいつでも聞いてくださいね。それでは、楽しいクラウドライフを!
コメント