【ITニュース解説】Part-54: 🚀Google Cloud VPC Firewall Rules as Ingress with Destination Filter
2025年09月14日に「Dev.to」が公開したITニュース「Part-54: 🚀Google Cloud VPC Firewall Rules as Ingress with Destination Filter」について初心者にもわかりやすく解説しています。
ITニュース概要
Google CloudのVPCファイアウォールルールで、宛先フィルターを使う設定方法を解説。これにより、インターネットからの通信を特定の仮想マシン(VM)にのみ許可し、同じネットワーク内の他のVMはブロックできる。セキュリティ強化に役立つ。
ITニュース解説
Google Cloud Platform(GCP)を使いこなす上で、仮想マシン(VMインスタンス)へのネットワークアクセスを適切に管理することは、システムのセキュリティを保つ上で非常に重要だ。この解説では、GCPのVPC(Virtual Private Cloud)ファイアウォールルールの中でも、「宛先フィルター付きイングレス」という、特定のVMにのみ外部からのアクセスを許可する高度な設定方法について詳しく説明する。システムエンジニアとして、クラウド環境でのネットワークセキュリティの基礎と実践的なスキルを身につけることは、今後ますます重要となる。
まず、GCPにおけるVPCとは、クラウド上に構築される独立した仮想的なプライベートネットワーク環境を指す。このVPC内に、VMインスタンス、データベース、ストレージといった様々なクラウドサービスを配置し、それらが相互に通信したり、あるいはインターネットと接続したりする。ファイアウォールルールは、このVPC内のリソースに対するトラフィック(通信)の流れを制御する役割を担う。具体的には、どの通信を許可し、どの通信を拒否するかを定義する「交通整理役」と考えると良い。初期設定では、新しく作成されたVMインスタンスは、セキュリティ上の理由からインターネットからのアクセスがブロックされているため、外部からのアクセスを許可するには明示的にファイアウォールルールを設定する必要がある。
一般的にファイアウォールルールは、「送信元(Source)」、つまりどこから通信が来るかに基づいてアクセスを制御することが多い。しかし、時には「宛先(Destination)」、つまり通信がどのVMに向かうべきかという基準で制御したい場合がある。例えば、同じサブネット(VPC内のIPアドレスの範囲)内に複数のVMが稼働している状況で、そのうちの特定のVMだけをインターネットに公開し、他のVMはVPC内部からのアクセスのみに制限したいといったケースだ。このようなシナリオにおいて、「宛先フィルター付きイングレス」ファイアウォールルールが非常に有効な手段となる。イングレスとは、VPCの外部からVPC内部へ向かう通信を指す言葉だ。
この機能の動作を理解するために、具体的なデモンストレーションの手順を追っていく。まず、準備として二つのVMインスタンスを作成する。これらは「VM1」と「VM2」と呼ばれ、両方とも「mysubnet1」という共通のサブネット内に配置される。各VMの作成時には、起動スクリプトを実行させる。このスクリプトは、VMが起動する際に自動的に実行され、TelnetやNginxといったウェブサーバーソフトウェアをインストールし、簡単なウェブページを表示できるように設定する。NginxはHTTPサービスを提供するソフトウェアであり、ウェブサーバーとして機能する。この段階では、まだインターネットからのHTTPトラフィックを許可するファイアウォールルールが設定されていないため、VM1もVM2も外部からはアクセスできない状態にある。
次に、最も重要な「宛先フィルター付きファイアウォールルール」を設定する。このルールは「fw-ingress-80-destination-filter」という名前で、特定のVPCネットワーク(ここでは「vpc2-custom」を想定)に適用される。このルールの具体的な設定内容は以下の通りだ。
- 優先度(Priority): ルールの適用順序を決める数値で、値が小さいほど高い優先度を持つ。ここでは「1000」が設定される。
- 方向(Direction): 「Ingress」に設定され、外部からVPC内へ流入する通信に適用されることを意味する。
- アクション(Action): 「Allow」に設定され、このルールに合致する通信を許可する。
- ターゲット(Targets): 「All instances in the network」と設定され、このルールがネットワーク内の全てのVMインスタンスに適用される可能性を持つことを示す。
- ソース(Source): 「0.0.0.0/0」と設定される。これは「インターネット上のすべてのIPアドレスから」という意味で、通信の送信元を限定しないことを示す。
- 宛先フィルター(Destination filter): この設定がこのルールの核心部分であり、「VM1_INTERNAL_IP/32」のように、特定のVMの内部IPアドレスを指定する。例えば「10.225.0.6/32」といった形式だ。「/32」は、指定されたIPアドレスと完全に一致するアドレスのみを対象とすることを意味する。これにより、インターネットからVPCへ向かうトラフィックが、VPC内の特定のVM(このケースではVM1)に宛てられたものである場合にのみ、このルールが適用される。
- プロトコル/ポート(Protocols/Ports): 「TCP:80」と設定される。これは、ウェブサイトの閲覧に通常使われるHTTP通信で利用されるTCPプロトコルのポート80番を対象とすることを意味する。
これらの設定により、インターネットからのHTTP(ポート80)トラフィックは、その宛先がVM1の内部IPアドレスである場合に限り、VPCへのアクセスが許可されるようになる。
ファイアウォールルールを設定した後、その効果を実際に確認する。まずVM1へのアクセスを試みると、VM1の外部IPアドレスに対してTelnetやCurlコマンドを実行すると、HTTP接続が成功し、ウェブブラウザでアクセスした場合もウェブページが正常に表示される。これは、作成したファイアウォールルールがVM1の内部IPアドレスを宛先として許可しているためだ。
次に、同じサブネット内に存在するVM2へのアクセスを試みる。VM2の外部IPアドレスを使ってTelnetやCurlコマンドを実行すると、接続は失敗する。同様に、ウェブブラウザでアクセスしてもウェブページは表示されない。この結果は、ファイアウォールルールの「宛先フィルター」がVM1のIPアドレスのみを指定しており、VM2のIPアドレスは含まれていないためである。VM1とVM2が同じサブネットにあり、同じNginxウェブサーバーが動作していても、宛先フィルターによって外部からのアクセスが厳密に制御されていることが明確に示される。
このように、GCPのファイアウォールルールは、通信の送信元IPアドレスだけでなく、通信の「宛先」となるVMのIPアドレスに基づいてトラフィックをフィルタリングする、非常に強力な機能を提供している。この宛先フィルター機能を活用することで、複数のVMが稼働する複雑な環境においても、インターネットに公開するVMを細かく指定し、他のVMは安全な状態に保つことが可能となる。これは、クラウド環境におけるネットワークセキュリティを一層強化し、不要な露出や不正なアクセスからシステムを守るための非常に重要な手法の一つだ。
テストが完了した後は、不要になったリソースがGCP環境に残り続けないよう、作成したファイアウォールルールとVMインスタンスを適切に削除することが推奨される。これは、クラウドコストの無駄遣いを防ぐだけでなく、将来的なセキュリティリスクを低減するためにも不可欠な運用上のベストプラクティスである。
この一連の作業を通じて、システムエンジニアの初心者は、GCPのVPCファイアウォールがどのように機能し、特に宛先フィルターがどのような状況で効果的に活用できるかを実践的に理解できる。送信元と宛先の両方の基準でトラフィックを制御する能力は、安全で堅牢なクラウドインフラを設計し、運用していく上で極めて価値のある知識となるだろう。