VPC ファイアウォール ルールのロギングの例

Virtual Private Cloud(VPC)ファイアウォール ルールは、トラフィックに適用されるとログエントリを生成します。 パケットフローによっては複数のログエントリが生成されることもありますが、VPC ファイアウォール ルールでは、仮想マシン(VM)インスタンスからの接続ごとに最大 1 つのログエントリが生成されます。次の例は、さまざまなシナリオで VPC ファイアウォール ルールのロギングがどのように機能するかを示しています。

下り(外向き)拒否ルールの例

この例は、同じ VPC ネットワーク内の 2 つの VM インスタンス間のトラフィックをブロックする下り(外向き)拒否の VPC ファイアウォール ルールのロギングを示しています。

この例では、トラフィックは example-proj プロジェクトの example-net VPC ネットワーク内の VM インスタンス間で送受信されます。

  • 2 つの VM インスタンスは次のとおりです。

    • VM1 は us-west1(リージョン)内の west-subnet ゾーン us-west1-a にあり、IP アドレス 10.10.0.99 が割り当てられています。
    • VM2 は us-east1(リージョン)内の east-subnet ゾーン us-east1-b にあり、IP アドレス 10.20.0.99 が割り当てられています。
  • ルール A: 下り(外向き)拒否のファイアウォール ルールのターゲットは、ネットワーク内のすべてのインスタンスです。このルールは、宛先を 10.20.0.99(VM2)とするトラフィックに対して TCP ポート 80 に適用されます。 このルールにはロギングが有効化されています。

  • ルール B: 上り(内向き)許可のファイアウォール ルールのターゲットは、ネットワーク内のすべてのインスタンスです。このルールは、送信元を 10.10.0.99(VM1)とするトラフィックに対して TCP ポート 80 に適用されます。 このルールにもロギングが有効化されています。

VPC ファイアウォール ルールを作成するには、次の gcloud コマンドを使用します。

  • ルール A: すべてのインスタンスをターゲットに、10.20.0.99 を宛先とするトラフィックに対して TCP ポート 80 に適用する下り(外向き)拒否ルール。

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • ルール B: すべてのインスタンスをターゲットに、10.10.0.99 を送信元とするトラフィックに対して TCP ポート 80 に適用する上り(内向き)許可ルール。

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
下り(外向き)拒否ルールにより、VM1 から VM2 への接続がブロックされます。
下り(外向き)拒否ルールにより、VM1 から VM2 への接続がブロックされます(クリックして拡大)。

VM1 が VM2 に TCP ポート 80 で接続しようとしている場合、次のようになります。

  • VM1 が 10.20.0.99(VM2)への接続を試行すると、VM1 の観点からルール A のログエントリが生成されます。
  • ルール A によってトラフィックがブロックされるため、ルール B が考慮されることはありません。したがって、VM2 の観点からルール B のログエントリが記録されることもありません。

VM1 は次の VPC ファイアウォール ルール ログレコードを報告します。

フィールド
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition 拒否
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = DENY
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location 情報はありません。このフィールドは、宛先が VPC ネットワークの外部である場合にのみ使用されます。

下り(外向き)許可ルール、上り(内向き)許可ルールの例

この例は、同じ VPC ネットワーク内の 2 つの VM インスタンス間のトラフィックを許可する下り(外向き)許可の VPC ファイアウォール ルールと上り(内向き)許可の VPC ファイアウォール ルールのロギングを示しています。

この例では、トラフィックは example-proj プロジェクトの example-net VPC ネットワーク内の VM インスタンス間で送受信されます。

  • 2 つの VM インスタンスは次のとおりです。

    • VM1 は us-west1(リージョン)内の west-subnet ゾーン us-west1-a にあり、IP アドレス 10.10.0.99 が割り当てられています。
    • VM2 は us-east1(リージョン)内の east-subnet ゾーン us-east1-b にあり、IP アドレス 10.20.0.99 が割り当てられています。
  • ルール A: 下り(外向き)許可のファイアウォール ルールのターゲットは、ネットワーク内のすべてのインスタンスです。このルールは、宛先を 10.20.0.99(VM2)とするトラフィックに対して TCP ポート 80 に適用されます。 このルールにはロギングが有効化されています。

  • ルール B: 上り(内向き)許可のファイアウォール ルールのターゲットは、ネットワーク内のすべてのインスタンスです。このルールは、送信元を 10.10.0.99(VM1)とするトラフィックに対して TCP ポート 80 に適用されます。 このルールにもロギングが有効化されています。

