本頁說明閘道安全規則和建立方式。
您可以在閘道安全政策中定義各種安全規則,透過 Secure Web Proxy 確保輸出網路流量安全無虞。您可以運用這些規則,使用標頭和網址模式等特定要求詳細資料,精確控管流量安全,確保只有核准的 HTTP/S 流量會離開網路。
閘道安全規則具有下列功能:
每項規則都是
if-then陳述式,會根據下列參數檢查網頁要求:來源身分:誰發出要求,例如特定虛擬機器 (VM) 或服務帳戶。
目的地:要求前往的位置,例如到達網頁網址或網域 (如
trusted-partner.com)。動作:決定允許或拒絕流量。
閘道安全規則提供精細的控制項。您可以透過清楚的結構化定義,在整個機構中強制執行不同的安全標準。
主機比對規則
Secure Web Proxy 會使用主機名稱比對功能驗證目的地網域。驗證程序會因 Proxy 的部署方式而異,如下表所示。
| 部署模式 | 主機驗證程序 |
|---|---|
| 明確 Proxy 模式 | 對於未加密的流量,Proxy 會根據 HTTP 連線標頭檢查主機名稱。如果您使用 [Application Matcher 屬性](/secure-web-proxy/docs/cel-matcher-language-reference#attributes-available-only-to-applicationmatcher)進行 TLS 檢查,Proxy 會先在連線層級檢查主機名稱,然後在應用程式層級檢查。 |
| 下一個躍點模式 | 如果是加密流量,Proxy 會根據外送要求中的伺服器名稱指示 (SNI) 欄位,檢查目的地主機名稱。即使是安全連線,這個欄位也會顯示。 |
為明確 Proxy 模式設定主機比對規則
以明確 Proxy 部署 Secure Web Proxy 時,請設定主機比對規則,確認用戶端傳送的主機資訊已正確擷取,並根據您定義的安全規則進行檢查。在明確 Proxy 模式中,系統會主動設定用戶端,將流量直接傳送至 Secure Web Proxy 執行個體。
在明確 Proxy 模式中,主機比對適用於不同類型的網路流量,運作方式如下:
| 流量類型 | 比對機制 | 規則設定 |
|---|---|---|
| 未加密的 HTTP | Secure Web Proxy 會根據 HTTP 要求的標準 CONNECT 標頭中的 host 欄位,檢查目的地主機名稱。 |
在 sessionMatcher 欄位中,使用 host() == "example.com"。 |
| 加密的 HTTPS (未經過傳輸層安全標準 (TLS) 檢查) | 主機比對無法在應用程式層級或工作階段層級進行,這是因為要求詳細資料已加密,且系統不支援 destination.ip 屬性。您必須使用更廣泛的政策控管措施 (例如來源身分比對),或啟用 TLS 檢查功能,才能根據主機進行篩選。 |
如要使用 Application Matcher,請使用來源身分比對 (例如服務帳戶),或啟用 TLS 檢查。 |
| 加密的 HTTPS (含 TLS 檢查) | 如要檢查完整要求,您必須同時使用工作階段比對器和應用程式比對器。 | 1. 設定一般工作階段比對規則,傳回 true 或比對目的地主機 (例如 host() == "example.com")。2. 在 |
為下一個躍點模式設定主機比對規則
將 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. 在 |
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) |
布林值 |
引數是安全標記的永久 ID,例如 |
source.matchServiceAccount(SERVICE_ACCOUNT) |
布林值 | True,如果來源與 SERVICE_ACCOUNT 相關聯,例如 source.matchServiceAccount('x@my-project.iam.gserviceaccount.com')。 |
inIpRange(IP_ADDRESS, |
布林值 | 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:專案 IDREGION:政策的區域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 時使用該規則。
控制台
前往 Google Cloud 控制台的「SWP Policies」(SWP 政策) 頁面。
按一下政策名稱,例如
policy1。按一下「新增規則」。
針對每項規則,請執行下列操作:
在「優先順序」中,輸入規則的評估順序 (數字)。系統會由最高到最低優先順序評估規則,其中
0為最高優先順序。在「Name」(名稱) 欄位中,輸入規則名稱。
在「Description」(說明) 欄位中輸入規則說明。
在「動作」部分,選取下列任一選項:
- 「允許」:允許符合規則的連線要求。
- 拒絕:拒絕符合規則的連線要求。
在「狀態」欄位中,選取下列任一選項來強制執行規則:
- 已啟用:在 Secure Web Proxy 執行個體上強制執行規則。
- 已停用:不在 Secure Web Proxy 執行個體上強制執行規則。
在「工作階段比對」部分,指定比對工作階段的條件,例如
host() == "www.wikipedia.org"。如要進一步瞭解
SessionMatcher的語法,請參閱 CEL 比對器語言參考資料。在「應用程式比對」部分,指定比對要求的條件。
如要進一步瞭解如何比對 TCP 流量,請參閱「設定 TCP Proxy 規則」。
按一下「Add rule」(新增規則)。
Cloud Shell
使用您慣用的文字編輯器建立
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:專案 IDREGION:政策的區域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 規則」。
建立安全性政策規則。
gcloud network-security gateway-security-policies rules import allow-wikipedia-org \ --source=rule.yaml \ --location=REGION \ --gateway-security-policy=policy1
限制
如果您在 Secure Web Proxy 執行個體中建立授權政策,Proxy 就會忽略所有現有的閘道安全政策和相關聯的閘道安全規則。
Secure Web Proxy 不支援為使用者資料包通訊協定 (UDP) 應用程式設定規則。Secure Web Proxy 會封鎖以 UDP 為基礎的應用程式流量。
後續步驟
- 建立 Secure Web Proxy 執行個體
- 將 Secure Web Proxy 部署為 Private Service Connect 服務
- 將 Secure Web Proxy 部署為下一個躍點