管理防火牆政策規則記錄

本頁說明如何啟用及停用階層式和網路防火牆政策規則的記錄功能。如要瞭解如何記錄防火牆政策規則,請參閱「啟用及停用防火牆政策規則記錄」。 您也可以瞭解如何查看防火牆政策規則產生的記錄。 如要瞭解防火牆政策規則記錄,請參閱防火牆政策規則記錄總覽

如果您在防火牆政策規則中啟用記錄功能,即可透過防火牆洞察查看相關深入分析和建議。詳情請參閱 Network Intelligence Center 說明文件中的「防火牆洞察」。

權限

如要修改防火牆政策規則或存取記錄,身分與存取權管理 (IAM) 主體必須是下列角色之一。

工作 必要角色
建立、刪除或更新防火牆規則 專案擁有者或編輯者,或安全管理員角色 (roles/compute.securityAdmin)
查看記錄 專案擁有者、編輯者或檢視者「或」記錄檢視者角色 (roles/logging.viewer)
如要進一步瞭解 Logging IAM 角色和權限,請參閱「 預先定義的角色」。

啟用及停用防火牆政策規則記錄

建立防火牆政策規則時,您可以啟用防火牆政策規則記錄。如要瞭解詳情,請參考下列資源:

啟用記錄功能時,您可以指定是否要納入中繼資料欄位。如果省略這些欄位,即可節省儲存空間費用。如要為現有防火牆政策規則啟用或停用防火牆政策規則記錄,請參閱下列章節。

為階層式防火牆政策啟用防火牆政策規則記錄功能

控制台

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 在專案選取器選單中,選取您建立階層式防火牆政策的機構名稱。

  3. 在「位於這個機構的防火牆政策」部分,點選階層式防火牆政策的名稱。

  4. 在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」

  5. 如要為防火牆政策規則啟用記錄功能,請按一下規則優先順序,然後點選「編輯」

  6. 在「記錄」專區,選取「已啟用」

  7. 按一下 [儲存]

gcloud

如要更新機構防火牆政策規則,請使用 gcloud compute firewall-policies rules update 指令

gcloud compute firewall-policies rules update PRIORITY \
    --firewall-policy= FIREWALL_POLICY \
    --enable-logging

更改下列內容:

  • PRIORITY:要更新的防火牆政策規則優先順序。
  • FIREWALL_POLICY:要更新規則的防火牆政策名稱。

詳情請參閱 SDK 參考文件

Terraform

您可以使用 Terraform 資源建立防火牆政策規則,並啟用記錄功能。

