區域 ID
REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。
進一步瞭解區域 ID。
安全防護是 Google Cloud的核心功能,但您仍須採取一些步驟來保護 App Engine 應用程式並找出安全漏洞。
請使用下列功能,確保您的 App Engine 應用程式安全無虞。如要進一步瞭解 Google 安全性模型,以及可以採取哪些步驟來保護 Google Cloud 專案,請參閱 Google Cloud Platform 安全性一文。
HTTPS 要求
您可以透過 HTTPS 要求,以安全的方式存取 App Engine 應用程式。視應用程式的設定方式而定,您可以使用下列幾種選項:
appspot.com網域- 使用
https網址前置字串,將 HTTPS 要求傳送至 Google Cloud 專案的default服務,例如:
https://PROJECT_ID.REGION_ID.r.appspot.com
如要指定 App Engine 應用程式中的特定資源,請使用
-dot-語法來區隔您要指定的每項資源,例如:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com如要將 HTTP 網址轉換為 HTTPS 網址,請將各項資源之間的半形句號改為
-dot-,例如:
http://SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
如要進一步瞭解 HTTPS 網址和指定資源的相關資訊,請參閱要求的轉送方式一文。
- 使用
- 自訂網域
如要透過自訂網域傳送 HTTPS 要求,您可以使用 App Engine 佈建的代管安全資料傳輸層 (SSL) 憑證。詳情請參閱使用安全資料傳輸層 (SSL) 保護自訂網域一文。
存取權控管
在每個 Google Cloud 專案中,設定存取權控管機制,決定哪些人可以存取專案中的服務,包括 App Engine。您可以為不同帳戶指派不同角色,確保每個帳戶只具備支援應用程式所需的權限。詳情請參閱「設定存取權控管」。
App Engine 防火牆
App Engine 防火牆可讓您透過一組規則來允許或拒絕來自指定 IP 位址範圍的要求,藉此控管 App Engine 應用程式的存取權。您不必為防火牆封鎖的流量或頻寬支付費用。建立防火牆之後,您就可以套用下列設定:
- 只允許來自特定網路的流量
- 確保只有特定網路中的某個 IP 位址範圍可以存取您的應用程式。舉例來說,您可以在應用程式測試階段建立規則,只允許公司私人網路中的 IP 位址範圍。接著,您可以在應用程式發布流程的各個階段中建立及修改防火牆規則,只允許特定機構 (您的公司或外部機構) 存取您的應用程式,藉此控管存取權範圍,直到應用程式公開發布為止。
- 只允許來自特定服務的流量
- 確保所有連入 App Engine 應用程式的流量都已先透過特定服務的 Proxy 進行處理。舉例來說,如果您使用第三方網頁應用程式防火牆 (WAF) 將導向應用程式的要求傳送至 Proxy,您可以建立如下的防火牆規則:除了由 WAF 轉送的要求以外,所有其他要求一律拒絕。
- 封鎖違規 IP 位址
- 雖然 Google Cloud 提供了許多攻擊防範機制,但您仍可以使用 App Engine 防火牆,封鎖從帶有不良意圖的 IP 位址連向應用程式的流量,或防止應用程式受到阻斷服務攻擊和類似形式的濫用行為。您可以將 IP 位址或子網路加入拒絕清單,這樣系統就會拒絕轉送來自這些位址和子網路的要求,將要求阻隔在 App Engine 應用程式之外。
如要進一步瞭解如何建立規則和設定防火牆,請參閱透過防火牆控管應用程式存取權一文。
輸入控制項
本節說明如何使用 Ingress 設定,限制對 App Engine 應用程式的網路存取權。在網路層級,根據預設,網際網路上的任何資源都能透過 appspot 網址或在 App Engine 中設定的自訂網域存取 App Engine 應用程式。舉例來說,appspot.com 網址可採用下列格式:SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com。
如要變更這項預設設定,請為 Ingress 指定其他設定。所有連入路徑 (包括預設 appspot.com 網址) 都會受到連入設定的限制。Ingress 是在服務層級設定。
可用的輸入設定
可用的設定如下:
| 設定 | 說明 |
|---|---|
| 內部 |
最嚴格的限制。允許來自專案虛擬私有雲網路所連結資源的要求,例如:
appspot.com URL 存取您的服務,要求仍會留在 Google 網路內。
來自其他來源 (包括網際網路) 的要求,無法透過 appspot.com URL 或自訂網域連線至您的服務。系統不支援多重租戶,也就是同一專案內的多個信任網域。 |
| 內部和 Cloud Load Balancing | 允許來自下列資源的要求:
appspot.com 網址的要求會略過外部應用程式負載平衡器,因此這項設定可防止外部要求連上 appspot.com 網址。 |
| 全部 |
最寬鬆的設定。允許所有要求,包括直接從網際網路傳送至 appspot.com 網址的要求。 |
存取內部服務
注意事項如下:
如果是來自共用虛擬私有雲的要求,只有在 App Engine 應用程式部署在共用虛擬私有雲主專案中時,流量才會視為內部流量。如果 App Engine 應用程式部署在共用虛擬私有雲服務專案中,只有來自應用程式所屬專案的網路流量屬於內部流量。所有其他流量 (包括來自其他 Shared VPC 的流量) 都是外部流量。
存取內部服務時,請使用服務的公開網址 (預設
appspot.com網址或在 App Engine 中設定的自訂網域),照常呼叫服務。如果是來自 Compute Engine VM 執行個體的要求,或是相同專案中 VPC 網路內執行的其他資源,則無須進一步設定。
如要處理來自其他 App Engine 服務,或來自相同專案中 Cloud Run 或 Cloud Run 函式的要求,請將服務或函式連線至虛擬私有雲網路,並透過連接器轉送所有輸出流量,如「連線至共用虛擬私有雲網路」一文所述。
即使資源具有公開 IP 位址,來自相同專案中虛擬私有雲網路內資源的要求,仍會歸類為內部要求。
透過 Cloud VPN 連線至 VPC 網路的內部部署資源發出的要求,會視為
internal。
查看輸入設定
控制台
前往「App Engine Services」(App Engine 服務) 頁面。
找出「Ingress」欄。這個資料欄中的值會顯示每個服務的 Ingress 設定,包括「全部」 (預設)、「內部 + 負載平衡」或「內部」。
gcloud
如要使用 gcloud CLI 查看服務的輸入設定,請執行下列指令:
gcloud app services describe SERVICE
將 SERVICE 改為您的服務名稱。
舉例來說,如要查看預設服務執行的輸入設定和其他資訊,請執行下列操作:
gcloud app services describe default
編輯輸入設定
控制台
前往「App Engine Services」(App Engine 服務) 頁面。
選取要編輯的服務。
按一下「編輯 Ingress 設定」。
從選單中選取所需的 Ingress 設定,然後按一下「儲存」。
gcloud
如要使用 gcloud CLI 更新服務的輸入設定,請按照下列步驟操作:
gcloud app services update SERVICE --ingress=INGRESS
取代:
- SERVICE:服務名稱。
- INGRESS:要套用的輸入控管。可能的值為
all、internal-only或internal-and-cloud-load-balancing。
例如:
如要更新 App Engine 應用程式的預設服務,只接受來自 Cloud Load Balancing 和相同專案中 VPC 網路的流量,請按照下列步驟操作:
gcloud app services update default --ingress=internal-and-cloud-load-balancing
如要更新名為「internal-requests」的服務,只接受來自相同專案中虛擬私有雲網路的流量,請執行下列步驟:
gcloud app services update internal-requests --ingress=internal-only
輸出設定
如果您使用無伺服器 VPC 存取,可以為 App Engine 服務指定輸出設定。
根據預設,只有傳送至內部 IP 位址和內部 DNS 名稱的要求,才會透過無伺服器虛擬私有雲存取連接器轉送。您可以在 app.yaml 檔案中指定服務的輸出設定。
輸出設定與網址擷取服務不相容。如果尚未停用,請停用 URL Fetch 預設值,並停止明確使用 urlfetch 程式庫。使用 urlfetch 程式庫會忽略輸出設定,要求也不會透過無伺服器 VPC 存取連接器傳送。
如要設定 App Engine 服務的出站行為,請按照下列步驟操作:
在服務的
app.yaml檔案中,將egress_setting屬性新增至vpc_access_connector欄位:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
取代:
- 將
PROJECT_ID替換為 Google Cloud 專案 ID - 將
REGION替換為連接器所在的區域 - 將
CONNECTOR_NAME替換為連接器名稱 EGRESS_SETTING,並符合下列其中一項條件:
- 將
部署服務:
gcloud app deploy
Security Scanner
Google Cloud Web Security Scanner 會檢索您的 App Engine 應用程式、追蹤起始網址涵蓋的所有連結,並盡可能執行大量的使用者輸入動作和事件處理常式,藉此找出安全漏洞。
如要使用 Security Scanner,您必須是Google Cloud 專案的擁有者。如要進一步瞭解如何指派角色,請參閱設定存取權控管。
您可以透過 Google Cloud 主控台執行安全性掃描,找出 App Engine 應用程式中的安全漏洞。如要進一步瞭解如何執行 Security Scanner,請參閱「使用 Web Security Scanner」。