從具有外部 IP 位址的 VM 存取 API
如果虛擬機器 (VM) 執行個體的網路介面已指派外部 IP 位址,且符合本頁所述的網路需求,則可連線至 Google API 和服務。雖然連線是從 VM 的外部 IP 位址建立,但流量會留在 Google Cloud 中,不會透過公開網際網路傳送。
網路需求
如要從具有外部 IP 位址的 VM 存取 Google API 和服務,您必須符合下列規定:
如有需要,請為要存取的服務啟用 API:
如果您要存取 Google API 服務端點,請務必為該服務啟用 API。
舉例來說,如要透過 storage.googleapis.com API 服務端點或用戶端程式庫建立 Cloud Storage 值區,您必須啟用 Cloud Storage API。
如果您要存取其他類型的資源,可能不需要啟用任何 API。
舉例來說,如要透過 storage.googleapis.com 網址存取其他專案中的 Cloud Storage 值區,您不需要啟用 Cloud Storage API。
如果您想使用 IPv6 連線至 Google API 和服務,必須符合下列兩項規定:
VM 必須設定外部
/96
IPv6 位址範圍。在 VM 上執行的軟體必須傳送來源與該範圍內其中一個 IPv6 位址相符的封包。
- 視所選設定而定,您可能需要更新 DNS 項目、路徑和防火牆規則。詳情請參閱「設定選項摘要」。
設定選項摘要
下表列出設定 Private Google Access 的各種方式。如需更詳細的設定資訊,請參閱「網路設定」。
網域選項 | DNS 設定 | 轉送設定 | 防火牆設定 |
---|---|---|---|
預設網域 | 您可以透過 Google API 和服務的公開 IP 位址存取,因此不需要設定特殊 DNS。 | 請確認您的虛擬私有雲網路可將流量轉送至 Google API 和服務使用的 IP 位址範圍。 |
確認防火牆規則允許輸出流量傳送至 Google API 和服務使用的 IP 位址範圍。 如果沒有優先順序較高的規則封鎖這類流量,預設的允許輸出防火牆規則會允許這類流量。 |
private.googleapis.com
|
在私人 DNS 區域中設定 DNS 記錄,將要求傳送至下列 IP 位址: IPv4 流量:
IPv6 流量:
|
請確認您的 VPC 網路有以下 IP 範圍的路由: IPv4 流量:
IPv6 流量:
|
請確認防火牆規則允許傳出至下列 IP 範圍: IPv4 流量:
IPv6 流量:
|
restricted.googleapis.com
|
設定 DNS 記錄,將要求傳送至下列 IP 位址: IPv4 流量:
IPv6 流量:
|
請確認您的 VPC 網路有以下 IP 範圍的路由: IPv4 流量:
IPv6 流量:
|
請確認防火牆規則允許傳出至下列 IP 範圍: IPv4 流量:
IPv6 流量:
|
網路設定
本節說明虛擬私有雲網路中的 VM 必須符合哪些基本網路規定,才能存取 Google API 和服務。
網域選項
選擇要用來存取 Google API 和服務的網域。
private.googleapis.com
和 restricted.googleapis.com
虛擬 IP 位址 (VIP) 僅支援透過 TCP 的 HTTP 通訊協定 (HTTP、HTTPS 和 HTTP/2)。系統不支援其他通訊協定,包括 MQTT 和 ICMP。不支援使用網路的互動式網站和功能,例如重新導向或擷取內容。
網域和 IP 位址範圍 | 支援的服務 | 應用實例 |
---|---|---|
預設網域。 所有 Google API 和服務的網域名稱 (除 各種 IP 位址範圍:您可以參考預設網域的 IP 位址,判斷一組 IP 位址範圍,其中包含預設網域可能使用的位址。 |
啟用 API 存取權,可存取大多數 Google API 和服務,無論這些服務是否受 VPC Service Controls 支援。包括 Google 地圖、Google Ads 和 Google Cloud的 API 存取權。包括 Gmail 和 Google 文件等 Google Workspace 網頁應用程式,以及其他網頁應用程式。 |
如果您未為 |
|
啟用 API 存取權,可存取大多數 Google API 和服務,無論這些服務是否受 VPC Service Controls 支援。包括 Google 地圖、Google Ads、 Google Cloud和大多數其他 Google API 的 API 存取權,包括以下清單。不支援 Gmail 和 Google 文件等 Google Workspace 網頁應用程式。 符合下列條件的網域名稱:
|
使用 在下列情況下,請選擇
|
|
啟用 API 存取權,可存取 VPC Service Controls 支援的 Google API 和服務。 封鎖對不支援 VPC Service Controls 的 Google API 和服務的存取權。不支援 Google Workspace API 或 Google Workspace 網頁應用程式,例如 Gmail 和 Google 文件。 |
使用 如果您只需要存取 VPC Service Controls 支援的 Google API 和服務,請選擇
|
restricted.googleapis.com
,因為這可進一步降低資料外洩的風險。使用 restricted.googleapis.com
可拒絕存取 VPC Service Controls 不支援的 Google API 和服務。詳情請參閱 VPC Service Controls 說明文件中的「設定私人連線」。private.googleapis.com
和 restricted.googleapis.com
的 IPv6 支援
下列 IPv6 位址範圍可用於將來自 IPv6 用戶端的流量導向 Google API 和服務:
private.googleapis.com
:2600:2d00:0002:2000::/64
restricted.googleapis.com
:2600:2d00:0002:1000::/64
如果您想使用 private.googleapis.com
或 restricted.googleapis.com
網域,且有使用 IPv6 位址的用戶端,請考慮設定 IPv6 位址。已設定 IPv4 位址的 IPv6 用戶端可以使用 IPv4 位址存取 Google API 和服務。並非所有服務都接受來自 IPv6 用戶端的流量。
DNS 設定
如要連線至 Google API 和服務,您可以選擇將封包傳送至與 private.googleapis.com
或 restricted.googleapis.com
VIP 相關聯的 IP 位址。如要使用 VIP,您必須設定 DNS,讓 VPC 網路中的 VM 使用 VIP 位址 (而非公開 IP 位址) 存取服務。
以下各節說明如何使用 DNS 區域,將封包傳送至與所選 VIP 相關聯的 IP 位址。請按照適用於您情況的所有情境操作說明操作:
- 如果您使用的是具有
*.googleapis.com
網域名稱的服務,請參閱「為googleapis.com
設定 DNS」一文。 如果您使用其他網域名稱的服務,請參閱為其他網域設定 DNS。
舉例來說,如果您使用 Google Kubernetes Engine (GKE),也需要設定
*.gcr.io
和*.pkg.dev
;如果您使用 Cloud Run,則需要設定*.run.app
。如果您使用 Cloud Storage 值區,並將要求傳送至 Cloud Storage 自訂網域名稱,請參閱「為 Cloud Storage 自訂網域名稱設定 DNS」一文。
為 VIP 設定 DNS 記錄時,請只使用下列步驟所述的 IP 位址。請勿混用 private.googleapis.com
和 restricted.googleapis.com
VIP 的地址。這可能會導致間歇性失敗,因為提供的服務會根據封包的目的地而有所不同。
設定 googleapis.com
的 DNS
建立 googleapis.com
的 DNS 區域和記錄:
- 為
googleapis.com
建立私人 DNS 區域。建議您建立 Cloud DNS 私人可用區。 在
googleapis.com
區域中,針對private.googleapis.com
或restricted.googleapis.com
建立下列私人 DNS 記錄,具體取決於您選擇使用的網域。針對
private.googleapis.com
:為
private.googleapis.com
建立A
記錄,指向下列 IP 位址:199.36.153.8
、199.36.153.9
、199.36.153.10
、199.36.153.11
。如要使用 IPv6 位址連線至 API,請一併為
private.googleapis.com
設定AAAA
記錄,指向2600:2d00:0002:2000::
。
針對
restricted.googleapis.com
:為
restricted.googleapis.com
建立A
記錄,指向下列 IP 位址:199.36.153.4
、199.36.153.5
、199.36.153.6
、199.36.153.7
。如要使用 IPv6 位址連線至 API,請為
restricted.googleapis.com
建立指向2600:2d00:0002:1000::
的AAAA
記錄。
如要在 Cloud DNS 中建立私人 DNS 記錄,請參閱新增記錄。
在
googleapis.com
可用區中,為*.googleapis.com
建立CNAME
記錄,指向您已設定的網域:private.googleapis.com
或restricted.googleapis.com
。
設定其他網域的 DNS
部分 Google API 和服務會使用其他網域名稱提供,包括 *.gcr.io
、*.gstatic.com
、*.pkg.dev
、pki.goog
、*.run.app
和 *.gke.goog
。請參閱「網域選項」中的網域和 IP 位址範圍表,判斷是否可以使用 private.googleapis.com
或 restricted.googleapis.com
存取額外網域的服務。然後針對每個額外網域:
為
DOMAIN
建立 DNS 區域 (例如gcr.io
)。如果您使用 Cloud DNS,請確認這個區域位於與googleapis.com
私人區域相同的專案中。在這個 DNS 區域中,請根據您選擇使用的網域,為
private.googleapis.com
或restricted.googleapis.com
建立下列私人 DNS 記錄。針對
private.googleapis.com
:為
DOMAIN
建立A
記錄,指向下列 IP 位址:199.36.153.8
、199.36.153.9
、199.36.153.10
、199.36.153.11
。如要使用 IPv6 位址連線至 API,請為
DOMAIN
建立指向2600:2d00:0002:2000::
的AAAA
記錄。
針對
restricted.googleapis.com
:為
DOMAIN
建立A
記錄,指向下列 IP 位址:199.36.153.4
、199.36.153.5
、199.36.153.6
、199.36.153.7
。如要使用 IPv6 位址連線至 API,請為
restricted.googleapis.com
建立指向2600:2d00:0002:1000::
的AAAA
記錄。
在
DOMAIN
區域中,為*.DOMAIN
建立指向DOMAIN
的CNAME
記錄。例如,為*.gcr.io
建立指向gcr.io
的CNAME
記錄。
設定 Cloud Storage 自訂網域名稱的 DNS
如果您使用 Cloud Storage 值區,並將要求傳送至 Cloud Storage 自訂網域名稱,則為自訂 Cloud Storage 網域名稱設定 DNS 記錄,並將其指向 private.googleapis.com
或 restricted.googleapis.com
的 IP 位址,並不足以允許存取 Cloud Storage 值區。
如果您想將要求傳送至 Cloud Storage 自訂網域名稱,還必須明確將 HTTP 要求的 Host 標頭和 TLS SNI 設為 storage.googleapis.com
。private.googleapis.com
和 restricted.googleapis.com
的 IP 位址不支援在 HTTP 要求 Host 標頭和 TLS SNI 中使用自訂 Cloud Storage 主機名稱。
路由選項
虛擬私有雲網路必須有適當的路徑,且下一個躍點為預設網際網路閘道。 Google Cloud 不支援透過其他 VM 執行個體或自訂下一個躍點,將流量轉送至 Google API 和服務。雖然稱為「預設網際網路閘道」,但從 VPC 網路中的 VM 傳送至 Google API 和服務的封包仍會保留在 Google 網路中。
如果您選取預設網域,VM 執行個體會使用 Google 外部 IP 位址的子集連線至 Google API 和服務。這些 IP 位址可公開轉送,但虛擬私有雲網路中 VM 到這些位址的路徑仍會留在 Google 網路中。
Google 不會在網際網路上發布路由,連至
private.googleapis.com
或restricted.googleapis.com
網域使用的任何 IP 位址。因此,只有虛擬私人雲端網路中的 VM 或已連線至虛擬私人雲端網路的內部部署系統,才能存取這些網域。
如果您的虛擬私有雲網路包含預設路徑,且下一個躍點為預設網際網路閘道,您就可以使用該路徑存取 Google API 和服務,而無需建立自訂路徑。詳情請參閱「使用預設路徑進行路由設定」。
如果您已將預設路徑 (目的地 0.0.0.0/0
或 ::0/0
) 替換為下一個躍點「不是」預設網際網路閘道的自訂路徑,則可以改用自訂轉送來滿足 Google API 和服務的轉送需求。
如果虛擬私有雲網路沒有 IPv6 預設路徑,就無法透過 IPv6 連線至 Google API 和服務。新增 IPv6 預設路徑,允許 IPv6 連線。
使用預設路徑進行轉送
每個 VPC 網路在建立時都包含 IPv4 預設路徑 (0.0.0.0/0
)。如果您在子網路上啟用外部 IPv6 位址,系統會在該虛擬私有雲網路中新增系統產生的 IPv6 預設路徑 (::/0
)。
預設路徑會為下列目的地提供 IP 位址路徑:
預設網域。
private.googleapis.com
:199.36.153.8/30
和2600:2d00:0002:2000::/64
。restricted.googleapis.com
:199.36.153.4/30
和2600:2d00:0002:1000::/64
。
如要檢查特定網路中的預設路徑設定,請按照下列指示操作。
主控台
前往 Google Cloud 控制台的「Routes」頁面。
篩選路徑清單,讓畫面只顯示您需要檢查的網路路徑。
找出目的地為
0.0.0.0/0
(IPv4 流量) 或::/0
(IPv6 流量) 且下一個躍點為「預設網際網路閘道」的路徑。
gcloud
使用下列 gcloud
指令,並將 NETWORK_NAME
替換為要檢查的網路名稱:
gcloud compute routes list \ --filter="default-internet-gateway NETWORK_NAME"
如果您需要建立替換的預設 IPv4 路徑,請參閱「新增靜態路徑」。
如果您需要建立替代預設 IPv6 路徑,請參閱「新增 IPv6 預設路徑」。
自訂轉送
您可以使用自訂靜態路徑做為預設路徑的替代方案,每個路徑都擁有更明確的目的地,並且都使用預設網際網路閘道的下一個躍點。所需路由數量和目的地 IP 位址取決於所選網域。
- 預設網域:您必須為 Google API 和服務的 IP 位址範圍建立路徑。
private.googleapis.com
:199.36.153.8/30
和2600:2d00:0002:2000::/64
restricted.googleapis.com
:199.36.153.4/30
和2600:2d00:0002:1000::/64
此外,建議您為 34.126.0.0/18
和 2001:4860:8040::/42
新增路徑。詳情請參閱「設定選項摘要」。
如要查看特定網路中 Google API 和服務的自訂路徑設定,請按照下列指示操作。
主控台
前往 Google Cloud 控制台的「Routes」頁面。
使用「Filter table」文字欄位,根據下列條件篩選路徑清單,並將
NETWORK_NAME
替換為虛擬私人雲端網路的名稱。- 網路:
NETWORK_NAME
- 下一個躍點類型:
default internet gateway
- 網路:
查看每個路徑的「目的地 IP 範圍」欄。如果您選擇了預設網域,請檢查是否有幾個自訂靜態路徑,每個路徑對應預設網域使用的每個 IP 位址範圍。如果您選擇
private.googleapis.com
或restricted.googleapis.com
,請查看該網域的 IP 範圍。
gcloud
使用下列 gcloud
指令,並將 NETWORK_NAME
替換為要檢查的網路名稱:
gcloud compute routes list \ --filter="default-internet-gateway NETWORK_NAME"
除非您使用 --format
標記自訂指令,否則路線會以表格格式列出。在 DEST_RANGE
欄中查看每個路線的目的地。如果您選擇了預設網域,請檢查是否有幾個自訂靜態路徑,每個路徑對應預設網域使用的每個 IP 位址範圍。如果您選擇 private.googleapis.com
或 restricted.googleapis.com
,請查看該網域的 IP 範圍。
如果您需要建立路線,請參閱「新增靜態路線」。
防火牆設定
VPC 網路的防火牆設定必須允許 VM 存取 Google API 和服務使用的 IP 位址。隱含的 allow egress
規則可滿足這項要求。
在某些防火牆設定中,您需要建立特定的輸出允許規則。舉例來說,假設您建立了輸出拒絕規則,用來封鎖傳送至所有目的地的流量 (IPv4 為 0.0.0.0
,IPv6 為 ::/0
)。在這種情況下,您必須為所選網域的每個 IP 位址範圍,建立一項優先順序高於輸出拒絕規則的輸出允許防火牆規則,以便允許 Google API 和服務的輸出流量。
- 預設網域:所有 Google API 和服務的 IP 位址範圍。
private.googleapis.com
:199.36.153.8/30
和2600:2d00:0002:2000::/64
restricted.googleapis.com
:199.36.153.4/30
和2600:2d00:0002:1000::/64
此外,建議您在輸出允許防火牆規則中加入 34.126.0.0/18
和 2001:4860:8040::/42
。詳情請參閱「設定選項摘要」。
如要建立防火牆規則,請參閱「建立防火牆規則」一文。您可以限制防火牆規則套用至哪些 VM,方法是定義每個輸出允許規則的目標。
預設網域的 IP 位址
本節說明如何建立 Google API 和服務 (例如 *.googleapis.com
和 *.gcr.io
) 使用的預設網域 IP 範圍清單。這些範圍會動態分配並經常變更,因此無法為個別服務或 API 定義特定 IP 範圍。為維持名單的準確性,請設定自動化動作,每天執行指令碼。如要改用 IP 位址範圍清單以外的做法,請考慮使用 private.googleapis.com VIP 或 Private Service Connect。
Google 在 goog.json 中公布了一份 IP 範圍完整清單,並提供給網際網路使用者。
另外,Google 也以 cloud.json 的格式發布了另一份清單,當中列出了客戶的 Google Cloud 資源可用的全球和地區性外部 IP 位址範圍。
Google API 和服務的預設網域使用的 IP 位址,涵蓋從 goog.json
中移除 cloud.json
中的所有範圍後,所計算出的範圍清單。這些清單會經常更新。
您可以使用下列 Python 指令碼,建立 IP 位址範圍清單,其中包含 Google API 和服務預設網域使用的範圍。
如要瞭解如何執行這個指令碼,請參閱「如何執行」。