resource "google_compute_firewall_policy_rule" "primary" {
  firewall_policy = google_compute_firewall_policy.POLICY_ID
  description     = "Creates an ingress firewall policy rule with logging enabled"
  priority        = PRIORITY
  enable_logging  = true
  action          = "allow"
  direction       = "INGRESS"
  disabled        = false
  match {
    layer4_configs {
      ip_protocol = "tcp"
      ports = [8080]
    }
    layer4_configs {
      ip_protocol = "udp"
      ports = [22]
    }
    src_ip_ranges = ["SOURCE_IP_ADDRESS"]
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

API

為現有的階層式防火牆政策規則啟用防火牆政策規則記錄功能。

POST https://compute.googleapis.com/compute/v1/locations/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY

{
  "enableLogging": true,
}

更改下列內容:

  • POLICY_ID:防火牆政策規則所在的階層式防火牆政策 ID。
  • PRIORITY:防火牆政策規則的優先順序。

詳情請參閱 firewallPolicies.patchRule 方法。

停用階層式防火牆政策的防火牆政策規則記錄

控制台

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 在專案選取器選單中,選取您建立階層式防火牆政策的機構名稱。

  3. 在「位於這個機構的防火牆政策」部分,點選階層式防火牆政策的名稱。

  4. 在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」

  5. 如要停用防火牆政策規則的記錄功能,請按一下規則優先順序,然後按一下「編輯」

  6. 在「記錄」專區,選取「已停用」

  7. 按一下 [儲存]

gcloud

如要更新機構防火牆政策規則,請使用 gcloud compute firewall-policies rules update 指令

gcloud compute firewall-policies rules update PRIORITY \
    --firewall-policy= FIREWALL_POLICY \
    --no-enable-logging

更改下列內容:

  • PRIORITY:要更新的防火牆政策規則優先順序。
  • FIREWALL_POLICY:要更新規則的防火牆政策名稱。

詳情請參閱 SDK 參考文件

API

為現有的階層式防火牆政策規則停用防火牆政策規則記錄功能

POST https://compute.googleapis.com/compute/v1/locations/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY

{
  "enableLogging": false,
}

更改下列內容:

  • POLICY_ID:防火牆政策規則所在的階層式防火牆政策 ID。
  • PRIORITY:防火牆政策規則的優先順序。

詳情請參閱 firewallPolicies.patchRule 方法。

為網路防火牆政策啟用防火牆政策規則記錄

控制台

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 在專案選取器選單中,選取您建立網路防火牆政策的專案名稱。

  3. 在「Network firewall policies」(網路防火牆政策) 區段中,按一下要啟用記錄功能的網路防火牆政策名稱。

  4. 在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」

  5. 如要為網路防火牆政策規則啟用記錄功能,請按一下規則優先順序,然後按一下「編輯」

  6. 在「記錄」專區,選取「已啟用」

  7. 按一下 [儲存]

gcloud

如要更新網路防火牆政策規則,請使用 gcloud compute network-firewall-policies rules update 指令

gcloud compute network-firewall-policies rules update PRIORITY \
    --firewall-policy= FIREWALL_POLICY \
    --enable-logging

更改下列內容:

  • PRIORITY:要更新的防火牆政策規則優先順序。
  • FIREWALL_POLICY:防火牆政策規則所在的網路防火牆政策名稱。

詳情請參閱 SDK 參考文件

Terraform

您可以使用 Terraform 資源建立防火牆政策規則,並啟用記錄功能。

resource "google_compute_firewall_policy_rule" "primary" {
  firewall_policy = google_compute_firewall_policy.POLICY_ID
  description     = "Creates an ingress firewall policy rule with logging enabled"
  priority        = PRIORITY
  enable_logging  = true
  action          = "allow"
  direction       = "INGRESS"
  disabled        = false
  match {
    layer4_configs {
      ip_protocol = "tcp"
      ports = [8080]
    }
    layer4_configs {
      ip_protocol = "udp"
      ports = [22]
    }
    src_ip_ranges = ["SOURCE_IP_ADDRESS"]
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

API

為現有的網路防火牆政策規則啟用防火牆政策規則記錄功能。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY

{
  "enableLogging": true,
}

更改下列內容:

  • PROJECT_ID:網路政策所在的專案 ID。
  • POLICY_ID:防火牆政策規則所在的階層式防火牆政策 ID。
  • PRIORITY:防火牆政策規則的優先順序。

詳情請參閱 networkFirewallPolicies.patchRule 方法。

為網路防火牆政策停用防火牆政策規則記錄

控制台

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 在專案選取器選單中,選取您建立網路防火牆政策的專案名稱。

  3. 在「Network firewall policies」(網路防火牆政策) 區段中,按一下要啟用記錄功能的網路防火牆政策名稱。

  4. 在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」

  5. 如要停用網路防火牆政策規則的記錄功能,請按一下規則優先順序,然後點選「編輯」

  6. 在「記錄」專區,選取「已停用」

  7. 按一下 [儲存]

gcloud

如要更新網路防火牆政策規則,請使用 gcloud compute network-firewall-policies rules update 指令

gcloud compute network-firewall-policies rules update PRIORITY \
    --firewall-policy= FIREWALL_POLICY \
    --no-enable-logging

更改下列內容:

  • PRIORITY:要更新的防火牆政策規則優先順序。
  • FIREWALL_POLICY:防火牆政策規則所在的網路防火牆政策名稱。

詳情請參閱 SDK 參考文件

API

為現有的階層式防火牆政策規則停用防火牆政策規則記錄功能

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY

{
  "enableLogging": false,
}

更改下列內容:

  • POLICY_ID:防火牆政策規則所在的階層式防火牆政策 ID。
  • PRIORITY:防火牆政策規則的優先順序。

詳情請參閱 networkFirewallPolicies.patchRule 方法。

查看記錄

系統會根據 VM 執行個體和防火牆規則所屬的網路,在託管該網路的專案中建立防火牆政策規則記錄。採用共用虛擬私人雲端時,您會在服務專案中建立 VM 執行個體,但這些執行個體會使用主專案中的共用虛擬私人雲端網路。在這種情況下,主專案會儲存防火牆政策規則記錄。

如要查看防火牆政策規則記錄,請使用 Google Cloud 控制台的「記錄檔探索工具」部分。詳情請參閱「查看及分析記錄」。

下列查詢示範如何搜尋特定防火牆事件。

查看所有防火牆記錄

如要查看防火牆政策規則記錄,請使用下列其中一個選項。

選項 1

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  2. 按一下「所有資源」

  3. 在「選取資源」清單中,按一下「子網路」,然後按一下「套用」

  4. 按一下「所有記錄名稱」,然後在清單中選取「firewall」

  5. 按一下「套用」

選項 2

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  2. 將下列內容貼入查詢編輯器欄位。

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

    PROJECT_ID 替換為專案 ID。

  3. 如果沒有看到查詢編輯器欄位,請點選「顯示查詢」切換鈕。

  4. 點選「執行查詢」

查看特定子網路的記錄

如要查看特定子網路的防火牆政策規則記錄,請使用下列任一選項。

選項 1

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  2. 按一下「所有資源」

  3. 在「選取資源」清單中,按一下「子網路」

  4. 選取要查看記錄的子網路,然後按一下「套用」

  5. 按一下「所有記錄名稱」,然後在清單中選取「firewall」

  6. 按一下「套用」

選項 2

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  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 的防火牆政策規則記錄,請使用下列任一選項。

選項 1

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  2. 按一下「所有資源」

  3. 在「選取資源」清單中,按一下「VM 執行個體」

  4. 選取要查看記錄的執行個體,然後按一下「套用」

  5. 按一下「所有記錄名稱」,然後在清單中選取「firewall」

  6. 按一下「套用」

選項 2

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  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. 點選「執行查詢」

查看來自特定國家/地區的連線記錄

如要查看特定國家/地區的防火牆政策規則記錄,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  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-1 alpha-3 代碼
  3. 如果沒有看到查詢編輯器欄位,請點選「顯示查詢」切換鈕。

  4. 點選「執行查詢」

匯出記錄

如要匯出防火牆政策規則記錄,請參閱「轉送記錄檔至支援的目的地」。您可以使用查詢範例縮小匯出記錄的範圍。

互動表

  • 如果是 VM 對 VM 通訊,兩個 VM 可能都會產生記錄檔,這要視其各自的防火牆規則而定。
  • 假如防火牆允許初始封包,則記錄的連線會將雙向的流通封包全數納入。
  • 如果是指定的 VM,系統會根據該 VM 中設定的輸入防火牆規則比對連入連線;並根據在該 VM 中設定的輸出防火牆規則比對連出連線。
  • 系統只會記錄一次符合「允許並記錄」防火牆規則的允許連線;即使持續保持連線狀態,也不會每 5 秒重複一次記錄項目。
  • 只要遭拒連線中還有封包,就不會每 5 秒重複一次符合「拒絕並記錄」防火牆規則的遭拒連線記錄項目。
  • 如果啟用防火牆規則的記錄功能,但該規則與已啟用的 TCP 或 UDP 連線相符,系統不會產生新的記錄項目。只有在連線閒置至少 10 分鐘,且透過同一連線傳送新封包時,系統才會建立記錄項目。如果流量持續不斷,且閒置時間短於 10 分鐘,系統只會為連線產生一筆記錄項目。

下表說明單一 VM 的防火牆記錄行為。

假設 VM1 有一個用來比對封包的輸入規則 R1 和輸出規則 R2,則防火牆記錄行為將如下所示:

VM1 具有輸入規則 R1 (符合封包) VM1 具有輸出規則 R2 (符合封包) 連線方向 動作 記錄
允許 + 記錄 允許 輸入 允許 單一記錄項目:
disposition=allow, rule=R1
拒絕
允許 + 記錄
拒絕 + 記錄
允許 允許 輸入 允許 不啟用記錄功能
拒絕
允許 + 記錄
拒絕 + 記錄
拒絕 + 記錄 不適用 輸入 拒絕 每 5 秒記錄一次:
disposition=deny, rule=R1
拒絕 不適用 輸入 拒絕 不啟用記錄功能
允許 允許 + 記錄 輸出 允許 單一記錄項目:
disposition=allow, rule=R2
拒絕
允許 + 記錄
拒絕 + 記錄
允許 允許 輸出 允許 不啟用記錄功能
拒絕
允許 + 記錄
拒絕 + 記錄
不適用 拒絕 + 記錄 輸出 拒絕 每 5 秒記錄一個項目:
disposition=deny, rule=R2
不適用 拒絕 輸出 拒絕 不啟用記錄功能

請注意,輸入和輸出是相互對稱的。

防火牆記錄語意詳細說明如下:

  • 允許 + 記錄 (記錄功能只適用於 TCP 和 UDP)

    • 依適用規則方向起始的連線只會建立一個記錄檔。
    • 系統允許連線追蹤所導致的回覆流量。無論該方向的虛擬私有雲防火牆規則是什麼,回覆流量都不會產生記錄。
    • 假使防火牆中的連線到期 (閒置達 10 分鐘或收到 TCP RST),則任一方向的其他封包都有可能會觸發記錄。
    • 記錄以 5 元組數為基礎;TCP 標記不會影響記錄行為。
  • 拒絕 + 記錄 (記錄功能僅適用 TCP 和 UDP)

    • 會捨棄封包 (不起始任何連線)。
    • 會將每個對應於唯一 5 元組數的封包記為一次失敗的連線嘗試。
    • 如果系統持續收到封包,每 5 秒鐘會記錄同一組 5 元組數一次。

後續步驟