VPC ファイアウォール ルールの概要

Virtual Private Cloud(VPC)ファイアウォール ルールは、特定のプロジェクトとネットワークに適用されます。組織内の複数の VPC ネットワークにファイアウォール ルールを適用する場合は、ファイアウォール ポリシーをご覧ください。このページの残りの部分では VPC ファイアウォール ルールについてのみ説明します。

VPC ファイアウォール ルールを使用すると、指定した構成に基づいて、仮想マシン(VM)インスタンスとの接続を許可または拒否できます。有効になっている VPC ファイアウォール ルールは常に適用され、構成やオペレーティング システムに関係なくインスタンスを保護します。起動していないインスタンスも保護されます。

すべての VPC ネットワークは、分散ファイアウォールとして機能します。ファイアウォール ルールはネットワーク レベルで定義されますが、接続はインスタンスごとに許可または拒否されます。VPC ファイアウォール ルールはインスタンスと他のネットワークの間だけでなく、同じネットワーク内の個々のインスタンスの間にも存在します。

ファイアウォールの詳細については、ファイアウォール(コンピューティング)をご覧ください。

Google Cloud のファイアウォール ルール

VPC ファイアウォール ルールを作成する場合は、VPC ネットワークと、ルールの動作を定義する一連のコンポーネントを指定します。コンポーネントを使用することで、トラフィックのプロトコル、宛先ポート、送信元、宛先に基づいて、特定の種類のトラフィックをターゲットにできます。詳細については、ファイアウォール ルールのコンポーネントをご覧ください。

VPC ファイアウォール ルールを作成または変更するには、Google Cloud Consolegcloud コマンドライン ツールREST API を使用します。ファイアウォール ルールを作成または変更するときに、ルールのターゲット コンポーネントを使用して、ルールを適用するインスタンスを指定できます。

Google Cloud には、ユーザーが作成するファイアウォール ルールのほかに、受信(内向き)トラフィックと送信(外向き)接続に影響を与える可能性のあるルールが用意されています。

  • Google Cloud では、VPC ネットワーク内の TCP ポート 25 への下り(外向き)トラフィックなど、特定の IP プロトコルは許可されません。詳細については、常にブロックされるトラフィックをご覧ください。

  • Google Cloud では、VM インスタンスとそれに対応するメタデータ サーバー(169.254.169.254)との間の通信が常に許可されます。詳細については、常に許可されるトラフィックをご覧ください。

  • すべてのネットワークには、送信接続を許可し、受信接続をブロックする 2 つの暗黙のファイアウォール ルールがあります。作成したファイアウォール ルールによってこれらの暗黙のルールをオーバーライドできます。

  • デフォルト ネットワークには、削除や変更が可能なファイアウォール ルールが事前に設定されています。

仕様

VPC ファイアウォール ルールには、以下の特性があります。

  • ファイアウォール ルールは、双方向ではなく、受信(内向き)接続または送信(外向き)接続に適用されます。詳細については、接続の方向をご覧ください。

  • ファイアウォール ルールは IPv4 接続をサポートします。IPv6 接続は、IPv6 が有効になっている VPC ネットワークでもサポートされます。上り(内向き)ルールの送信元または下り(外向き)ルールの宛先をアドレスで指定するときは、IPv4 または IPv6 アドレスまたはブロックを CIDR 表記で指定できます。

  • 各ファイアウォール ルールには IPv4 範囲または IPv6 範囲のいずれかを含めることができます。両方を含めることはできません。

  • ファイアウォール ルールの動作は allow または deny です。ルールは、適用されている限り、接続に適用されます。たとえば、トラブルシューティングの目的でルールを無効にできます。

  • ファイアウォール ルールを作成するときに、VPC ネットワークを選択する必要があります。ルールはインスタンス レベルで適用されますが、その構成は VPC ネットワークに関連付けられています。VPC ネットワーク ピアリングCloud VPN トンネルで接続されているネットワークなど、VPC ネットワーク間でファイアウォール ルールを共有することはできません。

  • VPC ファイアウォール ルールはステートフルです。

    • ファイアウォールでいずれかの方向の接続が許可されると、この接続に一致する戻りのトラフィックも許可されます。関連するレスポンス トラフィックを拒否するようにファイアウォール ルールを構成することはできません。
    • 戻りトラフィックは、承認されたリクエスト トラフィックの 5 タプル(送信元 IP、宛先 IP、送信元ポート、宛先ポート、プロトコル)と一致する必要がありますが、送信元アドレスと宛先アドレス、ポートが逆になっている必要があります。
    • Google Cloud は、接続トラッキング テーブルを使用して、受信パケットとそれに対応する送信パケットを関連付けます。
    • プロトコルが接続をサポートしているかどうかにかかわらず、Google Cloud は接続トラッキングを実装します。接続が送信元とターゲットの間で許可されている場合(内向きルール)またはターゲットと宛先の間で許可されている場合(外向きルール)、接続トラッキング テーブルの状態がアクティブである限り、すべてのレスポンス トラフィックが許可されます。10 分ごとに 1 つ以上のパケットが送信された場合、ファイアウォール ルールのトラッキング状態はアクティブになります。
    • 許可された TCP / UDP 接続に応じて、「ICMP TYPE 3, DESTINATION UNREACHABLE」などの ICMP レスポンス トラフィックが許可されます。この動作は RFC 792 と一致しています。
  • VPC ファイアウォール ルールでは、断片化された TCP パケットは再構成されません。したがって、TCP プロトコルに適用されるファイアウォール ルールは、最初のフラグメントにのみ適用されます(TCP ヘッダーが含まれているため)。TCP プロトコルに適用されるファイアウォール ルールは、以降の TCP フラグメントには適用されません。

  • ファイアウォール ルール テーブルのトラッキングされる接続の最大数は、インスタンスのマシンタイプによってサポートされるステートフル接続の数によって異なります。トラッキングされる接続の最大数を超えると、アイドル時間が最も長い接続に対するトラッキングが停止され、新しい接続のトラッキングが可能になります。

    インスタンスのマシンタイプ ステートフル接続の最大数
    共有コア マシンタイプ 130,000
    vCPU が 1~8 個のインスタンス vCPU あたり 130,000 接続
    vCPU が 8 個を超えるインスタンス 合計 1,040,000(130,000×8)接続