VPC ファイアウォール ルールを作成するには、次の gcloud コマンドを使用します。

  • ルール A: すべてのインスタンスをターゲットに、10.20.0.99(VM2)を宛先とするトラフィックに対して TCP ポート 80 に適用する下り(外向き)許可ルール。

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action allow \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • ルール B: すべてのインスタンスをターゲットに、10.10.0.99(VM1)を送信元とするトラフィックに対して TCP ポート 80 に適用する上り(内向き)許可ルール。

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
下り(外向き)許可ルールと上り(内向き)許可ルールにより、VM1 から VM2 への接続が許可されます。
下り(外向き)許可ルールと上り(内向き)許可ルールにより、VM1 から VM2 への接続が許可されます(クリックして拡大)。

VM1 が VM2 に TCP ポート 80 で接続しようとしている場合、次のようになります。

  • VM1 が 10.20.0.99(VM2)に接続すると、VM1 の観点からルール A のログエントリが生成されます。
  • VM2 が 10.10.0.99(VM1)からの受信接続を許可すると、VM2 の観点からルール B のログエントリが生成されます。

VM1 は次の VPC ファイアウォール ルール ログレコードを報告します。

フィールド
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition 許可
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = ALLOW
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location 情報はありません。このフィールドは、宛先が VPC ネットワークの外部である場合にのみ使用されます。

VM2 は次の VPC ファイアウォール ルール ログレコードを報告します。

フィールド
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition 許可
rule_details reference = "network:example-net/firewall:rule-b"
priority = 10
action = ALLOW
source_range = 10.10.0.99/32
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location 情報はありません。このフィールドは、宛先が VPC ネットワークの外部である場合にのみ使用されます。

インターネット上り(内向き)ルールの例

この例は、インターネットから VM インスタンスへのトラフィックを許可する上り(内向き)許可のファイアウォール ルールのロギングを示しています。また、ステートフル ファイアウォールの動作が下り(外向き)拒否ルールにどのように影響するかも示しています。

この例では、トラフィックは外部リソースから example-net VPC ネットワーク内の VM インスタンスに送受信されます。ネットワークは example-proj プロジェクトにあります。

  • インターネット上のシステムには、IP アドレス 203.0.113.114 が割り当てられています。
  • VM1 は us-west1(リージョン)内の west-subnet ゾーン us-west1-a にあり、IP アドレス 10.10.0.99 が割り当てられています。
  • ルール C: 上り(内向き)許可のファイアウォール ルールのターゲットは、ネットワーク内のすべてのインスタンスです。このルールは、任意の IP アドレス(0.0.0.0/0)を送信元とするトラフィックに対して TCP ポート 80 に適用されます。 このルールにはロギングが有効化されています。
  • ルール D: 下り(外向き)拒否のファイアウォール ルールのターゲットは、ネットワーク内のすべてのインスタンスです。このルールは、宛先を任意の IP アドレス(0.0.0.0/0)とし、すべてのプロトコルに適用されます。このルールにはロギングが有効化されています。

VPC ファイアウォール ルールを作成するには、次の gcloud コマンドを使用します。

  • ルール C: すべてのインスタンスをターゲットに、任意の送信元のトラフィックに対して TCP ポート 80 に適用する上り(内向き)許可ルール。

    gcloud compute firewall-rules create rule-c \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
  • ルール D: すべてのインスタンスをターゲットに、任意の宛先のトラフィックに対してすべてのプロトコルに適用する下り(外向き)拒否ルール。

    gcloud compute firewall-rules create rule-d \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules all \
        --destination-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
上り(内向き)許可ルールは、インターネットから VM1 への接続を許可します。
インターネットから VM への接続(クリックして拡大)。

IP アドレス 203.0.113.114 が割り当てられたシステムが、VM1 に TCP ポート 80 で接続しようとしている場合、次のようになります。

  • VM1 は、203.0.113.114 からのトラフィックを受け入れると、ルール C のログエントリを生成します。
  • ファイアウォール ルールはステートフルであるため、VM1 はルール D にかかわらず、受信リクエストに応答できます。Google Cloud 受信したリクエストが許可されている場合、確立されたレスポンスを下り(外向き)ルールでブロックすることはできません。
  • ルール D は適用されないため、ルール D が考慮されてログエントリが記録されることはありません。

VM1 は次の VPC ファイアウォール ルール ログレコードを報告します。

フィールド
connection src_ip=203.0.113.114
src_port=[EPHEMERAL_PORT]
dest_ip=10.10.0.99
dest_port=80
protocol=6
disposition 許可
rule_details reference = "network:my-vpc/firewall:rule-c"
priority = 10
action = ALLOW
source_range = 0.0.0.0/0
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location continent
country
region
city

次のステップ