輸入設定

區域 ID

REGION_ID 是 Google 根據您建立應用程式時選取的區域指派的縮寫代碼。這個代碼不對應國家/地區或省/市,即使某些區域 ID 可能與常用的國家/地區和省/市代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是 2020 年 2 月前建立的現有應用程式,網址中的區域 ID 則為選用。

進一步瞭解區域 ID。

本節說明如何使用輸入設定,限制對 App Engine 應用程式的網路存取。在網路層級,根據預設,網際網路上的任何資源都能透過 App Engine 應用程式的 appspot 網址,或在 App Engine 中設定的自訂網域,存取該應用程式。例如,appspot.com 網址可以採用下列格式:SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com。

如要變更這項預設設定,請為輸入指定其他設定。所有輸入路徑 (包括預設 appspot.com 網址) 都受輸入設定規範。輸入設定是在服務層級設定。

可用的輸入設定

可用的設定如下:

設定 說明
內部 最嚴格。允許來自專案虛擬私有雲網路所附加資源的要求,例如:
即使這些來源透過 appspot.com 網址存取您的服務,要求仍會保留在 Google 網路中。 來自其他來源 (包括網際網路) 的要求無法透過 appspot.com 網址或自訂網域存取您的服務。不支援多用戶群架構,也就是同一項專案中有多個信任網域。
內部和 Cloud Load Balancing 允許來自下列資源的要求:
  • 限制較嚴格的「內部」設定允許的資源
  • 外部應用程式負載平衡器
使用「內部和 Cloud Load Balancing」設定,接受來自外部應用程式負載平衡器的要求,但不接受直接來自網際網路的要求。傳送至 appspot.com 網址的要求會略過外部應用程式負載平衡器,因此這項設定可防止外部要求傳送至 appspot.com 網址。
全部 最寬鬆。允許所有要求,包括直接從網際網路傳送至 appspot.com 網址的要求。

存取內部服務

請注意以下事項:

  • 如果是來自 Shared VPC 的要求,只有在 App Engine 應用程式部署於 Shared VPC 主機專案時,流量才會視為內部流量。如果 App Engine 應用程式部署在 Shared VPC 服務專案中,則只有來自應用程式自有專案所屬網路的流量,才會視為內部流量。所有其他流量 (包括來自其他 Shared VPC 的流量) 均為外部流量。

  • 存取內部服務時,請照常使用公開網址呼叫服務,也就是預設的 appspot.com 網址或在 App Engine 中設定的自訂網域。

  • 如果要求來自 Compute Engine VM 執行個體,或其他在同一專案的虛擬私有雲網路中執行的資源,則不需進一步設定。

  • 即使來源資源具有公開 IP 位址,只要要求來自相同專案中虛擬私有雲網路內的資源,就會歸類為內部要求。

  • 如果要求來自透過 Cloud VPN 連線至虛擬私有雲網路的地端部署資源,則視為internal。

  • 如要處理來自其他 App Engine 服務,或來自相同專案中 Cloud Run 或 Cloud Run 函式的要求,請將服務或函式連線至虛擬私有雲網路,並透過連接器轉送所有輸出流量,詳情請參閱「連線至 Shared VPC 網路」。

查看輸入設定

控制台

  1. 前往「App Engine Services」(App Engine 服務) 頁面。

    前往「Services」(服務) 頁面

  2. 找到「Ingress」欄。針對每項服務,這個資料欄中的值會顯示輸入設定,包括「All」(全部) (預設)、「Internal + Load Balancing」(內部 + 負載平衡) 或「Internal」(內部)。

gcloud

如要使用 gcloud CLI 查看服務的輸入設定,請按照下列步驟操作:

gcloud app services describe SERVICE

將 SERVICE 改為您的服務名稱。

舉例來說,如要查看預設服務的輸入設定和其他資訊,請執行下列指令:

gcloud app services describe default

編輯輸入設定

控制台

  1. 前往「App Engine Services」(App Engine 服務) 頁面。

    前往「Services」(服務) 頁面

  2. 選取要編輯的服務。

  3. 按一下「Edit ingress setting」(編輯輸入設定)。

  4. 從選單中選取所需的輸入設定,然後按一下「Save」(儲存)。

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 和虛擬私有雲網路的流量,請按照下列步驟操作:

    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 名稱的要求,才會透過無伺服器 VPC 存取連接器轉送。您可以在 app.yaml 檔案中指定服務的輸出設定。

輸出設定與網址擷取服務不相容。使用 urlfetch 程式庫會忽略輸出設定,且要求不會透過無伺服器 VPC 存取連接器轉送。

如要設定 App Engine 服務的輸出行為,請按照下列步驟操作:

  1. 在服務 app.yaml 檔案的 vpc_access_connector 欄位中,新增 egress_setting 屬性:

    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 替換為下列其中一項:
      • private-ranges-only:預設值。只有傳送至 RFC 1918 和 RFC 6598 IP 位址範圍或內部 DNS 名稱的要求,才會轉送至虛擬私有雲網路。所有其他要求都會直接轉送至網際網路。
      • all-traffic 服務的所有傳出要求都會轉送至虛擬私有雲網路。接著,要求會受到虛擬私有雲網路的防火牆、DNS 和路由規則限制。 請注意,將所有傳出要求轉送至虛擬私有雲網路,會增加無伺服器 VPC 存取連接器處理的輸出量,並可能產生費用。
  2. 部署服務:

    gcloud app deploy
    

使用 private-ranges-only 時,傳送至公開網際網路的輸出要求會使用無伺服器工作負載共用的區域動態 IP 位址集區。如要保護信譽敏感的外部連線,避免遭到第三方防火牆封鎖,或隔離授權的網路掃描和負載測試工作負載,請將輸出設定設為 all-traffic,並使用靜態傳出 IP 位址設定 Cloud NAT。