使用分层防火墙政策

本页面假定您熟悉分层防火墙政策概览中所述的概念。如需查看分层防火墙政策实施的示例,请参阅分层防火墙政策示例

限制

  • 分层防火墙政策规则只能使用 IP 范围来定义入站规则的来源。只有 VPC 防火墙规则支持来源标记和来源服务帐号。
  • 分层防火墙政策规则不支持使用网络标记定义目标。您必须改用目标 VPC 网络或目标服务帐号。
  • 可以在文件夹级层和组织级层应用防火墙规则,但不能在 VPC 网络级层应用。VPC 网络支持常规 VPC 防火墙规则。
  • 只有一个防火墙政策可以与节点(文件夹或组织)关联,但文件夹下的虚拟机 (VM) 实例可以从虚拟机上方的整个节点层次结构中继承规则。
  • 防火墙规则日志记录支持 allowdeny 规则,但不支持 goto_next 规则。
  • 防火墙规则不支持 IPv6 逐跳协议。

防火墙政策任务

创建防火墙政策

您可以在组织层次结构的任何节点、组织或文件夹中创建政策。创建政策后,您可以将其与组织的任何节点相关联。关联政策后,政策的规则将对层次结构中关联节点下的虚拟机有效。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或组织内的文件夹。

  3. 点击创建防火墙政策

  4. 为政策指定名称

  5. 如果要为政策创建规则,请点击继续,然后点击添加规则

    如需了解详情,请参阅创建防火墙规则

  6. 如果要将政策与节点关联,请点击继续,然后点击关联

    如需了解详情,请参阅将政策与组织或文件夹相关联

  7. 点击创建

gcloud

gcloud compute firewall-policies create \
    [--organization ORG_ID] | --folder FOLDER_ID] \
    --short-name SHORT_NAME

指定下列内容:

  • ORG_ID:您的组织的 ID
    如果您要在组织级创建政策,请指定此 ID。此 ID 仅指明政策的适用范围;它不会自动将政策与组织节点相关联。
  • FOLDER_ID:文件夹的 ID
    如果要在给定文件夹中创建政策,请指定此 ID。此 ID 仅指明政策的适用范围;它不会自动将政策与该文件夹相关联。
  • SHORT_NAME:政策的名称
    使用 Google Cloud CLI 创建的政策有两个名称:系统生成的名称和您提供的简称。使用 Google Cloud CLI 更新现有政策时,您可以提供系统生成的名称或简称以及组织 ID。使用 API 更新政策时,您必须提供系统生成的名称。

创建防火墙规则

必须在分层防火墙政策中创建分层防火墙政策规则。在将包含政策与节点相关联之前,这些规则处于无效状态。

每条分层防火墙政策规则可以包含 IPv4 或 IPv6 范围,但不能同时包含这两者。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策名称。

  4. 点击添加规则

  5. 填充规则字段:

    1. 优先级:规则的数字评估顺序。这些规则按照从最高到最低的优先级进行评估,其中 0 是最高优先级。每条规则的优先级都必须唯一。最好向规则提供允许稍后插入的优先级编号(如 100200300)。
    2. 日志集合设置为开启关闭
    3. 流量方向下,指定此规则是入站规则还是出站规则。
    4. 对匹配项执行的操作下,指定是允许(允许)还是拒绝(拒绝)与规则匹配的连接,还是将连接评估传递到层次结构中的下一个较低防火墙规则(转到下一个)。
    5. 可选:您可以将规则仅限制为某些网络,方法是在目标网络字段中指定。
    6. 可选:您可以通过在目标服务帐号字段中指定帐号,将规则限制为运行对某些服务帐号具有访问权限的虚拟机
    7. 如果要创建入站规则,请指定此规则适用的来源 IP 范围。如果要创建出站规则,请指定此规则适用的目标 IP 范围。在这两种情况下,请为所有 IPv4 地址指定 0.0.0.0/0,或为所有 IPv6 地址指定 ::/0。给定的规则可以包含 IPv4 或 IPv6 地址范围,但不能同时包含两者。
    8. 协议和端口下,指定规则适用于所有协议和所有目标端口,或指定应用哪些协议和端口。

      如需指定 IPv4 ICMP,请使用 icmp 或协议编号 1。如需指定 IPv6 ICMP,请使用协议编号 58。如需详细了解协议,请参阅协议和端口

    9. 点击创建

  6. 点击添加规则以添加其他规则。点击继续 > 关联以将政策与节点相关联,或点击创建以创建政策。

gcloud

