Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Part-50: 🔥Google Cloud Networking – VPC Firewall Rules Components Explained

2025年09月13日に「Dev.to」が公開したITニュース「Part-50: 🔥Google Cloud Networking – VPC Firewall Rules Components Explained」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Google CloudのVPCファイアウォールルールは、VMの入出力通信を制御する仕組みだ。イングレス(流入)とイーグレス(流出)があり、許可・拒否、優先度、適用対象などを設定できる。デフォルトでは、VMからの出力は許可され、外部からの入力は拒否される。セキュリティ確保のため、必要な通信のみを明示的に許可することが重要だ。

ITニュース解説

Google Cloudで仮想マシン(VMインスタンス)を利用する際、それらのVMは「Virtual Private Cloud(VPC)ネットワーク」という仮想的なネットワーク空間の中に存在する。このVPCネットワーク内でのVMに対するデータの出入りを制御する仕組みが「VPCファイアウォールルール」である。ファイアウォールルールは、VMに出入りするすべてのネットワークトラフィックについて、何が許可され、何が拒否されるかを決定する重要なセキュリティ機能を提供する。特にシステムエンジニアにとって、ネットワークセキュリティの基本としてこの仕組みの理解は不可欠だ。これらのルールは、VMのネットワークインターフェースという非常に低いレベルで動作し、VMに対する接続を許可したり、ブロックしたりする役割を担う。

VPCファイアウォールルールには、大きく分けて二つの種類がある。一つは「Ingressルール」であり、これは外部からVMへ「入ってくる」トラフィック、つまり受信トラフィックを制御する。例えば、インターネット上のユーザーがVMでホストされているウェブサイトにアクセスしようとする場合、このIngressルールがそのアクセスを許可するかどうかを判断する。もう一つは「Egressルール」で、これはVMから外部へ「出ていく」トラフィック、つまり送信トラフィックを制御する。VMが外部のデータベースに接続したり、ソフトウェアの更新ファイルをダウンロードしたりする際に、Egressルールがその通信を許可するかどうかを決定する。

ファイアウォールルールは、これらのトラフィック制御を具体的に行うためにいくつかの重要な要素、すなわち「コンポーネント」で構成されている。これらのコンポーネントを理解することが、適切なファイアウォールルールを設計する上で非常に重要となる。

まず「トラフィックの方向(Direction)」は、そのルールがIngress(受信)トラフィックに適用されるのか、Egress(送信)トラフィックに適用されるのかを明示する。例えば、ウェブサーバーへの外部からのアクセスはIngressであり、VMが外部のDNSサーバーに問い合わせる通信はEgressである。

次に「優先度(Priority)」は、複数のルールが同じトラフィックに適用される可能性がある場合に、どのルールが優先されるかを決定する数値である。この数値は小さいほど優先度が高くなる。例えば、「SSH(ポート22番)を拒否する」という優先度200のルールと、「SSH(ポート22番)を許可する」という優先度100のルールが存在する場合、優先度の高い(数字が小さい)後者のルールが適用され、SSHは許可されることになる。

「アクション(Action on Match)」は、トラフィックがルールに一致した場合に具体的に何をするかを定義する。これは「Allow(許可)」または「Deny(拒否)」のいずれかである。「Allow」は該当トラフィックの通過を許可し、「Deny」はブロックする。例えば、HTTP(TCPポート80番)トラフィックを許可することで、ユーザーはウェブサイトを閲覧できる。逆に、セキュリティ上の理由からリモートデスクトッププロトコル(RDP、TCPポート3389番)のインターネットからのアクセスを拒否する設定も可能である。

「ターゲット(Target)」は、そのファイアウォールルールをどのVMに適用するかを指定する。全てのVMに適用する設定もできるが、特定のネットワークタグが付与されたVMや、特定のサービスアカウントを使用しているVMにのみルールを適用するといった、よりきめ細やかな制御も可能である。例えば、「管理者アクセス」というタグが付いたVMにのみSSH接続を許可するルールを設定すれば、他のVMは引き続きSSH接続が拒否されたままとなる。

「送信元(Source)」は、Ingressルールの場合に、VMに入ってくるトラフィックの「どこから」来ているかを定義する。例えば、特定のオフィスIPアドレスからのみSSH接続を許可し、インターネット上の不特定多数からの接続(0.0.0.0/0)はブロックするといった設定が可能だ。Egressルールの場合、送信元は通常、VM自体を指すため、この項目はあまりカスタマイズされないが、VMが特定のサービスアカウントを使用している場合にのみ送信を許可するといった高度な制御も可能だ。

「宛先(Destination)」は、Egressルールの場合に、VMから出ていくトラフィックの「どこへ」行くかを定義する。例えば、VMが内部のデータベースサブネット(例: 10.10.0.0/24)にのみトラフィックを送信することを許可し、インターネットへのアクセスはブロックするといった設定ができる。

