🐯

Cloud Firewall Standard で FQDN ベースのフィルタリングが GA になったのでまとめてみた

2023/11/06に公開

はじめに

こんにちは、クラウドエースでSREディビジョンに所属している Shanks と申します。

本日は 2023/09/27 付けで Google Cloud のネットワークソリューションとして GA になった新機能についてご紹介したいと思います。
新たに GA となった機能は「ファイアウォール ポリシーにおける FQDN ベースのフィルタリング機能」です。
(以下、FQDN フィルタリングと呼称。)

そこで、この記事ではこの機能によってどのようなことができるのかの概略をまとめます。

ターゲットとなる読者層

  • Google Cloud 上でシステムを構築している、または、構築する予定で、トラフィックのフィルタリングを検討されている方
  • FQDN フィルタリングをどのように Google Cloud で実現するのか知りたい方

やること・やらないこと

やること

  • 機能の概略紹介
  • これまでの課題とその解決方法
  • 料金の紹介
  • 実際の挙動(簡易版)

やらないこと

  • 構成要素となるコンポーネントの詳解
  • デモ環境の構築方法の案内

FQDN フィルタリング 概要

FQDN とは

FQDN(Fully Qualified Domain Name)とは、「TLDまで完全に指定された」ホスト名のことを指します。
完全修飾ドメイン名とも呼ばれ、「https://www.cloud-ace.jp」という URL であれば、「www.cloud-ace.jp」のように全体を指すものです。

Fully Qualified Domain Name(フリー・クオリファイド・ドメイン・ネーム、訳して完全修飾ドメイン名(かんぜんしゅうしょくドメインめい))とは、Domain Name System(DNS)における「TLDまで完全に指定された」ホスト名のことである。

Wikipedia より引用

これまでのセキュリティ課題

problem

これまでのファイアウォールルールでは IP アドレスを指定して許可・拒否ルールを設定する必要がありました。
例えば、FQDN www.cloud-ace.jp で解決される IP アドレスが一定期間毎に変更される場合、以下のような作業が必要があり、余計な運用コストが発生します。

  1. IP アドレスが変更されたことを検知する機構を設ける
  2. 1が検知されたらシステム管理者や運用システムへ通知する
  3. 通知をもとにファイアウォールルールを都度変更するオペレーションを行う

小さな変更であってもオペレーションミスの誘発に繋がります。
また、いつ発生するかわからないメンテナンスとダウンタイムによりシステムの信頼性を高い状態で維持するのは困難でした。

FQDN フィルタリングで解決できること

merit

FQDN フィルタリングでは、 IP アドレスではなく、FQDN で許可・拒否ルールを設定できます。

FQDN で解決される IP アドレスが変動しても、ファイアウォールルールが IP アドレスを追跡できるため、手作業等で IP アドレスを更新するオペレーションそのものが不要になります。
これにより、リスクの回避に繋がり、システムの信頼性を向上することができます。

また、FQDN の正確な IP アドレスの把握は Google Cloud が担います。

FQDN フィルタリングのメリット

Google Cloud の公式ブログでは、FQDN フィルタリングのメリットを以下のようにまとめています。

  • 信頼性の向上: 基礎となる IP アドレスが変更されても、FQDN は変更されません。これにより、ダウンタイムが削減され、クラウド ワークロードに対するアクセスの信頼性が向上します。
  • 使いやすさ: FQDN は IP アドレスよりも人にとって読みやすく、覚えやすくなっています。この特徴から、ファイアウォール ルールが自己文書化され、より理解しやすいものになり、監査と保守が容易になります。
  • セキュリティの強化: Cloud Firewall は FQDN の名前解決のために Cloud DNS と統合されており、DNS スプーフィング攻撃を困難にすることでアプリケーションのセキュリティを向上させます。

https://cloud.google.com/blog/ja/products/identity-security/whats-new-with-cloud-firewall-standard/

実際の挙動

フィルタリングによってどのようにトラフィックが制御されるのかを確認します。
許可された通信と、拒否された通信とで挙動がどのように変わるのか、実際に curl コマンドを利用して検証していきましょう。

デモ環境

settings
デモ環境として、以下のような環境を構築しました。

  • 「クラウドエース コーポレートサイト」(cloud-ace.jp)を拒否するルールを設定
    • それ以外は許可とする(デフォルト設定)
    • 例)cloud-ace.jp は拒否
    • 例)www.google.com は許可
  • 利用するポリシーは「リージョン ネットワーク ファイアウォール ポリシー」

architecture
設定した FQDN フィルタリングの動作を検証するために、ルールが適用されている VPC ネットワークを利用する Compute Engine インスタンスを作成しました。
この Compute Engine インスタンスに SSH 接続し、「Google 検索」と「クラウドエース コーポレートサイト」、それぞれに curl コマンドによるリクエストを発行します。
このとき、リクエストのタイムアウト値は10秒とします。

許可された通信

shanks@main:~$ curl -I -m 10 https://www.google.com
HTTP/2 200 
  • Google 検索はフィルタリングをしていない
    • 正常にアクセス可能

拒否された通信

shanks@main:~$ curl -I -m 10 https://cloud-ace.jp
curl: (28) Connection timed out after 10000 milliseconds
  • クラウドエース コーポレートサイトはフィルタリングによって拒否ルールを設けている
    • FQDN フィルタリングによって宛先がルールにマッチしトラフィックを拒否
    • 拒否されたリクエストはタイムアウトした(トラフィックがドロップし届かなかった)

料金

Cloud Firewall の各ティア
Cloud Firewall の機能は、3つのティアで提供されています。
本機能である FQDN フィルタリングは「Standard ティア」と「Plus ティア」にて提供される機能のため、利用しているそれぞれのティアの料金が適用されます。

例えば、Standard ティアの場合、評価されたトラフィックのGBあたりに$0.018/GBの料金が発生します。
※ バックエンドで GiB 単位で測定されます($0.0193/GiBに相当)。

https://cloud.google.com/firewall/pricing?hl=ja

FQDN フィルタリングの構成要素として「ファイアウォール ポリシー」が含まれますが、このリソースのデータ処理に料金は発生しません。

参考情報

https://cloud.google.com/firewall/docs/firewall-policies-rule-details?hl=ja#domain-names-for-firewall

https://cloud.google.com/blog/ja/products/identity-security/whats-new-with-cloud-firewall-standard/

https://cloud.google.com/firewall/pricing?hl=ja

まとめ

  • Google Cloud のファイアウォールに FQDN でフィルタリングする機能が追加された
  • 追加料金は発生せず、既存の Standard / Plus ティアの機能として内包される

Discussion