Virtual Private Cloud (VPC) 防火墙规则应用于给定的项目和网络。如果要将防火墙规则应用于组织中的多个 VPC 网络,请参阅防火墙政策和规则。本页面的其余部分仅介绍 VPC 防火墙规则。
通过 VPC 防火墙规则,您可以允许或拒绝传入或传出 VPC 网络中的虚拟机 (VM) 实例的连接。无论实例的配置和操作系统如何,无论它们是否启动,系统都始终会实施 VPC 防火墙规则来保护您的实例。
每个 VPC 网络均发挥分布式防火墙的作用。虽然防火墙规则是在网络级层上定义的,但允许或拒绝连接是按具体实例执行。您可以认为,VPC 防火墙规则不仅存在于您的实例与其他网络之间,也存在于同一网络内的各个实例之间。
如需详细了解防火墙,请参阅防火墙(计算)。
防火墙规则的最佳实践
在设计和评估防火墙规则时,请谨记以下最佳实践:
- 实现最小权限原则。默认阻止所有流量,并且仅允许您需要的特定流量。这包括将规则限制为仅使用所需的协议和端口。
- 使用分层防火墙政策规则阻止在组织或文件夹级层不允许的流量。
- 对于“允许”规则,请通过指定虚拟机的服务账号将它们限制为仅允许特定的虚拟机。
- 如果您需要根据 IP 地址创建规则,请尝试最大限度地减少规则的数量。与分别跟踪 16 条独立规则相比,跟踪一条允许流量流向 16 个虚拟机的规则要容易得多。
- 使用防火墙政策对防火墙规则进行分组,以简化配置和部署。
防火墙政策规则提供多个规则组件,可实现精细的流量控制:
- 使用地址组可简化在防火墙规则中使用多个 IP 地址范围的操作。
- 在防火墙政策中使用 FQDN 对象,以过滤进出特定网域的传入或传出流量。您可能需要支付 Cloud Next Generation Firewall Standard 数据处理费用。
- 如果您需要根据特定地理位置或区域过滤外部 IPv4 和 IPv6 流量,请在防火墙政策中使用地理位置对象。您可能需要支付 Cloud Next Generation Firewall Standard 处理费用。
- 启用 VPC 防火墙规则日志记录,并使用防火墙数据分析来验证防火墙规则是否按预期方式使用。VPC 防火墙规则日志记录可能会产生费用,因此您可能需要考虑选择性地使用它。
Google Cloud中的防火墙规则
创建 VPC 防火墙规则时,您需要指定 VPC 网络和一组组件,用于定义规则的作用。利用这些组成部分,您能够根据流量的协议、目的地端口、来源和目的地来定位某些类型的流量。如需了解详情,请参阅防火墙规则组成部分。
如需创建或修改 VPC 防火墙规则,您可以使用Google Cloud console、Google Cloud CLI 和 REST API。创建或修改防火墙规则时,您可以使用规则的目标参数来指定要应用此规则的实例。如需查看防火墙规则示例,请参阅其他配置示例。
除了您创建的防火墙规则外, Google Cloud 还有其他规则可以影响传入(入站)或传出(出站)的连接:
Google Cloud 会屏蔽或限制某些流量。如需了解详情,请参阅屏蔽和受限的流量。
Google Cloud 始终允许虚拟机实例与其对应的元数据服务器(位于
169.254.169.254)之间的通信。如需了解详情,请参阅始终允许的流量。VPC 防火墙规则会根据防火墙规则评估流程与防火墙政策中的规则一起进行评估。作为最后一步,如果未对流量应用任何明确的操作,Cloud NGFW 会强制执行隐式操作。
默认网络预先填充了一些防火墙规则,您可以删除或修改这些规则。
规范
VPC 防火墙规则具有以下特征:
每条防火墙规则均应用于传入(入站流量)或传出(出站流量)连接,但不能同时应用于两者。如需了解详情,请参阅连接方向。
防火墙规则支持 IPv4 连接。已启用 IPv6 的 VPC 网络也支持 IPv6 连接。按地址指定入站流量或出站流量规则的来源或目的地时,可以采用 CIDR 表示法指定 IPv4 或 IPv6 地址或地址块。
每条防火墙规则可以包含 IPv4 或 IPv6 范围,但不能同时包含两者。
每条防火墙规则执行的操作均为
allow或deny之一。只要实施了防火墙规则,该规则就会应用于连接。例如,您可以停用某一条规则,以进行问题排查。创建防火墙规则时,必须选择 VPC 网络。虽然规则是在实例级层实施,但其配置与 VPC 网络相关联。这意味着您无法在 VPC 网络之间共享防火墙规则,包括通过 VPC 网络对等互连或使用 Cloud VPN 隧道连接的网络。
VPC 防火墙规则是有状态的:
- 如果允许通过任一方向的防火墙进行连接,则也允许与此连接匹配的返回流量。您不能将防火墙规则配置为拒绝关联的响应流量。
- 返回流量必须与已接受的请求流量的 5 元组(来源 IP、目标 IP、源端口、目标端口、协议)匹配,但来源地址和目标地址以及来源端口和目标端口会被对调。
- Google Cloud 会使用连接跟踪表,将传入数据包与相应的出站数据包相关联。IPv4 连接支持 TCP、UDP、SCTP 和 ICMP 协议。IPv6 连接支持 TCP、UDP、SCTP 和 ICMPv6 协议。
- 无论所用协议是否支持连接,Google Cloud 都会实施连接跟踪。如果来源与目标之间(针对入站流量规则)或目标与目的地之间(针对出站流量规则)允许建立连接,只要防火墙的连接跟踪状态为活跃状态,则所有响应流量都允许通过。如果每 10 分钟至少发送一个数据包,则视为防火墙规则的跟踪状态为活跃状态。
- 如果防火墙允许分段连接,则Google Cloud 会使用连接跟踪,以仅允许返回流量的第一个片段。如需允许后续的返回片段,您必须添加防火墙规则。
- 通过防火墙允许生成 ICMP 响应流量,例如,生成允许的“ICMP TYPE 3, DESTINATION UNREACHABLE”以响应允许的 TCP/UDP 连接。此行为与 RFC 792 一致。
VPC 防火墙规则不会重组分段的 TCP 数据包。因此,适用于 TCP 协议的防火墙规则只能应用于第一个分段,因为其中包含 TCP 标头。适用于 TCP 协议的防火墙规则不适用于后续的 TCP 分段。
防火墙规则表中跟踪的最大连接数取决于实例的机器类型支持的有状态连接数。 如果超出跟踪连接数上限,则系统将停止跟踪具有最长空闲间隔的连接,以便跟踪新连接。
实例机器类型 有状态连接的最大数量 共享核心机器类型 130000 个 具有 1-8 个 vCPU 的实例 每个 vCPU 130000 个连接 具有 8 个以上 vCPU 的实例 总共 1040000 (130000×8) 个连接
隐含操作
如果没有 VPC 防火墙规则适用于目标,防火墙规则评估流程可能会到达最后一步。在此步骤中,Cloud NGFW 使用的是隐式操作。隐含的操作取决于流量方向和目标资源类型。
如需了解详情,请参阅防火墙规则评估流程。
默认网络中预先填充的规则
默认网络预先填充了一些允许连接传入实例的防火墙规则。这些规则可以根据需要删除或修改:
| 规则名称 | 方向 | 优先级 | 来源范围 | 操作 | 协议和端口 | 说明 |
|---|---|---|---|---|---|---|
default-allow-internal
|
ingress
|
65534
|
10.128.0.0/9
|
allow
|
tcp:0-65535
|
允许从同一 VPC 网络内的其他实例到虚拟机实例的传入连接。 |
default-allow-ssh
|
ingress
|
65534
|
0.0.0.0/0
|
allow
|
tcp:22
|
允许您使用 ssh、scp 或 sftp 等工具连接到实例。 |
default-allow-rdp
|
ingress
|
65534
|
0.0.0.0/0
|
allow
|
tcp:3389
|
允许您使用 Microsoft 远程桌面协议 (RDP) 连接到实例。 |
default-allow-icmp
|
ingress
|
65534
|
0.0.0.0/0
|
allow
|
icmp
|
允许您使用 ping 等工具。
|
您可以为默认网络以外的网络创建类似的防火墙规则。如需了解详情,请参阅为常见使用场景配置防火墙规则。
屏蔽和受限的流量
Google Cloud 与 VPC 防火墙规则和分层防火墙政策分开,会屏蔽或限制下表中所述的特定流量。
| 流量类型 | 详细信息 |
|---|---|
| 数据包速率和带宽 适用对象:
|
针对每个网络接口 (NIC) 或 IP 地址,Google Cloud 按每个虚拟机实例考虑带宽。虚拟机的机器类型定义了其可能的最大出站流量速率。但是,您只能在特定情况下达到此最大出站流量速率。 如需了解详情,请参阅 Compute Engine 文档中的网络带宽。 |
| DHCP 提供和确认 适用对象:
|
Google Cloud 会屏蔽来自所有来源的传入 DHCP 提供和确认,但来自元数据服务器的 DHCP 数据包除外。 |
| 外部 IP 地址支持的协议 Google Cloud 适用对象:
|
外部 IPv4 和 IPv6 地址仅接受 TCP、UDP、ICMP、IPIP、AH、ESP、SCTP 和 GRE 数据包。使用外部 IP 地址的资源会施加额外的协议限制:
|
| SMTP(端口 25)流量 适用对象:
|
为帮助防止垃圾邮件,默认情况下, Google Cloud 会阻止发送到外部 IP 地址(包括其他 Google Cloud 资源的外部 IP 地址)的 TCP 目标端口 25 的出站数据包。 Google Cloud 一旦确定项目通过未加密连接发送大量电子邮件的风险较低,就会自动移除此屏蔽。 Google Cloud 此屏蔽不包括通过端口 465 或 587 上的 TLS 进行的 SMTP 流量。如需了解您的项目是否允许此流量,请前往 Google Cloud 控制台中的 VPC 网络页面或 防火墙政策页面。这两个页面上的横幅消息都会指明您的项目是否允许此流量。如需了解详情,请与Google Cloud 销售专家联系。 此地址块不适用于发送到内部 IP 地址(包括 VPC 网络或本地网络中以非公开方式使用的公共 IP 地址)的 TCP 目的地端口 25 的出站数据包。 如果项目中允许端口 25 上的外部 SMTP 出站流量,并且您想要发送此类流量,则必须满足以下其他条件:
您可以通过创建出站拒绝 VPC 防火墙规则或分层防火墙政策来阻止外部 SMTP 出站流量。 |
始终允许的流量
对于虚拟机实例,VPC 防火墙规则和分层防火墙政策不适用于以下情况:
- 向 Google Cloud 元数据服务器发送和从其中接收的数据包
数据包已发送到实例本身的网络接口 (NIC) 之一的 IP 地址,其中数据包保留在虚拟机本身中。分配给实例的 NIC 的 IP 地址包括:
- NIC 的主要内部 IPv4 地址
- NIC 的别名 IP 范围中的任何内部 IPv4 地址
- 如果在子网上配置 IPv6,则为分配给 NIC 的任何 IPv6 地址
- 用于负载均衡或协议转发的与转发规则相关联的内部或外部 IPv4 地址(如果实例是负载均衡器的后端或协议转发的目标实例)
- 环回地址
- 配置为在实例本身中运行的网络叠加软件的一部分的地址
Google Cloud 元数据服务器
Google Cloud 会与每个实例一起运行一个本地元数据服务器。服务器可通过 169.254.169.254 (IPv4) 和 fd20:ce::254 (IPv6) 访问。此服务器对于实例的操作至关重要,无论您配置何种防火墙规则,实例都可以访问此服务器。元数据服务器为实例提供以下基本服务:
- DHCP
- DNS 解析:按照 VPC 网络的 DNS 域名解析顺序进行解析。
- 实例元数据
- 网络时间协议 (NTP)
产品交互
以下部分介绍了防火墙规则和分层防火墙政策如何与其他产品交互。 Google Cloud
防火墙规则和直通式负载均衡器
VPC 防火墙规则和分层防火墙政策可以控制允许将转发规则支持的哪些协议和端口用于访问直通式负载均衡器的后端。有关详情,请参阅:
防火墙规则和代理负载均衡器
对于外部应用负载均衡器、内部应用负载均衡器、内部代理网络负载均衡器和外部代理网络负载均衡器,VPC 防火墙规则和分层防火墙政策不会控制代理负载均衡器的转发规则 IP 地址接受哪些协议和端口。转发规则单独可确定代理负载均衡器接受哪些协议和端口。
VPC 防火墙规则和分层防火墙政策可以控制这些代理负载均衡器如何与其后端通信。如需了解详情,请参阅:
防火墙规则和 Cloud VPN
防火墙规则和分层防火墙政策不会控制 Cloud VPN 网关接受哪些协议和端口。
Cloud VPN 网关仅接受 Cloud VPN 规范中所述的协议和端口的数据包。
防火墙规则和 GKE
当您在集群中创建集群或资源(包括 Service 和 Ingress)时,Google Kubernetes Engine 会自动创建和管理防火墙规则。如需了解详情,请参阅 Google Kubernetes Engine 文档中的自动创建的防火墙规则。
防火墙规则和 AI Hypercomputer
您可以在创建 AI Hypercomputer 中创建虚拟机所需的 VPC 网络时,创建 VPC 防火墙规则。使用防火墙规则指定允许用于 VPC 网络的协议和端口。 如需了解详情,请参阅 AI Hypercomputer 概览。
防火墙规则组件
每条防火墙规则均由以下配置组件组成:
从目标的角度来看的