建立跨機構流量網路政策

本頁面提供操作說明,說明如何在 Google Distributed Cloud (GDC) 實體隔離環境中,設定跨機構流量網路政策。

跨機構流量是指不同機構的服務和工作負載之間的通訊。

事前準備

如要設定跨機構流量網路政策,您必須具備下列條件:

建立跨機構流量政策

您可以定義跨機構的輸入或輸出流量政策,管理不同機構的服務和工作負載之間的通訊。

跨機構流量是指不同機構的服務和工作負載之間的通訊。

您可以建立適用於機構中所有區域流量的跨機構流量專案網路政策。如要進一步瞭解 GDC 宇宙中的全域資源,請參閱多區域總覽

如要將服務和工作負載連線至不同機構的專案外部目的地,必須明確核准。您必須停用資料竊取防護,才能允許跨機構流量。

為跨機構流量建立全域 Ingress 防火牆規則

使用外部負載平衡器公開專案中的工作負載時,您也必須建立 ProjectNetworkPolicy Ingress 政策,允許外部用戶端 IP 位址存取工作負載。

這項全域連入政策會套用至貴機構的所有區域。

請按照下列步驟建立新的防火牆規則,並允許來自其他機構專案中工作負載的連入流量:

主控台

  1. 在要設定的專案 GDC 控制台中,依序前往導覽選單中的「Networking」(網路) >「Firewall」(防火牆),開啟「Firewall」(防火牆) 頁面。
  2. 按一下動作列中的「建立」,即可開始建立新的防火牆規則。
  3. 在「防火牆規則詳細資料」頁面上,填寫下列資訊:

    1. 在「Name」(名稱) 欄位中,輸入防火牆規則的有效名稱。
    2. 在「流量方向」專區中,選取「輸入」,允許來自其他機構工作負載的輸入流量。
    3. 在「目標」部分中,選取下列其中一個選項:
      • 所有使用者工作負載:允許連線至您要設定的專案工作負載。
      • 服務:指出這項防火牆規則的目標是您要設定的專案中的特定服務。
    4. 如果目標是專案服務,請從「服務」下拉式選單的可用服務清單中,選取服務名稱。
    5. 在「From」(來源) 部分中,選取「Outside the organization」(機構外部),然後在「CIDR」欄位中輸入其他機構的 CIDR 區塊,允許來自該機構網路的連線。
    6. 如果目標是所有使用者工作負載,請在「通訊協定和通訊埠」部分選取下列任一選項:
      • 允許所有連線:允許使用任何通訊協定或通訊埠連線。
      • 指定的通訊協定和通訊埠:只允許使用您在輸入防火牆規則的對應欄位中指定的通訊協定和通訊埠建立連線。
  4. 在「防火牆規則詳細資料」頁面上,按一下「建立」

您現在已允許來自其他機構專案工作負載的連線。建立防火牆規則後,該規則會顯示在「Firewall」(防火牆) 頁面的表格中。

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),因此必須採用這項政策。DSR 會保留來源外部 IP 位址,並略過回傳路徑上的負載平衡器。

為跨機構流量建立全域輸出防火牆規則

如要將資料轉移至機構外部服務,請先停用資料外洩防護功能。接著,您必須設定輸出防火牆規則,允許專案工作負載或服務的輸出流量。

本節說明如何啟用專案層級的出站流量。如要瞭解如何管理工作負載層級的出站連線,請參閱「管理工作負載的出站流量」。

這項通用輸出防火牆規則會套用至貴機構的所有區域。

請按照下列步驟建立新的防火牆規則,允許專案工作負載或服務的輸出流量傳送至其他機構的工作負載:

主控台

  1. 在要設定的專案 GDC 控制台中,依序前往導覽選單中的「Networking」(網路) >「Firewall」(防火牆),開啟「Firewall」(防火牆) 頁面。
  2. 按一下動作列中的「建立」,即可開始建立新的防火牆規則。
  3. 在「防火牆規則詳細資料」頁面上,填寫下列資訊:

    1. 在「Name」(名稱) 欄位中,輸入防火牆規則的有效名稱。
    2. 在「流量方向」專區選取「輸出」,表示這項防火牆規則會控管輸出流量。
    3. 在「目標」部分中,選取下列其中一個選項:
      • 所有使用者工作負載:允許來自您設定專案工作負載的連線。
      • 服務:指出這項防火牆規則的目標是您要設定的專案中的特定服務。
    4. 如果目標是專案服務,請從「服務」下拉式選單的可用服務清單中,選取服務名稱。
    5. 在「To」(至) 部分中,選取「Outside the organization」(機構外部),然後在「CIDR」欄位中輸入其他機構的 CIDR 區塊,允許連線至該機構的網路。
    6. 如果目標是所有使用者工作負載,請在「通訊協定和通訊埠」部分選取下列任一選項:
      • 允許所有連線:允許使用任何通訊協定或通訊埠連線。
      • 指定通訊協定和通訊埠:只允許使用您在輸出防火牆規則的對應欄位中指定的通訊協定和通訊埠建立連線。
  4. 在「防火牆規則詳細資料」頁面上,按一下「建立」

您現在已允許連線至其他機構。建立防火牆規則後,該規則會顯示在「Firewall」(防火牆) 頁面的表格中。

API

如要啟用傳送至機構外部服務的輸出流量,請自訂 ProjectNetworkPolicy 資源。不過,由於資料竊取防範功能預設為啟用,自訂的ProjectNetworkPolicy輸出政策會在狀態欄位中顯示驗證錯誤,資料平面也會忽略該政策。這是正常的。

允許該專案的資料外洩後,即可從指定專案轉移工作負載。您允許的外送流量是來源網路位址轉譯 (NAT),使用為專案分配的已知 IP 位址。

如要啟用自訂輸出政策,請按照下列步驟操作:

  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 的所有其他輸出流量。