使用分层防火墙政策

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

限制

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

防火墙政策任务

创建防火墙政策

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

控制台

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

    转到“防火墙”页面

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

  3. 点击创建防火墙政策

  4. 为政策指定名称

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

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

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

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

  7. 点击创建

gcloud

gcloud beta compute org-security-policies create \
    [--organization ORG_ID] | --folder FOLDER_ID] \
    --display-name DISPLAY_NAME

替换以下内容:

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

创建防火墙规则

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

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策名称。

  4. 点击添加规则

  5. 填充规则字段:

    1. 优先级:规则的数字评估顺序。将先评估优先级为 1 的规则。每条规则的优先级都必须唯一。最好向规则提供允许稍后插入的优先级编号(如 100、200、300)。
    2. 日志集合设置为开启关闭
    3. 流量方向下,指定此规则是入站规则还是出站规则。
    4. 对匹配项执行的操作下,指定是允许(允许)还是拒绝(拒绝)与规则匹配的连接,还是将连接评估传递到层次结构中的下一个较低防火墙规则(转到下一个)。
    5. 可选:您可以将规则仅限制为某些网络,方法是在目标网络字段中指定。
    6. 可选:您可以通过在目标服务帐号字段中指定服务帐号,将规则限制为以指定服务帐号运行的虚拟机。
    7. 如果要创建入站规则,请指定此规则适用的来源 IP 范围。如果要创建出站规则,请指定此规则适用的目标 IP 范围。在这两种情况下,请为所有 IP 地址指定 0.0.0.0/0
    8. 协议和端口下,指定该规则适用于所有协议和端口,或者指定要应用的协议和端口。
    9. 点击创建
  6. 点击添加规则以添加其他规则。点击继续 > 关联以将政策与节点相关联,或点击创建以创建政策。

gcloud

gcloud beta compute org-security-policies rules create PRIORITY \
    --organization ORG_ID \
    --security-policy POLICY_NAME \
    --direction DIRECTION \
    --action ACTION \
    --layer4-configs PROTOCOL_PORT \
    --src-ip-ranges IP_RANGES \
    [--enable-logging | --no-enable-logging]

替换以下内容:

  • PRIORITY:规则的数字评估顺序
    先评估优先级为 1 的规则。每条规则的优先级都必须唯一。最好向规则提供允许稍后插入的优先级编号(如 100、200、300)。
  • ORG_ID:您的组织的 ID
  • POLICY_NAME:政策的显示名或系统生成的名称
  • DIRECTION:指明规则是 ingress 规则还是 egress 规则;默认值为 ingress
  • ACTION 是以下值之一:
    • allow:允许与规则匹配的连接
    • deny:拒绝与规则匹配的连接
    • goto_next:将连接评估传递到层次结构中的下一个级别(文件夹或网络)
  • PROTOCOL_PORT:目标协议(tcp、udp、icmp、esp、ah、sctp)、协议和端口 (tcp:80) 或协议和端口范围 (tcp:5000-6000) 的英文逗号分隔列表
    您不能指定不含协议的端口或端口范围。对于 icmp,您无法指定端口或端口范围;例如:
    --layer4-configs tcp:80, tcp:443, udp:4000-5000, icmp
  • IP_RANGES:CIDR 格式的 IP 范围的英文逗号分隔列表;例如:
    --src-ip-ranges 10.100.0.1/32, 10.200.0.0/24

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

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

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

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

  5. 点击关联

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

  7. 点击关联

gcloud

gcloud beta compute org-security-policies associations create \
    --security-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 权限。

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

控制台

使用 gcloud 命令执行此过程。

gcloud

gcloud beta compute org-security-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 beta compute org-security-policies list-rules POLICY_NAME \
    --organization ORG_ID

列出政策

控制台

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

    转到“防火墙”页面

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

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

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

gcloud

gcloud beta compute org-security-policies list \
    [--organization ORG_ID | --folder FOLDER_ID]

说明政策

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

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

gcloud

gcloud beta compute org-security-policies describe POLICY_NAME \
    --organization ORG_ID

删除政策

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

控制台

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

    转到“防火墙”页面

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

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

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

  5. 选择所有关联。

  6. 点击移除

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

gcloud

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

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

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

    gcloud beta compute org-security-policies delete POLICY_NAME \
        --organization ORG_ID
    

列出节点的关联

控制台

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

    转到“防火墙”页面

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

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

gcloud

gcloud beta compute org-security-policies associations list \
  [--organization ORG_ID | --folder FOLDER_ID]

列出政策的关联

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

  4. 点击关联标签页。

  5. 该表中列出了关联。

gcloud

gcloud beta compute org-security-policies describe POLICY_ID

删除关联

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

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

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

  4. 点击关联标签页。

  5. 选择要删除的关联。

  6. 点击移除

