使用防火牆規則記錄

您可以根據防火牆規則記錄,進一步稽核、驗證及分析防火牆規則的成效。舉例來說,您可以判定用於拒絕流量的防火牆規則是否正常運作。當您需要查明特定防火牆規則影響的連線數量時,這項記錄也能派上用場。

這個頁面說明如何啟用及停用虛擬私有雲防火牆規則的記錄功能。如需防火牆政策規則的記錄操作說明,請參閱「使用階層式防火牆政策和規則」。

本頁面也會說明如何查看產生的記錄。如要進一步瞭解這類記錄的內容、記錄範例及格式,請參閱防火牆規則記錄

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

權限

如要修改防火牆規則或存取記錄,IAM 主體必須是下列角色之一。

工作 必要角色
建立、刪除或更新防火牆規則 專案擁有者或編輯者「或」安全管理員角色 (roles/compute.securityAdmin)
查看記錄檔 專案擁有者、編輯者或檢視者「或」「記錄檢視者」角色 (roles/logging.viewer)
請參閱「 Logging 存取權控管指南」,進一步瞭解 Logging 身分與存取權管理角色和權限。

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

建立防火牆規則時,您可以選擇是否要開啟防火牆規則記錄功能。詳情請參閱建立防火牆規則

如要為現有防火牆規則啟用或停用防火牆規則記錄功能,請按照下列指示操作。啟用記錄功能後,您可以控制是否要納入中繼資料欄位。如果省略這些欄位,即可節省儲存空間費用。

啟用防火牆規則記錄

控制台

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

    前往「Firewall policies」(防火牆政策)

  2. 在「記錄」資料欄中,判斷每項防火牆規則的防火牆記錄功能是否開啟。

  3. 如要為一或多個防火牆規則啟用記錄功能,請找出要更新的規則,然後勾選旁邊的核取方塊。

  4. 在「虛擬私有雲防火牆規則」動作列中,按一下「設定記錄」

  5. 在「設定記錄」對話方塊中,選取「開啟」

  6. 如要省略中繼資料欄位,請展開「顯示記錄詳細資料」,然後取消勾選「包含中繼資料」核取方塊。

  7. 點選 [Save configuration] (儲存設定)。

gcloud

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

更改下列內容:

  • RULE_NAME:防火牆規則的名稱。
  • LOGGING_METADATA:防火牆規則記錄是否包含防火牆規則記錄中的中繼資料欄位。只有在啟用記錄功能時,才能設定這個欄位。這個值必須是 exclude-allinclude-all。根據預設,系統會納入中繼資料欄位。

詳情請參閱 SDK 參考說明文件

Terraform

您可以使用 Terraform 資源建立已啟用記錄功能的防火牆規則。

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

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

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

將預留位置替換為有效值:

  • PROJECT_ID:防火牆規則所在的專案 ID。
  • RULE_NAME:防火牆規則的名稱。
  • LOGGING_METADATA:防火牆規則記錄是否包含防火牆規則記錄中的中繼資料欄位。只有在啟用記錄功能時,才能設定這個欄位。這個值必須是 exclude-allinclude-all。根據預設,系統會納入中繼資料欄位。

詳情請參閱 firewalls.patch 方法。

停用防火牆規則記錄

控制台

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

    前往「Firewall policies」(防火牆政策)

  2. 在「記錄」資料欄中,判斷每項防火牆規則的防火牆記錄功能是否開啟。

  3. 如要為一或多個防火牆規則停用記錄功能,請勾選要更新的規則旁邊的核取方塊。

  4. 在「虛擬私有雲防火牆規則」動作列中,按一下「設定記錄」

  5. 在「設定記錄」對話方塊中,選取「關閉」,然後按一下「儲存設定」

gcloud

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

RULE_NAME 替換為防火牆規則的名稱。

API

為現有防火牆規則停用防火牆規則記錄功能。

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

更改下列內容:

  • PROJECT_ID:防火牆規則所在的專案 ID。
  • RULE_NAME:防火牆規則的名稱。

詳情請參閱 firewalls.patch 方法。

查看記錄

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

如要查看防火牆規則記錄,請使用 Cloud de Confiance 控制台的記錄檔探索工具部分

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

查看所有防火牆記錄

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

    前往 Logs Explorer

  2. 按一下「Resource」(資源)

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

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

  5. 按一下「套用」

您也可以使用以下程式碼:

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

    前往 Logs Explorer

  2. 點選「查詢」

  3. 如果「查詢」窗格中未顯示查詢編輯器欄位,請按一下「顯示查詢」切換鈕。

  4. 將下列內容貼到「查詢」窗格的查詢編輯器欄位。 將 PROJECT_ID 替換為專案 ID。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    
  5. 點選「執行查詢」

查看特定子網路的記錄

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

    前往 Logs Explorer

  2. 按一下「Resource」(資源)

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

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

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

  6. 按一下「套用」

您也可以使用以下程式碼:

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

    前往 Logs Explorer

  2. 點選「查詢」

  3. 如果「查詢」窗格中未顯示查詢編輯器欄位,請按一下「顯示查詢」切換按鈕。

  4. 將下列內容貼到「查詢」窗格的查詢編輯器欄位。 將 PROJECT_ID 替換為專案 ID,並將 SUBNET_NAME 替換為子網路。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    resource.labels.subnetwork_name="SUBNET_NAME"
    
  5. 點選「執行查詢」

