本页面介绍了如何为 VPC 防火墙规则启用和停用日志记录。 如需了解有关 Virtual Private Cloud (VPC) 防火墙规则日志记录的说明,请参阅启用和停用 VPC 防火墙规则日志记录。您还可以了解如何查看为 VPC 防火墙规则生成的日志。如需了解 VPC 防火墙规则日志记录,请参阅 VPC 防火墙规则日志记录概览。
如果您对某 VPC 防火墙规则启用了日志记录,则可以通过“防火墙数据分析”查看针对该规则的数据分析和建议。如需了解详情,请参阅 Network Intelligence Center 文档中的防火墙数据分析。
权限
如需修改 VPC 防火墙规则或访问日志,Identity and Access Management (IAM) 主账号需要具备以下角色之一。
| 任务 | 所需角色 |
|---|---|
| 创建、删除或更新防火墙规则 | 项目Project Owner 或编辑者,或者Security Admin 角色 (roles/compute.securityAdmin) |
| 查看日志 | 项目所有者、编辑者或查看者,或者日志查看者角色 (roles/logging.viewer)
如需详细了解 Logging IAM 角色和权限,请参阅 预定义角色。 |
启用和停用 VPC 防火墙规则日志记录
创建 VPC 防火墙规则时,您可以启用 VPC 防火墙规则日志记录。如需了解详情,请参阅创建 VPC 防火墙规则。
启用日志记录后,您可以指定是否包含元数据字段。如果省略,则可以节省存储费用。如需为现有防火墙政策规则启用或停用 VPC 防火墙规则日志记录,请参阅以下部分。
启用 VPC 防火墙规则日志记录
控制台
在 Google Cloud 控制台中,前往防火墙政策页面。
在项目选择器菜单中,选择项目名称。
在 VPC 防火墙规则部分,您可以查看 VPC 防火墙规则的列表。
在日志列中,确定为每个防火墙规则启用还是停用日志。
如需为一个或多个规则启用日志记录,请选中要更新的每个规则旁边的复选框。
在 VPC 防火墙规则操作栏中,点击配置日志。
在配置日志对话框中,选择开启。
如需省略元数据字段,请展开显示日志详细信息,然后清除包括元数据复选框。
点击 Save configuration(保存配置)。
gcloud
gcloud compute firewall-rules update RULE_NAME \
--enable-logging \
--logging-metadata=LOGGING_METADATA
替换以下内容:
RULE_NAME:VPC 防火墙规则的名称。LOGGING_METADATA:指定 VPC 防火墙规则日志记录是否将元数据字段包括在 VPC 防火墙规则日志记录格式中。只有在启用了日志记录的情况下,您才能配置此字段。值必须为exclude-all或include-all。默认包括元数据字段。
如需了解详情,请参阅 SDK 参考文档。
Terraform
您可以使用 Terraform 资源创建启用日志记录的 VPC 防火墙规则。
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
API
为现有 VPC 防火墙规则启用 VPC 防火墙规则日志记录。
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:VPC 防火墙规则所在项目的 ID。RULE_NAME:VPC 防火墙规则的名称。LOGGING_METADATA:指定 VPC 防火墙规则日志记录是否将元数据字段包括在 VPC 防火墙规则日志记录格式中。只有在启用了日志记录的情况下,您才能配置此字段。值必须为exclude-all或include-all。默认包括元数据字段。
如需了解详情,请参阅 firewalls.patch 方法。
停用 VPC 防火墙规则日志记录
控制台
在 Google Cloud 控制台中,前往防火墙政策页面。
在项目选择器菜单中,选择项目名称。
在 VPC 防火墙规则部分,您可以查看 VPC 防火墙规则的列表。
在日志列中,确定为每个防火墙规则启用还是停用日志。
如需为一个或多个规则停用日志记录,请选中要更新的每个规则旁边的复选框。
在 VPC 防火墙规则操作栏中,点击配置日志。
在配置日志对话框中,选择关闭,然后点击保存配置。
gcloud
gcloud compute firewall-rules update RULE_NAME \
--no-enable-logging
将 RULE_NAME 替换为 VPC 防火墙规则的名称。
API
为现有 VPC 防火墙规则停用 VPC 防火墙规则日志记录。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
"name": "RULE_NAME",
"logConfig": {
"enable": false
}
}
替换以下内容:
PROJECT_ID:VPC 防火墙规则所在项目的 ID。RULE_NAME:VPC 防火墙规则的名称。
如需了解详情,请参阅 firewalls.patch 方法。
查看日志
防火墙政策规则日志是在托管网络的项目中创建的,该网络包含虚拟机实例和防火墙规则。使用共享 VPC 时,您可以在服务项目中创建虚拟机实例,但这些实例会使用宿主项目中的共享 VPC 网络。在这种情况下,宿主项目会存储防火墙政策规则日志。
VPC 防火墙规则日志是在托管网络的项目中创建的,该网络包含虚拟机实例和 VPC 防火墙规则。使用共享 VPC 时,您可以在服务项目中创建虚拟机实例,但这些实例会使用宿主项目中的共享 VPC 网络。 在这种情况下,宿主项目会存储防火墙政策规则日志。
如需查看 VPC 防火墙规则日志,请使用 Google Cloud 控制台的“日志浏览器”部分。如需了解详情,请参阅查看和分析日志。
以下查询展示了如何搜索特定的 VPC 防火墙事件。
查看所有防火墙日志
如需查看 VPC 防火墙规则日志,请使用以下任一选项。
选项 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。如果您没有看到查询编辑器字段,请点击显示查询切换开关。
点击运行查询。
查看特定子网的日志
如需查看特定子网的 VPC 防火墙规则日志,请使用以下任一选项。
选项 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:子网的名称
如果您没有看到查询编辑器字段,请点击显示查询切换开关。
点击运行查询。
查看特定虚拟机中的日志
如需查看特定虚拟机的 VPC 防火墙规则日志,请使用以下任一选项。
选项 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
如果您没有看到查询编辑器字段,请点击显示查询切换开关。
点击运行查询。
查看来自特定国家/地区的连接的日志
如需查看特定国家/地区的 VPC 防火墙规则日志,请执行以下操作:
在 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 代码
如果您没有看到查询编辑器字段,请点击显示查询切换开关。
点击运行查询。
导出日志
如需导出 VPC 防火墙规则日志,请参阅将日志路由到支持的目标位置。您可以使用示例查询来缩小所导出日志的范围。
交互表
- 如果是虚拟机之间的通信,则两个虚拟机都可能生成日志记录,具体取决于其各自的防火墙规则。
- 如果防火墙允许初始数据包,则记录的连接包含双向流动的数据包。
- 对于给定的虚拟机,系统会根据该虚拟机上配置的防火墙规则来匹配传入连接,并会根据该虚拟机上配置的出站防火墙规则来匹配传出连接。
- 对于与设有“允许并进行日志记录”的防火墙规则相匹配的被允许的连接,系统仅记录一次。即使连接持续,系统也不会每 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 秒钟重复记录一次同一五元组。