gcloud compute firewall-policies rules create PRIORITY \
    [--organization ORG_ID] \
    --firewall-policy POLICY_NAME \
    [--direction DIRECTION] \
    [--src-ip-ranges IP_RANGES] \
    [--dest-ip-ranges IP_RANGES ] \
    --action ACTION \
    [--layer4-configs PROTOCOL_PORT] \
    [--target-resources=NETWORKS] \
    [--target-service-accounts=SERVICE_ACCOUNTS] \
    [--enable-logging | --no-enable-logging] \
    [--disabled]

指定下列内容:

  • PRIORITY:规则的数字评估顺序。这些规则按照从最高到最低的优先级进行评估,其中 0 是最高优先级。每条规则的优先级都必须唯一。最好向规则提供允许稍后插入的优先级编号(如 100200300)。
  • ORG_ID:您的组织的 ID
  • POLICY_NAME:政策的简称或系统生成的名称
  • DIRECTION:指明规则是 ingress 规则还是 egress 规则;默认值为 ingress
    • 如果 DIRECTIONingress,则添加 --src-ip-ranges
    • 如果 DIRECTIONegress,则添加 --dest-ip-ranges
  • IP_RANGES:CIDR 格式的 IP 地址范围(所有 IPv4 范围或所有 IPv6 范围)的英文逗号分隔列表;例如:
    --src-ip-ranges=10.100.0.1/32,10.200.0.0/24
    --src-ip-ranges=2001:0db8:1562::/96,2001:0db8:1723::/96
  • ACTION:以下操作之一:
    • allow:允许与规则匹配的连接
    • deny:拒绝与规则匹配的连接
    • goto_next:将连接评估传递到层次结构中的下一个级别(文件夹或网络)
  • PROTOCOL_PORT:以英文逗号分隔的协议名称或数字 (tcp,17)、协议和目的地端口 (tcp:80) 或协议和目的地端口范围 (tcp:5000-6000) 的列表。
    您不能指定不含协议的端口或端口范围。 对于 ICMP,您无法指定端口或端口范围;例如:--layer4-configs tcp:80,tcp:443,udp:4000-5000,icmp
    如需指定 IPv4 ICMP,请使用 icmp 或协议编号 1。如需指定 IPv6 ICMP,请使用协议编号 58。如需了解详情,请参阅协议和端口
  • NETWORKS:应用此规则的网络的逗号分隔列表;如果省略,规则将应用于节点下方的所有网络。如需了解详情,请参阅目标
  • SERVICE_ACCOUNTS:服务帐号的逗号分隔列表;规则仅应用于有权访问指定的服务帐号的运行中的虚拟机。如需了解详情,请参阅目标
  • --enable-logging--no-enable-logging:为给定规则启用或停用防火墙规则日志记录
  • --disabled:指明在处理连接时不予考虑防火墙规则(如果存在);忽略此标志将启用规则,也可以指定 --no-disabled

将政策与组织或文件夹相关联

将政策与节点关联,以激活层次结构中该节点下方任何虚拟机的政策规则。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。

  4. 点击关联对象标签页。

  5. 点击关联

  6. 选择组织根目录或组织内的文件夹。

  7. 点击关联

gcloud

gcloud compute firewall-policies associations create \
    --firewall-policy POLICY_NAME \
    --organization ORG_ID \
    [ --folder FOLDER_ID ] \
    [ --name ASSOCIATION_NAME ] \
    [ --replace-association-on-target ]

指定下列内容:

  • POLICY_NAME:政策的简称或系统生成的名称
  • ORG_ID:您的组织的 ID
  • FOLDER_ID:如果要将政策与文件夹相关联,请在此处指定;如果要将政策关联到组织级层,请省略
  • ASSOCIATION_NAME:关联的可选名称;如果未指定,则将名称设置为“组织 ORG_ID”或“文件夹 FOLDER_ID
  • --replace-association-on-target
    默认情况下,如果您尝试将关联插入到已有关联的组织或文件夹节点,则该方法将失败。如果指定此标志,则在创建新关联的同时删除现有关联。这可防止节点在转换期间没有政策。

将政策从一个节点移动到另一个节点

移动政策会更改拥有该政策的节点。如需移动政策,您必须同时拥有新节点和新节点的 move 权限。

移动政策不会影响任何现有政策关联或现有规则的评估,但可能会影响谁有权在移动后修改或关联政策。

控制台

使用 Google Cloud CLI 执行此过程。

gcloud

gcloud compute firewall-policies move POLICY_NAME \
    --organization ORG_ID \
    [--folder FOLDER_ID]

