VPC ファイアウォール ルールのロギングを管理する

このページでは、 VPC ファイアウォール ルールのロギングを有効または無効にする方法について説明します。 Virtual Private Cloud(VPC)ファイアウォール ルールのロギングについては、 VPC ファイアウォール ルールのロギングを有効または無効にするをご覧ください。 また、生成された VPC ファイアウォール ルールのログを表示する方法についても説明します。VPC ファイアウォール ルールのロギングについては、 VPC ファイアウォール ルールのロギングの概要をご覧ください。

VPC ファイアウォール ルールのロギングを有効にすると、ファイアウォール インサイトからその分析情報と推奨事項を表示できます。詳細については、Network Intelligence Center のドキュメントの ファイアウォール インサイト をご覧ください。

権限

VPC ファイアウォール ルールの変更や、ログへのアクセスを行うには、Identity and Access Management(IAM)プリンシパルに次のいずれかのロールが割り当てられている必要があります。

タスク 必要なロール
ファイアウォール ルールの作成、削除、または更新 プロジェクトの オーナーまたは編集者 あるいは セキュリティ管理者ロールroles/compute.securityAdmin
ログを表示 プロジェクトの オーナー、編集者、閲覧者 または ログ閲覧者ロールroles/logging.viewer
Logging IAM のロールと権限の詳細については、 事前定義ロールをご覧ください。

VPC ファイアウォール ルールのロギングを有効または無効にする

VPC ファイアウォール ルールを作成するときに、VPC ファイアウォール ルールのロギングを有効にできます。詳細については、 VPC ファイアウォール ルールを作成するをご覧ください。

ロギングを有効にする際に、メタデータ フィールドを含めるかどうかを指定できます。 省略すると、ストレージ費用の節約が可能です。 既存のファイアウォール ポリシー ルールに対して VPC ファイアウォール ルールのロギングを有効または無効にするには、次のセクションをご覧ください。

VPC ファイアウォール ルールのロギングを有効にする

コンソール

  1. コンソールで、[**ファイアウォール ポリシー**] ページに移動します。 Google Cloud

    [ファイアウォール ポリシー] に移動

  2. プロジェクト選択メニューで、プロジェクトの名前を選択します。

  3. [VPC ファイアウォール ルール] セクションで、VPC ファイアウォール ルールのリストを表示できます。

  4. [ログ] 列で、各ファイアウォール ルールの [ログ] が [オン] か [オフ] かを確認します。

  5. 1 つ以上のルールのロギングを有効にするには、更新するルールの横にあるチェックボックスをオンにします。

  6. [VPC ファイアウォール ルール] アクションバーで [ログを構成] をクリックします。

  7. [ログを構成] ダイアログで [オン] を選択します。

  8. メタデータ フィールドを省略するには、[ログの詳細を表示する] を開いて [メタデータを含める] チェックボックスをオフにします。

  9. [設定を保存] をクリックします。

gcloud

gcloud compute firewall-rules update RULE_NAME \
    --enable-logging \
    --logging-metadata=LOGGING_METADATA

次のように置き換えます。

詳細については、 SDK リファレンス ドキュメントをご覧ください。

Terraform

Terraform リソース を使用して、ロギングを有効にした VPC ファイアウォール ルールを作成できます。

resource "google_compute_firewall" "rules" {
  project     = var.project_id # Replace this with your project ID in quotes
  name        = "my-firewall-rule"
  network     = "default"
  description = "Creates firewall rule targeting tagged instances"

  log_config {
    metadata = "INCLUDE_ALL_METADATA"
  }

  allow {
    protocol = "tcp"
    ports    = ["80", "8080", "1000-2000"]
  }
  target_tags = ["web"]
}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

API

既存の VPC ファイアウォール ルールに対して VPC ファイアウォール ルールのロギングを有効にします。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
  "name": "RULE_NAME",
  "logConfig": {
    "enable": true,
    "metadata": "LOGGING_METADATA"
  }
}

次のように置き換えます。

詳細については、 firewalls.patch メソッドをご覧ください。

VPC ファイアウォール ルールのロギングを無効にする

コンソール

  1. コンソールで、[**ファイアウォール ポリシー**] ページに移動します。 Google Cloud

    [ファイアウォール ポリシー] に移動

  2. プロジェクト選択メニューで、プロジェクトの名前を選択します。

  3. [VPC ファイアウォール ルール] セクションで、VPC ファイアウォール ルールのリストを表示できます。

  4. [ログ] 列で、各ファイアウォール ルールの [ログ] が [オン] か [オフ] かを確認します。

  5. 1 つ以上のルールのロギングを無効にするには、更新するルールの横にあるチェックボックスをオンにします。

  6. [VPC ファイアウォール ルール] アクションバーで [ログを構成] をクリックします。

  7. [ログを構成] ダイアログで [オフ] を選択し、[構成を保存] をクリックします。