暗黙のルール

すべての VPC ネットワークには、暗黙の IPv4 ファイアウォール ルールが 2 つあります。また、VPC ネットワークで IPv6 が有効になっている場合、ネットワークには 2 つの暗黙の IPv6 ファイアウォール ルールがあります。これらのルールは Cloud Console には表示されません。

暗黙の IPv4 ファイアウォール ルールは、ネットワークの作成方法や自動モードまたはカスタムモードの VPC ネットワークのどちらであるかに関係なく、すべての VPC ネットワークに存在します。デフォルト ネットワークには同じ暗黙のルールがあります。

  • 暗黙の IPv4 の下り(外向き)許可ルール。アクションが allow、宛先が 0.0.0.0/0、優先度が可能な限り低い(65535)下り(外向き)ルールでは、Google Cloud によってブロックされたトラフィックを除き、すべてのインスタンスが任意の宛先にトラフィックを送信できます。優先度の高いファイアウォール ルールにより、送信アクセスが制限される場合があります。他のファイアウォール ルールによって送信トラフィックが拒否されない場合、またインスタンスが外部 IP アドレスを持っているか、NAT インスタンスを使用している場合、インターネット アクセスが許可されます。詳細については、インターネット アクセスの要件をご覧ください。

  • 暗黙の IPv4 上り(内向き)拒否ルール。アクションが deny、送信元が 0.0.0.0/0、優先度が可能な限り低い(65535)上り(内向き)ルールでは、受信接続をブロックすることによって、すべてのインスタンスが保護されます。優先度の高いルールにより、受信アクセスが許可される場合があります。デフォルト ネットワークには、このルールをオーバーライドする追加ルールがいくつか含まれており、特定のタイプの受信接続が許可されます。

IPv6 が有効になっている場合、VPC ネットワークには次の 2 つの暗黙ルールがあります。

  • 暗黙の IPv6 の下り(外向き)許可ルール。アクションが allow、宛先が ::/0、優先度が可能な限り低い(65535)下り(外向き)ルールでは、Google Cloud によってブロックされたトラフィックを除き、すべてのインスタンスが任意の宛先にトラフィックを送信できます。優先度の高いファイアウォール ルールにより、送信アクセスが制限される場合があります。他のファイアウォール ルールによって送信トラフィックが拒否されない場合、またインスタンスが外部 IP アドレスを持っている場合、インターネット アクセスが許可されます。

  • 暗黙の IPv6 拒否上り(内向き)ルール。アクションが deny、送信元が ::/0、優先度が可能な限り低い(65535)上り(内向き)ルールでは、受信接続をブロックすることによって、すべてのインスタンスが保護されます。優先度の高いルールにより、受信アクセスが許可される場合があります。

暗黙のルールは削除できませんが、優先度は可能な限り低くなっています。作成したルールの優先度が高い場合(優先度の数値が 65535 未満)、作成したルールによってこれらをオーバーライドできます。deny ルールは同じ優先度の allow ルールより常に優先されるため、優先度 65535 の上り(内向き)allow ルールが有効になることはありません。

デフォルト ネットワークの事前設定ルール

デフォルト ネットワークには、インスタンスへの受信接続を許可するファイアウォール ルールが事前に設定されています。これらのルールは、必要に応じて削除または変更できます。

  • default-allow-internal
    ネットワーク内のインスタンス間で、すべてのプロトコルおよびポートの上り(内向き)接続を許可します。このルールの優先度は 2 番目に低い 65534 で、同じネットワーク内の他の VM インスタンスから VM インスタンスへの受信接続を実質的に許可します。このルールは、ネットワーク内のすべてのサブネットをカバーする範囲である 10.128.0.0/910.128.0.1 から 10.255.255.254)のトラフィックを許可します。
  • default-allow-ssh
    任意の送信元からネットワーク内の任意のインスタンスへの TCP ポート 22 での上り(内向き)接続を許可します。このルールの優先度は 65534 です。
  • default-allow-rdp
    任意の送信元からネットワーク内の任意のインスタンスへの TCP ポート 3389 での上り(内向き)接続を許可します。このルールの優先度は 65534 で、Microsoft リモート デスクトップ プロトコル(RDP)を実行しているインスタンスへの接続を有効にします。
  • default-allow-icmp
    任意の送信元からネットワーク内の任意のインスタンスへの ICMP 上り(内向き)トラフィックを許可します。このルールの優先度は 65534 で、ping などのツールを有効にします。

トラフィックのブロックと制限

VPC ファイアウォール ルールと階層型ファイアウォール ポリシーとは別に、Google Cloud では次の表で説明するように特定のトラフィックをブロックまたは制限します。

トラフィックの種類 詳細
パケットレートと帯域幅

適用先:

  • すべての下り(外向き)パケット
  • すべての上り(内向き)パケット
Google Cloud では、各ネットワーク インターフェース(NIC)や IP アドレスに対する VM インスタンスごとの帯域幅を考慮します。VM のマシンタイプにより、許容される最大下り(外向き)レートが定義されます。ただし、特定の状況でのみ下り(外向き)の最大レートを達成できます。

詳細については、Compute Engine ドキュメントのネットワーク帯域幅をご覧ください。
DHCP オファーと確認応答

適用先:

  • UDP ポート 68 への上り(内向き)パケット(DHCPv4)
  • UDP ポート 546 への上り(内向き)パケット(DHCPv6)
Google Cloud は、メタデータ サーバーから送信される DHCP パケットを除き、すべての送信元からの受信 DHCP オファーと確認応答をブロックします
Google Cloud の外部 IP アドレスでサポートされるプロトコル

適用先:

  • 外部 IP アドレスへの上り(内向き)パケット

IPv4 と IPv6 の外部アドレスでは、TCP、UDP、ICMP、IPIP、AH、ESP、SCTP、GRE のパケットのみ受け入れられます。外部 IP アドレスを使用するリソースには、追加のプロトコル制限があります。

SMTP(ポート 25)トラフィック