指定下列内容:

  • POLICY_NAME:您要迁移的政策的简称或系统生成的名称
  • ORG_ID:您的组织的 ID;如果要将政策移动到组织节点,请指定此 ID,而不是指定文件夹
  • FOLDER_ID:如果要将政策与文件夹相关联,请在此处指定;如果要将政策关联到组织节点,请省略

更新政策说明

唯一可以更新的政策字段是说明字段。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击修改

  4. 修改说明

  5. 点击保存

gcloud

gcloud compute firewall-policies update POLICY_NAME \
    --description DESCRIPTION \
    --organization ORG_ID

列出政策

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

    与该节点关联或由该节点继承的防火墙政策部分显示与资源层次结构中的此节点关联的政策。

    位于该节点的防火墙政策部分列出此节点在资源层次结构中拥有的政策。此类政策可能未与此节点关联,但可用于与此节点或其他节点关联。

gcloud

gcloud compute firewall-policies list \
    [--organization ORG_ID | --folder FOLDER_ID]

说明政策

您可以查看政策的所有详细信息,包括其所有防火墙规则。此外,您还可以查看政策中的所有规则中的特性。这些特性会计入每项政策的限制

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。

gcloud

gcloud compute firewall-policies describe POLICY_NAME \
    --organization ORG_ID

删除政策

您必须先删除组织防火墙政策的所有关联,然后才能将其删除。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您要删除的政策。

  4. 点击关联对象标签页。

  5. 选择所有关联。

  6. 点击移除

  7. 移除所有关联后,点击删除

gcloud

  1. 列出与防火墙政策关联的所有节点:

    gcloud compute firewall-policies describe POLICY_NAME \
        --organization ORG_ID
    
  2. 删除各个关联。如需移除关联,您必须在关联的节点或该节点的祖先实体上拥有 compute.orgSecurityResourceAdmin 角色。

    gcloud compute firewall-policies associations delete NODE_NAME \
        --organization ORG_ID \
        --firewall-policy POLICY_NAME
    
  3. 删除政策:

    gcloud compute firewall-policies delete POLICY_NAME \
        --organization ORG_ID
    

列出节点的关联

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 关联的政策和继承的政策将列在与该节点关联或由该节点继承的防火墙政策下方。

gcloud

gcloud compute firewall-policies associations list \
  [--organization ORG_ID | --folder FOLDER_ID]

列出政策的关联

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。

  4. 点击关联标签页。

  5. 该表中列出了关联。

gcloud

gcloud compute firewall-policies describe POLICY_ID

删除关联

如需停止对组织或文件夹强制执行防火墙政策,请删除关联。

但是,如果您打算将一项防火墙政策替换为另一项安全政策,则无需先删除现有关联。否则,系统会在一段时间内没有强制执行任何政策。请改为在关联新政策时替换现有政策。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。

  4. 点击关联标签页。

  5. 选择要删除的关联。

  6. 点击移除

gcloud

gcloud compute firewall-policies associations delete ASSOCIATION_NAME \
    --firewall-policy POLICY_NAME \
    --organization ORG_ID

规则任务

在现有防火墙政策中创建规则

请参阅创建防火墙规则

列出政策中的所有规则

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。规则列在防火墙规则标签页中。

gcloud

gcloud compute firewall-policies list-rules POLICY_NAME \
    --organization ORG_ID

说明规则

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。

  4. 点击规则的优先级。

gcloud

gcloud compute firewall-policies rules describe PRIORITY \
    --organization ORG_ID \
    --firewall-policy POLICY_NAME

指定下列内容:

  • PRIORITY:要查看的规则的优先级;因为每条规则必须具有唯一的优先级,所以此设置唯一标识规则
  • ORG_ID:您的组织的 ID
  • POLICY_NAME:包含规则的政策的简称或系统生成的名称

更新规则

如需了解字段说明,请参阅创建防火墙规则

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。

  4. 点击规则的优先级。

  5. 点击修改

  6. 修改要更改的字段。

  7. 点击保存

gcloud

gcloud compute firewall-policies rules update RULE_NAME \
    --firewall-policy POLICY_NAME \
    --organization ORG_ID \
    [...fields you want to modify...]

将规则从一个政策克隆到另一个政策

从目标政策中移除所有规则,并将其替换为来源政策中的规则。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击要从中复制规则的政策。

  4. 点击屏幕顶部的克隆

  5. 提供目标政策的名称。

  6. 如果您想立即关联新政策,请点击继续 > 关联

  7. 点击克隆

gcloud

gcloud compute firewall-policies clone-rules POLICY_NAME \
    --organization ORG_ID \
    --source-firewall-policy SOURCE_POLICY

指定下列内容:

  • POLICY_NAME:接收所复制规则的政策
  • ORG_ID:您的组织的 ID
  • SOURCE_POLICY:从中复制规则的政策;必须是资源的网址

