分层防火墙政策概览

分层防火墙政策可让您在组织中创建和实施一致的防火墙政策。您可以将分层防火墙政策分配给整个组织或各个文件夹。这些政策包含可以明确拒绝或允许连接的规则,Virtual Private Cloud (VPC) 防火墙规则也是如此。此外,分层防火墙政策还可以通过 goto_next 操作将评估委托给较低级层的政策或 VPC 网络防火墙规则。

较低级层的规则无法替换资源层次结构中较高级别的规则。这样,组织范围的管理员就可以集中管理关键的防火墙规则。

规格

  • 分层防火墙政策是在组织节点和文件夹节点上创建。创建政策不会自动将规则应用于节点。
  • 政策一经创建,即可应用于组织中的任何节点(关联)。
  • 分层防火墙政策是防火墙规则的容器。当您将政策与组织或文件夹关联时,系统会立即应用所有规则。您可以为节点更换政策,该操作以原子方式更换应用于该节点下虚拟机实例的所有防火墙规则。
  • 规则评估基于资源层次结构进行分层。与组织节点关联的所有规则都将进行评估,其次是第一级文件夹的规则,依此类推。
  • 分层防火墙政策规则具有新的 goto_next 操作,您可以使用该操作将连接评估委托给层次结构中较低的级层。
  • 通过使用网络的目标资源和虚拟机的目标服务帐号,分层防火墙政策规则可以针对特定的 VPC 网络和虚拟机。这样,您就可以为虚拟机组创建例外。分层防火墙政策规则不支持根据实例标记指定目标。
  • 每个分层防火墙政策规则可以包含 IPv4 或 IPv6 范围,但不能同时包含两者。
  • 为遵守合规性和调试,您可以使用 VPC 网络详情页面和虚拟机实例的网络接口详情页面审核对虚拟机实例应用的防火墙规则。

资源层次结构

您可在单独的步骤中创建和应用防火墙政策。您可以在资源层次结构的组织或文件夹节点上创建和应用防火墙政策。防火墙政策规则可以阻止连接、允许连接或将防火墙规则评估交由较低级层的文件夹或 VPC 网络中定义的 VPC 防火墙规则处理。

  • 组织是 Google Cloud 资源层次结构中的顶层节点,您可以在其中创建或关联分层防火墙政策。组织中的所有文件夹和 VPC 网络均继承此政策。

  • 文件夹是 Google Cloud 资源层次结构中的中层节点,位于组织和项目之间,您可以在其中创建或分配分层防火墙政策。文件夹中的所有文件夹和 VPC 网络都会继承其关联政策。

  • 项目位于文件夹或组织下。您可以在组织中的节点之间移动项目。项目包含 VPC 网络。分层防火墙政策不能分配给项目,只能分配给组织或文件夹。

  • VPC 网络是用于独立内部 IP 空间通信的 Google Cloud 分区。这是指定和应用路由和传统 VPC 防火墙规则的级层。分层防火墙政策规则可以替换网络防火墙规则,也可以将连接评估委托给它们。

默认情况下,所有分层防火墙政策规则应用于与该政策关联的组织或文件夹下的所有项目中的所有虚拟机。但是,您可以通过指定目标网络或目标服务帐号来限制哪些虚拟机获得给定的规则。

下图显示了防火墙规则现在可以应用到的层次结构的级层。黄色方框表示包含防火墙规则的分层防火墙政策,白色方框表示 VPC 防火墙规则。

包含组织和文件夹级层规则(黄色方框)的分层防火墙政策和包含 VPC 网络级层的 VPC 防火墙规则的分层防火墙政策
包含规则(黄色框)的分层防火墙政策应用于组织级层和文件夹级层。VPC 防火墙规则是在 VPC 网络级层应用的。

规则评估

分层防火墙政策规则在虚拟机级层强制执行,VPC 防火墙规则也是如此。也就是说,它们不会像传统防火墙那样在网络边缘应用。

Google Cloud 按以下顺序评估分层防火墙政策规则和 VPC 防火墙规则:

  1. 如果防火墙政策与组织关联,Google Cloud 评估该政策应用于虚拟机的规则。每条规则都会导致连接被允许或拒绝,或者规则可以指示防火墙评估转到层次结构的下一级层,即文件夹或 VPC 网络。
  2. Google Cloud 评估与每个文件夹关联的政策规则,从组织下的顶层文件夹开始,并往下至子文件夹(如果存在)。

    对每条规则的评估都会导致连接被允许或拒绝,或者规则可以指示防火墙评估转到层次结构的下一级层,即另一个文件夹或 VPC 网络。

  3. 最后,评估 VPC 防火墙规则。VPC 防火墙规则允许或拒绝连接。

防火墙规则解析流程
防火墙规则解析流程