「プロトコルとポート(Protocol and Ports)」は、通信の種類と、その通信が使用するポート番号を制限する。例えば、HTTPS通信のみを許可するためにTCPプロトコルの443番ポートを指定したり、DNSクエリのためにUDPプロトコルの53番ポートを指定したりする。特定の範囲のポート番号、例えばTCPの80番から90番までのポートを許可することも可能だ。

最後に「有効化ステータス(Enforcement Status)」は、ファイアウォールルールを削除せずに一時的に有効化したり、無効化したりする機能である。これにより、システムメンテナンス中に一時的に特定のアクセスを許可し、作業完了後にすぐに無効化するといった柔軟な運用が可能になる。

Google Cloudでは、ユーザーが明示的にルールを設定しない場合でも、VPCネットワークにはいくつかの「暗黙のファイアウォールルール」が適用される。これらはGCPが自動的に提供するデフォルトの動作であり、非常に重要な特性である。

「暗黙のEgressルール」は、デフォルトでVMから外部へのすべての送信トラフィックを許可する。これは、IPアドレス0.0.0.0/0(IPv4の全て)および::/0(IPv6の全て)を宛先とし、アクションは「許可」、優先度は最も低い65536が設定されている。このルールがあるため、ユーザーが明示的なEgressルールを設定しない限り、VMインスタンスはインターネット上のサーバーに接続して更新ファイルをダウンロードしたり、外部のサービスと通信したりすることができる。ただし、これよりも優先度の高い(数字の小さい)Egressルールを設定することで、このデフォルトの挙動を上書きし、特定の送信トラフィックを拒否することも可能だ。

一方、「暗黙のIngressルール」は、デフォルトで外部からVMへのすべての受信トラフィックを拒否する。これは、IPアドレス0.0.0.0/0を送信元とし、アクションは「拒否」、優先度は暗黙のEgressルールと同じく65536が設定されている。このルールがあるため、ユーザーが明示的にIngressルールを作成して許可しない限り、インターネット上の誰であろうとVMにアクセスすることはできない。例えば、VMに対してSSH接続を行うためには、自分のIPアドレスからのTCPポート22番へのアクセスを許可するIngressルールを明示的に作成する必要がある。これはセキュリティの観点から非常に重要なデフォルト設定であり、「デフォルトで全てを拒否し、必要なものだけを許可する」という最小権限の原則に基づいている。

効果的で安全なネットワーク環境を構築するためには、いくつかのベストプラクティスに従うことが推奨される。 一つは「最小権限の原則」を徹底することである。これは、デフォルトですべてのトラフィックをブロックし、業務上本当に必要な特定のプロトコルやポートからのトラフィックのみを明示的に許可するという考え方だ。これにより、不要なアクセス経路を閉鎖し、セキュリティリスクを大幅に低減できる。

許可するIngressルールを作成する際には、それを適用するVMを特定のサービスアカウントで制限することが推奨される。これにより、もしVMが侵害されたとしても、そのVMが利用できるネットワークリソースを最小限に抑えることができる。

IPアドレスに基づいてルールを設定する場合、個々のIPアドレスごとに細かくルールを作るのではなく、IPアドレスの範囲(CIDRブロック)を使用してルールをまとめるようにするべきだ。これにより、ルールの管理が容易になり、将来的なコンプライアンス監査にも対応しやすくなる。

最後に、ファイアウォールルールの「ロギング」機能を有効にすることが強く推奨される。ロギングを有効にすると、どのルールがいつ、どのようなトラフィックに適用されたかという情報が記録される。これにより、ルールが意図した通りに機能しているかを確認したり、セキュリティインシデント発生時の調査に役立てたりできる。ただし、ロギングには追加コストが発生するため、必要に応じて選択的に使用することが賢明である。

GCPのVPCファイアウォールルールは、VMインスタンスへのネットワークトラフィックを細かく制御するための中心的なセキュリティメカニズムである。ルールはIngress(受信)とEgress(送信)の方向を持ち、優先度、アクション、ターゲット、送信元/宛先、プロトコル、ポートといった多様なコンポーネントを組み合わせて構成される。GCPには、デフォルトですべての送信を許可し、すべての受信を拒否する暗黙のルールが存在するため、明示的なルールを作成する際にはこのデフォルトの動作を理解しておく必要がある。セキュリティを確保するためには、常に最小権限の原則に従い、必要なトラフィックのみを許可し、不要な通信はブロックするよう心がけることが重要だ。適切にファイアウォールルールを設定し管理することで、安全で堅牢なクラウド環境を構築できる。

関連コンテンツ

関連IT用語

【ITニュース解説】Part-50: 🔥Google Cloud Networking – VPC Firewall Rules Components Explained | いっしー@Webエンジニア