Google Cloud Armor 和 reCAPTCHA 提供相關工具,可協助您評估來源可能是自動化用戶端的傳入要求,然後採取行動。
reCAPTCHA 會使用進階風險分析技術,區分真人使用者和自動化用戶端。reCAPTCHA 會根據 reCAPTCHA WAF 網站金鑰的設定評估使用者,然後發出含有屬性的加密權杖,代表相關聯的風險。Cloud Armor 會直接解讀這個權杖,不必向 reCAPTCHA 服務發出額外要求或回應。Cloud Armor 會根據權杖屬性,允許、拒絕、限制頻率或重新導向傳入要求。詳情請參閱 Cloud Armor 和 reCAPTCHA 整合總覽。
Cloud Armor 的機器人管理功能包含下列整合式功能。
手動驗證 (reCAPTCHA 驗證頁面)
- 您必須設定安全性政策規則,才能重新導向 reCAPTCHA 評估要求。
- 您可以建立自己的 reCAPTCHA WAF 網站金鑰,並與安全性政策建立關聯。強烈建議您這麼做。 詳情請參閱「導入 reCAPTCHA 驗證問題」。
- 您可以重新導向使用者進行 reCAPTCHA 評估,只允許通過 reCAPTCHA 手動驗證的使用者。
強制執行 reCAPTCHA 無摩擦評估
- 您可以根據 reCAPTCHA 對要求來自機器人的風險評估結果,對傳入要求採取不同行動。您可以編寫安全性政策規則,根據權杖分數和其他權杖屬性評估及篩選流量。
- 您必須實作 reCAPTCHA 動作符記、工作階段符記,或兩者皆實作。網站、iOS 和 Android 執行的應用程式都支援 reCAPTCHA 動作符記,但只有網站支援 reCAPTCHA 工作階段符記。如要進一步瞭解 reCAPTCHA 符記,請參閱 reCAPTCHA 動作符記和 reCAPTCHA 工作階段符記。
- 您必須設定安全性政策規則,評估 reCAPTCHA 權杖。
- 為防止權杖遭竊,建議您將自己的 WAF reCAPTCHA 金鑰與安全政策規則建立關聯。
Cloud Armor 機器人管理功能也包含下列功能。
- 重新導向 (302)
- 您可以將 Cloud Armor 設為向用戶端提供 HTTP 302 回應,將要求重新導向至設定的替代網址。
- 裝飾要求
- 您可以在將要求代理至後端之前,在要求中插入自訂標頭,並在這些標頭中插入靜態值。
用途
本節說明如何使用 Cloud Armor 機器人管理功能,降低機器人風險及控管自動化用戶端的存取權。
使用手動驗證來區分合法使用者和自動化用戶端
您可以將要求重新導向至 reCAPTCHA,評估終端用戶端並視需要提供手動驗證,無需額外導入 reCAPTCHA。如果真人使用者與機器人或濫用系統共用相同的簽章 (例如網址路徑或其他第 7 層簽章),這項操作可讓他們證明自己是真人。只有通過評估的使用者才能存取您的服務。
下圖顯示手動驗證如何區分要求來自真人還是自動化用戶端:
假設使用者 Maya 和機器人都在瀏覽您網站上的登入頁面 (/login.html
)。如要允許存取 Maya,但不要授予機器人存取權,可以設定進階比對運算式 request.path.matches("/login.html")
的安全政策規則,並將 redirect
動作設為 GOOGLE_RECAPTCHA
類型。端對端使用者體驗如下:
- 使用者初次造訪您的網站。
- Cloud Armor 會評估要求,並決定是否將要求重新導向至 reCAPTCHA。
- reCAPTCHA 會傳回內嵌 reCAPTCHA JavaScript 的 HTML 網頁。
- 系統會顯示回應,並執行內嵌的 JavaScript 來評估使用者,必要時會提供手動驗證。
- 如果使用者通過評估,reCAPTCHA 會發出豁免 Cookie,瀏覽器會自動將這個 Cookie 附加至後續對相同網站的每個要求,直到 Cookie 過期為止。
- 否則 reCAPTCHA 不會核發豁免 Cookie。
在本例中,只有 Maya 通過 reCAPTCHA 評估並收到豁免 Cookie,因此可以存取您的網站。
使用手動挑戰時,建議您建立自己的 reCAPTCHA WAF 網站金鑰,並將其與安全性政策建立關聯。這樣一來,您就能查看與網站金鑰相關聯的 reCAPTCHA 指標,並訓練網站金鑰專用的安全模型。詳情請參閱「建立 reCAPTCHA WAF 驗證網站金鑰」。
如果您未建立及連結網站金鑰,reCAPTCHA 會在評估期間使用 Google 管理的網站金鑰。您無法查看與不屬於您的網站金鑰相關聯的 reCAPTCHA 指標,包括 Google 管理的網站金鑰。
強制執行 reCAPTCHA 評估
如果傳入要求附有 reCAPTCHA 權杖,Cloud Armor 會評估要求,並根據權杖中的個別屬性套用設定的動作。Cloud Armor 安全性政策評估作業會在 Google 網路的邊緣進行,因此後端不會參與權杖解讀作業。
reCAPTCHA 權杖
reCAPTCHA 會核發兩種權杖:動作權杖和工作階段權杖。這兩種權杖都會根據與網站或應用程式的互動,為每項要求傳回分數。這兩種權杖都包含屬性,包括代表使用者相關風險的分數。其中也包含產生權杖時使用的 reCAPTCHA 金鑰相關資訊。
設定安全性政策規則前,請先決定要使用動作權杖、工作階段權杖,還是兩者都使用。建議您詳閱 reCAPTCHA 說明文件,再決定要使用哪種版本。詳情請參閱 reCAPTCHA 應用實例比較。
決定要使用的權杖類型後,請實作 reCAPTCHA,將權杖附加至要求。如要瞭解如何在 reCAPTCHA 中導入符記,請參閱下列頁面:
- 網頁應用程式
- 行動應用程式
最後,請使用 Cloud Armor 規則語言設定安全性政策規則,評估附加至要求的 reCAPTCHA 權杖。為防止權杖遭竊,我們強烈建議您將 reCAPTCHA 金鑰與安全性政策規則建立關聯。將 reCAPTCHA 金鑰與安全性政策規則建立關聯後,Cloud Armor 會比較權杖中的 reCAPTCHA 金鑰與規則相關聯的 reCAPTCHA 金鑰,對權杖執行額外驗證。如果權杖的 reCAPTCHA 金鑰不明,Cloud Armor 會視為無效。詳情請參閱強制執行 reCAPTCHA 無摩擦評估。
下圖說明 reCAPTCHA 權杖強制執行流程。
重新導向 (302 回應)
您可以使用以網址為準的重新導向動作,將要求重新導向至其他端點。您以網址形式提供重新導向目標,Cloud Armor 會向用戶端提供 HTTP 302 回應,藉此重新導向要求。
裝飾要求
Cloud Armor 可以在將要求 Proxy 至應用程式之前,插入具有靜態使用者定義值的自訂要求標頭。這個選項可讓您標記可疑要求,以進行替代的下游處理作業,例如提供蜜罐,或進行額外分析和監控。請注意,這個動作參數必須加到現有的 allow
動作。
自訂標頭
如果您已設定 Cloud Armor 插入自訂標頭或值,且標頭名稱與全域外部應用程式負載平衡器或傳統版應用程式負載平衡器的其中一個自訂標頭相同,則標頭值會遭到負載平衡器覆寫。詳情請參閱「在後端服務中建立自訂標頭」。
此外,如果您選擇的要求中已存在標頭名稱 (包括標準 HTTP 標頭),該標頭中的原始值會遭到提供給 Cloud Armor 規則的使用者定義值覆寫。
整合頻率限制
Cloud Armor 速率限制規則與機器人管理功能相容。舉例來說,您可以重新導向 reCAPTCHA 評估要求,或在要求數量超過設定的門檻時,重新導向至其他網址。此外,您也可以根據 reCAPTCHA 豁免 Cookie 或權杖識別用戶端,以進行速率限制,藉此節流要求,或禁止以超過使用者設定門檻的速率重複使用或濫用相同 Cookie 或權杖的用戶端。
對 reCAPTCHA 豁免 Cookie 或權杖設定速率限制
為確保安全,建議您設定速率限制規則,防止透過每個專屬 reCAPTCHA 動作權杖、工作階段權杖或豁免 Cookie 多次使用權杖,下表說明如何將 reCAPTCHA 豁免 Cookie 或權杖識別為速率限制規則中的鍵。
資源 | enforce_on_key |
enforce_on_key_name |
---|---|---|
豁免 Cookie | HTTP-COOKIE |
recaptcha-ca-e |
動作符記 | HTTP-HEADER |
X-Recaptcha-Token |
工作階段符記 | HTTP-COOKIE |
recaptcha-ca-t |
您可以根據相同的豁免 Cookie 或權杖,限制要求或禁止用戶端,並超過設定的門檻。如要進一步瞭解速率限制參數,請參閱「套用速率限制」。
頻率限制範例
首先,假設您只在網站上選取的網址 (例如 /login.html
) 使用手動挑戰。如要達成此目標,請按照下列方式設定安全政策規則:
- 規則 1:如果要求附有有效的豁免 Cookie,且豁免 Cookie 的使用次數低於您定義的門檻,則允許要求。
- 規則 2:重新導向 reCAPTCHA 評估要求。
第二,假設您只在網站上使用動作權杖或工作階段權杖。
舉例來說,您可能會使用動作權杖保護重要使用者動作,例如 /login.html
。如要執行這項操作,請根據動作權杖的分數採取行動,如下所示:
- 規則 1:當動作權杖的分數高於預先定義的門檻 (例如
0.8
) 時,如果動作權杖的使用次數低於您定義的門檻,則允許要求。 - 規則 2:拒絕要求。
您可以設定類似的安全性政策規則,強制執行 reCAPTCHA 工作階段權杖評估。
第三,假設您在網站上選取的網址 (例如 /login.html
) 中,將動作權杖或工作階段權杖與手動挑戰結合,並想根據動作權杖的分數採取行動。如果分數不夠理想,您想讓使用者再次嘗試解決挑戰。如要這麼做,請按照下列方式設定安全性政策規則:
- 規則 1:當動作權杖的分數高於預先定義的門檻 (例如
0.8
) 時,如果動作權杖的使用次數低於您定義的門檻,則允許要求。 - 規則 2 和 3:如果動作權杖的分數高於其他預先定義的門檻 (例如
0.5
),請重新導向 reCAPTCHA 評估要求,除非要求附有有效的豁免 Cookie,且豁免 Cookie 的使用次數低於您定義的門檻。 - 規則 4:拒絕要求。
您可以設定類似的安全性政策規則,透過手動挑戰強制執行 reCAPTCHA 工作階段權杖評估。
如果您未調整速率限制規則,Cloud Armor 就不會限制每個 reCAPTCHA 豁免 Cookie、動作符記和工作階段符記的使用次數。如果是動作權杖,建議使用低門檻 (例如 1
) 和高時間間隔 (例如 30
分鐘,因為動作權杖的效期為 30 分鐘)。建議您根據流量統計資料推導出門檻。