分层防火墙政策示例

本页面展示了分层防火墙政策实现的示例。其假定您熟悉分层防火墙政策概览中所述的概念。

示例 1:允许探测器访问所有虚拟机

在此使用场景中,必须使用特定端口 (123) 上特定 IP 地址 (10.100.0.1) 的探测器来扫描和记录组织中的所有虚拟机 (VM) 实例。组织安全管理员可确保没有网络管理员或其他安全管理员可以在组织的任何虚拟机实例中阻止该端口。

此示例假定未部署文件夹级安全政策。

下图介绍了此使用场景的配置设置。

允许探测器访问所有虚拟机
允许探测器访问所有虚拟机

在虚拟机中应用的有效政策

在此示例中,在评估层次结构中的规则后,有效的虚拟机防火墙政策如下。

入站连接

  • 根据政策的规定,允许使用来源 IP 为 10.100.0.1 和目标端口为 123 的入站连接。在匹配组织政策后,系统将允许探测连接,并且不会在层次结构中评估其他规则。

  • 对于除来源 IP 10.100.0.1 和目标端口 123 之外的任何入站连接,就没有匹配项;因此,应用 VPC 防火墙规则中的默认入站规则,拒绝连接。

出站连接

  • 层次结构定义的规则中没有匹配的规则。因此,应用 VPC 防火墙规则中的默认出站规则,允许出站连接。

如何配置

  1. 创建安全政策以包含规则:

    gcloud beta compute org-security-policies create \
         --organization 123456789012 \
         --display-name "example-security-policy" \
         --description "rules that apply to all VMs in the organization"
    
  2. 将规则添加到安全政策:

    gcloud beta compute org-security-policies rules create 1000 \
        --action allow \
        --description "allow-scan-probe" \
        --layer4-configs tcp:123 \
        --security-policy example-security-policy \
        --organization 123456789012 \
        --src-ip-ranges 10.100.0.1/32
  3. 将安全政策与组织节点相关联:

    gcloud beta compute org-security-policies associations create \
        --security-policy example-security-policy \
        --organization 123456789012

示例 2:拒绝除特定端口之外的所有外部连接

在此使用场景中,防火墙政策会阻止来自外部互联网来源的所有连接(端口 8044322 上的连接除外)。无论防火墙规则处于 VPC 网络级层中的哪一层级,任何非入站端口的入站连接 8044322 都被屏蔽。对于端口 8044322 上的任何连接,政策都会将要在其各自的 VPC 网络中强制执行这些端口的行为委派给 VPC 安全管理员。

下图介绍了此使用场景的配置设置。

拒绝除特定端口之外的所有外部连接
拒绝除特定端口之外的所有外部连接

在虚拟机中应用的有效政策

在此示例中,在评估层次结构中的规则后,有效的虚拟机防火墙政策如下。

入站连接

  • 来自 10.0.0.0/8 的任何入站连接都将与优先级最高的组织级规则 delegate-internal-traffic 匹配,并绕过组织政策中的其他规则,以针对 VPC 网络级层配置的防火墙规则进行评估。在 VPC 防火墙规则中,允许来自 10.2.0.0/16 的连接,其余连接针对隐式入站规则(即 deny)进行评估。

  • 如果入站连接的来源 IP 地址范围对于端口 2280443 而言不是 10.0.0.0/8,则会委托给下一级,其中端口 80443 会被接受,但 22 会被拒绝。

  • 屏蔽所有其他连接。

出站连接

  • 层次结构定义的规则中没有匹配的规则。因此,应用 VPC 防火墙规则中的默认出站规则,允许出站连接。

