安全性規則

本頁面說明閘道安全性規則,以及如何建立這類規則。

Secure Web Proxy 可讓您在閘道安全性政策中定義各種安全性規則,保護傳出網路流量。您可以使用這些規則,根據特定要求詳細資料 (例如標頭和網址模式) 精確控管流量安全性,確保只有核准的 HTTP/S 流量離開網路。

閘道安全性規則具有下列功能:

  • 每項規則都是 if-then 陳述式,會根據下列參數檢查網頁要求:

    • 來源身分:誰提出要求,例如特定虛擬機器 (VM) 或服務帳戶。

    • 目的地:要求的目的地,例如到達網頁網址或網域 (如 trusted-partner.com)。

    • 動作:決定允許或拒絕流量。

  • 閘道安全性規則提供精細的控管功能。這些規則可讓您使用明確、結構化的定義,在整個組織中強制執行不同的安全性標準。

主機比對規則

Secure Web Proxy 會使用主機名稱比對功能驗證目的地網域。驗證程序會因 Proxy 的部署方式而異,如下表所示。

部署模式 主機驗證程序
明確 Proxy 模式 如果是未加密的流量,Proxy 會根據 HTTP 連線標頭檢查主機名稱。如果您使用應用程式比對器屬性進行 TLS 檢查,Proxy 會先在連線層級檢查主機名稱,然後在應用程式層級檢查。
下一個躍點模式 如果是加密流量,Proxy 會根據傳出要求中的伺服器名稱指示 (SNI) 欄位檢查目的地主機名稱。即使連線安全,這個欄位仍會顯示。

設定明確 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。主機比對規則會檢查流量的各個欄位 (例如伺服器名稱指示 (SNI) 標頭),確保 Proxy 正確識別目的地主機。

在下一個躍點模式中,主機比對會以下列方式處理不同類型的網路流量:

流量類型 比對機制 規則設定
未加密的 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 (通訊埠 80) 或 HTTPS (通訊埠 443)。設定 TCP Proxy 規則後,您就能允許或封鎖任何其他 TCP 通訊埠的流量。這些規則可協助您封鎖惡意流量,並管理使用 TCP 的非網頁應用程式。

如果工作負載 (例如應用程式和服務) 使用 Secure Web Proxy 做為下一個躍點,則建議套用 TCP Proxy 規則。路徑型重新導向會將非 HTTP(S) 和非網站流量導向 Secure Web Proxy 執行個體。這樣一來,您就能阻止傳出流量連至惡意外部網站,並管理網路工作負載可連線的外部服務。

設定 TCP Proxy 規則

您可以為應用程式設定 TCP Proxy 規則,保護非網站流量,並針對不使用標準 HTTP/S 的應用程式 (例如通訊埠 80 和 443) 強制執行安全性政策。

套用這些規則後,即可防止他人未經授權使用其他 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.')。
inIpRange(IP_ADDRESS,
IP_RANGE)
布林值 True,如果 IP_ADDRESS 包含在 IP_RANGE 中,例如 inIpRange(source.ip, '1.2.3.0/24')。IPv6 位址的子網路遮罩不得大於「/64」。

TCP Proxy 規則範例

這個範例說明如何使用 CEL 運算式定義 Secure Web 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 應用程式的流量。

建立安全性規則

建立閘道安全性規則前,請務必執行下列操作:

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

  2. 建立政策

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

控制台

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

    前往「SWP Policies」(SWP 政策) 頁面

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

  3. 按一下「 新增規則」。

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

    1. 在「Priority」(優先順序) 部分,輸入規則的評估順序 (數字)。系統會從最高到最低優先順序評估規則,其中 0 是最高優先順序。

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

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

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

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

      • 啟用:在 Secure Web Proxy 執行個體上強制執行規則。
      • 停用:不對 Secure Web Proxy 執行個體強制執行規則。
    6. 在「Session Match」(工作階段比對) 部分中,指定比對工作階段的條件,例如 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。

    選用:或者,如要建立啟用 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 規則」。

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

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

限制

後續步驟