【入門編】 GCP VPCファイアウォールルールのターゲット指定方式(ターゲットタグ、サービスタグ、ターゲットサービスアカウント) – クラウドインフラと仮想化ネットワーク実践ガイド

こんにちは!技術メディアのナビゲーターを務めるSREの担当ライターです。

クラウドの世界へようこそ!Google Cloud (GCP) を触り始めると、避けては通れないのが「ネットワークのセキュリティ」です。「ファイアウォール(防火壁)」と聞くと、なんだか難しそうな英語や数字が並ぶイメージがあって、最初は身構えてしまいますよね。

でも、安心してください。GCPのファイアウォールは、仕組みさえ理解してしまえば、とてもシンプルで美しい設計になっています。

この記事では、GCPの「VPCファイアウォールルール」において、「どの仮想マシン(VM)にルールを適用するか」を決める3つのターゲット指定方式(ネットワークタグ、サービスアカウント、VPC全体/IP範囲)について、身近な例えを交えながら一歩ずつ丁寧に紐解いていきます。

ネットワーク初心者の方も、ぜひコーヒーを片手にリラックスして読んでみてくださいね!

—

1. GCPのファイアウォールは「マンションの門番」

具体的な話に入る前に、まずはイメージを揃えましょう。

GCPの仮想ネットワークである「VPC(Virtual Private Cloud)」は、インターネットという大都会に建つ「セキュリティ付きの巨大な高級マンション」のようなものです。そして、ファイアウォールルールは、そのマンションの入り口や各部屋の前に立っている「優秀な門番(ガードマン)」になります。

門番の仕事はシンプルです。
「やってきた訪問者(パケット)」の手紙を見て、「お前は通ってよし!」「お前は立ち入り禁止!」と判断することです。

このとき、門番に渡す「指示書」には、以下のようなことを書きます。

1. 誰からの手紙か?(送信元:どこのIPアドレスから来たか)
2. どこの部屋宛てか?(ターゲット:マンション内のどのVMに適用するか)
3. 何号室(ポート)の呼び鈴を鳴らそうとしているか?(プロトコルとポート:HTTPの80番やSSHの22番など)

今回は、この中の「2. どこの部屋宛てか?(ターゲット)」をどのように指定するかにスポットライトを当てていきます。

—

2. ターゲット指定の3つの方法

GCPでは、「このルールは、どのVMに適用するのか」を指定する方法が主に3つ用意されています。

  • 方法A:ネットワークタグ(ターゲットタグ) 〜お洋服の「タグ(付箋)」で指定〜
  • 方法B:サービスアカウント(ターゲットサービスアカウント) 〜会社が発行した「社員証」で指定〜
  • 方法C:すべてのインスタンス(VPC全体) 〜「マンションの全住民」に一括適用〜

それぞれの特徴と、現場での使い分けを現実世界の例えと一緒に見ていきましょう。

—

方法A:ネットワークタグ(ターゲットタグ)

〜お洋服の「タグ(付箋)」で指定〜

まずは一番手軽で、GCPでよく使われる「ネットワークタグ(Network Tags)」です。

これは、VM(仮想マシン)というお人形に、「あなたは web-server ね」「あなたは db-server ね」と書いた「付箋(タグ)」をペタペタと貼り付けるイメージです。

門番には「web-server というタグが貼ってある部屋には、インターネットからのアクセス(80番ポートなど)を通していいよ!」と指示を出します。

メリット

  • とにかく簡単で直感的!:VMを作成するときや、作成した後にいつでも管理画面から「ぽちっ」と文字を入力するだけでタグを追加できます。
  • 柔軟性が高い:1つのVMに web-server と tokyo-office のように、複数のタグを同時に何枚でも貼ることができます。

デメリット(現場での注意点)

  • セキュリティの管理が少し緩い:

ネットワークタグは、VMの設定を変更できる権限(Compute共同作成者など)を持っていれば、誰でも簡単に「貼り替え」ができてしまいます。
もし悪意のある人や、操作に慣れていない初心者が、重要なデータベースサーバーに間違って web-server というタグを貼ってしまうと、インターネットから丸見えになってしまう危険性があります。

🛠️ gcloudコマンドでの設定例

ネットワークタグを使ったファイアウォールルールを作るコマンドは、以下のようになります。

# 「web-server」というタグがついたVMに対して、外からのHTTP(80番)アクセスを許可するルールを作ります
gcloud compute firewall-rules create allow-http-to-web \
    --network=default \
    --action=ALLOW \
    --direction=INGRESS \
    --rules=tcp:80 \
    --source-ranges=0.0.0.0/0 \
    --target-tags=web-server # 👈 ここで「ターゲットタグ」を指定しています!

—

方法B:サービスアカウント(ターゲットサービスアカウント)

〜会社が発行した「社員証(身分証明書)」で指定〜

次に紹介するのが、より安全でプロフェッショナルな方法である「サービスアカウント(Service Account)」を使った指定です。

これは、VMに付箋を貼るのではなく、「国や会社が厳重に審査して発行した『顔写真付きの社員証(身分証明書)』を持たせるイメージ」です。

門番には「my-app-sa@project-id.iam.gserviceaccount.com という社員証を持っているVMに対してだけ、この通信を許可してね」と指示を出します。

