【ITニュース解説】Part-53: 🚀Google Cloud VPC Firewall Rules with Target as Service Account
2025年09月14日に「Dev.to」が公開したITニュース「Part-53: 🚀Google Cloud VPC Firewall Rules with Target as Service Account」について初心者にもわかりやすく解説しています。
ITニュース概要
Google CloudのVPCファイアウォールで、サービスアカウントをターゲットに設定する方法を解説。これにより、特定のサービスアカウントで動く全てのVMにルールを適用できる。VMのIDに基づき動的にアクセスを制御でき、タグ指定より柔軟なセキュリティ管理が可能となる。
ITニュース解説
今回のニュース記事は、Google Cloud Platform(GCP)におけるファイアウォールルールについて、特に「サービスアカウント」をターゲットとして指定する方法を、実践的な手順を通じて解説している。システムエンジニアを目指す初心者にとって、クラウド環境でのネットワークセキュリティ、特にVMインスタンスへのアクセス制御は基本的ながら極めて重要な知識となる。
まず、ファイアウォールの基本的な役割から理解する必要がある。ファイアウォールは、ネットワークにおける交通整理を行う門番のような機能を提供する。特定の仮想マシン(VMインスタンス)への外部からの通信を監視し、許可されていないアクセスをブロックすることで、セキュリティを確保する。ここで説明されている「イングレスルール」とは、VMインスタンスへ「入ってくる」方向の通信を制御するルールのことを指す。
GCPでファイアウォールルールを設定する際、どのVMインスタンスにルールを適用するかを指定する方法は複数存在する。最も簡単なのは「すべてのインスタンス」をターゲットにする方法だが、これは広範囲に適用されるためセキュリティリスクが高い。より一般的な方法は、VMインスタンスに「タグ」(ラベルのようなもの)を付けて、そのタグを持つインスタンスのみを対象とする「ターゲットタグ」方式である。これは、同じ役割を持つVM群をグループ化して管理するのに適している。
しかし、今回注目すべきは「サービスアカウント」をターゲットとして指定する方法である。サービスアカウントとは、ユーザーではなく、アプリケーションやVMインスタンス自身がGCPリソースにアクセスするために使用する特別なIDのことだ。GCP上のVMインスタンスは、起動時に特定のサービスアカウントを割り当てられて実行される。ファイアウォールルールでこのサービスアカウントをターゲットとして指定すると、「この特定のサービスアカウントで稼働しているVMインスタンスであれば、どのインスタンスであってもこのルールを適用する」という、柔軟かつ動的なアクセス制御が可能となる。これは、VMインスタンスの物理的な名前やタグに依存せず、そのVMが「誰であるか」、つまりどのIDで動作しているかに基づいてアクセスを管理できるため、特にVMが頻繁に作成・削除されたり、構成が変化したりするようなクラウドネイティブな環境で非常に有効な手段となる。
記事では、このサービスアカウントをターゲットとするファイアウォールルールの動作を確認するため、具体的な手順を踏んでいく。まず、Nginxというウェブサーバーを搭載したVMインスタンスを作成する。これは、nginx-webserver.shという起動スクリプトを使って行われる。このスクリプトは、VMが起動した際にNginxを自動的にインストールし、簡単なウェブページを表示するように設定する。gcloud compute instances createコマンドを使ってmyvm3-service-accountsという名前のVMを作成し、--network-interface=subnet=mysubnet1で特定のネットワークサブネットに所属させ、--metadata-from-file=startup-script=nginx-webserver.shで起動スクリプトを適用する。VMの作成後、gcloud compute instances listコマンドでVMが正常に起動しているかを確認する。
この時点では、ウェブサーバーにアクセスするためのファイアウォールルールはまだ設定されていない。そのため、外部からVMの外部IPアドレスに対して、HTTP通信で通常使用されるポート80への接続を試みても、telnetやcurlといったコマンドは失敗する。これは、ファイアウォールがアクセスを拒否しているためであり、期待通りの動作である。
次に、サービスアカウントをターゲットとするイングレスファイアウォールルールを作成する手順に進む。GCPの管理コンソールから、VPCネットワークのファイアウォール設定画面を開き、新しいルールを追加する。ルールの名前をfw-ingress-80-service-accountsと設定し、最も重要な「ターゲット」の項目で「指定されたサービスアカウント」を選択する。そして、対象となるサービスアカウントとして、VMインスタンスに割り当てられている「Compute Engine デフォルトサービスアカウント」(またはカスタムのサービスアカウント)を指定する。さらに、「送信元IPv4範囲」には0.0.0.0/0を設定し、これはインターネット上のあらゆるIPアドレスからのアクセスを許可するという意味である。プロトコルとポートはTCP:80を指定し、HTTP通信を許可する。この設定により、「Compute Engine デフォルトサービスアカウント」で実行されているすべてのVMインスタンスに対して、インターネット上のどこからでもポート80へのTCP接続が許可されるルールが完成する。
この新しいファイアウォールルールが適用された後、再びVMインスタンスの外部IPアドレスに対してポート80へのアクセスを試みる。すると、先ほどは失敗したtelnetやcurlコマンドが正常に動作し、Nginxが提供するHTMLページの内容が表示されるようになる。ウェブブラウザでVMの外部IPアドレスにアクセスしても、同様にウェブページが正常に表示されることを確認できる。これは、VMインスタンスがルールで指定されたサービスアカウントを使用しているため、ファイアウォールがこの通信を許可した結果である。
最後に、学習目的で作成したリソースは、不要になったら適切に削除することが重要だ。記事では、gcloud compute firewall-rules deleteコマンドでファイアウォールルールを、gcloud compute instances deleteコマンドでVMインスタンスを削除する方法が示されており、これによってGCP環境をクリーンな状態に戻すことができる。
この記事を通じて学ぶべき最も重要な点は、ファイアウォールルールのターゲット指定方法の選択肢とその特性だ。「すべてのインスタンス」は手軽だがセキュリティリスクが高く、「ターゲットタグ」は機能単位でのグループ化に優れている。そして「サービスアカウント」をターゲットとする方法は、VMのアイデンティティに基づいた、より高度で動的なセキュリティ制御を可能にする。特に、クラウド環境でのアプリケーション開発やインフラ構築においては、VMの自動化が進み、従来の静的な管理方法では対応しきれない場面が増えている。このような状況で、サービスアカウントを活用したファイアウォールルールは、柔軟性とセキュリティを両立させるための強力な手段となる。システムエンジニアとして、これらの違いを理解し、状況に応じて最適なセキュリティ戦略を選択できる能力が求められる。