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

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

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

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

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

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

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

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

仕様

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

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

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

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

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

  • Google Cloud ファイアウォール ルールはステートフルです。セッションが確立されるとファイアウォール ルールは双方向の通信を許可します。関連するレスポンス トラフィックを拒否するようにファイアウォール ルールを構成することはできません。Google Cloud は、接続トラッキング テーブルを使用して、受信パケットとそれに対応する送信パケットを関連付けます。プロトコルが接続をサポートしているかどうかにかかわらず、Google Cloud は接続トラッキングを実装します。接続が送信元とターゲットの間で許可されている場合(内向きルール)またはターゲットと宛先の間で許可されている場合(外向きルール)、接続トラッキング テーブルの状態がアクティブである限り、すべてのレスポンス トラフィックが許可されます。10 分ごとに 1 つ以上のパケットが送信された場合、ファイアウォール ルールのトラッキング状態はアクティブになります。

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

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

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

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

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

  • default-allow-internal
    ネットワーク内のインスタンス間で、すべてのプロトコルおよびポートの上り(内向き)接続を許可します。このルールは 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 は、次の表にあるトラフィックを常にブロックします。ファイアウォール ルールを使用して、このトラフィックを許可することはできません。

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

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

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

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

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

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

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

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

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

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

  • 上り(内向き)ルールの送信元または下り(外向き)ルールの宛先

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

コンポーネントの概要

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

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

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

トラフィックの方向

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

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

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

  • 方向を指定しない場合、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(任意の場所)の上り(内向き)ルール。アクションは deny で、優先度は 1000 です。

  • TCP 80 のトラフィックで、タグ webserver を持つ特定のターゲットに適用可能な、送信元が 0.0.0.0/0(任意の場所)の上り(内向き)ルール。アクションは 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 になります。また、disabled 状態のルールを作成することもできます。

ルールを更新することで、ファイアウォール ルールの適用状態を enabled から disabled に戻すことができます。

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

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

ターゲット

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

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

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

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

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

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

ターゲットと IP アドレス

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

  • VPC ネットワークに存在するインスタンスのネットワーク インターフェースに割り当てられているプライマリ内部 IP アドレス。

  • VPC ネットワークに存在するインスタンスのネットワーク インターフェースに構成されているエイリアス IP 範囲

  • VPC ネットワークに存在するインスタンスのネットワーク インターフェースに関連付けられている外部 IP アドレス。

  • Google Cloud ロードバランサ(インスタンスがロードバランサのバックエンドの場合)。

下り(外向き)ファイアウォール ルールのターゲットは、ターゲットの指定方法に関係なく、VPC ネットワーク内のインスタンスのネットワーク インターフェースから送信されたすべてのトラフィックに適用されます。下り(外向き)ファイアウォール ルールは、VPC ネットワークに存在するインスタンスのネットワーク インターフェースに割り当てられているプライマリ内部 IP アドレスか、構成済みのエイリアス IP 範囲のいずれかに一致するパケットに適用されます。

送信元または宛先

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

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

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

送信元

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

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

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

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

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

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

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

宛先

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

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

プロトコルとポート

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

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

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

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 に適用する方法を厳密に制御する必要がある場合、ターゲットタグとソースタグではなく、ターゲット サービス アカウントとソースサービス アカウントを使用します。

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

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

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

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

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

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

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

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

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

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

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

  • ネットワーク タグでインスタンスを識別する場合、ファイアウォール ルールはインスタンスのプライマリ内部 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 があるため、インターネット上の外部ホストから VM 2 へのパスが存在しますが、暗黙の上り(内向き)拒否ルールによって外部からの受信トラフィックもブロックされます。

  • 優先度 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 ネットワークの外部にトラフィックを送信するパスはありません。

次のステップ