設定私人專屬服務

本頁面說明如何設定,才能僅透過內部 IP 位址公開 App Engine 彈性環境服務。

根據預設,彈性環境服務在首次部署時,會同時取得內部 IP 位址和臨時外部 IP 位址。臨時外部 IP 位址可讓服務將要求傳送至具有自訂網域的 App Engine 服務,以及網際網路上的資源。臨時外部 IP 位址會產生費用。

如果服務不需要外部 IP 位址,您可以限制服務僅使用內部 IP 位址,防止服務向網際網路上的資源傳送要求,並降低成本。這不會阻止服務接收來自網際網路或具有自訂網域的 App Engine 服務的要求,因為服務的完整網域名稱仍可從外部查看。

限制

停用臨時外部 IP 位址有下列限制:

  • 具有自訂網域的服務:如要將要求傳送至具有自訂網域的 App Engine 服務,您必須設定 Cloud NAT。
  • 外部資源:如要將要求傳送至外部資源,您必須設定 Cloud NAT。
  • Private Google Access 依附元件:如果執行個體的 IP 模式設為 internal,目標子網路必須啟用Private Google Access。
  • 舊版網路: 舊版網路無法使用 Private Google Access,因此無法停用臨時外部 IP 位址。

事前準備

如要部署沒有外部 IP 位址的彈性環境應用程式,必須在目標子網路上啟用私人 Google 存取權。

準備 Shared VPC 網路

如果您使用 Shared VPC,請按照下列步驟準備 Shared VPC 虛擬私有雲網路,以便進一步設定。

  1. 確認您有與 Private Google Access 相容的路由。一般來說,網路的預設路徑與 Private Google Access 相容。如果是其他路徑,請確認路徑設定如下。

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Instance tags: INSTANCE_TAGS
    Next hop: DEFAULT_INTERNET_GATEWAY
    

    更改下列內容:

    • SHARED_VPC_NETWORK_NAME:Shared VPC 網路的名稱。
    • INSTANCE_TAGS:如果您不使用任何執行個體標記,請勿在這個欄位中指定任何內容。如果您使用執行個體標記,請在執行個體標記清單中加入 aef-instances。
    • DEFAULT_INTERNET_GATEWAY:預設網際網路閘道。

    如要進一步瞭解 Private Google Access 的相容路徑,請參閱 Private Google Access 說明文件的轉送選項。

  2. 確認您有與 Private Google Access 相容的防火牆規則。防火牆規則必須按照下列方式設定。

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Destination filter: IP ranges
    Direction of traffic: Egress
    Attach on match: Allow
    Instance tags: INSTANCE_TAGS
    

    更改下列內容:

    • SHARED_VPC_NETWORK_NAME:Shared VPC 網路的名稱。
    • INSTANCE_TAGS:如果您不使用任何執行個體標記,請勿在這個欄位中指定任何內容。如果您使用執行個體標記,請在執行個體標記清單中加入 aef-instances。

    如要進一步瞭解 Private Google Access 的相容防火牆規則,請參閱防火牆設定的 Private Google Access 說明文件。

將服務設為僅使用內部 IP 位址

  1. 更新 Google Cloud CLI。這可確保您使用的 gcloud CLI 版本支援彈性環境應用程式的私人 IP 位址。

    gcloud components update
  2. 在 app.yaml 檔案中,將 instance_ip_mode 欄位新增至 network 區段,並設為 internal。

    • 如果 app.yaml 檔案已有 network 區段,請在 network 區段中加入以下這行:

      instance_ip_mode: internal

    • 如果 app.yaml 檔案沒有 network 區段,請建立該區段,並新增下列程式碼行來指定執行個體 IP 模式:

      network:
       instance_ip_mode: internal

    儲存變更。

  3. 部署服務。

    gcloud beta app deploy
  4. 前往 Google Cloud 控制台的「執行個體」頁面,確認設定是否正確。

    前往「Instances」(執行個體) 頁面

    向下捲動至「執行個體」表格 (位於「摘要」圖表下方)。確認「External IP」(外部 IP) 欄中未列出任何 IP 位址。如果這個資料欄沒有 IP 位址,代表執行個體沒有外部 IP 位址。即使這個欄位留空,執行個體仍有內部 IP 位址。

在沒有外部 IP 位址的情況下傳送外部要求

如果服務會向網際網路傳送要求,但您想限制服務只能使用內部 IP 位址,可以使用 Cloud NAT 建立閘道。服務可以透過 Cloud NAT 閘道,使用保留的靜態外部 IP 位址 (而非預設的暫時性外部 IP 位址) 傳送傳出要求。

在下列情況下,請將服務設為搭配 Cloud NAT 和專用靜態外部 IP 位址使用 instance_ip_mode: internal:

  • 您連線至需要 IP 位址許可清單或防火牆規則的外部資料庫或 API。
  • 您連線至對信譽敏感的外部端點,例如付款閘道、代管資料庫,或受第三方網頁應用程式防火牆 (WAF) 保護的合作夥伴 API。共用臨時 IP 位址集區中先前的流量或雜訊流量,可能會降低 IP 信譽,導致外部 WAF 封鎖或限制您的要求,並出現 HTTP 403 錯誤或連線逾時。
  • 您執行授權的網路掃描、通訊埠列舉、主機指紋、安全漏洞探測、網路抓取或負載測試工作負載。

如要透過 Cloud NAT 轉送傳出網際網路要求,請按照下列步驟操作:

  1. 請按照「將服務設為僅使用內部 IP 位址」一節中的步驟操作。

  2. 按照設定 Cloud NAT 的步驟操作,並將保留的靜態外部 IP 位址指派給閘道。

如果服務會擴充至多個執行個體,或開啟多個並行連線 (例如在授權網路掃描期間),請為 Cloud NAT 指派多個靜態 IP 位址。您也可以增加每個執行個體的通訊埠數量下限,或啟用動態通訊埠分配功能,避免通訊埠用盡。進一步瞭解 Cloud NAT 閘道如何使用 IP 位址和通訊埠。

如要進一步瞭解這個方法,請參閱 Cloud Architecture Center 說明文件,瞭解如何部署 Cloud NAT 進行擷取。