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が割り当てられています。
- VM1 は
ルール 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 に 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が割り当てられています。
- VM1 は
ルール 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 に 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
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 |