在迷霧中追尋惡意請求之後,冒險者終於抵達城堡的核心。眼前是一座古老的祭壇,上面刻滿符文,散發著幽光。這正是守護整座王國的法術 —— Google Cloud Armor。
Armor 就像「結界術」,能將巨龍的烈焰與魔物的突襲隔絕於城牆之外。今日,我將學會如何從基礎到進階,布下結界守護術。
在冒險者剛掌握魔法之時,最需要的就是簡單、直接的防禦術。這些初級結界能立刻在城門口築起屏障。
如同在城門立下結界法陣,第一步是開啟 Armor,並在 Load Balancer 前布署防護規則。
透過 gcloud CLI 指令快速建立一條規則:
gcloud compute security-policies create my-armor-policy \
--description "Adventure Shield - 基礎結界"
惡意騎兵團常從同一方位進攻,冒險者可以直接封印該地區的入口,阻止其再度入侵。
gcloud compute security-policies rules create 1000 \
--security-policy=my-armor-policy \
--src-ip-ranges="203.0.113.0/24" \
--action=deny-403 \
--description="封鎖惡意IP結界"
指令解說:
gcloud compute security-policies rules create 1000
:在 Cloud Armor 裡建立一條規則1000
:規則優先順序(數字越小優先級越高,範圍是 0~2147483647)--security-policy=my-armor-policy
:指定要套用的安全策略名稱--src-ip-ranges="203.0.113.0/24"
:定義來源 IP 範圍(CIDR 表示法),代表 203.0.113.0 ~ 203.0.113.255 的所有 IP--action=deny-403
:動作是拒絕存取,並回應 HTTP 403 Forbidden,使用者會看到「禁止存取」的錯誤--description="封鎖惡意IP結界"
:給這條規則加上描述,方便後續管理和辨識某些邪惡的魔法傀儡會偽裝身分潛入城堡,但它們的魔法印記(User-Agent)卻無法完全隱藏。
gcloud compute security-policies rules create 1100 \
--security-policy=my-armor-policy \
--expression="request.headers['user-agent'].matches('.*BadBot.*')" \
--action=deny-403 \
--description="阻擋壞機器人 UA"
表達式解說:
--expression="request.headers['user-agent'].matches('.*BadBot.*')"
:使用 CEL (Common Expression Language) 表達式判斷條件request.headers['user-agent']
:取出 HTTP 請求的 User-Agent 標頭.matches('.*BadBot.*')
:用正規表示法檢查是否包含 BadBot 字串面對小型洪水般的攻擊(DoS),冒險者可以設下「流量閥門」,防止短時間內過多請求癱瘓系統。
gcloud compute security-policies rules create 1300 \
--security-policy=my-armor-policy \
--expression="true" \
--action=throttle \
--rate-limit-threshold-count=100 \
--rate-limit-threshold-interval-sec=60 \
--conform-action=allow \
--exceed-action=deny-429 \
--description="防止簡單洪水攻擊"
速率限制參數:
--action=throttle
:啟用速率限制 (rate limiting) 動作--rate-limit-threshold-count=100
:門檻次數:最多 100 次--rate-limit-threshold-interval-sec=60
:計算時間窗口:60 秒,也就是 1 分鐘 100 次的限制--conform-action=allow
:沒超過限制的請求 → 允許--exceed-action=deny-429
:超過限制 → 拒絕並回覆 429 Too Many Requests簡單來說: 這個規則會讓每個來源在 1 分鐘內最多 100 次請求,超過的部分會被擋掉並回覆 429 Too Many Requests。
目前這套設置可以有效阻擋:
但仍無法完全防護:
所以接下來要繼續加強我們的結界術!發揮最大魔力,進階 Armor 用法!
隨著冒險者修行的提升,基礎結界已不足以抵禦高階魔物。於是更強大的結界術被傳授,能應對更狡詐與強力的敵人。
就像在結界中刻下複雜符文,可精準抵禦 SQLi、XSS 等針對性攻擊。
城堡裡不只有直接衝擊的敵人,還有潛伏在信件或魔法卷軸中的陷阱:
SQL Injection(SQLi)
惡徒試圖在城堡的倉庫系統(資料庫)植入魔法符文,偷偷竊取或修改財寶。你啟動了 SQLi 結界,只要檢測到類似符文的攻擊,立刻阻擋並回應 403。
gcloud compute security-policies rules create 1400 \
--security-policy=my-armor-policy \
--expression="evaluatePreconfiguredWaf('sqli-v33-stable')" \
--action=deny-403 \
--description="阻擋 SQL Injection"
XSS(跨站腳本攻擊)
有些敵人會在留言板或公告中放置暗黑魔法咒語(惡意腳本),想操控城堡內的訪客。你啟動了 XSS 結界,凡檢測到危險咒語的請求都會被攔截。
gcloud compute security-policies rules create 1500 \
--security-policy=my-armor-policy \
--expression="evaluatePreconfiguredWaf('xss-v33-stable')" \
--action=deny-403 \
--description="阻擋 XSS 攻擊"
⚠️ WAF 預設規則可能誤擋正常流量
gcloud compute security-policies rules create 1400 \
--security-policy=my-armor-policy \
--expression="evaluatePreconfiguredWaf('sqli-v33-stable')" \
--action=preview \
--description="SQLi 預覽模式"
Preview 模式的優點:
--action=preview
:不實際阻擋,只記錄觸發事件deny-403
正式封鎖防禦並非死板,透過 Logging 分析,可以在發現異常後自動生成規則,像結界能隨戰場狀況即時變化。
gcloud compute security-policies update my-armor-policy --enable-logging
完成這些結界術後,冒險者的城堡已經築起強大的護盾。無論是惡意請求的史萊姆,還是狡詐的魔狼,都難以再次突破城門。
然而,真正的戰爭不會就此結束。結界需要不斷調整與強化,否則新的魔物終會找到縫隙。
基礎結界能防護:
進階結界能防護:
仍需持續關注: