本頁說明如何啟用及停用階層式和網路防火牆政策規則的記錄功能。如要瞭解如何記錄防火牆政策規則,請參閱「啟用及停用防火牆政策規則記錄」。 您也可以瞭解如何查看防火牆政策規則產生的記錄。 如要瞭解防火牆政策規則記錄,請參閱防火牆政策規則記錄總覽。
如果您在防火牆政策規則中啟用記錄功能,即可透過防火牆洞察查看相關深入分析和建議。詳情請參閱 Network Intelligence Center 說明文件中的「防火牆洞察」。
權限
如要修改防火牆政策規則或存取記錄,身分與存取權管理 (IAM) 主體必須是下列角色之一。
| 工作 | 必要角色 |
|---|---|
| 建立、刪除或更新防火牆規則 | 專案擁有者或編輯者,或安全管理員角色 (roles/compute.securityAdmin) |
| 查看記錄 | 專案擁有者、編輯者或檢視者「或」記錄檢視者角色 (roles/logging.viewer)
如要進一步瞭解 Logging IAM 角色和權限,請參閱「 預先定義的角色」。 |
啟用及停用防火牆政策規則記錄
建立防火牆政策規則時,您可以啟用防火牆政策規則記錄。如要瞭解詳情,請參考下列資源:
啟用記錄功能時,您可以指定是否要納入中繼資料欄位。如果省略這些欄位,即可節省儲存空間費用。如要為現有防火牆政策規則啟用或停用防火牆政策規則記錄,請參閱下列章節。
為階層式防火牆政策啟用防火牆政策規則記錄功能
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
在專案選取器選單中,選取您建立階層式防火牆政策的機構名稱。
在「位於這個機構的防火牆政策」部分,點選階層式防火牆政策的名稱。
在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」。
如要為防火牆政策規則啟用記錄功能,請按一下規則優先順序,然後點選「編輯」。
在「記錄」專區,選取「已啟用」。
按一下 [儲存]。
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 方法。
停用階層式防火牆政策的防火牆政策規則記錄
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
在專案選取器選單中,選取您建立階層式防火牆政策的機構名稱。
在「位於這個機構的防火牆政策」部分,點選階層式防火牆政策的名稱。
在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」。
如要停用防火牆政策規則的記錄功能,請按一下規則優先順序,然後按一下「編輯」。
在「記錄」專區,選取「已停用」。
按一下 [儲存]。
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 方法。
為網路防火牆政策啟用防火牆政策規則記錄
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
在專案選取器選單中,選取您建立網路防火牆政策的專案名稱。
在「Network firewall policies」(網路防火牆政策) 區段中,按一下要啟用記錄功能的網路防火牆政策名稱。
在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」。
如要為網路防火牆政策規則啟用記錄功能,請按一下規則優先順序,然後按一下「編輯」。
在「記錄」專區,選取「已啟用」。
按一下 [儲存]。
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 方法。
為網路防火牆政策停用防火牆政策規則記錄
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
在專案選取器選單中,選取您建立網路防火牆政策的專案名稱。
在「Network firewall policies」(網路防火牆政策) 區段中,按一下要啟用記錄功能的網路防火牆政策名稱。
在「記錄」欄中,判斷每項防火牆政策規則的防火牆政策規則記錄功能是「已停用」還是「已啟用」。
如要停用網路防火牆政策規則的記錄功能,請按一下規則優先順序,然後點選「編輯」。
在「記錄」專區,選取「已停用」。
按一下 [儲存]。
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
前往 Google Cloud 控制台的「Logs Explorer」頁面。
按一下「所有資源」。
在「選取資源」清單中,按一下「子網路」,然後按一下「套用」。
按一下「所有記錄名稱」,然後在清單中選取「firewall」。
按一下「套用」。
選項 2
前往 Google Cloud 控制台的「Logs Explorer」頁面。
將下列內容貼入查詢編輯器欄位。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
將
PROJECT_ID替換為專案 ID。如果沒有看到查詢編輯器欄位,請點選「顯示查詢」切換鈕。
點選「執行查詢」
查看特定子網路的記錄
如要查看特定子網路的防火牆政策規則記錄,請使用下列任一選項。
選項 1
前往 Google Cloud 控制台的「Logs Explorer」頁面。
按一下「所有資源」。
在「選取資源」清單中,按一下「子網路」。
選取要查看記錄的子網路,然後按一下「套用」。
按一下「所有記錄名稱」,然後在清單中選取「firewall」。
按一下「套用」。
選項 2
前往 Google Cloud 控制台的「Logs Explorer」頁面。
將下列內容貼入查詢編輯器欄位。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" resource.labels.subnetwork_name="SUBNET_NAME"
更改下列內容:
PROJECT_ID:專案 IDSUBNET_NAME:子網路名稱
如果沒有看到查詢編輯器欄位,請點選「顯示查詢」切換鈕。
點選「執行查詢」
查看特定 VM 的記錄
如要查看特定 VM 的防火牆政策規則記錄,請使用下列任一選項。
選項 1
前往 Google Cloud 控制台的「Logs Explorer」頁面。
按一下「所有資源」。
在「選取資源」清單中,按一下「VM 執行個體」。
選取要查看記錄的執行個體,然後按一下「套用」。
按一下「所有記錄名稱」,然後在清單中選取「firewall」。
按一下「套用」。
選項 2
前往 Google Cloud 控制台的「Logs Explorer」頁面。
將下列內容貼入查詢編輯器欄位。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" jsonPayload.instance.vm_name="INSTANCE_ID"
更改下列內容:
PROJECT_ID:專案 IDINSTANCE_ID:要查看記錄的 VM ID
如果沒有看到查詢編輯器欄位,請點選「顯示查詢」切換鈕。
點選「執行查詢」
查看來自特定國家/地區的連線記錄
如要查看特定國家/地區的防火牆政策規則記錄,請按照下列步驟操作:
前往 Google Cloud 控制台的「Logs Explorer」頁面。
將下列內容貼入查詢編輯器欄位。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" jsonPayload.remote_location.country=COUNTRY
更改下列內容:
PROJECT_ID:專案 IDCOUNTRY:要查看記錄的國家/地區的 ISO 3166-1 alpha-3 代碼
如果沒有看到查詢編輯器欄位,請點選「顯示查詢」切換鈕。
點選「執行查詢」
匯出記錄
如要匯出防火牆政策規則記錄,請參閱「轉送記錄檔至支援的目的地」。您可以使用查詢範例縮小匯出記錄的範圍。
互動表
- 如果是 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 元組數一次。