適用先:

  • TCP ポート 25 の外部 IP アドレスへの下り(外向き)パケット

デフォルトで、Google Cloud は外部 IP アドレス(別の Google Cloud リソースの外部 IP アドレスを含む)の TCP 宛先ポート 25 に送信される下り(外向き)パケットをブロックします。ただし、このトラフィックは、一部の Google Cloud のお客様が所有するプロジェクトでブロックされません。プロジェクトでポート 25 での外部 SMTP 下り(外向き)が許可されているかどうかについては、Google Cloud テクニカル アカウント マネージャーまたはセールスチームにお問い合わせください。

このブロックは、VPC ネットワークまたはオンプレミス ネットワークのプライベート パブリック IP アドレスなど、内部 IP アドレスの TCP 宛先ポート 25 に送信される下り(外向き)パケットには適用されません。

ポート 25 での外部 SMTP 下り(外向き)がプロジェクトで許可されており、この種類のトラフィックを送信するには、次の追加条件を満たす必要があります。

  • VPC ネットワークの下り(外向き)ファイアウォール ルールと、VPC ネットワークに適用される階層型ファイアウォール ポリシーでは、TCP ポート 25 の外部 IP アドレスへの下り(外向き)を許可する必要があります。 暗黙の下り(外向き)許可ルールは、任意の IP アドレスへの下り(外向き)(および任意の IP アドレスからの確立された受信レスポンス)が許可されるため、この要件を満たします。
  • 宛先の該当するルートでは、デフォルトのインターネット ゲートウェイのネクストホップを使用する必要があります。システム生成のデフォルト ルートはこの要件を満たしています。
  • 外部 IP アドレスにパケットを送信するインスタンスは、インターネット アクセスの要件を満たしている必要があります。

下り(外向き)拒否の VPC ファイアウォール ルールまたは階層型ファイアウォール ポリシーを作成することで、外部 SMTP の下り(外向き)トラフィックを防止できます。

常に許可されるトラフィック

VM インスタンスの場合、VPC ファイアウォール ルールと階層型ファイアウォール ポリシーは以下には適用されません。

  • Google Cloud メタデータ サーバーから送受信されるパケット
  • インスタンス独自のネットワーク インターフェース(NIC)のいずれかに割り当てられている IP アドレスに送信されるパケットは、VM 自体内に維持されています。インスタンスの NIC に割り当てられる IP アドレスは次のとおりです。

    • NIC のプライマリ内部 IPv4 アドレス
    • NIC のエイリアス IP 範囲からの内部 IPv4 アドレス
    • IPv6 がサブネットで構成されている場合、NIC に割り当てられた IPv6 アドレス
    • インスタンスがロードバランサのバックエンドまたはプロトコル転送のターゲット インスタンスである場合、ロード バランシングまたはプロトコル転送用の転送ルールに関連付けられた内部または外部 IPv4 アドレス
    • ループバック アドレス
    • インスタンス内で実行するネットワーク オーバーレイ ソフトウェアの一部として構成されたアドレス

Google Cloud メタデータ サーバー

Google Cloud では、各インスタンスと一緒に 169.254.169.254 でローカル メタデータ サーバーを実行しています。このサーバーはインスタンスのオペレーションに不可欠で、構成したファイアウォール ルールに関係なく、インスタンスはこのサーバーにアクセスできます。メタデータ サーバーは、次の基本サービスをインスタンスに提供します。

サービスの相互作用

以下のセクションでは、ファイアウォール ルールと階層型ファイアウォール ポリシーが他の Google Cloud プロダクトとどのように連携するかについて説明します。

ファイアウォール ルールとパススルー ロードバランサ

VPC ファイアウォール ルールと階層型ファイアウォール ポリシーは、ネットワーク ロード バランシングと内部 TCP/UDP ロード バランシング バックエンドにどの転送ルールのサポートされるプロトコルとポートを許可するかを制御します。詳細は下記のページをご覧ください。

ファイアウォール ルールとプロキシ ロードバランサ

外部 HTTP(S) ロード バランシング、内部 HTTP(S) ロード バランシング、SSL プロキシ ロード バランシング、TCP プロキシ ロード バランシングの場合、VPC ファイアウォール ルールと階層型ファイアウォール ポリシーは、プロキシ ロードバランサの転送ルールの IP アドレスで受け入れられるプロトコルとポートを制御しません。転送ルールのみが、プロキシ ロードバランサで受け入れられるプロトコルとポートを決定します。

VPC ファイアウォール ルールと階層型ファイアウォール ポリシーは、プロキシ ロードバランサとバックエンドの通信方法を制御します。詳細については、次を参照してください:

ファイアウォール ルールと Cloud VPN

ファイアウォール ルールと階層型ファイアウォール ポリシーは、Cloud VPN ゲートウェイで受け入れられるプロトコルとポートを制御しません。

Cloud VPN ゲートウェイは、Cloud VPN 仕様で説明されているプロトコルとポートのパケットのみを受け入れます。

ファイアウォール ルールと GKE

Google Kubernetes Engine は、クラスタ内に Service や Ingress などのリソースまたはリソース(Service や Ingress を含む)を作成するときに、自動的にファイアウォール ルールを作成して管理します。詳細については、Google Kubernetes Engine のドキュメントの自動的に作成されたファイアウォール ルールをご覧ください。

ファイアウォール ルールのコンポーネント

各ファイアウォール ルールは、次の構成コンポーネントで構成されています。

  • 接続の方向: 上り(内向き)ルールは、指定された送信元から Google Cloud ターゲットへの受信接続に適用されます。下り(外向き)ルールは、ターゲットから指定の宛先への接続に適用されます。

  • 数値での優先度。ルールが適用されるかどうかの決定に使用されます。他のコンポーネントがトラフィックと一致する、優先度が最も高い(優先度の数値が最小)ルールのみが適用されます。優先度の低い、競合するルールは無視されます。

  • 一致したときのアクションallow または deny)。ルールによって接続が許可されるかブロックされるかを決定します。

  • ファイアウォール ルールの適用ステータス。ファイアウォール ルールを削除せずに有効または無効にできます。

  • ターゲット。ルールを適用するインスタンス(GKE クラスタ、App Engine フレキシブル環境インスタンスなど)を定義します。

  • 上り(内向き)ルールのソースフィルタまたは下り(外向き)ルールの宛先フィルタ。

  • プロトコル(TCP、UDP、ICMP など)とポート。

  • ブール値ログオプション。ルールに一致する接続を Cloud Logging に記録します。