分层防火墙政策详情

分层防火墙政策规则在防火墙规则资源中定义,该资源充当防火墙规则的容器。除非政策与节点(组织或文件夹)关联,否则防火墙政策中定义的规则不会强制执行。

一个政策可以与多个节点关联。如果您修改政策中的规则,则该规则更改将应用于当前关联的所有节点。

一个节点只能与一个防火墙政策关联。分层防火墙政策规则和 VPC 防火墙规则按照明确的顺序进行评估

未与任何节点关联的防火墙政策是未关联的分层防火墙政策。

政策名称

当您创建新政策时,Google Cloud 会自动为该政策生成 ID。此外,您还需要为政策指定简称。使用 gcloud 接口更新现有政策时,您可以引用系统生成的 ID 或简称与组织 ID 的组合。使用 API 更新政策时,您必须提供系统生成的 ID。

分层防火墙政策规则详情

一般而言,分层防火墙政策包含的规则与 VPC 防火墙规则的工作方式相同,但存在一些区别。

优先级

  • VPC 防火墙规则可以具有相同的优先级,与 VPC 防火墙规则不同,分层防火墙政策规则必须具有指定的优先级,并且每个优先级在防火墙政策中必须是唯一的。

  • 分层防火墙政策规则没有名称。相反,防火墙政策本身具有 ID 和名称,并且其中的每个规则都有一个唯一的优先级编号。

  • 在分层防火墙政策中,防火墙规则按优先级顺序评估,从优先级最高(数字最小)的规则开始。因此,在分配给组织节点的政策中,优先级为 0 的规则将覆盖组织中的任何其他规则。 最好向规则提供允许稍后插入的优先级编号(如 100200300)。

对匹配项执行的操作

  • allow
    分层防火墙政策 allow 规则会覆盖具有较低优先级或位于层次结构中较低级层的任何 deny 规则。使用组织或文件夹政策中的 allow 规则可无条件地允许到层次结构中该节点下的所有虚拟机的特定类型的连接。

    例如,如果您有一个集中管理的探测器,用于监控组织中的所有虚拟机,您可以在组织级层创建 allow 规则,以确保来自探测器 IP 地址的请求不被任何项目中的任何网络阻止。

  • deny
    分层防火墙政策 deny 规则会覆盖具有较低优先级或位于层次结构中较低级层的任何 allow 规则。

    例如,如果要确保组织中的任何虚拟机都无法从特定 IP 范围访问,您可以为该范围创建 deny 规则。

  • goto_next
    指示防火墙将防火墙评估移至层次结构的下一个较低级层。您可以使用此选项将特定类型的连接委托给较低的级层管理。

目标

您可以指定分层防火墙政策规则适用于哪些目标网络和目标服务帐号。

目标网络(目标资源)

您可以指定目标网络,以将分层防火墙政策规则限制为指定网络中的虚拟机。通过在规则中指定 VPC 网络,您可以控制如何使用该规则配置哪些网络。

goto_nextallow 结合使用时,通过指定目标网络,您可以在需要定义其他限制政策时针对特定网络创建例外。

目标服务帐号

您可以指定目标服务帐号,以将分层防火墙政策规则限制为运行具有对指定服务帐号的访问权限的虚拟机。

规则的方向确定规则目标是源实例还是目标实例。实例包括虚拟机实例、GKE 集群和 App Engine 柔性环境实例。

  • 如果规则方向为入站,则目标定义了目标实例。

  • 如果规则方向为出站,则目标定义了来源实例。

指定目标网络和目标服务帐号是一项可选操作:

  • 如果未指定目标网络,则该规则适用于与该政策关联的节点下的所有 VPC 网络。

  • 如果未指定目标服务帐号,则该规则适用于与该政策关联的节点下的所有虚拟机实例。

  • 如果同时指定了目标网络和目标服务帐号,则规则仅适用于同时满足这两个定位条件的虚拟机实例。

协议和端口

与 VPC 防火墙规则类似,您必须在创建规则时指定一个或多个协议和端口限制条件。在规则中指定 TCP 或 UDP 时,您可以指定协议、协议和一个目的地端口或协议和端口范围;不能仅指定端口或目的地端口范围。您只能指定目的地端口。系统不支持基于来源端口的规则。

对于 IPv4 ICMP,请指定 icmp。防火墙规则不支持指定 ICMP 类型和代码。

您可以在防火墙规则中使用以下协议名称:tcpudpicmp(适用于 IPv4 ICMP)、espahsctpipip。对于所有其他协议,请使用 IANA 协议编号

许多协议在 IPv4 和 IPv6 中使用相同的名称和编号,但某些协议(如 ICMP)并非如此。

防火墙规则不支持 IPv6 逐跳协议。