gcloud

gcloud beta compute org-security-policies associations delete ASSOCIATION_NAME \
    --security-policy POLICY_NAME \
    --organization ORG_ID

规则任务

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

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

  4. 点击添加规则

  5. 填充规则字段:

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

gcloud

gcloud beta compute org-security-policies rules create PRIORITY \
    --organization ORG_ID \
    --security-policy POLICY_NAME \
    [--description DESCRIPTION \
    [--action ACTION] \
    [--dest-ip-ranges DEST_RANGES] \
    [--layer4-configs PROTOCOL_PORT] \
    [--direction DIRECTION] \
    [--disabled] \
    [--src-ip-ranges SRC_RANGES] \
    [--target-resources NETWORKS] \
    [--target-service-accounts SERVICE_ACCOUNTS] \
    [--enable-logging | --no-enable-logging]

替换以下内容:

  • PRIORITY:规则的数字评估顺序
    先评估优先级为 1 的规则。每条规则的优先级都必须唯一。最好向规则提供允许稍后插入的优先级编号(如 100、200、300)。
  • ORG_ID:您的组织的 ID
  • POLICY_NAME:要包含规则的政策的名称
  • DESCRIPTION:规则的文本说明
  • ACTION 是以下值之一:
    • allow:允许与规则匹配的连接
    • deny:拒绝与规则匹配的连接
    • goto_next:将连接评估传递到层次结构中的下一个级别(文件夹或网络)
  • DEST_RANGES:仅针对 egress 规则,CIDR 格式的 IP 范围的英文逗号分隔列表,指明受该规则影响的目标 IP 地址;例如:
    --dest-ip-ranges 10.100.0.1/32, 10.200.0.0/24
  • PROTOCOL_PORT:目标协议(tcp、udp、icmp、esp、ah、sctp)、协议和端口 (tcp:80) 或协议和端口范围 (tcp:5000-6000) 的英文逗号分隔列表
    TCP 和 UDP 必须包含端口或端口范围。您不能指定不含协议的端口或端口范围。对于 icmp,您无法指定端口或端口范围;例如:
    --layer4-configs tcp:80, tcp:443, udp:4000-5000, icmp
  • DIRECTION:指明规则是 ingress 规则还是 egress 规则;默认值为 ingress
    目标范围仅支持 egress 连接。来源范围仅支持 ingress 连接。
  • --disabled:指明在处理连接时不予考虑防火墙规则(如果存在);移除此标志将启用规则,也可以指定 --no-disabled
  • SRC_RANGES:仅针对 ingress 规则,CIDR 格式的 IP 范围的英文逗号分隔列表,指明受该规则影响的来源 IP 地址;例如:
    --src-ip-ranges 10.100.0.1/32, 10.200.0.0/24
  • NETWORKS:应用此规则的网络的英文逗号分隔列表;如果省略,则规则将应用于节点下方的所有网络
  • SERVICE_ACCOUNTS:服务帐号的英文逗号分隔列表;该规则仅适用于此服务帐号的虚拟机
  • --enable-logging--no-enable-logging:为给定规则启用或停用防火墙规则日志记录

列出政策中的所有规则

控制台

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

    转到“防火墙”页面

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

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

gcloud

gcloud beta compute org-security-policies list-rules POLICY_NAME \
    --organization ORG_ID

说明规则

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

  4. 点击规则的优先级。

gcloud

gcloud beta compute org-security-policies rules describe PRIORITY \
    --organization ORG_ID \
    --security-policy POLICY_NAME

替换以下内容:

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

更新规则

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

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

  4. 点击规则的优先级。

  5. 点击修改

  6. 修改要更改的字段。

  7. 点击保存

gcloud

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

将规则从一个政策复制到另一个政策

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

控制台

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

    转到“防火墙”页面

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

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

  4. 点击屏幕顶部的克隆

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

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

  7. 点击克隆

gcloud

gcloud beta compute org-security-policies copy-rules POLICY_NAME \
    --organization ORG_ID \
    --source-security-policy SOURCE_POLICY

替换以下内容:

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

从政策中删除规则

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

控制台

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

    转到“防火墙”页面

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

  3. 点击您的政策。

  4. 选择要删除的规则。

  5. 点击删除

gcloud

gcloud beta compute org-security-policies rules delete PRIORITY \
    --organization ORG_ID \
    --security-policy POLICY_NAME

替换以下内容:

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

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

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

控制台

使用 gcloud 命令执行此过程。

gcloud

gcloud beta compute networks get-effective-firewalls NETWORK_NAME

替换以下内容:

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

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

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

控制台

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

    转到“虚拟机实例”页面

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

  3. 点击虚拟机。

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

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

gcloud

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

替换以下内容:

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

后续步骤