gcloud

gcloud compute firewall-rules update RULE_NAME \
    --no-enable-logging

RULE_NAME は、VPC ファイアウォール ルールの名前に置き換えます。

API

既存の VPC ファイアウォール ルールに対して VPC ファイアウォール ルールのロギングを無効にします。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
  "name": "RULE_NAME",
  "logConfig": {
    "enable": false
  }
}

次のように置き換えます。

  • PROJECT_ID: VPC ファイアウォール ルールが配置されているプロジェクトの ID。
  • RULE_NAME: VPC ファイアウォール ルールの名前。

詳細については、 firewalls.patch メソッドをご覧ください。

ログを表示する

ファイアウォール ポリシー ルールのログは、VM インスタンスとファイアウォール ルールが含まれるネットワークをホストしているプロジェクト内で作成されます。共有 VPC では、サービス プロジェクトに VM インスタンスを作成しますが、これらのインスタンスはホスト プロジェクト内にある共有 VPC ネットワークを使用します。このようなシナリオでは、ホスト プロジェクトにファイアウォール ポリシー ルールのログが保存されます。

VPC ファイアウォール ルールのログは、VM インスタンスと VPC ファイアウォール ルールが含まれるネットワークをホストしているプロジェクト内で作成されます。 共有 VPC では、 サービス プロジェクトに VM インスタンスを作成しますが、これらのインスタンスはホスト プロジェクト内にある共有 VPC ネットワークを使用します。 このようなシナリオでは、ホスト プロジェクトにファイアウォール ポリシー ルールのログが保存されます。

VPC ファイアウォール ルールのログを表示するには、 [ログ エクスプローラ] セクションの Google Cloud コンソールを使用します。詳細については、 ログを表示して分析するをご覧ください。

次のクエリは、特定の VPC ファイアウォール イベントを検索する方法を示しています。

すべてのファイアウォール ログを表示する

VPC ファイアウォール ルールのログを表示するには、次のいずれかのオプションを使用します。

オプション 1

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. [すべてのリソース] をクリックします。

  3. [リソースの選択] リストで [サブネットワーク] をクリックし、[適用] をクリックします。

  4. [すべてのログ名] をクリックし、リストから [ファイアウォール] を選択します。

  5. [適用] をクリックします。

オプション 2

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. クエリエディタのフィールドに次の内容を貼り付けます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  3. クエリエディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  4. [クエリを実行] をクリックします。

特定のサブネットのログを表示する

特定のサブネットの VPC ファイアウォール ルールのログを表示するには、次のいずれかのオプションを使用します。

オプション 1

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. [すべてのリソース] をクリックします。

  3. [リソースの選択] リストで、[サブネットワーク] をクリックします。

  4. ログを表示するサブネットワークを選択し、[適用] をクリックします。

  5. [すべてのログ名] をクリックし、リストから [ファイアウォール] を選択します。

  6. [適用] をクリックします。

オプション 2

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. クエリエディタのフィールドに次の内容を貼り付けます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    resource.labels.subnetwork_name="SUBNET_NAME"
    

    次のように置き換えます。

    • PROJECT_ID: オブジェクトの ID
    • SUBNET_NAME: サブネットワークの名前
  3. クエリエディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  4. [クエリを実行] をクリックします。

特定の VM のログを表示する

特定の VM の VPC ファイアウォール ルールのログを表示するには、次のいずれかのオプションを使用します。

オプション 1

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. [すべてのリソース] をクリックします。

  3. [リソースの選択] リストで、[VM インスタンス] をクリックします。

  4. ログを表示するインスタンスを選択し、[適用] をクリックします。

  5. [すべてのログ名] をクリックし、リストから [ファイアウォール] を選択します。

  6. [適用] をクリックします。

オプション 2

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. クエリエディタのフィールドに次の内容を貼り付けます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_ID"
    

    次のように置き換えます。

    • PROJECT_ID: オブジェクトの ID
    • INSTANCE_ID: ログを表示する VM の ID
  3. クエリエディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  4. [クエリを実行] をクリックします。

特定の国からの接続のログを表示する