コンポーネントの概要

上り(受信)ルール
優先度 アクション 適用 ターゲット(宛先を定義) ソースフィルタ プロトコルとポート
0 から 65535 までの整数。デフォルトは 1000 です。
allow または deny enabled(デフォルト)または disabled target パラメータには宛先を指定します。次のいずれかになります。 次のいずれかです。
  • IPv4 アドレスの範囲
  • IPv6 アドレスの範囲
  • IPv4 アドレスの範囲とネットワーク タグによるインスタンス
  • IPv4 アドレスの範囲とサービス アカウントによるインスタンス
  • IPv6 アドレスの範囲とネットワーク タグによるインスタンス
  • IPv6 アドレスの範囲とサービス アカウントによるインスタンス
ソースが指定されていない場合は、0.0.0.0/0 の IPv4 範囲が使用されます。

プロトコルを指定するか、プロトコルとポートを指定します。

設定しないと、ルールはすべてのプロトコルと宛先ポートに適用されます。

下り(外向き)ルール
優先度 アクション 適用 ターゲット(送信元を定義) 送信先フィルタ プロトコルとポート
0 から 65535 までの整数。デフォルトは 1000 です。
allow または deny enabled(デフォルト)または disabled target パラメータには送信元を指定します。次のいずれかになります。
  • VPC ネットワーク内のすべてのインスタンス
  • ネットワーク タグによるインスタンス
  • サービス アカウントによるインスタンス
次のいずれかです。
  • IPv4 アドレスの範囲
  • IPv6 アドレスの範囲
送信先が指定されていない場合、0.0.0.0/0 の IPv4 範囲が使用されます。
プロトコル、またはプロトコルと宛先ポートを指定します。

設定しないと、すべてのプロトコルと宛先ポートにルールが適用されます。

トラフィックの方向

ファイアウォール ルールの方向は、上り(内向き)と下り(外向き)のいずれかです。方向は常に、ファイアウォール ルールが適用される VM(ターゲット)の視点から定義されます。

  • 上り(内向き)方向は、送信元からターゲットに送信される接続を表します。上り(内向き)ルールは、パケットの宛先がターゲットである、新しいセッションに適用されます。

  • 下り(外向き)方向は、ターゲットから宛先に送信されるトラフィックを表します。下り(外向き)ルールは、パケットの送信元がターゲットである、新しいセッションのパケットに適用されます。

  • 方向を指定しない場合、Google Cloud は上り(内向き)を使用します。

同じネットワーク内の 2 つの VM 間の接続例を考えてみましょう。VM1 から VM2 へのトラフィックは、次のいずれかのファイアウォール ルールを使用して制御できます。

  • ターゲットが VM2、送信元が VM1 の上り(内向き)ルール。

  • ターゲットが VM1、宛先が VM2 の下り(外向き)ルール。

優先度

ファイアウォール ルールの優先度は、0 から 65535 までの整数です。小さい整数が高い優先度を示します。ルールの作成時に優先度を指定しない場合、優先度 1000 が割り当てられます。

ファイアウォール ルールの相対的な優先度によって、他のルールに対して評価されたときに、適用されるかどうかが決まります。評価ロジックは次のように機能します。

  • 特定のタイプのトラフィックで、ターゲットに適用可能な優先度が最も高いルールが優先されます。ターゲットの特性は関係ありません。たとえば、すべてのターゲット向けの、特定の宛先ポートとプロトコルで優先度の高い上り(内向き)ルールにより、特定のターゲット向けに同様に定義された、同じ宛先ポートとプロトコルの優先度の低いルールがオーバーライドされます。

  • プロトコルと宛先ポートの定義がより一般的であっても、特定のプロトコルと宛先ポートの定義に適用可能な、優先度が最も高いルールが優先されます。たとえば、特定のターゲット向けの、すべてのプロトコルと宛先ポートでトラフィックを許可する優先度の高い上り(内向き)ルールにより、同じターゲット向けの、TCP 22 を拒否する優先度の低い上り(内向き)ルールはオーバーライドされます。

  • deny アクションのルールが別の allow アクションのルールをオーバーライドするのは、2 つのルールの優先度が同じ場合に限られます。相対的な優先度を使用すると、deny ルールをオーバーライドする allow ルールや、allow ルールをオーバーライドする deny ルールを作成できます。

  • 同じ優先順位と同じアクションを持つルールは同じ結果になります。ただし、評価中に使用されるルールは不確定です。通常、ファイアウォール ルールのロギングを有効にしている場合を除き、どのルールが使用されても問題はありません。一定の明確な順序でファイアウォール ルールが評価されていることをログで確認できるようにするには、これらのルールに一意の優先順位を割り当てます。

2 つのファイアウォール ルールが存在する次の例について考えてみましょう。

  • すべてのターゲット、すべてのプロトコル、すべての宛先ポートに適用可能で、送信元が 0.0.0.0/0(任意の IPv4 アドレス)の上り(内向き)ルール。アクションは deny で、優先度は 1000 です。

  • TCP 80 のトラフィックで、タグ webserver を持つ特定のターゲットに適用可能な、送信元が 0.0.0.0/0(任意の IPv4 アドレス)の上り(内向き)ルール。アクションは allow です。

2 番目のルールの優先度によって、ポート 80 への TCP トラフィックが webserver ターゲットに対して許可されるかどうかが決まります。

  • 2 番目のルールの優先度が 1000 よりも大きい数値に設定された場合、優先度が低いため、すべてのトラフィックを拒否する最初のルールが適用されます。

  • 2 番目のルールの優先度が 1000 に設定されている場合、2 つのルールは同じ優先度になるため、すべてのトラフィックを拒否する最初のルールが適用されます。

  • 2 番目のルールの優先度が 1000 よりも小さい数値に設定された場合、優先度が高いため、webserver ターゲットに対する TCP 80 でのトラフィックが許可されます。他のルールがない場合、最初のルールによって webserver ターゲットへの他のタイプのトラフィックは引き続き拒否され、TCP 80 を含め、webserver タグがないインスタンスへのトラフィックもすべて拒否されます。