查看特定 VM 的記錄

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

    前往 Logs Explorer

  2. 按一下「Resource」(資源)

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

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

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

  6. 按一下「套用」

您也可以使用以下程式碼:

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

    前往 Logs Explorer

  2. 點選「查詢」

  3. 如果「查詢」窗格中未顯示查詢編輯器欄位,請按一下「顯示查詢」切換按鈕。

  4. 將下列內容貼到「查詢」窗格的查詢編輯器欄位。 請將 PROJECT_ID 替換為專案 ID,並將 INSTANCE_ID 替換為要查看記錄的 VM ID。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_ID"
    
  5. 點選「執行查詢」

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

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

    前往 Logs Explorer

  2. 點選「查詢」

  3. 如果「查詢」窗格中未顯示查詢編輯器欄位,請按一下「顯示查詢」切換按鈕。

  4. 將下列內容貼到「查詢」窗格的查詢編輯器欄位。 將 PROJECT_ID 替換為專案 ID,並將 COUNTRY 替換為 ISO 3166-1 alpha-3 代碼。

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

匯出記錄

如要匯出防火牆規則記錄,請參閱「設定及管理接收器」。

您可以使用查詢範例縮小匯出記錄的範圍。

互動表

  • 如果是 VM 對 VM 通訊,兩個 VM 可能都會產生記錄檔,這要視其各自的防火牆規則而定。
  • 假如防火牆允許初始封包,則記錄的連線會將雙向的流通封包全數納入。
  • 若是指定的 VM,系統會根據該 VM 中設定的輸入防火牆規則比對連入連線;並根據在該 VM 中設定的輸出防火牆規則比對連出連線。
  • 系統只會記錄一次符合「允許並記錄」防火牆規則的允許連線;即使持續保持連線狀態,也不會每 5 秒重複一次記錄項目。
  • 只要遭拒連線中還有封包,就不會每 5 秒重複一次符合「拒絕並記錄」防火牆規則的遭拒連線記錄項目。

下表說明單一 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 元組數一次。

疑難排解

無法查看記錄

如果無法在Cloud de Confiance 控制台的記錄檔探索工具部分查看防火牆規則記錄,請檢查下列事項:

可能原因:權限不足

請專案擁有者確認您的 IAM 主體至少具有專案的「記錄檢視者」角色 (roles/logging.viewer)。詳情請參閱權限
可能原因:不支援傳統網路
您無法在傳統網路中使用防火牆規則記錄功能。這項功能只適用於虛擬私有雲網路
可能原因:請確認您查看的專案是否正確
防火牆規則記錄會與包含網路的專案一併儲存,因此請務必在正確的專案中尋找記錄。採用共用虛擬私有雲時,系統會在服務專案中建立 VM 執行個體,但這些執行個體會使用主專案中的「共用虛擬私有雲網路」。在這種情況下,防火牆規則記錄會儲存在該主專案中。

假如涉及共用虛擬私有雲,您就需要適當的主專案權限,才能查看防火牆規則記錄。即使 VM 執行個體本身位於服務專案中,這些執行個體的防火牆規則記錄也會存放在主專案中。

缺少記錄項目

可能原因:連線可能與您預期的防火牆規則不符

確認您預期的防火牆規則是否在執行個體的適用防火牆規則清單中。請透過 Cloud de Confiance 主控台查看相關執行個體的詳細資料,然後在「VM instance details」(VM 執行個體詳細資料) 頁面上,按一下「Network interfaces」(網路介面) 區段的「View details」(查看詳細資料) 按鈕。在 VM 的「Network interface details」(網路介面詳細資料) 頁面上,檢查「Firewall and routes details」(防火牆和路徑詳細資料) 區段中列出的適用防火牆規則。

如要確保防火牆規則建立正確,請參閱「虛擬私有雲防火牆規則」。

您可以在 VM 上使用 tcpdump,判斷 VM 傳送或接收的連線是否具有符合預期防火牆的位址、通訊埠和通訊協定。

可能原因:系統可能套用優先順序較高但停用防火牆規則記錄功能的規則。

系統會根據優先順序評估防火牆規則。從 VM 執行個體的角度來看,只有一個防火牆規則適用該流量。

您認為優先順序應該最高的適用規則,實際上不一定會是系統優先遵循的規則,可能反而會套用優先順序較高但未啟用記錄功能的規則。

如要進行疑難排解,您可以針對 VM 適用的「所有」可能的防火牆規則,暫時啟用記錄功能。請透過 Cloud de Confiance 主控台查看相關 VM 的詳細資料,然後在「VM instance details」(VM 執行個體詳細資料) 頁面上,按一下「Network interfaces」(網路介面) 區段中的「View details」(查看詳細資料) 按鈕。在 VM 的「Network interface details」(網路介面詳細資料) 頁面上,檢查「Firewall and routes details」(防火牆和路徑詳細資料) 區段列出的適用防火牆規則,並從清單中找出您的自訂規則。 暫時為所有自訂防火牆規則啟用記錄功能。

一旦記錄功能啟用後,您就可以找到適用規則;找出這些規則後,請務必停用所有不需要記錄的規則。

部分記錄項目缺少中繼資料

可能原因:設定傳播延遲

如果更新已啟用防火牆記錄的防火牆規則, Cloud de Confiance 可能需要幾分鐘的時間,才能完成傳播變更,以便記錄符合規則更新元件的流量。

後續步驟