日志记录

分层防火墙政策规则的日志记录与 VPC 防火墙规则日志记录相同,但以下方面除外:

  • 引用字段包含防火墙政策 ID 和一个数字,该数字表明政策关联的节点的层次结构级层。例如,0 表示政策应用于组织,1 表示政策应用于组织下的顶层文件夹。

  • 分层防火墙政策规则的日志包含一个 target_resource 字段,用于标识规则要应用到的 VPC 网络。

只能为 allowdeny 规则启用日志记录;不能为 goto_next 规则启用。

预定义规则

所有分层防火墙政策都有四个具有最低优先级的预定义 goto_next 规则。这些规则适用于任何与政策中明确定义的规则不匹配的连接,导致此类连接传递到较低级层的政策或网络规则。

IPv4 规则:

  • 目标为 0.0.0.0/0 且具有极低优先级 (2147483646) 的出站流量规则,用于将连接的处理发送到下一个较低级层的评估 (goto_next)。

  • 来源为 0.0.0.0/0 且具有极低优先级 (2147483647) 的入站流量规则,用于将连接的处理发送到下一个较低级层的评估 (goto_next)。

IPv6 规则:

  • 目标为 ::/0 且具有极低优先级 (2147483644) 的出站流量规则,用于将连接的处理发送到下一个较低级层的评估 (goto_next)。

  • 来源为 ::/0 且具有极低优先级 (2147483645) 的入站流量规则,用于将连接的处理发送到下一个较低级层的评估 (goto_next)。

这些预定义规则是可见的,但无法修改或删除。这些规则不同于 VPC 网络的隐式和预填充的规则

Identity and Access Management (IAM) 角色

IAM 角色控制与分层防火墙政策相关的以下操作:

  • 创建位于特定节点的政策
  • 将政策与特定节点关联
  • 修改现有政策
  • 查看特定网络或虚拟机的有效防火墙规则

下表介绍了每个步骤所需的角色:

特性 必要角色
创建新的分层防火墙政策 政策所在节点上的 compute.orgFirewallPolicyAdmin 角色
将政策与节点相关联 针对目标节点的 compute.orgSecurityResourceAdmin 和/或 compute.orgFirewallPolicyAdmin _或_ compute.orgFirewallPolicyUser或政策所在的节点上
通过添加、更新或删除政策防火墙规则来修改政策 针对政策驻留的节点或政策本身上的 compute.orgFirewallPolicyAdmin 角色
删除政策 针对政策驻留的节点或政策本身上的 compute.orgFirewallPolicyAdmin 角色
查看 VPC 网络的有效防火墙规则 网络的以下任何角色:
compute.networkAdmin
compute.networkViewer
compute.securityAdmin
compute.securityReadOnly
compute.viewer
查看网络中虚拟机的有效防火墙规则 虚拟机的任何以下角色:
compute.instanceAdmin
compute.securityAdmin
compute.securityReadOnly
compute.viewer

以下角色与分层防火墙政策相关。

角色名称 说明
compute.orgFirewallPolicyAdmin 可以在节点或单个政策上授予。如果在节点上授予,则用户可以创建、更新和删除分层防火墙政策及其规则。如果针对单个政策授予权限,则允许用户更新政策规则,但不允许创建或删除政策。如果用户还具有该节点的 compute.orgSecurityResourceAdmin 角色,则该用户还可以将政策与节点相关联。
compute.orgSecurityResourceAdmin 该角色在组织级层授予或授予文件夹,允许文件夹级层管理员将政策与该节点关联。管理员还必须拥有政策拥有的节点的 compute.orgFirewallPolicyUsercompute.orgFirewallPolicyAdmim 角色,才能使用政策。
compute.orgFirewallPolicyUser 授予节点或单个政策可以允许管理员使用与相应节点关联的各项政策或政策。用户还必须具有目标节点上的 compute.orgSecurityResourceAdmin 角色才能将政策与该节点关联。
compute.securityAdmin
compute.viewer
compute.networkUser
compute.networkViewer
允许用户查看应用于网络或实例的防火墙规则。
包括网络的 compute.networks.getEffectiveFirewalls 权限和实例的 compute.instances.getEffectiveFirewalls 权限。

在以下示例中,Joe 可以在 policies 文件夹中创建、修改和删除任何分层防火墙政策,但无法将分层防火墙政策关联到文件夹,因为他不具有任何文件夹的 orgSecurityResourceAdmin 角色。

但是,由于 Joe 向 Mary 授予了使用 policy-1 的权限,因此她可以列出该分层防火墙政策并将其与 dev-projects 文件夹或其任何后代关联。orgFirewallPolicyUser 角色不授予将政策与任何文件夹关联的权限;用户还必须具有目标文件夹的 orgSecurityResourceAdmin 角色。