上記の例は、優先度を使用して個別の allow ルールとグローバルな deny ルールを作成し、最小権限のセキュリティに関するベスト プラクティスの実装方法を示しています。

一致したときのアクション

ファイアウォール ルールのアクション コンポーネントでは、ルールの他のコンポーネントに従って、トラフィックを許可するかブロックするかが決定されます。

  • allow アクションは、他の指定されたコンポーネントと一致する接続を許可します。

  • deny アクションは、他の指定されたコンポーネントと一致する接続をブロックします。

適用

ルールの状態を enabled または disabled に設定することで、ファイアウォール ルールを適用するかどうかを選択できます。ルールの作成時またはルールの更新時に適用状態を設定します。

新しいファイアウォール ルールの作成時に適用状態を設定しない場合、ファイアウォール ルールは自動的に enabled になります。

ユースケース

無効化と有効化は、トラブルシューティングとメンテナンスの実行に役立ちます。次のような状況では、ファイアウォール ルールの適用を変更することを検討してください。

  • トラブルシューティング: ファイアウォール ルール ロギングと連動して、ファイアウォール ルールを一時的に無効にして、ルールがトラフィックをブロックしているか、許可しているかを判断できます。これは、複数のファイアウォール ルールが同じトラフィックに適用される場合に便利です。ルールの他の部分は失われないため、ルールを削除して再作成するよりも、ルールの無効化と有効化を行うと便利です。

  • メンテナンス: ファイアウォール ルールを無効化することで、定期的なメンテナンスが簡単になります。 たとえば、SSH を使用してメンテナンスを実行する必要がある場合にのみ、SSH アクセスを許可する上り(内向き)ファイアウォール ルールを有効にできます。メンテナンスを実行していない場合、ルールを無効にできます。

既存のトラフィックへの影響

ファイアウォール ルールの適用状態を変更した場合、または enforced という新しいルールを作成した場合、その変更は新しい接続にのみ適用されます。既存の接続は変更の影響を受けません。

送信元、宛先、ターゲット

作成するファイアウォール ルールの方向に応じて、送信元または宛先のいずれかを指定します(両方ではありません)。target パラメータの意味は、ファイアウォール ルールの方向によって異なります。

  • 上り(内向き)ルールの場合、target パラメータにトラフィックの宛先インスタンスを指定します。destination パラメータは使用できません。送信元は、source パラメータを使用して指定します。

  • 下り(送信)ルールの場合、target パラメータにトラフィックの送信元インスタンスを指定します。source パラメータは使用できません。宛先は、destination パラメータを使用して指定します。

インスタンスには、GKE クラスタと App Engine フレキシブル環境インスタンスも含まれます。

target パラメータ

target パラメータは、常に Google Cloud インスタンスを示しますが、送信元、宛先、ターゲットで説明しているように、ターゲットがトラフィックの宛先なのか送信元なのかはルールの方向によって異なります。

ターゲットを指定するには、次のいずれかのオプションを使用します。

  • ネットワーク上のすべてのインスタンス。ファイアウォール ルールは、ネットワーク内のすべてのインスタンスに適用されます。

  • ターゲットタグによるインスタンス: ファイアウォール ルールは、一致するネットワーク タグを持つインスタンスにのみ適用されます。

  • ターゲット サービス アカウントによるインスタンス。ファイアウォール ルールは、特定のサービス アカウントを使用するインスタンスにのみ適用されます。ファイアウォール ルールごとに適用可能なターゲット サービス アカウントの最大数については、VPC リソース割り当てをご覧ください。

ターゲットタグとターゲット サービス アカウントの利点と制限については、サービス アカウントとネットワーク タグによるフィルタリングをご覧ください。

上り(内向き)ルールのターゲットと IP アドレス

上り(内向き)ファイアウォール ルールのターゲットは、ターゲットの指定方法に関係なく、VPC ネットワーク内のインスタンスのネットワーク インターフェース(NIC)に到着したすべてのトラフィックに適用されます。上り(内向き)ファイアウォール ルールは、宛先が次のいずれかの IP アドレスに一致するパケットに適用されます。

  • インスタンスの NIC に割り当てられているプライマリ内部 IPv4 アドレス

  • インスタンスの NIC に構成されているエイリアス IP 範囲

  • インスタンスの NIC に関連付けられている外部 IPv4 アドレス

  • IPv6 がサブネットで構成されている場合、NIC に割り当てられる IPv6 アドレス

  • インスタンスがロードバランサのバックエンドまたはプロトコル転送のターゲット インスタンスである場合、負荷分散またはプロトコル転送用の転送ルールに関連付けられた内部または外部 IPv4 アドレス

下り(外向き)ルールのターゲットと IP アドレス

下り(外向き)ファイアウォール ルールのターゲットは、ターゲットの指定方法に関係なく、VPC ネットワーク内の VM インスタンスのネットワーク インターフェース(NIC)を離れるすべてのトラフィックに適用されます。

  • デフォルトでは、IP 転送は無効になっています。下り(外向き)ファイアウォール ルールは、送信元が次のいずれかに一致するパケットに適用されます。

    • インスタンスの NIC のプライマリ内部 IPv4 アドレス

    • インスタンスの NIC に構成されたエイリアス IP 範囲

    • IPv6 がサブネットで構成されている場合、NIC に割り当てられた IPv6 アドレス

    • インスタンスがロードバランサのバックエンドまたはプロトコル転送のターゲット インスタンスである場合、負荷分散またはプロトコル転送用の転送ルールに関連付けられた内部または外部 IPv4 アドレス

  • IP 転送が有効になっている場合、VM はすべての送信元のパケット送信を許可されます。

source パラメータ