如何配置

  1. 创建安全政策以包含规则:

    gcloud beta compute org-security-policies create \
        --organization 123456789012 \
        --display-name "example-security-policy" \
        --description "rules that apply to all VMs in the organization"
    
  2. 添加规则,将内部连接委托给项目所有者:

    gcloud beta compute org-security-policies rules create 1000 \
        --action goto_next \
        --description "delegate-internal-traffic" \
        --organization 123456789012 \
        --security-policy "example-security-policy" \
        --src-ip-ranges 10.0.0.0/8
    
  3. 添加规则,将外部端口 80/443/22 连接规则授予项目所有者:

    gcloud beta compute org-security-policies rules create 2000 \
        --action goto_next \
        --description "delegate-external-traffic-spec-ports" \
        --layer4-configs tcp:80,tcp:443,tcp:22 \
        --organization 123456789012 \
        --security-policy "example-security-policy"
  4. 添加规则以拒绝所有其他外部连接:

    gcloud beta compute org-security-policies rules create 3000 \
        --action deny \
        --description "block-other-external-traffic-spec-ports" \
        --organization 123456789012 \
        --security-policy "example-security-policy" \
        --src-ip-ranges 0.0.0.0/0
    
  5. 将安全政策与组织节点相关联:

    gcloud beta compute org-security-policies associations create \
        --organization 123456789012 \
        --security-policy "example-security-policy"
  6. 在项目中,添加防火墙规则以允许来自指定子网的内部连接:

    gcloud beta compute firewall-rules create allow-internal-traffic \
        --action allow \
        --priority 1000 \
        --source-ranges 10.2.0.0/16
    
  7. 在项目中,添加防火墙规则以允许外部 TCP 80/443 连接:

    gcloud beta compute firewall-rules create allow-external-traffic \
        --action allow \
        --priority 1000 \
        --rules tcp:80,tcp:443
    

示例 3:拒绝来自特定 VPC 网络的出站连接

在此使用场景中,组织安全管理员不允许在任何 VPC 网络中的出站连接(VPC 网络 myvpc 中的连接除外)。管理员将决定公开到公共服务器 203.0.113.1 的出站流量委托给 myvpc 安全管理员。

此示例假定未部署文件夹级安全政策。下图介绍了此使用场景的配置设置。

拒绝出站连接(特定网络除外)
拒绝出站连接(特定网络除外)

在虚拟机中应用的有效政策

在此示例中,在评估层次结构中的规则后,有效的虚拟机防火墙政策如下。

入站连接

  • 层次结构定义的规则中没有匹配的规则。因此,应用 VPC 防火墙规则中的默认入站规则,拒绝出站连接。

出站连接

  • 允许发往 203.0.113.1 的所有出站连接;其余连接会被拒绝。目标为 203.0.113.1 的所有出站连接都与 delegate-egress-my-vpc 规则匹配,并绕过组织政策中的其余规则。

  • 然后,系统会根据 myvpc 中配置的防火墙规则评估出站流量连接。默认规则允许出站连接。组织级层政策中的 block-egress-traffic-sepc-ports 规则会拒绝其余连接。

如何配置

  1. 创建安全政策以包含规则:

    gcloud beta compute org-security-policies create \
        --organization 123456789012 \
        --display-name "example-security-policy" \
        --description "rules that apply to all VMs in the organization"
    
  2. 添加规则以授予某些出站流量连接:

    gcloud beta compute org-security-policies rules create 1000 \
        --action goto_next \
        --description "delegate-egress-myvpc" \
        --dest-ip-ranges 203.0.113.1/32
        --direction egress
        --organization 123456789012 \
        --display-name "example-security-policy" \
        --target-resources projects/PROJECT_ID/networks/myvpc
    
  3. 添加规则以拒绝所有其他出站连接:

    gcloud beta compute org-security-policies rules create 2000 \
        --action deny \
        --description "block-egress-external-traffic-spec-ports" \
        --direction egress \
        --dest-ip-ranges 0.0.0.0/0 \
        --organization 123456789012 \
        --display-name "example-security-policy"
  4. 将安全政策与组织节点相关联:

    gcloud beta compute org-security-policies associations create \
        --organization 123456789012 \
        --display-name "example-security-policy"

示例 4:配置组织范围的规则和特定于文件夹的规则

在此使用场景中,安全管理员不允许与组织中的任何虚拟机建立入站连接,但允许范围为 203.0.113.0/24 内的虚拟机除外。管理员将进一步决策如何处理从 203.0.113.0/24 到文件夹级层安全管理的连接。

有两个不同的文件夹:

  • Folder1,该政策仅允许后端虚拟机上的端口 80443,且阻止其余端口。
  • Folder2,其中政策强制要求文件夹 2 中的虚拟机无法阻止来自 IP 203.0.113.1 的任何端口。Folder2 安全管理员将其他决策委托给 VPC 网络管理员,该管理员决定打开端口 8044322,并拒绝其余端口。