policy-1 示例
policy-1 示例

管理分层防火墙政策资源

由于分层防火墙政策仅定义一组防火墙规则,而没有定义它们的应用范围,因此您可以从这些规则应用到的节点,在层次结构的不同部分创建这些资源。这样,您就可以将一个分层防火墙政策资源与组织中的多个文件夹关联。

在以下示例中,policy-1 应用于 dev-projectscorp-projects 文件夹,从而强制应用于这些文件夹中的所有项目。

政策位置和关联
政策位置和关联

修改政策的规则

您可以在政策中添加、移除和修改规则。每项更改都是单独进行的;在政策中没有批量更新规则的机制。更改会大致按照命令的执行顺序应用,但这是无法保证的。

如果您要对分层防火墙政策进行大量更改,并且需要确保同时还能应用这些政策,则可以将政策克隆到临时政策,并将临时政策分配给相同的节点。然后,您可以对原始政策进行更改,然后再将原始政策分配回这些节点。如需了解相关步骤,请参阅将规则从一个政策克隆到另一个政策

在以下示例中,policy-1 关联到 dev-projects 文件夹,并且您需要进行多项以原子方式应用的更改。新建一个名为 scratch-policy 的政策,然后将所有现有规则从 policy-1 复制到 scratch-policy 以进行修改。修改完毕后,将所有规则从 scratch-policy 复制回 policy-1

修改政策
修改政策

移动政策

分层防火墙政策(如项目)由文件夹或组织资源作为父级。随着文件夹架构的不断发展,您可能需要在删除某个文件夹之前将分层防火墙政策移动到新文件夹。删除文件夹时,该文件夹所拥有的政策也会被删除。

下图展示了在节点之间移动政策的关联或政策中规则的评估。

移动政策
移动政策

将分层防火墙政策与文件夹关联

分层防火墙政策只有在与组织或文件夹节点关联后才会强制执行。分层防火墙政策关联后,将应用于该组织或文件夹下所有网络中的所有虚拟机。

关联政策
关联政策

对资源层次结构的更改

对资源层次结构的更改可能需要一段时间才能传播到整个系统。我们建议您避免同时更新分层防火墙政策连接和资源层次结构,因为网络可能不会立即继承层次结构中新位置中定义的分层防火墙政策。

移动政策
移动政策

例如,如果要将 dept-A 文件夹从 dev-projects 文件夹移动到 eng-projects 文件夹,并将 policy-1 的关联更改为 eng-projects 而不是 dev-projects,请务必同时取消 policy-1dev-projects 的关联。如果 dev-projects 文件夹在其所有 VPC 网络的祖先实体更新之前失去其分层防火墙政策关联,这些 VPC 网络在短时间内不受 policy-1 的保护。

将分层防火墙政策与共享 VPC 结合使用

共享 VPC 场景中,连接到宿主项目网络的虚拟机接口受宿主项目的分层防火墙政策规则(而不是服务项目)的约束。

共享 VPC 中的虚拟机
共享 VPC 中的虚拟机

即使服务项目位于与宿主项目不同的文件夹下,共享网络中的虚拟机接口仍从宿主项目文件夹规则继承。

服务项目虚拟机从宿主项目继承规则
服务项目虚拟机从宿主项目继承规则

将分层防火墙政策与 VPC 网络对等互连结合使用

VPC 网络对等互连场景中,与每个 VPC 网络关联的虚拟机接口会继承相应 VPC 网络层次结构中的政策。以下是 VPC 网络对等互连示例,其中 VPC 对等互连网络属于不同的组织。

虚拟机从各自的网络继承
虚拟机从各自的网络继承

有效的防火墙规则

由于连接同时受分层防火墙政策规则和 VPC 防火墙规则的约束,因此查看影响单个网络或单个虚拟机接口的所有防火墙规则会很有帮助。

项目级管理员可能无权查看影响其虚拟机的分层防火墙政策中的规则。但是,如果用户有权查看网络的防火墙规则,则该用户可以查看应用于该网络的所有规则,即使这些规则是从文件夹或组织继承的也是如此。

网络有效防火墙政策

您可以查看应用于 VPC 网络的所有防火墙规则。该列表包括从分层防火墙政策继承的所有规则以及从 VPC 网络应用的所有规则。

对实例有效的防火墙规则

您可以查看应用于虚拟机的网络接口的所有防火墙规则。此列表包括继承自分层防火墙政策的所有规则以及从接口的 VPC 网络应用的所有规则。

规则按照从组织层级到 VPC 规则的顺序排列。仅显示应用于虚拟机接口的规则。不显示其他政策中的规则,因此用户无法查看组织的整体防火墙政策。

后续步骤