こんにちは!技術メディアのナビゲーターを務める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. すべてのインスタンスは、マンション全体に適用する「共通ルール」。ベースラインのセキュリティに最適!
クラウドネットワークは、パズルのピースを組み合わせるような楽しさがあります。
一歩ずつ、目の前のパケットがどう流れていくかを想像しながら、安全でクリーンなインフラを作っていきましょう!
もし構築中に「あれ?」と思うことがあれば、いつでもこの記事に戻って、門番と住民のイメージを思い出してくださいね。
あなたのクラウドエンジニアとしての第一歩を、心から応援しています!
コメント