您可以根據防火牆政策規則記錄,進一步稽核、驗證及分析防火牆規則的成效。舉例來說,您可以判定用於拒絕流量的防火牆規則是否正常運作。當您需要查明特定防火牆規則影響的連線數量時,這項記錄也能派上用場。
瞭解如何啟用及停用虛擬私有雲 (VPC) 防火牆規則的防火牆政策規則記錄。如需防火牆政策規則的記錄操作說明,請參閱「使用階層式防火牆政策和規則」。
您也可以瞭解如何查看產生的記錄。如要進一步瞭解這類記錄的內容、記錄範例及格式,請參閱防火牆政策規則記錄總覽。
如果啟用防火牆規則的記錄功能,您就能透過防火牆洞察查看相關的洞察資料和建議。詳情請參閱 Network Intelligence Center 說明文件中的「防火牆洞察」。
權限
如要修改防火牆規則或存取記錄,IAM 主體必須是下列角色之一。
| 工作 | 必要角色 |
|---|---|
| 建立、刪除或更新防火牆規則 | 專案擁有者或編輯者「或」安全管理員角色 (roles/compute.securityAdmin)
|
| 查看記錄 | 專案擁有者、編輯者或檢視者「或」記錄檢視者角色 (roles/logging.viewer)
如要進一步瞭解 Logging IAM 角色和權限,請參閱 Logging 存取權控管指南。 |
啟用及停用防火牆政策規則記錄
建立防火牆規則時,您可以為該規則啟用記錄功能。詳情請參閱「建立防火牆規則」。
如要為現有防火牆規則啟用或停用防火牆政策規則記錄,請按照下列指示操作。啟用記錄功能後,您可以控制是否要納入中繼資料欄位。如果省略這些欄位,即可節省儲存空間費用。
啟用防火牆政策規則記錄
控制台
前往 Cloud de Confiance 控制台的「Firewall policies」(防火牆政策) 頁面。
在「記錄」資料欄中,判斷每項防火牆規則的記錄功能是否已開啟。
如要為一或多個防火牆規則啟用記錄功能,請找出要更新的規則,然後勾選旁邊的核取方塊。
在「虛擬私有雲防火牆規則」動作列中,按一下「設定記錄」。
在「設定記錄」對話方塊中,選取「開啟」。
如要省略中繼資料欄位,請展開「顯示記錄詳細資料」,然後取消勾選「包含中繼資料」核取方塊。
點選 [Save configuration] (儲存設定)。
gcloud
gcloud compute firewall-rules update RULE_NAME \
--enable-logging \
--logging-metadata=LOGGING_METADATA
更改下列內容:
RULE_NAME:防火牆規則的名稱。LOGGING_METADATA:防火牆政策規則記錄是否包含防火牆規則記錄中的中繼資料欄位。只有在啟用記錄功能時,才能設定這個欄位。這個值必須是exclude-all或include-all。根據預設,系統會納入中繼資料欄位。
詳情請參閱 SDK 參考說明文件。
Terraform
您可以使用 Terraform 資源建立已啟用記錄功能的防火牆規則。
如要瞭解如何套用或移除 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-all或include-all。根據預設,系統會納入中繼資料欄位。
詳情請參閱 firewalls.patch 方法。
停用防火牆政策規則記錄
控制台
前往 Cloud de Confiance 控制台的「Firewall policies」(防火牆政策) 頁面。
在「記錄」資料欄中,判斷每項防火牆規則的防火牆記錄功能是否開啟。
如要為一或多個防火牆規則停用記錄功能,請勾選要更新的規則旁邊的核取方塊。
在「虛擬私有雲防火牆規則」動作列中,按一下「設定記錄」。
在「設定記錄」對話方塊中選取「關閉」,然後按一下「儲存設定」。
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」頁面。
按一下「Resource」(資源)。
在「選取資源」清單中,按一下「子網路」,然後按一下「套用」。
按一下「記錄檔名稱」,然後在清單中選取「firewall」。
按一下「套用」。
選項 2
前往 Cloud de Confiance 控制台的「Logs Explorer」頁面。
點選「查詢」。
如果「查詢」窗格中沒有顯示查詢編輯器欄位,請點選「顯示查詢」切換鈕。
將下列內容貼到「查詢」窗格的查詢編輯器欄位。 將
PROJECT_ID替換為專案 ID。resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
點選「執行查詢」
查看特定子網路的記錄
如要查看特定子網路的防火牆記錄,請選擇選項 1 或選項 2。
選項 1
前往 Cloud de Confiance 控制台的「Logs Explorer」頁面。
按一下「Resource」(資源)。
在「選取資源」清單中,按一下「子網路」。
選取要查看記錄的子網路,然後按一下「套用」。
按一下「記錄檔名稱」,然後在清單中選取「firewall」。
按一下「套用」。
選項 2
前往 Cloud de Confiance 控制台的「Logs Explorer」頁面。
點選「查詢」。
如果「查詢」窗格中沒有顯示查詢編輯器欄位,請點選「顯示查詢」切換鈕。
將下列內容貼到「查詢」窗格的查詢編輯器欄位。 將
PROJECT_ID替換為專案 ID,並將SUBNET_NAME替換為子網路。resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" resource.labels.subnetwork_name="SUBNET_NAME"
點選「執行查詢」
查看特定 VM 的記錄
如要查看特定 VM 的防火牆記錄,請選擇選項 1 或選項 2。
選項 1
前往 Cloud de Confiance 控制台的「Logs Explorer」頁面。
按一下「Resource」(資源)。
在「選取資源」清單中,按一下「VM 執行個體」。
選取要查看記錄的執行個體,然後按一下「套用」。
按一下「記錄檔名稱」,然後在清單中選取「firewall」。
按一下「套用」。
選項 2
前往 Cloud de Confiance 控制台的「Logs Explorer」頁面。
點選「查詢」。
如果「查詢」窗格中沒有顯示查詢編輯器欄位,請點選「顯示查詢」切換鈕。
將下列內容貼到「查詢」窗格的查詢編輯器欄位。 請將
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"
點選「執行查詢」
查看來自特定國家/地區的連線記錄
如要查看特定國家/地區的防火牆記錄,請按照下列步驟操作:
前往 Cloud de Confiance 控制台的「Logs Explorer」頁面。
點選「查詢」。
如果「查詢」窗格中沒有顯示查詢編輯器欄位,請點選「顯示查詢」切換鈕。
將下列內容貼到「查詢」窗格的查詢編輯器欄位。 將
PROJECT_ID替換為專案 ID,並將COUNTRY替換為 ISO 3166-1alpha-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 秒重複一次符合「拒絕並記錄」防火牆規則的遭拒連線記錄項目。
- 如果啟用防火牆規則的記錄功能,但該規則與已啟用的 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 元組數一次。