メリット

  • 極めて安全(セキュア):

社員証(サービスアカウント)を発行したり、VMに持たせたりする作業は、GCPの「IAM(アイアム)」という強力な権限管理システムで保護されています。ネットワークの担当者でも、簡単には偽造したり勝手に変更したりできません。

  • 「役割」ベースで管理できる:

「このVMは、本番環境の決済処理を行う特別な子(役割)」というように、システムの設計書に直結した綺麗な管理ができます。

デメリット

  • 事前の準備が必要:

あらかじめ「サービスアカウント」というID(メールアドレスのような形式のもの)をGCP上で作成し、それをVMに紐付ける必要があるため、ネットワークタグに比べると少しだけ手順が多くなります。

🛠️ gcloudコマンドでの設定例

サービスアカウントを使ったファイアウォールルールを作るコマンドは、以下のようになります。

# 特定のサービスアカウントを持つVMに対して、データベースへのアクセス(5432番)を許可するルールを作ります
gcloud compute firewall-rules create allow-db-to-sa \
    --network=default \
    --action=ALLOW \
    --direction=INGRESS \
    --rules=tcp:5432 \
    --source-ranges=10.0.0.0/8 \
    --target-service-accounts=my-db-reader@my-project.iam.gserviceaccount.com # 👈 ここで「サービスアカウント」を指定しています!

—

方法C:すべてのインスタンス(VPC全体)

〜「マンションの全住民」に一括適用〜

最後は、ターゲットを絞り込まず、そのVPCネットワークに所属している「すべてのVM」に一律で適用する方法です。

これは、マンションのオートロックの自動ドアのように、「このマンションの住民(VM)であれば、誰でも等しく適用されるルール」です。

メリット

  • 設定漏れがない:

「新しくVMを作ったけれど、タグを設定し忘れて通信が届かない!」といったイライラがありません。

  • 基本の防壁に最適:

「社内のオフィス(特定のIPアドレス)からであれば、マンション内のどの部屋のVMに対しても、管理用の接続(SSH)を許可する」といった、ネットワーク全体に共通するベースのルール作りに最適です。

🛠️ gcloudコマンドでの設定例

すべてのインスタンスを対象にする場合は、ターゲットの指定(--target-tags など)を省略するだけでOKです!

# VPC(default)内の「すべてのVM」に対して、社内ネットワーク(192.168.1.0/24)からのSSH接続(22番)を許可します
gcloud compute firewall-rules create allow-ssh-from-office \
    --network=default \
    --action=ALLOW \
    --direction=INGRESS \
    --rules=tcp:22 \
    --source-ranges=192.168.1.0/24
    # 👈 ターゲットを指定しないことで、自動的に「ネットワーク内のすべてのインスタンス」が対象になります!

—

3. どっちを使うべき? 3つの使い分け早見表

「結局、タグとサービスアカウント、どっちを使えばいいの?」と迷ってしまいますよね。
現場での判断基準をすっきり整理できるように、比較表を作りました!

| 比較項目 | ネットワークタグ(タグ) | サービスアカウント | すべてのインスタンス |
| :— | :— | :— | :— |
| イメージ | お洋服の「付箋」ラベル | 厳重な「社員証(身分証)」 | マンションの「一括ルール」 |
| 設定の手軽さ | 🌟 非常に簡単 | ☕ 少し手順が必要 | 🌟 非常に簡単(デフォルト) |
| セキュリティレベル | ⚠️ 低〜中(誰でも貼り替え可能) | 🔒 高(IAMで厳重に保護) | 🔒 高(自動適用されるため漏れがない) |
| 主な用途 | ・開発環境やテスト環境
・シンプルなWebサイト | ・本番環境、個人情報を扱うシステム
・金融や医療などの厳格な環境 | ・社内からの監視・管理用通信
・VPC内全体の共通基本ルール |

💡 現場のSREからのアドバイス

  • 「迷ったら、本番環境はサービスアカウント!」と覚えておきましょう。最初は少し難しく感じるかもしれませんが、後からの監査(セキュリティチェック)の際にも、「どのVMがどのルールで守られているか」がシステム的に一目瞭然になるため、運用のトラブルが劇的に減ります。
  • 一方で、プロトタイプをサクッと作って実験したいときや、検証用のステージング環境であれば、フットワークの軽い「ネットワークタグ」が圧倒的に便利です。

—

4. 一歩ずつ理解していきましょう!

今回はGCPのVPCファイアウォールにおける、ターゲットの指定方法について解説しました。

最後に、今回のおさらいです。

1. ネットワークタグは、手軽に貼れる「付箋」。開発環境などでサクッと使いたいときに便利!
2. サービスアカウントは、強固な権限で守られた「社員証」。本番環境のセキュアな設計に必須!
3. すべてのインスタンスは、マンション全体に適用する「共通ルール」。ベースラインのセキュリティに最適!

クラウドネットワークは、パズルのピースを組み合わせるような楽しさがあります。
一歩ずつ、目の前のパケットがどう流れていくかを想像しながら、安全でクリーンなインフラを作っていきましょう!

もし構築中に「あれ?」と思うことがあれば、いつでもこの記事に戻って、門番と住民のイメージを思い出してくださいね。

あなたのクラウドエンジニアとしての第一歩を、心から応援しています!

コメント

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