區域 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 應用程式之外。
如要進一步瞭解如何建立規則和設定防火牆,請參閱透過防火牆控管應用程式存取權一文。
輸入控管
本節說明如何使用入口設定限制對 App Engine 應用程式的網路存取權。在網路層級,根據預設,網路上的任何資源都能透過 appspot URL 或在 App Engine 中設定的自訂網域存取您的 App Engine 應用程式。例如,appspot.com
網址可以採用下列格式:SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
。
您可以指定不同的入口設定來變更這項預設設定。所有入口路徑 (包括預設 appspot.com
網址) 都會受到入口設定的影響。Ingress 是在服務層級設定。
可用的輸入設定
可用的設定如下:
設定 | 說明 |
---|---|
內部 |
最嚴格。允許來自已連結至專案虛擬私有雲網路的資源的請求,例如:
appspot.com URL 存取您的服務也是如此。來自其他來源 (包括網際網路) 的要求無法透過 appspot.com 網址或自訂網域存取您的服務。系統不支援多租戶模式,也就是在同一個專案中有多個信任網域。 |
內部和雲端負載平衡 | 允許來自下列資源的要求:
appspot.com 網址的請求會略過外部應用程式負載平衡器,因此這項設定可防止外部要求存取 appspot.com 網址。 |
全部 |
最寬鬆。允許所有要求,包括直接從網際網路傳送至 appspot.com 網址的要求。 |
存取內部服務
請考量下列因素:
對於共用虛擬私有雲的請求,只有在共用虛擬私有雲主機專案中部署 App Engine 應用程式時,流量才會視為內部流量。如果 App Engine 應用程式是部署在共用虛擬私有雲服務專案中,則只有應用程式專案擁有的網路流量才會歸類為內部流量。所有其他流量 (包括其他共用虛擬私有雲的流量) 都屬於外部流量。
存取內部服務時,請使用其公開網址 (預設
appspot.com
網址或在 App Engine 中設定的自訂網域) 以正常方式呼叫服務。如果要求來自 Compute Engine VM 執行個體或在相同專案內的 VPC 網路中執行的其他資源,則不需要進一步設定。
如果是來自其他 App Engine 服務或同一專案中 Cloud Run 或 Cloud Run 函式的要求,請將服務或函式連線至虛擬私有雲網路,並透過連接器轉送所有傳出流量,如「連線至共用虛擬私有雲網路」一文所述。
同一個專案中虛擬私人雲端網路中的資源發出的請求,即使來源資源有公開 IP 位址,也會歸類為內部。
透過 Cloud VPN 連線至 VPC 網路的內部部署資源所提出的要求,會視為
internal
。
查看 ingress 設定
控制台
前往「App Engine Services」(App Engine 服務) 頁面。
找出「Ingress」欄。針對每項服務,這個欄中的值會顯示「所有」 (預設)、「內部 + 負載平衡」或「內部」等入口設定。
gcloud
如要使用 gcloud CLI 查看服務的入口設定,請按照下列步驟操作:
gcloud app services describe SERVICE
將 SERVICE 改為您的服務名稱。
例如,如要查看預設服務執行作業的入口設定和其他資訊,請執行下列操作:
gcloud app services describe default
編輯輸入設定
控制台
前往「App Engine Services」(App Engine 服務) 頁面。
選取要編輯的服務。
按一下「編輯入站設定」。
從選單中選取所需的入口設定,然後按一下「儲存」。
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
輸出設定
如果您使用無伺服器虛擬私有雲端存取,可以為 App Engine 服務指定出口設定。
根據預設,只有內部 IP 位址和內部 DNS 名稱的要求會透過無伺服器虛擬私人雲端存取連接器轉送。您可以在 appengine-web.xml
檔案中指定服務的輸出設定。
外送設定與 網址擷取服務不相容。如果您尚未停止使用 URLFetchService
,請立即停止。使用 urlfetch
程式庫會忽略輸出設定,且要求不會透過無伺服器虛擬私有雲存取連接器路由。
如要設定 App Engine 服務的傳出行為,請按照下列步驟操作:
將
<egress-setting>
元素新增至服務appengine-web.xml
檔案中的<vpc-access-connector>
元素:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>EGRESS_SETTING</egress-setting> </vpc-access-connector>
取代:
- 將
PROJECT_ID
改成您的 Google Cloud 專案 ID REGION
連接器所在的地區CONNECTOR_NAME
替換為連接器名稱EGRESS_SETTING
與下列任一值:
- 將
部署服務:
gcloud app deploy WEB-INF/appengine-web.xml
Security Scanner
Google Cloud Web Security Scanner 會檢索您的 App Engine 應用程式、追蹤起始網址涵蓋的所有連結,並盡可能執行大量的使用者輸入內容和事件處理常式,藉此找出安全漏洞。
如要使用 Security Scanner,您必須是Google Cloud 專案的擁有者。如要進一步瞭解如何指派角色,請參閱「設定存取權控管」。
您可以透過 Google Cloud 主控台執行安全性掃描,找出 App Engine 應用程式中的安全漏洞。如要進一步瞭解如何執行 Security Scanner,請參閱「使用 Web Security Scanner」。