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

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

すべての VPC ネットワークは、分散ファイアウォールとして機能します。ファイアウォール ルールはネットワーク レベルで定義されますが、接続はインスタンスごとに許可または拒否されます。GCP ファイアウォール ルールは、インスタンスと他のネットワークの間だけでなく、同じネットワーク内の個々のインスタンスの間にも存在すると考えることができます。ファイアウォール ルールの作成手順と使い方については、ファイアウォール ルールの使用をご覧ください。

GCP のファイアウォール ルール

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

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

GCP には、ユーザーが作成するファイアウォール ルールのほかに、送受信トラフィックに影響を与える可能性のあるルールが用意されています。

  • GCP では、VPC ネットワーク内で特定の IP プロトコル(GRE など)が許可されません。詳細については、常にブロックされるトラフィックをご覧ください。

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

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

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

仕様

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

  • ファイアウォール ルールでは、IPv4 トラフィックのみがサポートされます。上りルールの送信元または下りルールの宛先をアドレスで指定するときは、CIDR 表記での IPv4 アドレスまたは IPv4 ブロックのみを使用できます。

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

  • ファイアウォール ルールは、双方向ではなく、受信(ingress)トラフィックまたは送信(egress)トラフィックに適用されます。詳細については、トラフィックの方向をご覧ください。

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

  • GCP ファイアウォール ルールはステートフルです。送信元とターゲットの間、またはターゲットと宛先の間で接続が許可されている場合、接続がアクティブである限り、以降のトラフィックはいずれの方向でもすべて許可されます。つまりファイアウォール ルールでは、セッションが確立されると双方向通信が許可されます。10 分ごとに少なくとも 1 つのパケットが送信されると、接続はアクティブとみなされます。ファイアウォール ルールでは、一方向のトラフィックを許可しつつ、対応する戻りトラフィックを拒否することはできません。

  • GCP ファイアウォール ルールでは、断片化された TCP パケットは再構成されません。したがって、TCP プロトコルに適用されるファイアウォール ルールは、最初のフラグメントにのみ適用されます(TCP ヘッダーが含まれているため)。TCP プロトコルに適用されるファイアウォール ルールは、以降の TCP フラグメントには適用されません。

  • ファイアウォール ルール テーブルのトラッキングされる接続の最大数は、インスタンスのマシンタイプでサポートされるステートフル接続の数によって異なります。

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

暗黙のルール

すべての VPC ネットワークには、2 つの暗黙のファイアウォール ルールがあります。これらのルールは存在していますが、Cloud Console には表示されません。

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

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

暗黙のルールは削除できませんが、優先度は可能な限り低くなっています。作成したルールの優先度が高い場合(優先度の数値が 65535 未満)、作成したルールによってこれらをオーバーライドできます。

default ネットワークの事前設定ルール

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

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

常にブロックされるトラフィック

Google Cloud Platform は、以下のトラフィックを常にブロックします。ファイアウォール ルールを使用して、以下の表にあるトラフィックを許可することはできません

常にブロックされるトラフィック 対象
GRE トラフィック すべての送信元、すべての宛先(内部 IP アドレスを使用するインスタンス間を含む)
TCP、UDP、ICMP、IPIP 以外のプロトコル 以下の間のトラフィック:
• インスタンスとインターネット
• 外部 IP アドレスを使用してアドレス指定されている場合のインスタンス
• 外部 IP アドレスを持つロードバランサが関与する場合のインスタンス
TCP ポート 25(SMTP)での下りトラフィック 以下からのトラフィック:
• インスタンスからインターネットへ
• インスタンスから外部 IP アドレスを使用してアドレス指定されている他のインスタンスへ

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

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

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

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

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

  • トラフィックの方向ingress ルールは、指定された送信元から GCP ターゲットへの受信接続に適用されます。egress ルールは、ターゲットから指定された宛先に向かうトラフィックに適用されます。

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

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

  • ingress ルールの送信元または egress ルールの宛先

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

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

コンポーネントの概要

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

優先度

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

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

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

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

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

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

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

  • すべてのターゲット、すべてのプロトコル、すべてのポートに適用可能な、送信元が 0.0.0.0/0(任意の場所)の ingress ルール。アクションは deny で、優先度は 1000 です。

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

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

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

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

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

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

トラフィックの方向

ファイアウォール ルールの方向は、ingressegress のいずれかです。方向は常にターゲットの視点から定義されます。

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

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

  • 方向を指定しない場合、GCP は ingress を使用します。

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

  • ターゲットが VM2、送信元が VM1 の ingress ルール。

  • ターゲットが VM1、宛先が VM2 の egress ルール。

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

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

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

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

適用

このルールの状態を有効または無効に設定することで、ファイアウォール ルールを適用するかどうかを変更できます。ルールの無効化は、トラブルシューティングする場合やインスタンスへの一時的なアクセス権を付与する場合に便利です。ルールを無効化し、テストしてから再度有効化するほうが、ルールを削除して再度作成するよりはるかに簡単です。

