【入門編】 GCP VPCファイアウォールルールの評価順序と優先度(Priority) – クラウドインフラと仮想化ネットワーク実践ガイド

GCPの守護神を理解せよ:VPCファイアウォールルールの「優先順位」と「ステートフル」の仕組み

こんにちは!クラウドの海を日々航海しているSREです。

クラウドの世界に足を踏み入れると、必ず直面するのが「ネットワーク」という少し気難しい相手です。特にGCP(Google Cloud)の VPC(仮想プライベートクラウド)において、ファイアウォールルールは「入り口の門番」のような存在。

「設定したはずなのに繋がらない!」「なぜこのルールが適用されるの?」と悩んだことはありませんか?今回は、GCPのファイアウォールルールがどのようなルールで動いているのか、現場の視点から紐解いていきましょう。

—

1. ファイアウォールルールは「郵便配達の仕分け人」

ファイアウォールルールとは、簡単に言えば「どんな手紙(パケット)を届け、どんな手紙をゴミ箱に捨てるか」を決める仕分けルールです。

GCPでは、このルールに「優先度(Priority)」という数字を割り当てます。0から65535までの数値で指定しますが、数字が小さいほど優先度が高い(=早く評価される)のがポイントです。

  • 優先度 0: 最優先の特権階級。
  • 優先度 1000: デフォルトの基準。
  • 優先度 65535: 最後に評価される「お掃除役」。

例えば、あなたが「特定のIPからのアクセスだけ拒否したい」という場合、そのルールに「優先度 900」を付ければ、デフォルトの「優先度 1000」の許可ルールよりも先に評価されるため、無事にブロックが成立します。

現場の知恵:優先度は「1000刻み」で開けておく

実務では、最初からルールを詰め込みすぎないのが鉄則です。優先度を 1000, 2000, 3000 と設定しておけば、後からその間に新しいルールを割り込ませることができます。「100」刻みでも良いですが、後から「あ、これも禁止しなきゃ!」となった時のために、余裕を持たせるのがプロの技です。

—

2. 「ステートフル」という魔法

ここが一番のつまずきポイントです。GCPのファイアウォールは「ステートフル(状態保持)」という非常に賢い性質を持っています。

身近な例で言えば、「あなたがレストランで注文した料理」を想像してください。

  • 行き: あなたがウェイターに注文を伝える(パケットが送信される)。
  • 戻り: ウェイターが注文した料理を持ってくる(戻りのパケット)。

もしファイアウォールが「ステートレス」だったら、戻ってくる料理に対しても「誰だお前は!」と毎回チェックが必要になりますよね。でも、GCPのファイアウォールは「一度許可したリクエストに対する戻りの通信」は、帰りのルートを自動的に記憶して許可してくれます。

つまり、Ingress(入ってくる通信)で許可を出せば、それに対する Egress(出ていく通信)の戻りパケットを個別に許可する必要はありません。これは非常に楽ですよね!

—

3. 実践!gcloud コマンドでルールを作ってみよう

では、実際に特定のポート 80(HTTP)を許可するルールをコマンドで作成してみましょう。

# 「web-server-allow-http」という名前でルールを作成
gcloud compute firewall-rules create web-server-allow-http \
    --network=default \
    --action=ALLOW \
    --direction=INGRESS \
    --priority=1000 \
    --source-ranges=0.0.0.0/0 \
    --rules=tcp:80 \
    --description="WebサーバーへのHTTPアクセスを許可"

この設定のポイント

  • --priority=1000: デフォルト値にしていますが、本番環境では役割ごとに管理しやすい数値を割り当てましょう。
  • --action=ALLOW: 明示的に「許可」します。拒否したい場合は DENY を指定します。
  • --rules=tcp:80: 特定のポートだけを開けるのがセキュリティの鉄則です。全開放(all)は避けましょう。

—

4. トラブルシューティングの極意

「設定したはずなのに動かない!」という時は、以下の手順で確認してください。

1. 優先度の衝突: 同じようなルールが上位の優先度で設定されていませんか?
2. ターゲットタグ: ルールを特定のVMに適用する際、--target-tags を使っている場合は、VM側に正しいネットワークタグが付与されているか確認しましょう。
3. 隠れた拒否ルール: 優先度 65535 に全拒否ルールが隠れていないか、あるいは明示的に DENY ルールが上書きしていないかチェックです。

GCPのコンソールには「ファイアウォール インサイト」という機能もあります。どのルールがどれだけヒットしているか視覚的に確認できるので、迷った時はぜひ頼ってください。

—

最後に:ネットワークを怖がらないで

最初は複雑に見えるファイアウォールも、一度「優先度」と「ステートフル」という概念を理解してしまえば、パケットの動きが目に見えるようになるはずです。

ネットワークは「水道」や「電気」と同じインフラです。最初は慎重に、少しずつルールを書き換えていくことで、あなたのシステムはより堅牢で信頼性の高いものに育っていきます。

ぜひ、怖がらずに検証環境でいろいろなルールを試してみてください。もし詰まったら、またこのブログに戻ってきてくださいね。応援しています!

コメント

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