設定規則

您可以在政策中定義各種規則,確保輸出網路流量安全無虞。您可以運用這些規則,透過特定要求詳細資料 (例如標頭和網址模式) 精確控管流量安全性,確保只有核准的 HTTP/S 流量會離開您的網路。

本頁面說明各種類型的規則,以及建立規則並新增至安全性政策的步驟。

設定主機比對規則

主機比對規則會根據允許或拒絕的網址清單,評估網路要求的目的地主機名稱。檢查目的地網域 (例如 www.example.com) 後,這些規則可確保流量只會連往核准的網站和服務。

本節說明如何為下列 Secure Web Proxy 部署模式設定主機比對規則:

  • 明確 Proxy 模式
  • 下一個躍點模式

明確 Proxy 模式

將 Secure Web Proxy 部署為明確 Proxy 時,請設定主機比對規則,確認用戶端傳送的主機資訊已正確擷取,並根據您定義的安全規則進行檢查。在明確 Proxy 模式中,用戶端會主動設定為將流量直接傳送至 Secure Web Proxy 執行個體。

在明確 Proxy 模式中,主機比對適用於不同類型的網路流量,運作方式如下:

流量類型 比對機制 規則設定
未加密的 HTTP Secure Web Proxy 會根據 HTTP 要求的標準 CONNECT 標頭中的 host 欄位,檢查目的地主機名稱。 sessionMatcher 欄位中,使用 host() == "example.com"
加密的 HTTPS (未經過傳輸層安全標準 (TLS) 檢查) 主機比對也不可能在應用程式層級或工作階段層級進行。這是因為要求詳細資料已加密,且系統不支援 destination.ip 屬性。您必須使用更廣泛的政策控制項 (例如來源身分比對),或是為以主機為準的篩選功能啟用 TLS 檢查。 如要使用應用程式比對工具,請使用來源身分比對 (例如服務帳戶),或啟用 TLS 檢查。
加密的 HTTPS (含 TLS 檢查) 如要檢查完整要求,您必須同時使用工作階段比對器和應用程式比對器。 1. 設定一般工作階段比對器規則,傳回 true 或比對目的地主機 (例如 host() == "example.com")。

2. 在 applicationMatcher 欄位中,新增特定主機規則,例如 request.host() == "example.com"

下一個躍點模式

將 Secure Web Proxy 部署為下一個躍點時,您必須設定主機比對規則。系統會根據您定義的 IP 位址範圍,透過虛擬私有雲 (VPC) 路由將流量重新導向至 Proxy。主機比對規則可確保 Proxy 透過檢查流量的各種欄位 (例如伺服器名稱指示 (SNI) 標頭),正確識別目的地主機。

在下一個躍點模式中,主機比對功能適用於不同類型的網路流量,運作方式如下:

流量類型 比對機制 規則設定
未加密的 HTTP Secure Web Proxy 會根據標準 HTTP 要求標頭中的 host 欄位檢查目的地主機名稱。 sessionMatcher 欄位中,使用 host() == "example.com"
已加密的 HTTPS (不含 TLS 檢查) Secure Web Proxy 會根據輸出要求中的 SNI 標頭檢查主機名稱,即使其餘流量經過加密,這項資訊仍會顯示。 sessionMatcher 欄位中,使用 host() == "example.com"
加密的 HTTPS (含 TLS 檢查) 如要檢查完整要求,您必須同時使用工作階段比對器和應用程式比對器。 1. 設定一般工作階段比對器規則,傳回 true 或比對目的地主機 (例如 host() == "example.com")。

2. 在 applicationMatcher 欄位中,新增特定主機規則,例如 request.host() == "example.com"

設定 TCP Proxy 規則

您可以為應用程式設定傳輸控制通訊協定 (TCP) Proxy 規則,確保非網頁流量安全,並為未使用標準 HTTP/S 的應用程式強制執行安全性政策,例如通訊埠 80443

套用這些規則後,即可防止未經授權使用其他 TCP 連接埠進行資料傳輸或惡意活動。當工作負載使用 Secure Web Proxy 做為非網頁通訊協定的下一個躍點時,這項功能特別實用。

如要實作 TCP proxy 規則,並為應用程式建立允許或封鎖流量規則,您必須指定目的地通訊埠。您可以視需要加入下列任一工作階段比對器屬性,以調整允許或封鎖規則的條件。

下表提供更多資訊,說明可在 TCP Proxy 規則中使用的各種屬性:

屬性 屬性類型 說明
source.ip 字串 傳送要求的用戶端 IP 位址。
source.port 字串 傳送要求的用戶端通訊埠。
destination.port 字串 Secure Web Proxy 執行個體傳送流量的上游通訊埠。
source.matchTag(SECURE_TAG) 布林值

True,如果來源與 SECURE_TAG 相關聯。

引數是安全標記的永久 ID,例如 source.matchTag('tagValues/123456')

source.matchServiceAccount(SERVICE_ACCOUNT) 布林值 True,如果來源與 SERVICE_ACCOUNT 相關聯,例如 source.matchServiceAccount('x@my-project.iam.gserviceaccount.com')
inIpRange(IP_ADDRESS,
IP_RANGE)
布林值 True,如果 IP_ADDRESS 包含在 IP_RANGE 中,例如 inIpRange(source.ip, '1.2.3.0/24')。IPv6 位址的子網路遮罩不得大於 `/64`。

