本页面介绍了如何为分层防火墙政策规则和网络防火墙政策规则启用和停用日志记录。 如需了解防火墙政策规则的日志记录,请参阅启用和停用防火墙政策规则日志记录。 您还可以了解如何查看防火墙政策规则的生成日志。 如需了解防火墙政策规则日志记录,请参阅防火墙政策规则日志记录概览。
如果您对某防火墙政策规则启用了日志记录,则可以通过“防火墙数据分析”查看针对该规则的数据分析和建议。如需了解详情,请参阅 Network Intelligence Center 文档中的防火墙数据分析。
权限
如需修改防火墙政策规则或访问日志,Identity and Access Management (IAM) 主账号需要具备以下角色之一。
| 任务 | 所需角色 |
|---|---|
| 创建、删除或更新防火墙规则 | 项目Project Owner 或编辑者,或者Security Admin 角色 (roles/compute.securityAdmin) |
| 查看日志 | 项目所有者、编辑者或查看者,或者日志查看者角色 (roles/logging.viewer)
如需详细了解 Logging IAM 角色和权限,请参阅 预定义角色。 |
启用和停用防火墙政策规则日志记录
创建防火墙政策规则时,您可以启用防火墙政策规则日志记录。详情请参阅以下内容:
启用日志记录后,您可以指定是否包含元数据字段。如果省略,则可以节省存储费用。如需为现有防火墙政策规则启用或停用防火墙政策规则日志记录,请参阅以下部分。
为分层防火墙政策启用防火墙政策规则日志记录
控制台
在 Google Cloud 控制台中,前往防火墙政策页面。
在项目选择器菜单中,选择您创建了分层防火墙政策的组织的名称。
在位于该组织的防火墙政策部分中,点击分层防火墙政策的名称。
在日志列中,确定为每个防火墙政策规则停用还是启用防火墙政策规则日志记录。
如需为防火墙政策规则启用日志记录,请点击相应规则的优先级,然后点击修改。
在日志部分,选择已启用。
点击保存。
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 控制台中,前往防火墙政策页面。
在项目选择器菜单中,选择您创建了分层防火墙政策的组织的名称。
在位于该组织的防火墙政策部分中,点击分层防火墙政策的名称。
在日志列中,确定为每个防火墙政策规则停用还是启用防火墙政策规则日志记录。
如需为防火墙政策规则停用日志记录,请点击相应规则的优先级,然后点击修改。
在日志部分,选择已停用。
点击保存。
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 控制台中,前往防火墙政策页面。
在项目选择器菜单中,选择您创建了网络防火墙政策的项目名称。
在网络防火墙政策部分中,点击要为其启用日志记录的网络防火墙政策的名称。
在日志列中,确定为每个防火墙政策规则停用还是启用防火墙政策规则日志记录。
如需为网络防火墙政策规则启用日志记录,请点击相应规则的优先级,然后点击修改。
在日志部分,选择已启用。
点击保存。
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 控制台中,前往防火墙政策页面。
在项目选择器菜单中,选择您创建了网络防火墙政策的项目名称。
在网络防火墙政策部分中,点击要为其启用日志记录的网络防火墙政策的名称。
在日志列中,确定为每个防火墙政策规则停用还是启用防火墙政策规则日志记录。
如需为网络防火墙政策规则停用日志记录,请点击相应规则的优先级,然后点击修改。
在日志部分,选择已停用。
点击保存。
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 方法。
查看日志
防火墙政策规则日志是在托管网络的项目中创建的,该网络包含虚拟机实例和防火墙规则。使用共享 VPC 时,您可以在服务项目中创建虚拟机实例,但这些实例会使用宿主项目中的共享 VPC 网络。在这种情况下,宿主项目会存储防火墙政策规则日志。
如需查看防火墙政策规则日志,请使用 Google Cloud 控制台的“日志浏览器”部分。如需了解详情,请参阅查看和分析日志。
下列查询展示了如何搜索特定防火墙事件。
查看所有防火墙日志
如需查看防火墙政策规则日志,请使用以下选项之一。
选项 1
在 Google Cloud 控制台中,前往 Logs Explorer 页面。
点击所有资源。
在选择资源列表中,点击子网,然后点击应用。
点击所有日志名称,然后在列表中选择防火墙。
点击应用。
选项 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 页面。
点击所有资源。
在选择资源列表中,点击子网。
选择要查看其日志的子网,然后点击应用。
点击所有日志名称,然后在列表中选择防火墙。
点击应用。
选项 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:子网的名称
如果您没有看到查询编辑器字段,请点击显示查询切换开关。
点击运行查询。
查看特定虚拟机中的日志
如需查看特定虚拟机的防火墙政策规则日志,请使用以下任一选项。
选项 1
在 Google Cloud 控制台中,前往 Logs Explorer 页面。
点击所有资源。
在选择资源列表中,点击虚拟机实例。
选择要查看其日志的实例,然后点击应用。
点击所有日志名称,然后在列表中选择防火墙。
点击应用。
选项 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:您要查看日志的虚拟机的 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 代码
如果您没有看到查询编辑器字段,请点击显示查询切换开关。
点击运行查询。
导出日志
如需导出防火墙政策规则日志,请参阅将日志路由到支持的目标位置。 您可以使用示例查询来缩小所导出日志的范围。
交互表
- 如果是虚拟机之间的通信,则两个虚拟机都可能生成日志记录,具体取决于其各自的防火墙规则。
- 如果防火墙允许初始数据包,则记录的连接包含双向流动的数据包。
- 对于给定的虚拟机,系统会根据该虚拟机上配置的防火墙规则来匹配传入连接,并会根据该虚拟机上配置的出站防火墙规则来匹配传出连接。
- 对于与设有“允许并进行日志记录”的防火墙规则相匹配的被允许的连接,系统仅记录一次。即使连接持续,系统也不会每 5 秒钟重复记录一次日志条目。
- 如果某个被拒的连接与设有“拒绝并进行日志记录”的防火墙规则相匹配,那么只要这一被拒的连接中存在数据包,系统就会每 5 秒钟重复记录一次日志条目。
- 如果您对与已活跃的 TCP 或 UDP 连接相匹配的防火墙规则启用日志记录,系统不会生成新的日志条目。仅当连接保持空闲状态至少 10 分钟,并且通过同一连接发送新数据包时,才会创建日志条目。对于空闲时间段短于 10 分钟的持续流量,系统只会为连接生成一条日志条目。
下表介绍了单个虚拟机的防火墙日志记录行为。
如果 VM1 具有入站规则 R1 和出站规则 R2,且它们均与数据包匹配,则防火墙日志记录的行为如下所示:
| VM1 具有入站规则 R1(匹配数据包) | 虚拟机 1 具有出站规则 R2(匹配数据包) | 连接方向 | 操作 | 日志 |
|---|---|---|---|---|
| 允许并记录 | 允许 | 入站流量 | 允许 | 一个日志条目: disposition=allow, rule=R1 |
| 拒绝 | ||||
| 允许并记录 | ||||
| 拒绝并记录 | ||||
| 允许 | 允许 | 入站流量 | 允许 | 无日志记录 |
| 拒绝 | ||||
| 允许并记录 | ||||
| 拒绝并记录 | ||||
| 拒绝并记录 | 不适用 | 入站流量 | 拒绝 | 每 5 秒一个日志条目: disposition=deny, rule=R1 |
| 拒绝 | 不适用 | 入站流量 | 拒绝 | 无日志记录 |
| 允许 | 允许并记录 | 出站 | 允许 | 一个日志条目: disposition=allow, rule=R2 |
| 拒绝 | ||||
| 允许并记录 | ||||
| 拒绝并记录 | ||||
| 允许 | 允许 | 出站 | 允许 | 无日志记录 |
| 拒绝 | ||||
| 允许并记录 | ||||
| 拒绝并记录 | ||||
| 不适用 | 拒绝并记录 | 出站 | 拒绝 | 每 5 秒一个日志条目: disposition=deny, rule=R2 |
| 不适用 | 拒绝 | 出站 | 拒绝 | 无日志记录 |
请注意,入站和出站是对称的。
下面是防火墙日志语义的详细说明:
允许并记录(只有 TCP 和 UDP 支持日志记录)
- 如果连接是应用了规则的方向发起的,则系统会创建一条日志记录。
- 出于连接跟踪目的,回复流量会被允许。无论该方向的 VPC 防火墙规则如何,回复流量均不会产生任何日志记录。
- 如果防火墙导致连接过期(处于非活动状态 10 分钟或收到 TCP RST),则任一方向的其他数据包都有可能触发日志记录。
- 日志记录基于五元组。TCP 标志不影响日志记录行为。
拒绝并记录(只有 TCP 和 UDP 支持日志记录)
- 丢弃数据包(不发起任何连接)。
- 与唯一五元组对应的每个数据包均会被记录为一次失败的连接尝试。
- 如果继续收到数据包,则系统会每 5 秒钟重复记录一次同一五元组。