创建跨组织流量网络政策

本页面介绍了如何在 Google Distributed Cloud (GDC) air-gapped 中配置跨组织流量网络政策。

跨组织流量是指不同组织的服务和工作负载之间的通信。

准备工作

如需配置跨组织流量网络政策,您必须具备以下条件:

创建跨组织流量政策

您可以定义入站或出站跨组织流量政策,以管理不同组织的服务和工作负载之间的通信。

跨组织流量是指不同组织的服务和工作负载之间的通信。

您可以创建全局跨组织流量项目网络政策,该政策适用于组织中所有可用区之间的流量。如需详细了解 GDC 宇宙中的全局资源,请参阅多地区概览

将服务和工作负载连接到其他组织中项目之外的目标需要明确批准。您必须停用数据渗漏防护,才能允许跨组织流量。

为跨组织流量创建全局入站防火墙规则

使用外部负载均衡器公开项目中的工作负载时,您还必须创建 ProjectNetworkPolicy 入口政策,以允许外部客户端 IP 地址访问工作负载。

此全局入站政策适用于组织中的所有可用区。

请按以下步骤操作,以创建新的防火墙规则并允许来自其他组织的项目中工作负载的入站流量:

控制台

  1. 在您要配置的项目的 GDC 控制台中,前往导航菜单中的网络 > 防火墙,打开防火墙页面。
  2. 点击操作栏中的创建,开始创建新的防火墙规则。
  3. 防火墙规则详情页面上,填写以下信息:

    1. 名称字段中,为防火墙规则输入一个有效名称。
    2. 流量方向部分,选择入站,以允许来自其他组织的工作负载的入站流量。
    3. 目标部分中,选择以下选项之一:
      • 所有用户工作负载:允许连接到您正在配置的项目的工作负载。
      • 服务:表示此防火墙规则针对的是您正在配置的项目中的特定服务。
    4. 如果您的目标是项目服务,请从服务下拉菜单中的可用服务列表中选择相应服务的名称。
    5. 来源部分中,选择组织外部,然后在 CIDR 字段中输入其他组织的 CIDR 块,以允许来自该组织网络的连接。
    6. 如果您的目标是所有用户工作负载,请在协议和端口部分中选择以下选项之一:
      • 允许所有:允许使用任何协议或端口建立连接。
      • 指定的协议和端口:仅允许使用您在入站防火墙规则的相应字段中指定的协议和端口建立连接。
  4. 防火墙规则详情页面上,点击创建

您现在已允许来自其他组织的项目工作负载的连接。创建防火墙规则后,该规则会显示在防火墙页面上的表格中。

API

配置并应用您自己的自定义 ProjectNetworkPolicy 入口政策:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: allow-inbound-traffic-from-external
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - ipBlock:
        cidr: CIDR
EOF

替换以下内容:

  • GLOBAL_API_SERVER:全局 API 服务器的 kubeconfig 路径。如需了解详情,请参阅全球和可用区级 API 服务器。 如果您尚未为 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。
  • PROJECT:GDC 项目的名称。
  • CIDR:其他组织的 CIDR 地址段。

此政策是必需的,因为外部负载均衡器使用直接服务器返回 (DSR),该功能会保留源外部 IP 地址,并在返回路径上绕过负载均衡器。

为跨组织流量创建全局出站防火墙规则

如需将数据转移到组织外部的服务,您必须先停用数据渗漏防护功能。然后,您必须配置出站防火墙规则,以允许来自项目工作负载或服务的出站流量。

本部分介绍了在项目级层启用出站流量的流程。如需了解如何在工作负载级别管理出站连接,请参阅管理工作负载的出站流量

此全局出站防火墙规则适用于组织中的所有可用区。

请按以下步骤操作,创建新的防火墙规则,并允许项目工作负载或服务向其他组织中的工作负载发送出站流量:

控制台

  1. 在您要配置的项目的 GDC 控制台中,前往导航菜单中的网络 > 防火墙,打开防火墙页面。
  2. 点击操作栏中的创建,开始创建新的防火墙规则。
  3. 防火墙规则详情页面上,填写以下信息:

    1. 名称字段中,为防火墙规则输入一个有效名称。
    2. 流量方向部分,选择出站,以表明此防火墙规则控制的是出站流量。
    3. 目标部分中,选择以下选项之一:
      • 所有用户工作负载:允许从您正在配置的项目的任何工作负载进行连接。
      • 服务:表示此防火墙规则针对的是您正在配置的项目中的特定服务。
    4. 如果您的目标是项目服务,请从服务下拉菜单中的可用服务列表中选择相应服务的名称。
    5. 目标部分中,选择组织外部,然后在 CIDR 字段中输入其他组织的 CIDR 块,以允许连接到该组织的网络。
    6. 如果您的目标是所有用户工作负载,请在协议和端口部分中选择以下选项之一:
      • 允许所有:允许使用任何协议或端口建立连接。
      • 指定的协议和端口:仅允许使用您在出站防火墙规则的相应字段中指定的协议和端口建立连接。
  4. 防火墙规则详情页面上,点击创建

您现在已允许连接到其他组织。创建防火墙规则后,该规则会显示在防火墙页面上的表格中。

API

如需允许出站流量流向组织外部的服务,请自定义 ProjectNetworkPolicy 资源。不过,由于数据渗漏防范功能默认处于启用状态,因此您自定义的 ProjectNetworkPolicy 出站流量政策会在状态字段中显示验证错误,并且数据平面会忽略该政策。此行为是设计所致。

当您允许指定项目进行数据渗漏时,可以从该项目转移工作负载。您允许的出站流量是使用为项目分配的已知 IP 地址的源网络地址转换 (NAT)。

如需启用自定义的出站流量政策,请按以下步骤操作:

  1. 在项目中的所有用户工作负载上配置并应用您自己的自定义ProjectNetworkPolicy出站政策。

    请看以下示例:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-outbound-traffic-to-external
    spec:
      subject:
        subjectType: UserWorkload
      egress:
      - to:
        - ipBlock:
            cidr: CIDR
    EOF
    

    该政策允许向 CIDR 地址块中的所有主机(位于组织外部)发送出站流量。您的第一次尝试必须导致预期的必要状态错误。

  2. 确认您在状态中看到验证错误。

  3. 请组织 IAM 管理员停用数据渗漏防护功能。此操作会启用您的配置,同时阻止所有其他出站流量。

  4. 检查您创建的 ProjectNetworkPolicy,验证验证状态字段中的错误是否已消失,并且状态 ReadyTrue,这表示您的政策已生效:

    kubectl --kubeconfig GLOBAL_API_SERVER \
        get projectnetworkpolicy allow-outbound-traffic-to-external \
        -n PROJECT -o yaml
    

    替换以下内容:

    • GLOBAL_API_SERVER:全局 API 服务器的 kubeconfig 路径。如需了解详情,请参阅全球和可用区级 API 服务器。 如果您尚未为 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。

    • PROJECT:GDC 项目的名称。

应用此政策后,如果您未定义其他出站政策,则系统会拒绝 PROJECT 的所有其他出站流量。