TCP Proxy 規則範例

這個範例說明如何使用 CEL 運算式定義安全網頁 Proxy gatewaySecurityPolicyRule,允許所有 TCP 流量傳輸至通訊埠 22。套用 Secure Web Proxy 的 TCP Proxy 功能時,可以使用這項設定。

以下程式碼範例說明如何定義 TCP Proxy 規則:

name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
enabled: true
priority: 100 # Lower numbers have higher priority
description: "Allow TCP proxy traffic to port 22 - such as, for SSH"
basicProfile: ALLOW
sessionMatcher: "destination.port == 22"

更改下列內容:

  • PROJECT_ID:專案 ID
  • REGION:政策的區域
  • POLICY_NAME:政策名稱
  • RULE_NAME:TCP Proxy 規則的名稱。在本範例中,我們可以將其值視為 allow-ssh-tcp-proxy

重要事項

  • 您設定的任何 TCP Proxy 規則,優先順序都必須高於 HTTP/S 規則 (數字較小),才能確保系統會優先評估並套用這些規則。詳情請參閱「規則評估順序」。

  • 設定 TCP Proxy 規則時,系統不支援 host 工作階段比對器 屬性,因為 TCP 層級沒有主機資訊。

  • TCP Proxy 規則只會根據目的地通訊埠篩選網路流量。為提升網路安全性,建議您使用邏輯運算子 (邏輯 AND 運算子「&&」和邏輯 OR 運算子「||」) 和支援的屬性 (例如 source.ip) 新增其他條件。以下範例說明如何定義更具體的 TCP Proxy 規則:

      // Allow port 22 from only a specific source IP range
      sessionMatcher: "destination.port == 22 && inIpRange(source.ip, '10.0.0.0/24')"
    
  • Secure Web Proxy 不支援為使用者資料包通訊協定 (UDP) 應用程式設定 Proxy 規則。因此,Secure Web Proxy 會封鎖以 UDP 為基礎的應用程式流量。

建立 Secure Web Proxy 規則

本節說明如何建立 Secure Web Proxy 規則。

建立規則前,請務必執行下列動作:

  1. 完成所有初始設定步驟

  2. 建立政策

建立規則並與政策建立關聯後,您就能在部署 Secure Web Proxy 時使用該規則。

控制台

  1. 前往 Google Cloud 控制台的「SWP Policies」(SWP 政策) 頁面。

    前往 SWP 政策

  2. 按一下政策名稱,例如 policy1

  3. 按一下「新增規則」

  4. 針對每項規則,請執行下列操作:

    1. 在「優先順序」中,輸入規則的評估順序 (數字)。系統會依優先順序由高至低評估規則,其中 0 為最高優先順序。

    2. 在「Name」(名稱) 欄位中,輸入規則名稱。

    3. 在「Description」(說明) 欄位中輸入規則說明。

    4. 在「動作」部分,選取下列任一選項:

      • 「允許」:允許符合規則的連線要求。
      • 拒絕:拒絕符合規則的連線要求。
    5. 在「狀態」欄位中,選取下列任一選項來強制執行規則:

      • 已啟用:在 Secure Web Proxy 執行個體上強制執行規則。
      • 已停用:不在 Secure Web Proxy 執行個體上強制執行規則。
    6. 在「工作階段比對」部分,指定比對工作階段的條件,例如 host() == "www.wikipedia.org"

      如要進一步瞭解 SessionMatcher 的語法,請參閱 CEL 比對器語言參考資料

    7. 在「Application Match」(應用程式比對) 區段,指定比對要求的條件。

      如要進一步瞭解如何比對 TCP 流量,請參閱「設定 TCP Proxy 規則」。

    8. 按一下「Add rule」(新增規則)

Cloud Shell

  1. 如圖所示建立 rule.yaml 檔案。 如要進一步瞭解 sessionMatcher 的語法,請參閱 CEL 比對器語言參考資料

    name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/RULE_NAME
    description: Allow wikipedia.org
    enabled: true
    priority: 1
    basicProfile: ALLOW
    sessionMatcher: host() == 'www.wikipedia.org'
    

    更改下列內容:

    • PROJECT_ID:專案 ID
    • REGION:政策的區域
    • RULE_NAME:規則名稱。在本範例中,我們可以將其值視為 allow-wikipedia-org
  2. 選用:或者,如要建立啟用 TLS 檢查的規則,請建立 rule.yaml 檔案,如以下所示。詳情請參閱「TLS 檢查總覽」和「啟用 TLS 檢查」。

      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/RULE_NAME
      description: Allow wikipedia.org
      enabled: true
      priority: 1
      basicProfile: ALLOW
      sessionMatcher: host() == 'www.wikipedia.org'
      applicationMatcher: request.path.contains('index.html')
      tlsInspectionEnabled: true
    

    如要進一步瞭解如何比對 TCP 流量,請參閱「設定 TCP Proxy 規則」。

  3. 建立安全性政策規則。

    gcloud network-security gateway-security-policies rules import allow-wikipedia-org \
        --source=rule.yaml \
        --location=REGION \
        --gateway-security-policy=policy1
    

後續步驟