特定の国の VPC ファイアウォール ルールのログを表示するには、次の操作を行います。

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. クエリエディタのフィールドに次の内容を貼り付けます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.remote_location.country=COUNTRY
    

    次のように置き換えます。

    • PROJECT_ID: オブジェクトの ID
    • COUNTRY: ログを表示する国の ISO 3166-1alpha-3 コード
  3. クエリエディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  4. [クエリを実行] をクリックします。

ログをエクスポートする

VPC ファイアウォール ルールのログをエクスポートするには、 サポートされている宛先にログを転送するをご覧ください。 クエリの例を使用して、エクスポートするログを絞り込むことができます。

相互作用の表

  • VM 間通信の場合、それぞれに適用されているファイアウォール ルールによっては、両方の VM がログレコードを生成することもあります。
  • 最初のパケットがファイアウォールで許可された場合、ログに記録される接続には双方向に流れるパケットが含まれます。
  • 特定の VM への受信接続は、その VM 上に構成されているファイアウォール ルールと照合されます。また、特定の VM からの発信接続は、その VM 上に構成されている下りファイアウォール ルールと照合されます。
  • 「許可してログに記録」するように指定しているファイアウォール ルールに一致して許可された接続は、一度だけログに記録されます。接続が維持されたとしても、ログエントリが 5 秒ごとに繰り返し記録されることはありません。
  • 「拒否してログに記録」するように指定しているファイアウォール ルールに一致して拒否された接続は、その拒否対象の接続でパケットが観測される限り、5 秒ごとに繰り返しログエントリに記録されます。
  • すでにアクティブな TCP または UDP 接続に一致するファイアウォール ルールでロギングを有効にしても、新しいログエントリは生成されません。ログエントリが作成されるのは、接続が 10 分以上アイドル状態のままで、同じ接続で新しいパケットが送信された場合のみです。 アイドル期間が 10 分未満の連続トラフィックの場合、接続に対して 1 つのログエントリのみが生成されます。

この表は、単一の VM の観点からのファイアウォールのロギング動作を示しています。

VM1 の上り(内向き)ルール R1 がパケットを照合し、下り(外向き)ルール R2 でもパケットを照合するというシナリオでは、ファイアウォールのロギング動作は次のようになります。

VM1 の上り(内向き)ルール R1(パケットを照合) VM1 の下り(外向き)ルール R2(パケットを照合) 接続方向 操作 ログ
許可してログに記録 許可 上り(内向き) 許可 1 つのログエントリ:
disposition=allow, rule=R1
拒否
許可してログに記録
拒否してログに記録
許可 許可 上り(内向き) 許可 ロギングなし
拒否
許可してログに記録
拒否してログに記録
拒否してログに記録 該当なし 上り(内向き) 拒否 5 秒ごとに 1 つのログエントリ:
disposition=deny, rule=R1
拒否 該当なし 上り(内向き) 拒否 ロギングなし
許可 許可してログに記録 下り 許可 1 つのログエントリ:
disposition=allow, rule=R2
拒否
許可してログに記録
拒否してログに記録
許可 許可 下り 許可 ロギングなし
拒否
許可してログに記録
拒否してログに記録
該当なし 拒否してログに記録 下り 拒否 5 秒ごとに 1 つのログエントリ:
disposition=deny, rule=R2
該当なし 拒否 下り 拒否 ロギングなし

上りと下りは対称であるので注意してください。

以下に、ファイアウォール ログのセマンティックについて詳しく説明します。

  • 許可してログに記録(ロギングは TCP と UDP でのみサポートされます)

    • ルールが適用される方向で接続が開始されると、1 つのログレコードが作成されます。
    • 接続トラッキングにより、応答トラフィックは許可されます。該当する方向に適用される VPC ファイアウォール ルールに関係なく、応答トラフィックによってロギングが行われることはありません。
    • ファイアウォールにより接続が失効すると(10 分間にわたり非アクティブであるか、TCP RST を受信した場合)、いずれかの方向での別のパケットによってロギングがトリガーされる場合があります。
    • ロギングは 5 タプルに基づきます。TCP フラグはロギング動作に影響を与えません。
  • 拒否してログに記録(ロギングは TCP と UDP でのみサポートされます)

    • パケットはドロップされます(接続は開始されません)。
    • 一意の 5 タプルに対応する各パケットが、失敗した接続試行としてログに記録されます。
    • 引き続きパケットを受信する場合、同じ 5 タプルが 5 分ごとに繰り返しログに記録されます。

次のステップ