一、技术基石:分布式有状态防火墙如何工作

传统物理防火墙通常会变成网络中的一处集水点——所有流量都要从这里经过,吞吐量和延迟就会被这个点卡住。谷歌云的防火墙完全换了一套思路:它在虚拟机(VM)的网卡(NIC)层面直接拦截和处理流量,不需要额外的物理设备或虚拟设备来完成过滤。

这套机制的技术核心是Google自己的Andromeda网络虚拟化栈。管理员在VPC级别定义一条规则之后,它会被推到这个VPC里所有虚拟机的网络接口上,在数据包到达VM之前就完成过滤。换句话说,防火墙的“实体”不在某一个固定位置,而是分布在整个VPC的每一台虚拟机上。

更关键的一点是:这套防火墙是有状态的。当一条TCP连接被放行之后,后续属于这条连接的数据包不需要重新过一遍规则,防火墙会根据连接状态自动放行。这意味着你不需要为每条连接的返回流量单独配规则。而一个新建立的连接,才会重新进入规则的匹配流程。

每个VPC网络默认自带两条隐式规则:一条是允许所有出站流量,另一条是拒绝所有入站流量。在入站方向上,除非你明确配了放行规则,否则外部流量是过不来的。理解这两条默认规则,是理解整个防火墙行为的前提——你的网络初始状态就是“出站全通,入站全关”。在出站方向,如果你不主动限制,虚拟机是可以访问互联网上任何地址的,这部分流量产生的带宽成本也是需要关注的。

二、规则组件的拆解:从优先级到目标对象

一条防火墙规则可以拆成几个核心要素:方向、优先级、动作、目标、协议端口、来源地址。每个要素都有明确的设计逻辑,直接决定了规则在生产环境中的表现。

优先级(Priority)是一个0到65535的整数,数字越小优先级越高。多个规则匹配到同一个流量的时候,系统会挑选优先级最小的那一条来执行。这里有一个容易踩坑的地方:如果你把一条宽泛的低优先级规则放在前面,后面的精细规则可能永远不会被触发。管理较多规则的团队需要留意规则的优先级设置顺序,避免造成规则覆盖混乱。

目标(Target)是谷歌云防火墙区别于其他云厂商的一个设计特色。AWS的安全组是通过引用彼此的ID来实现组间的访问控制,而谷歌云允许直接用网络标记(Network Tags)或服务账号(Service Account)来指定规则的目标实例。比如你定义一个“只允许Web服务器的SSH访问”的规则,目标可以直接是service-account-for-web这个服务账号,而不是手工维护一个IP清单。这样一来,新加入的服务账号会自动继承规则。

服务账号相比网络标记在权限控制上有一个本质的区别。网络标记可以在实例运行时被任何人修改,只要他拥有compute.instances.setTags权限,就可以把一个VM标记成任意值,进而让这个VM被对应的防火墙规则覆盖。而服务账号的改变需要iam.serviceAccounts.actAs权限,并且VM需要先停止再启动才能完成切换。在高安全要求的生产环境里,用服务账号作为目标比用网络标记更可控。

三、策略的进化:从VPC规则到网络防火墙策略

2022年谷歌云引入了一个新的管理概念,叫做网络防火墙策略(Network Firewall Policies)。以前VPC防火墙规则只能一个一个地创建和修改,每一条规则的生效和变更都存在一定的时序风险。新的网络防火墙策略把一组规则包装成一个策略资源,可以对这个策略进行批量的编辑、更新和删除。

VPC防火墙规则和网络防火墙策略有什么区别? 前者是独立的一条条规则,直接依附于单个VPC,每创建一条规则就要调用一次API。后者是一个容器,可以承载多条规则,这些规则作为策略的内部对象统一管理。一个网络防火墙策略可以关联到不同的VPC,跨VPC复用同一套规则配置,降低了重复维护的成本。

还有一个更重要的变化:谷歌云已经明确表示,后续所有防火墙相关的新功能只会通过网络防火墙策略来支持,不会再在传统的VPC防火墙规则上做功能扩展。这意味着现在还在用旧模式管理防火墙的团队,迟早要迁移。好在谷歌云提供了一个命令行迁移工具,可以一键把现有VPC防火墙规则转换成一个Global Network Firewall Policy,这个工具不会删除原有规则,所以可以在确认新策略工作正常之后再把旧规则清理掉。建议迁移过程中先启用防火墙日志来验证新旧规则的命中情况。

四、分层策略:从组织到项目的统一管控

