在 App Engine 中,您最多可以為防火牆建立 1000 項個別規則,並為這些規則指定優先順序,藉此允許或限制特定範圍的 IP 位址和子網路。應用程式只會回應防火牆允許的請求。
如要瞭解 App Engine 防火牆的運作方式,請參閱「瞭解防火牆」。
事前準備
您必須具備下列其中一種 App Engine IAM 角色,才能為應用程式建立 App Engine 防火牆規則,這些角色均擁有建立或修改防火牆規則的必要權限:
- App Engine 管理員
- 編輯者
- 擁有者
建立防火牆規則
您可以使用以下任何一種方法建立防火牆規則。每次建立規則時,都要重複下列步驟:
請使用主控台的「防火牆規則」頁面建立防火牆規則: Google Cloud
-
前往 Google Cloud 主控台的「建立防火牆規則」頁面:
-
指定防火牆規則的詳細資料:
-
在「Priority」(優先順序) 中輸入整數來指定規則的相對重要性,以及定義規則的評估順序。
有效值是
1
到2147483646
。優先順序為1
的規則會最先受到評估,優先順序2147483647
則保留給「預設」規則,這項規則最後才會受到評估。 -
在「Action on match」(相符時執行的動作) 中,指定要允許或拒絕符合規則的存取要求。設為
allow
的規則會將要求轉送至應用程式,而設為deny
的規則會以403 Forbidden
錯誤回應要求。 - 在「IP range」(IP 範圍) 中,定義適用於該規則的 IP 位址範圍。IP 位址範圍必須以 CIDR 標示法來定義,且可包含子網路遮罩,同時支援 IPv4 和 IPv6。
- 選填項目:在「Description」(說明) 中新增規則的相關說明,但長度不可超過 100 個字元。
-
在「Priority」(優先順序) 中輸入整數來指定規則的相對重要性,以及定義規則的評估順序。
- 按一下 [Save] (儲存) 即可建立規則。
-
測試規則,以確保優先順序和動作會提供合乎您預期的行為:
- 按一下 [Test IP address] (測試 IP 位址)。
- 輸入您要驗證的 IP 位址,然後按一下 [Test] (測試),確保系統能夠正確評估對應的規則。
請執行下列 gcloud
app firewall-rules
指令來建立防火牆規則:
-
執行下列指令來建立防火牆規則:
where:gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
-
PRIORITY 是介於
1
和2147483646
之間的整數,用來定義規則的重要性和評估順序。優先順序為1
的規則會最先受到評估,優先順序2147483647
則保留給「預設」規則,這項規則最後才會受到評估。 -
ALLOW_OR_DENY 指定要允許或拒絕符合規則的存取要求。有效值為
allow
或deny
。設為allow
的規則會將要求轉送至應用程式,而設為deny
的規則會以403 Forbidden
錯誤來回應要求。 - IP_RANGE 定義適用於該規則的 IP 位址範圍。IP 範圍必須以 CIDR 標示法來定義,且可包含子網路遮罩,同時支援 IPv4 和 IPv6。
- DESCRIPTION 是選填的規則說明,長度不超過 100 個字元。
-
PRIORITY 是介於
- 執行下列指令來測試規則,以確保優先順序和動作會提供合乎您預期的行為:
其中 IP_ADDRESS 是您要用來測試防火牆規則的 IP 位址。gcloud app firewall-rules test-ip IP_ADDRESS
- 執行下列指令,來查看現有規則的清單:
gcloud app firewall-rules list
- 執行下列指令,刪除某個現有的規則:
其中 PRIORITY 是待刪除規則的優先順序值。gcloud app firewall-rules delete PRIORITY
- 範例:
-
以下範例可協助您建立防火牆:
-
新增允許 IPv6 位址和子網路遮罩的規則,接著進行測試,確保其評估順序高於其他規則:
gcloud app firewall-rules create 123 --source-range fe80::3636:3bff:fecc:8778/128 --action allow gcloud app firewall-rules test-ip fe80::3636:3bff:fecc:8778
-
新增拒絕 IPv4 位址和子網路遮罩的規則,接著進行測試,確保系統會正確評估這項規則:
gcloud app firewall-rules create 123456 --source-range "74.125.0.0/16" --action deny gcloud app firewall-rules test-ip 74.125.0.8
-
更新並測試預設規則,確保這項規則會限制所有不符合其他任何規則的 IP 位址:
gcloud app firewall-rules update default --action deny gcloud app firewall-rules test-ip 123.456.7.89
-
如要透過程式建立 App Engine 應用程式的防火牆規則,您可以使用 Admin API 中的 apps.firewall.ingressRules
方法。
如要測試防火牆規則並確保優先順序和動作符合預期行為,您可以使用 apps.firewall.ingressRules.list
方法,並在 matchingAddress
參數中指定要測試的 IP 位址。
瞭解 App Engine 防火牆規則
App Engine 防火牆由已排序的規則清單組成,這些規則可允許或拒絕指定的 IP 位址或範圍存取您的應用程式,涵蓋範圍包括 App Engine 應用程式的所有資源。
防火牆規則優先順序
防火牆規則是依重要性排序,而重要性則根據您對每項規則以數值定義的優先順序而定。您必須為每項規則指定專屬的優先順序值,因為此值可定義各規則相對於防火牆中其他規則的重要性。規則的優先順序值從 1
(最重要的值) 排列到 2147483647
(最不重要的值)。
個防火牆都包含一項自動建立的 default
規則,優先順序為 2147483647
,適用於應用程式的整個 IP 範圍。default
規則的評估順序一律次於防火牆的其他所有規則,並適用於所有 IP 位址的所有要求。
防火牆會先評估優先順序最高的規則,接下來再按順序評估防火牆中的其他規則,直到某項規則符合要求的 IP 範圍。找到相符的規則後,防火牆就會允許或拒絕連線,並略過防火牆中其餘的所有規則。如果防火牆中所有手動定義的規則皆不符合要求,系統就會評估 default
規則。
舉例來說,如果您建立優先順序為 1
的規則,系統會一律先評估這項規則。如果傳入要求與優先順序為 1
的規則相符,系統則只會評估該規則,並略過防火牆中的所有其他規則,包括 default
規則在內。
以下防火牆範例說明規則優先順序對防火牆行為的影響。
防火牆範例
在此範例中,某公司設定了防火牆,將開發中應用程式的存取權授予工程團隊和內部公司網路。建立防火牆規則時,每個優先順序之間保留了較大的間隔值,以因應增加規則之需。
優先順序 | 動作 | IP 範圍 | 說明 |
---|---|---|---|
1000 | 拒絕 | 192.0.2.1 | 拒絕 DoS 攻擊者存取。 |
2000 | 允許 | 198.51.100.2 | 允許分公司辦公室的某位工程師存取。 |
3000 | 拒絕 | 198.51.100.0/24 | 拒絕所有非工程部門建築物的網路存取。 |
5000 | 允許 | 203.0.113.0/24 | 允許主建築物的網路存取。 |
2147483647 | 拒絕 | * | 預設動作 |
建立防火牆之後,假設系統會將下列要求導向範例應用程式,請注意應用程式的回應:
- 來自 198.51.100.2 的要求符合優先順序為 2000 的規則,並且獲得允許。
- 來自 198.51.100.100 的要求符合優先順序為 3000 的規則,因此遭到拒絕。
- 來自 203.0.113.54 的要求符合優先順序為 5000 的規則,並且獲得允許。
- 來自 45.123.35.242 的要求符合預設規則,因此遭到拒絕。
解決發生衝突的規則
舉例來說,假設將公司防火牆的兩個優先順序互換,如果將優先順序 2000 和 3000 的規則互換,請留意以下非預期的行為。
優先順序 | 動作 | IP 範圍 | 說明 |
---|---|---|---|
1000 | 拒絕 | 192.0.2.1 | 拒絕 DoS 攻擊者存取。 |
2000 | 拒絕 | 198.51.100.0/24 | 拒絕所有非工程建築物的網路存取。 |
3000 | 允許 | 198.51.100.2 | 允許分公司辦公室的某位工程師存取。 |
5000 | 允許 | 203.0.113.0/24 | 允許主建築物的網路存取。 |
2147483647 | 拒絕 | * | 預設動作 |
分公司辦公室裡的工程師將無法存取公司的應用程式,因為根據新的規則優先順序,系統一律不會評估「允許該工程師存取」的規則。儘管有一項規則允許該名工程師的 IP 位址 198.51.100.2
進行存取,但這個 IP 位址同時符合拒絕 198.51.100.0/24
範圍中所有非工程大樓存取的規則,而且拒絕規則的優先順序較高。
如要修正這個問題,您必須針對允許 198.51.100.2
存取的規則,把優先順序設定為高於拒絕 IP 範圍 198.51.100.0/24
存取的規則。
後續步驟
如要確保您是以安全的方式設定應用程式和適當的存取權層級,請參閱應用程式安全防護與存取權控管的相關說明。