特に指定しない限り、すべてのファイアウォール ルールは作成時に有効になります。無効状態でルールを作成することもできます。

ファイアウォール ルールの適用状態は、ルールを更新することで有効にしたり無効にしたりできます。

以下のような状況ではファイアウォール ルールの無効化を検討してください。

  • トラブルシューティング: ファイアウォール ルールがトラフィックをブロックしているか許可しているかが不明な場合、ルールを一時的に無効にして、トラフィックが許可されているかブロックされているかを判断します。これは、あるルールを他のルールと組み合わせた場合の影響をトラブルシューティングする場合に便利です。
  • メンテナンス: ファイアウォール ルールを無効化することで、定期的なメンテナンスが簡単になります。たとえば、ターゲット(ターゲットタグによるインスタンスなど)に対する受信 SSH をブロックするファイアウォール ルールがあり、そのルールが通常は有効であるとします。メンテナンスが必要なとき、このルールを無効にできます。メンテナンスが終了したら、ルールを再び有効にします。

ターゲット

上り(受信)ルールの場合、target パラメータは GKE クラスタや App Engine フレキシブル環境インスタンスなどの宛先 VM を指定します。下り(送信)ルールの場合、target パラメータは送信元の VM、クラスタ、インスタンスを指定します。したがって target パラメータは常に GCP VM の指定に使用されますが、ターゲットがトラフィックの宛先なのか、あるいはトラフィックの送信元なのかは、ルールの方向によって異なります。

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

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

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

  • ターゲット サービス アカウントによるインスタンス: ファイアウォール ルールは、特定のサービス アカウントを使用する VM にのみ適用されます。

ターゲットの指定方法に関係なく、ファイアウォール ルールはプライマリ IP アドレスとセカンダリ(エイリアス)IP アドレスの両方に適用されます。上りルールのターゲットは、インスタンスのプライマリまたはセカンダリ IP アドレスに送信されるトラフィックに適用されます。下りルールのターゲットは、インスタンスのプライマリまたはセカンダリ IP アドレスから送信されるトラフィックに適用されます。それぞれのスコープ設定方法の利点と制限について詳しくは、サービス アカウントによるフィルタリングとネットワーク タグによるフィルタリングをご覧ください。

送信元または宛先

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

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

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

送信元

source パラメータを適用できるのは、上りルールのみです。次のいずれかでなければなりません。

  • ソース IP 範囲: パケットの送信元として IP アドレスの範囲を指定できます。範囲には、VPC ネットワークの内部と外部のアドレスを含めることができます。ソース IP 範囲は、GCP の内部と外部両方の送信元を定義するために使用できます。

  • ソースタグ: 同じ VPC ネットワーク内にある他の VM ネットワーク インターフェースのプライマリ内部 IP アドレスとしてパケットの送信元を定義すると、一致するネットワーク タグで送信元の VM を識別できます。ソースタグは、ネットワーク内の他の GCP VM にのみ適用されます。適用できるソースタグの最大数については、VPC の割り当てと制限をご覧ください。

  • ソースサービス アカウント: 同じ VPC ネットワーク内にある他の VM のネットワーク インターフェースのプライマリ内部 IP アドレスとしてパケットの送信元を定義すると、使用するサービス アカウントで送信元の VM を識別できます。ソースサービス アカウントは、ネットワーク内の他の GCP VM にのみ適用されます。

  • ソース IP 範囲ソースタグは組み合わせて使用できます。

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

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

宛先

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

宛先範囲を指定しない場合、GCP は宛先をすべての IP アドレス(0.0.0.0/0)になるように定義します。

プロトコルとポート

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

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

プロトコルは、名前(tcpudpicmpespahsctpipip)または 10 進数の IP プロトコル番号を使用して指定できます。

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

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

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

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

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

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

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

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

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

サービス アカウントを使用するファイアウォール ルールを作成する前に、サービス アカウントを作成する必要があります。

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

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

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

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

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

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

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

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

  • ターゲットタグまたはターゲット サービス アカウントでターゲットを指定した場合、次に示す送信元は上りファイアウォール ルールでは無効です。

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

サービス アカウントとネットワーク タグに関する運用上の考慮事項は次のとおりです。

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

  • 1 つのファイアウォール ルールで指定できるターゲット サービス アカウントは 1 つに限られます。1 つのファイアウォール ルールで複数のターゲットタグを指定できます。

  • 1 つの上りファイアウォール ルールで指定できるソースサービス アカウントは 1 つに限られます。1 つのファイアウォール ルールで複数のソースタグを指定できます。

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

使用例

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

上りの場合

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

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

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

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

上りの例

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

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

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

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

下りの場合

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

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

下りの例

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

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

  • 優先度 1000 の下りルールが VM 2 に適用されます。このルールは、すべての宛先(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 ネットワークの外部にトラフィックを送信するパスはありません。

次のステップ

このページは役立ちましたか?評価をお願いいたします。