从政策中删除规则

从政策中删除规则会从所有继承该规则的虚拟机中移除该规则。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 在项目选择器下拉菜单中,选择您的组织 ID 或包含政策的文件夹。

  3. 点击您的政策。

  4. 选择要删除的规则。

  5. 点击删除

gcloud

gcloud compute firewall-policies rules delete PRIORITY \
    --organization ORG_ID \
    --firewall-policy POLICY_NAME

指定下列内容:

  • PRIORITY:您要从政策中删除的规则的优先级
  • ORG_ID:您的组织的 ID
  • POLICY_NAME:包含规则的政策

获取网络的有效防火墙规则

显示应用于指定 VPC 网络的所有分层防火墙政策规则和 VPC 防火墙规则。

控制台

  1. 在 Google Cloud Console 中,转到 VPC 网络页面。

    转到“VPC 网络”页面

  2. 点击要查看其防火墙政策规则的网络。

  3. 点击防火墙政策

  4. 展开每个防火墙政策以查看适用于此网络的规则。

gcloud

gcloud compute networks get-effective-firewalls NETWORK_NAME

指定下列内容:

  • NETWORK_NAME:要获取有效规则的网络

您还可以在防火墙页面中查看网络的有效防火墙规则。

控制台

  1. 在 Google Cloud Console 中,转到防火墙页面。

    转到“防火墙”页面

  2. 防火墙政策列在此项目继承的防火墙政策部分中。

  3. 点击每项防火墙政策以查看适用于此网络的规则。

获取虚拟机接口的有效防火墙规则

显示应用于指定 Compute Engine 虚拟机接口的所有分层防火墙政策规则和 VPC 防火墙规则。

控制台

  1. 在 Google Cloud Console 中,转到“虚拟机实例”页面。

    转到“虚拟机实例”页面

  2. 在项目选择器下拉菜单中,选择包含虚拟机的项目。

  3. 点击虚拟机。

  4. 网络接口下方,点击接口。

  5. 有效防火墙规则会显示在防火墙和路由详情下方。

gcloud

gcloud compute instances network-interfaces get-effective-firewalls INSTANCE_NAME \
    [--network-interface INTERFACE \
    [--zone ZONE]

指定下列内容:

  • INSTANCE_NAME:要获取有效规则的虚拟机;如果未指定接口,则返回主接口 (nic0) 的规则
  • INTERFACE:要获取有效规则的虚拟机接口;默认值为 nic0
  • ZONE:虚拟机的区域;如果已将所需区域设置为默认区域,则为可选

问题排查

本部分包含您可能遇到的错误消息的说明。

FirewallPolicy 不能指定名称。系统将会提供一个版本。

您不能指定政策名称。分层防火墙政策“名称”是创建政策时 Google Cloud 生成的数字 ID。但是,您可以在多种上下文中指定好友的简称

FirewallPolicy 不能在创建时指定关联。

只有在创建分层防火墙政策后才能创建关联。

无法将防火墙政策移至其他组织。

分层防火墙政策移动必须位于同一个组织内。

附件已具有关联。如果您想替换旧关联,请设置“将现有关联替换为 true”的选项。

如果节点已附加分层防火墙政策,则附加操作将失败,除非替换现有的关联设置为 true。

规则不能具有相同的优先级。

在分层防火墙政策中,规则的优先级必须是唯一的。

必须在防火墙规则政策中指定方向。

通过直接发送 REST 请求创建分层防火墙政策规则时,必须指定规则的方向。如果使用 Google Cloud CLI 且未指定方向,则默认为 INGRESS。

不能在 goto_next 规则中指定 enable_logging。

带有 goto_next 操作的规则不允许使用防火墙日志记录,因为 goto_next 操作用于表示不同防火墙政策的评估顺序,并且不是终端操作(例如 ALLOW 或 DENY)。

必须在防火墙规则政策中指定 IP 协议。

防火墙规则政策中的 DestinationPort 配置必须设置协议字段,例如 TCP、UDP 和 ICMP。

不应为出站方向指定 src 范围。

出站规则只能包含目标 IP 地址范围。

必须指定出站方向的范围。

出站规则必须在规则中指定目标 IP 范围。

不应指定入站方向的目标范围。

入站规则只能包含来源 IP 地址范围。

必须指定入站方向的 src 范围。

入站规则必须指定来源 IP 地址范围。分层防火墙政策不支持来源标记和来源服务帐号。

如需详细了解防火墙规则规则的问题排查,请参阅 VPC 防火墙规则问题排查

后续步骤