建立跨專案流量網路政策

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

跨專案流量是指來自不同專案命名空間,但位於同一機構的服務和工作負載之間的通訊。

專案中的服務和工作負載預設會與外部服務和工作負載隔離。不過,只要套用跨專案流量網路政策,來自不同專案命名空間且位於同一機構的服務和工作負載,就能彼此通訊。

如需在單一區域內強制執行跨專案流量,請參閱「建立工作負載層級網路政策」。

事前準備

如要設定專案內流量網路政策,您必須具備下列條件:

建立跨專案流量政策

您可以定義專案間的輸入或輸出流量政策,管理專案間的通訊。

您可以建立適用於 GDC 世界中所有可用區的跨專案全球網路政策。詳情請參閱「什麼是宇宙?」一文。

為跨專案流量建立全域 Ingress 防火牆規則

如要允許專案工作負載或服務接受來自機構內其他專案中其他工作負載的連線,您必須設定輸入防火牆規則,允許其他專案工作負載的輸入流量。

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

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

主控台

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

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

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

API

下列政策可讓 PROJECT_1 專案中的工作負載允許來自 PROJECT_2 專案中工作負載的連線,以及相同流程的傳回流量。套用政策:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_1
  name: allow-inbound-traffic-from-PROJECT_2
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_2
EOF

GLOBAL_API_SERVER 替換為全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全球和區域 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。

上述指令允許 PROJECT_2 前往 PROJECT_1,但不允許從 PROJECT_1 啟動連線前往 PROJECT_2。如要使用後者,您必須在 PROJECT_2 專案中設定互惠政策。套用互惠政策:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_2
  name: allow-inbound-traffic-from-PROJECT_1
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_1
EOF

現在允許連線至 PROJECT_1PROJECT_2,以及從這兩者連線。

為跨專案流量建立全域輸出防火牆規則

授予跨專案流量政策的傳入權限後,一個專案中的工作負載就能允許來自另一個專案中工作負載的連線,這項動作也會授予相同流程的回傳流量。因此,原始專案不需要輸出跨專案流量網路政策。

這項全域輸出政策僅適用於 GDC 宇宙中的所有區域。

舉例來說,如果您建立的政策允許流量從 PROJECT_1 流向 PROJECT_2,且資料外洩防護功能已停用,則必須在 PROJECT_2 中建立輸入政策,並在 PROJECT_1 中建立輸出政策。不過,回覆封包不在政策強制執行範圍內,因此您不需要任何額外政策。

請按照下列步驟建立新的防火牆規則,並允許專案中工作負載的外送流量:

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

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

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