下图介绍了此使用场景的配置设置。

整个单位可查看和特定于文件夹的规则
整个单位可查看和特定于文件夹的规则

在虚拟机中应用的有效政策

在此示例中,在评估层次结构中的规则后,有效的虚拟机防火墙政策如下。

对于属于 my-vpc 的虚拟机

  • 允许来自 TCP 端口 80443203.0.113.0/24 的所有入站连接。拒绝其他任何入站连接。

  • 由于更高级别的安全政策规则没有匹配项,因此所有出站连接都按照所应用的 VPC 防火墙规则接受。

对于属于 vpc2 的虚拟机

  • 允许来自 203.0.113.1 的所有入站连接。除 203.0.113.1 之外的其他 203.0.113.0/24 来源的入站连接仅允许用于端口 8044322。拒绝其他所有入站连接。

  • 由于更高级别的安全政策规则没有匹配项,因此所有出站连接都按照所应用的 VPC 防火墙规则接受。

如何配置

  1. 创建安全政策以包含 Org_A 的规则:

    gcloud beta compute org-security-policies create \
        --organization 100000000000 \
        --display-name "example-security-policy-org-a" \
        --description "rules that apply to all VMs in the organization"
    
  2. 添加规则以将 203.0.113.0/24 委托给项目所有者:

    gcloud beta compute org-security-policies rules create 1000 \
        --action goto_next \
        --description "delegate-ingress" \
        --organization 100000000000 \
        --display-name "example-security-policy-org-a" \
        --src-ip-ranges 203.0.113.0/24
    
  3. 添加规则以拒绝所有其他外部连接:

    gcloud beta compute org-security-policies rules create 2000 \
        --action deny
        --description "block-ingress-external-traffic"
        --organization 100000000000 \
        --display-name "example-security-policy-org-a" \
        --src-ip-ranges 0.0.0.0/0
    
  4. 将安全政策与组织节点相关联:

    gcloud beta compute org-security-policies associations create \
        --organization 100000000000 \
        --display-name "example-security-policy-org-a"
  5. 创建安全政策以包含 Folder1 的规则:

    gcloud beta compute org-security-policies create \
        --organization 100000000000 \
        --display-name "example-security-policy-folder1" \
        --description "rules that apply to all VMs under Folder1"
    
  6. 添加规则以允许所有 HTTP(S) 入站流量:

    gcloud beta compute org-security-policies rules create 1000 \
        --action allow \
        --description "allow-http-s-ingress" \
        --layer4-configs tcp:80,tcp:443 \
        --organization 100000000000 \
        --display-name "example-security-policy-folder1"
  7. 添加规则以拒绝所有其他端口/协议上的入站流量:

    gcloud beta compute org-security-policies rules create 2000 \
        --action deny \
        --description "block-ingress-external-traffic" \
        --organization 100000000000 \
        --display-name "example-security-policy-folder1" \
        --src-ip-ranges 0.0.0.0/0
  8. 将安全政策与 Folder1 相关联:

    gcloud beta compute org-security-policies associations create \
        --organization 100000000000 \
        --display-name "example-security-policy-folder1" \
        --folder 200000000000
  9. 创建安全政策以包含 Folder2 的规则:

    gcloud beta compute org-security-policies create \
        --organization 100000000000 \
        --display-name "example-security-policy-folder2" \
        --description "rules that apply to all VMs under Folder2"
  10. 添加规则以允许来自 203.0.113.1 的入站流量:

    gcloud beta compute org-security-policies rules create 1000 \
        --action allow \
        --description "allow-vul-scan-ingress" \
        --organization 100000000000 \
        --display-name "example-security-policy-folder2" \
        --src-ip-ranges 203.0.113.1/32
  11. 将安全政策与 Folder2 相关联:

    gcloud beta compute org-security-policies associations create \
        --organization 100000000000 \
        --display-name "example-security-policy-folder2" \
        --folder 300000000000
  12. 添加防火墙规则以允许 HTTP(S) 连接入站流量:

    gcloud beta compute firewall-rules create allow-internal-traffic \
        --action allow \
        --rules tcp:80,tcp:443,tcp:22
    

后续步骤