source パラメータを適用できるのは、上り(内向き)ルールのみです。以下のいずれかにする必要があります。

  • 送信元 IPv4 範囲または送信元 IPv6 範囲: パケットの送信元として IP アドレスの範囲を指定できます。範囲は、IPv4 と IPv6 のどちらのアドレスでも指定できますが、両方を組み合わせることはできません。範囲には、VPC ネットワークの内部と外部のアドレスを含めることができます。

  • ソースタグ: 同じ VPC ネットワーク内にある VM インスタンスのネットワーク インターフェースのプライマリ内部 IP アドレスとしてパケットの送信元を定義すると、一致するネットワーク タグで送信元のインスタンスを識別できます。ソースタグは、VPC ネットワーク内で該当する別のインスタンスのネットワーク インターフェースから送信されたトラフィックにのみ適用されます。外部 IP アドレスがインスタンスに属している場合でも、ソースタグを使用して、送信元が外部 IP アドレスのパケットを制御することはできません。ファイアウォール ルールごとに適用できるソースタグの最大数については、VPC リソースの割り当てをご覧ください。

  • ソースサービス アカウント: 同じ VPC ネットワークにあるインスタンスのネットワーク インターフェースのプライマリ内部 IP アドレスとしてパケットの送信元を定義すると、使用するサービス アカウントで送信元のインスタンスを識別できます。ソースサービス アカウントは、VPC ネットワーク内で該当する別のインスタンスのネットワーク インターフェースから送信されたトラフィックにのみ適用されます。外部 IP アドレスがインスタンスに属している場合でも、ソースサービス アカウントを使用して、送信元が外部 IP アドレスのパケットを制御することはできません。ファイアウォール ルールごとに適用可能なソースサービス アカウントの最大数については、VPC リソース割り当てをご覧ください。

  • 次のような上記の組み合わせが可能です。

    • ソース IP 範囲とソースタグは組み合わせて使用できます。
    • ソース IP 範囲とソースサービス アカウントは組み合わせて使用できます。

    組み合わせが使用される場合、有効なソースセットは、ソース範囲の IP アドレスと、ネットワーク タグまたはサービス アカウントによって識別されるインスタンスを組み合わせたものです。つまり、ソース IP 範囲、またはソースタグ(またはソースサービス アカウント)のいずれかがフィルタ条件と一致する場合、そのソースは有効なソースセットに含まれています。

  • ソース IP 範囲、ソースタグ、ソース サービス アカウントがすべて省略されている場合、Google Cloud は送信元を任意の IPv4 アドレス(0.0.0.0/0)として定義します。IPv6 ソースは含まれません。

送信元と IP アドレス

上り(内向き)ファイアウォール ルールの source パラメータにソースタグまたはソース サービス アカウントが含まれている場合、Google Cloud は、タグまたはサービス アカウントに一致する VM を特定し、これらの VM の以下の IP アドレスをファイアウォール ルールの有効な送信元セットに含めます。

  • VPC ネットワーク内にある VM のネットワーク インターフェース(NIC)のプライマリ内部 IPv4 アドレス

  • VPC ネットワークの VM の NIC に割り振られた任意の IPv6 アドレス

ソースタグまたはソース サービス アカウントを使用する場合、その NIC のエイリアス IP 範囲と関連付けられた転送ルールの IP アドレスは含まれません。VM のネットワーク インターフェースのエイリアス IP 範囲を含める必要がある場合は、送信元の IPv4 範囲を使用してエイリアス範囲を追加します。

ファイアウォール ルールで送信元 IP 範囲とソースタグの組み合わせ、または送信元 IP 範囲とソース サービス アカウントの組み合わせが使用されている場合、有効な送信元セットには、タグまたはサービス アカウントで特定される IP アドレスと、送信元 IP 範囲で指定された IP アドレスが含まれます。

destination パラメータ

destination パラメータを適用できるのは、下り(外向き)ルールのみです。destination パラメータは、IP アドレス範囲のみ受け入れます。範囲には、VPC ネットワークの内部と外部のアドレスを含めることができます。

宛先範囲を指定しない場合、Google Cloud は宛先をすべての IPv4 アドレス(0.0.0.0/0)になるように定義します。IPv6 の宛先は含まれません。

プロトコルとポート

プロトコル、またはプロトコルと宛先ポートを指定すると、ファイアウォール ルールの範囲を狭めることができます。プロトコル、またはプロトコルと宛先ポートの組み合わせを指定できます。プロトコルとポートの両方を省略した場合、ファイアウォール ルールは、任意のプロトコルと任意の宛先ポートの、すべてのトラフィックに適用されます。指定できるのは宛先ポートだけです。送信元ポートに基づくルールはサポートされていません。

ファイアウォール ルールを具体的にするため、最初にプロトコルを指定する必要があります。プロトコルでポートがサポートされている場合、任意で宛先のポート番号またはポート範囲を指定できます。ただし、すべてのプロトコルでポートがサポートされているわけではありません。たとえば、ポートは TCP と UDP には存在しますが、ICMP には存在しません(ICMP にはさまざまな ICMP タイプがありますが、ポートではなく、ファイアウォール ルールで指定することはできません)。

ファイアウォール ルールでは、プロトコル名として tcpudpicmp(IPv4 ICMP の場合)、espahsctpipip を使用できます。他のすべてのプロトコルには、IANA プロトコル番号を使用します。

多くのプロトコルでは IPv4 と IPv6 の両方で同じ名前と番号が使用されますが、ICMP などの一部のプロトコルでは使用されません。

IPv6 ホップバイホップ プロトコルはファイアウォール ルールでサポートされていません。

Google Cloud ファイアウォール ルールはポート情報を使用して、パケットの宛先ポートを参照します(送信元ポートではありません)。

  • 上り(受信)ファイアウォール ルールの場合、宛先ポートは、ルールの target パラメータで識別されるシステム上のポートです(上りルールの場合、target パラメータはトラフィックのターゲット VM を指定します)。

  • 下り(送信)ファイアウォール ルールの場合、宛先ポートは、ルールの destination パラメータで識別されるシステム上のポートを表します。

次の表は、Google Cloud ファイアウォール ルールに対するプロトコルと宛先ポートの指定の、有効な組み合わせをまとめたものです。