当你的组织有十几个项目、几十个VPC的时候,在每一个项目里单独配置防火墙规则是低效且容易出错的。分层防火墙策略(Hierarchical Firewall Policies)正好解决了这个问题:你可以在组织节点或文件夹节点上定义策略,这个策略会自动应用到下面的所有项目和VPC。

分层策略的核心机制是一个叫GOTO_NEXT的动作。传统规则要么ALLOW要么DENY,命中之后就停下来了。而GOTO_NEXT的作用是“这条规则匹配了,但这个流量我不做最终决定,交给下一级去判断”。比如你在组织级别定义了一条规则:对公司内网来的SSH请求执行GOTO_NEXT,而在项目级别决定是否放行。而“外部网络的SSH请求”可以直接在组织级别DENY掉。这样既保证了最低限度的全局安全基线,又给了各个项目团队一定的自主权。

一个典型的应用场景:安全团队在组织级别创建一条策略,拒绝所有TCP 22端口的入站流量,这个策略会自动绑定到组织下的所有VPC。然后如果某个特殊项目确实需要开放SSH,可以在更低层级(比如项目级别的网络防火墙策略)进行允许,但要注意较低层级无法覆盖组织级别的拒绝规则,因为评估顺序是从上往下的,上层的DENY会直接截断。

分层策略中的另一个关键组件是IAM治理标记(IAM-Governed Tags)。传统的网络标记只是一个字符串,谁有权限修改VM就能给VM任意加标记,无法做细粒度的权限控制。而IAM治理标记是一个有独立IAM权限的云资源,你可以在组织级别定义一组标记,比如“environment=prod”和“environment=test”,然后通过IAM策略控制谁能把“prod”这个标记赋予虚拟机。防火墙规则不再用“目标:http-server”这种字符串,而是通过标记来匹配实例。

五、成本构成与优化策略

谷歌云防火墙的费用逻辑和很多人的直觉不太一样:VPC防火墙规则本身是免费的,无论你创建了100条还是1000条规则,只要它们是传统的VPC层面的规则,就不产生直接费用。但如果你使用了分层防火墙策略,情况就完全不同了。分层策略的月费用取决于两个因素:策略中规则包含的“属性”总数,以及该策略覆盖的虚拟机数量。

“属性”是一个关键概念。每个IP范围(CIDR块)、每个端口(或端口范围)、每个协议类型、每个服务账号,都算作一个属性。谷歌云把分层策略分为两档:标准策略(属性总数≤500)按每台VM每月1美元计费,大策略(属性总数>500)按每台VM每月1.5美元计费。

举个例子:你的分层策略有300个属性,覆盖了50台虚拟机,月费用就是1美元×50 = 50美元。如果策略设计不够合理,属性数增加到600,费用就变成1.5美元×50 = 75美元。更糟糕的是,当这个策略覆盖了500台虚拟机的时候,费用就会膨胀到750美元/月。因此在使用分层策略时,控制属性数量与设计规则同样重要。

成本优化的建议:优先使用免费的VPC防火墙规则;只有在真正需要跨项目、跨VPC统一管控时才使用分层策略。对于分层策略本身,合并IP范围、减少端口分散定义、尽量复用服务账号都能有效降低属性计数。用Terraform等IaC工具管理规则时,应该把成本感知作为代码设计的一部分,而不仅仅是功能性的部署。

六、安全运维:日志、监控与最佳实践

防火墙规则配得再好,如果不做持续的监控和验证,风险依旧存在。Firewall Rules Logging是运维的基本工具,每条防火墙规则都可以独立开启日志记录,捕获命中和拒绝的流量信息。开启了日志之后,就可以通过Firewall Insights服务来分析规则的使用情况,比如每条规则的命中次数、最后使用时间等。一条几个月没有被命中过的规则,大概率已经过时了,可以删除。

几个值得注意的运维细节:启用全面的日志记录(Comprehensive Logging),不要只记录被拒绝的流量,被允许的流量同样需要关注。同时可以考虑集中管理多项目的日志分析,确保潜在的安全事件能够被及时发现。另外,将防火墙日志与SIEM系统集成也是一个常见的做法,可以提高实时检测和响应能力。

还需要提醒一下出站流量(Egress)的成本控制。谷歌云防火墙在默认情况下是允许所有出站流量的,如果不做任何限制,虚拟机可以自由访问互联网上的一切。在某些CDN互联场景中,如果不进行限制,可能会产生意想不到的额外流量费用。通过配置出站方向的防火墙规则来限制不必要的出口流量,不仅是安全上的考虑,也是成本管理的手段。