仕様 説明
プロトコルもポートもなし - プロトコルを指定しない場合、ファイアウォール ルールは、すべてのプロトコルと適用可能な宛先ポートに適用されます。
プロトコル tcp ポート情報を指定せずにプロトコルを指定した場合、ファイアウォール ルールは、そのプロトコルと適用可能なすべてのポートに適用されます。
プロトコルと単一のポート tcp:80 プロトコルと単一の宛先ポートを指定した場合、ファイアウォール ルールは、そのプロトコルのその宛先ポートに適用されます。
プロトコルとポート範囲 tcp:20-22 プロトコルとポート範囲を指定した場合、ファイアウォール ルールは、そのプロトコルの宛先ポート範囲に適用されます。
組み合わせ icmp,tcp:80
tcp:443
udp:67-69
ファイアウォール ルールには、プロトコルと宛先ポートのさまざまな組み合わせを指定できます。詳細については、ファイアウォール ルールの作成をご覧ください。

サービス アカウントによる送信元とターゲットのフィルタリング

サービス アカウントを使用すると、より具体的なファイアウォール ルールを作成できます。

  • 上り(内向き)ルールと下り(外向き)ルールの両方で、サービス アカウントを使用してターゲットを指定できます。

  • 上り(内向き)ルールでは、VM が特定のサービス アカウントを使用しているネットワーク内の、任意の VM のプライマリ内部 IP アドレスとして、受信パケットの送信元を指定できます。

サービス アカウントに依存するファイアウォール ルールを作成する前に、ファイアウォール ルールと同じプロジェクトにサービス アカウントを作成する必要があります。別のプロジェクトのサービス アカウントを使用するルールを作成することもできますが、ファイアウォール ルールのプロジェクトにサービス アカウントが存在しないと、そのルールは適用されません。

インスタンスの識別にサービス アカウントを使用するファイアウォール ルールは、作成されてサービス アカウントに関連付けられた新しいインスタンスと、既存のインスタンス(サービス アカウントを変更した場合)の両方に適用されます。インスタンスに関連付けられたサービス アカウントを変更するには、インスタンスを停止して再起動する必要があります。サービス アカウントは、個々のインスタンスと、マネージド インスタンス グループで使用されるインスタンス テンプレートに関連付けることができます。

サービス アカウントによるフィルタリングとネットワーク タグによるフィルタリング

このセクションでは、ターゲットと送信元を定義するためにサービス アカウントとネットワーク タグのどちらを使用する必要があるかを判断する際に考慮すべき、重要なポイントを示します(上りルール用)。

ファイアウォール ルールを VM に適用する方法を厳密に制御する必要がある場合、ターゲットタグとソースタグではなく、ターゲット サービス アカウントとソースサービス アカウントを使用します。

  • ネットワーク タグは任意の属性です。編集権限のある Identity and Access Management(IAM)プリンシパルは、インスタンスを 1 つ以上のネットワーク タグを関連付けることができます。プロジェクトに対して Compute Engine インスタンス管理者のロールを持つ IAM プリンシパルが、この権限を持っています。インスタンスを編集できる IAM プリンシパルは、そのネットワーク タグを変更できます。これにより、そのインスタンスに適用可能な一連のファイアウォール ルールが変更される可能性があります。

  • サービス アカウントは、インスタンスに関連付けられた ID を表します。インスタンスに関連付けることができるサービス アカウントは 1 つのみです。他の IAM プリンシパルに対するサービス アカウント ユーザーのロールの付与を制御することで、サービス アカウントへのアクセスを制御します。IAM プリンシパルがサービス アカウントを使用してインスタンスを開始する場合、少なくともそのサービス アカウントを使用できるサービス アカウント ユーザーのロールに加え、インスタンスを作成できる適切な権限が必要です(たとえば、Compute Engine インスタンス管理者のロールなど)。

ファイアウォール ルールでは、サービス アカウントとネットワーク タグを混在させて一致させることはできません。

  • ターゲット サービス アカウントとターゲットタグは、ファイアウォール ルール(上りまたは下り)で一緒に使用できません。

  • ターゲット タグまたはターゲット サービス アカウントでターゲットを指定する場合、上り(内向き)ファイアウォール ルールのソースとして次のものは無効になります。

    ターゲット 無効な送信元
    ターゲットタグ ソースサービス アカウント

    ソース IP 範囲とソースサービス アカウントの組み合わせ
    ターゲット サービス アカウント ソースタグ

    ソース IP 範囲とソースタグの組み合わせ

サービス アカウントとネットワーク タグを使用する場合は、次のことに注意してください。

  • インスタンスのサービス アカウントを変更するには、そのインスタンスを停止して再起動する必要があります。タグの追加や削除は、インスタンスの実行中に行えます。

  • ファイアウォール ルールに指定できるターゲット サービス アカウント、ソースサービス アカウント、ターゲット ネットワーク タグ、ソース ネットワーク タグの数には上限があります。詳細については、VPC リソースの割り当てをご覧ください。

  • ネットワーク タグでインスタンスを識別する場合、ファイアウォール ルールはインスタンスのプライマリ内部 IP アドレスに適用されます。

  • サービス アカウントのファイアウォール ルールは GKE ノードに適用されます。GKE Pod には適用されません。

ユースケース

以下のユースケースでは、ファイアウォール ルールが機能する仕組みを示しています。これらの例では、すべてのファイアウォール ルールが有効になっています。

上り(内向き)の場合

上り(内向き)ファイアウォール ルールは、VPC ネットワーク内の送信元からターゲット インスタンスへの受信接続を制御します。上り(内向き)ルールの送信元は、次のいずれかとして定義できます。

  • IPv4 または IPv6 アドレスの範囲。デフォルトは任意の IPv4 アドレス(0.0.0.0/0)です。
  • ネットワーク タグで識別される VPC ネットワーク内の他のインスタンス
  • サービス アカウントで識別される VPC ネットワーク内の他のインスタンス
  • IPv4 または IPv6 アドレスの範囲と、ネットワーク タグで識別される VPC ネットワーク内の他のインスタンス
  • IPv4 または IPv6 アドレスの範囲と、サービス アカウントによって識別される VPC ネットワーク内の他のインスタンス

デフォルトの送信元は任意の IPv4 アドレス(0.0.0.0/0)です。インターネット上の他の送信元など、VPC ネットワーク外の送信元からの受信接続を制御する場合は、CIDR 形式の IP アドレス範囲を使用します。

allow アクションを含む上り(内向き)ルールでは、ルールの他のコンポーネントに基づいて、受信トラフィックを許可します。ルールの送信元とターゲットを指定するだけでなく、特定のプロトコルと宛先ポートに適用されるようにルールを制限できます。同様に、deny アクションを含む上り(内向き)ルールを使用すると、ファイアウォール ルールのコンポーネントに基づいて受信トラフィックをブロックすることで、インスタンスを保護できます。

上り(内向き)の例

次の図に、ファイアウォールルールで上り(内向き)接続を制御している例を示します。この例では、ルールの割り当てで target パラメータを使用して、特定のインスタンスにルールを適用しています。

上り(内向き)ファイアウォール ルールの例(クリックして拡大)
上り(内向き)ファイアウォール ルールの例(クリックして拡大)
  • 優先度 1000 の上り(内向き)ルールが VM 1 に適用されます。このルールは、任意の IPv4 送信元(0.0.0.0/0)からの受信 TCP トラフィックを許可します。VPC ネットワーク内の他のインスタンスからの TCP トラフィックは、そのインスタンスに適用される下り(外向き)ルールに応じて許可されます。VM 4 は、VM 1 と TCP で通信できます。これは VM 4 にはそのような通信をブロックする下り(外向き)ルールがないためです(暗黙の下り許可ルールのみが適用されます)。VM 1 には外部 IP があるため、このルールはインターネット上の外部ホストからの受信 TCP トラフィックと、外部 IP アドレス経由での VM 2 からの受信 TCP トラフィックを許可します。

  • VM 2 には上り(内向き)ファイアウォール ルールが指定されていないため、暗黙の上り(内向き)拒否ルールによってすべての受信トラフィックがブロックされます。ネットワーク内の他のインスタンスからの接続は、他のインスタンスの下り(外向き)ルールに関係なく、ブロックされます。VM 2 には外部 IP があるため、インターネット上の外部ホストから VM 2 へのパスが存在しますが、暗黙の上り(内向き)拒否ルールによって外部からの受信トラフィックもブロックされます。

  • 優先度 1000 の上り(内向き)ルールが VM 3 に適用されます。このルールでは、ネットワーク タグ client を持つネットワーク内のインスタンス(VM 4 など)からの TCP トラフィックが許可されます。VM 4 から VM 3 への TCP トラフィックは許可されます。VM 4 にはそのような通信をブロックする下り(外向き)ルールがないためです。暗黙の下り(外向き)許可ルールのみが適用されます。VM 3 には外部 IP がないため、インターネット上の外部ホストからのパスはありません。

下り(外向き)の場合

下り(外向き)ファイアウォール ルールは、VPC ネットワーク内のターゲット インスタンスからの送信接続を制御します。allow アクションを含む下り(外向き)ルールは、ルールの他のコンポーネントに基づいて、インスタンスからのトラフィックを許可します。たとえば、指定したプロトコルと宛先ポートでの特定の宛先(IPv4 アドレスの範囲など)への送信トラフィックを許可できます。同様に、deny アクションを含む下り(外向き)ルールでは、ルールの他のコンポーネントに基づいてトラフィックをブロックします。

すべての下り(外向き)ルールに宛先が必要です。デフォルトの宛先は任意の IPv4 アドレス(0.0.0.0/0)ですが、CIDR 形式の IPv4 または IPv6 アドレスの範囲を使用して、特定の宛先を作成できます。IP アドレスの範囲を指定すると、ネットワーク内のインスタンスや、インターネット上の宛先を含むネットワーク外の宛先へのトラフィックを制御できます。

下り(外向き)の例

次の図に、ファイアウォールルールで下り(外向き)接続を制御している例を示します。この例では、ルールの割り当てで target パラメータを使用して、特定のインスタンスにルールを適用しています。

下り(外向き)ファイアウォール ルールの例(クリックして拡大)
下り(外向き)ファイアウォール ルールの例(クリックして拡大)
  • VM 1 には指定された下り(外向き)ファイアウォール ルールがないため、暗黙の下り(外向き)許可ルールによって、任意の宛先にトラフィックを送信できます。VPC ネットワーク内の他のインスタンスへの接続は、そのインスタンスに適用される上り(内向き)ルールに応じて許可されます。VM 4 には任意の IP アドレス範囲からの受信トラフィックを許可する上り(内向き)ルールがあるため、VM 1VM 4 にトラフィックを送信できます。VM 1 には外部 IP アドレスがあるため、インターネット上の外部ホストにトラフィックを送信できます。ファイアウォール ルールはステートフルであるため、VM 1 によって送信されたトラフィックへの受信レスポンスは許可されます。

  • 優先度 1000 の下り(外向き)ルールが VM 2 に適用されます。このルールは、すべての IPv4 宛先(0.0.0.0/0)へのすべての送信トラフィックを拒否します。VPC 内の他のインスタンスへの送信トラフィックは、そのインスタンスに適用される上り(内向き)ルールに関係なく、ブロックされます。VM 2 には外部 IP アドレスがありますが、このファイアウォール ルールは、インターネット上の外部ホストへの送信トラフィックをブロックします。

  • 優先度 1000 の下り(外向き)ルールが VM 3 に適用されます。このルールは、IP 範囲 192.168.1.0/24 内の任意の宛先への送信 TCP トラフィックをブロックします。VM 4 の上り(内向き)ルールはすべての受信トラフィックを許可しますが、VM 3 は TCP トラフィックを VM 4 に送信できません。ただし、この下り(外向き)ルールは TCP プロトコルにのみ適用されるため、VM 3VM 4 に UDP トラフィックを自由に送信できます。

    さらに VM 3 は、VPC ネットワーク内の IP 範囲 192.168.1.0/24 外の他のインスタンスにトラフィックを許可する上り(内向き)ルールがある限り、それらのインスタンスにそのようなトラフィックを送信できます。外部 IP アドレスがないため、VPC ネットワークの外部にトラフィックを送信するパスはありません。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの VPC のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

VPC 無料トライアル