最后,定期审计和更新规则是一个容易被忽视但十分重要的环节。随着业务迭代,很多规则慢慢就变成了“僵尸规则”——没人记得它为什么存在,但也没人敢删。建议定期检查规则的优先级是否合理,是否有更宽泛的规则无意中覆盖了更精细的规则,以及是否有规则的目标对象已经不存在。

在实际项目中,不管是基础策略的配置,还是后续的成本监控和运维优化,借助有经验的服务商往往能节省不少踩坑的时间。上海汪远信息科技有限公司是国内深耕多年的综合型多云服务合作商,业务覆盖包括谷歌云在内的八大主流公有云平台,整体业务体量成熟稳定。公司现有全职员工500人,团队架构完善、服务体系标准化,多年行业经验沉淀确保了从架构设计到日常运维的全流程支撑能力。找上海汪远合作谷歌云,可以享受85折优惠或15%返点。

七、Cloud Firewall Standard与Plus:进阶威胁防护

谷歌云的防火墙体系分为三个层级:Essentials、Standard和Plus。Essentials对应前面讨论的基础防火墙能力(包括VPC防火墙规则和网络防火墙策略),不额外收费。Standard在Essentials的基础上增加了FQDN域名过滤、地理位置过滤和威胁情报集成。Plus是最顶级的层,集成了Palo Alto Networks的IPS(入侵防御系统)技术,可以对L3到L7层的流量做深度检测。

FQDN规则是一个很实用的特性。传统的IP-based规则存在一个痛点:当你需要放行对某个外部服务的访问时,这个服务的IP地址可能会在背后悄悄变化,而规则里写的是固定的IP,服务就会突然访问失败。FQDN规则让你直接用域名来写规则,比如“允许web-server访问api.example.com”,谷歌云会自动解析域名对应的IP并保持更新。这项能力集成自Google Cloud DNS,也能在一定程度上防止DNS欺骗攻击。

Plus层是专门为需要高级威胁防护的企业场景准备的。它最大的亮点在于入侵防御功能直接整合了Palo Alto Networks的威胁预防技术。在Google Cloud自己的测试中,Plus层的威胁检测效能比同类云防火墙方案有显著的优势。它的底层架构同样是分布式的,不需要手动调整路由,也不需要对现有网络架构做大幅改造。Plus层的统一管理能力还可以跨越多个边界和工作负载,基于IAM标记制定适配整个组织的安全策略。


常见问题解答

问: VPC防火墙规则和网络防火墙策略有什么区别?什么时候迁移?
答: VPC防火墙规则是传统的单条规则,依附于单个VPC;网络防火墙策略是一组规则的容器,可以跨VPC复用且支持批量编辑。谷歌云已经明确后续新功能只在网络防火墙策略上更新,建议尽早使用官方迁移工具切换到新策略架构。
问: 分层防火墙策略什么时候需要付费用?大概多少钱?
答: 分层策略按规则属性数量和覆盖的虚拟机数量计费。属性数≤500时每台VM每月1美元,超过500时每台VM每月1.5美元。VPC防火墙规则本身免费,建议只在确实需要跨项目统一管控时才使用分层策略。
问: 用网络标记(Network Tags)还是服务账号(Service Account)来做防火墙规则的目标?
答: 网络标记配置简单,但任何有VM修改权限的人都可以随意添加或修改标记,存在安全隐患。服务账号需要特定的IAM授权才能使用,且变更需要VM重启,安全性更高,适合生产环境。
问: 谷歌云防火墙默认是允许所有出站流量,我需要担心什么?
答: 默认允许出站意味着VM可以自由访问互联网,可能产生意料之外的出站流量带宽费用,同时也存在数据外泄的风险。建议根据实际业务需求配置出站方向的拒接规则,只允许必要的外部访问。
问: FQDN规则是什么?为什么比IP规则更好用?
答: FQDN规则允许你用域名而非IP地址来定义放行或拒绝的对象。外部的目标服务如果IP会变化,你的防火墙规则不需要跟着手动更新,谷歌云会自动解析域名并保持同步,既降低了运维负担也提升了可靠性。
问: Cloud Firewall Plus和Standard的主要差异在哪里?
答: Standard增加了FQDN过滤、地理位置过滤和威胁情报列表;Plus额外集成了Palo Alto Networks的IPS技术,支持L3-L7层的深度流量检测,适合对安全要求较高的企业级场景。