網路是必要的,才能讓資源在 Google Cloud貴機構內部,以及雲端環境和內部部署環境之間進行通訊。本節說明設計藍圖中的 VPC 網路、IP 位址空間、DNS、防火牆政策,以及與內部部署環境的連線。
網路拓撲
範本存放區為您的網路拓撲提供下列選項:
- 為每個環境使用個別的共用虛擬私有雲網路,且不允許環境之間直接傳輸網路流量。
- 使用軸輻式模型,新增中樞網路來連結 Google Cloud中的每個環境,並由網路虛擬設備 (NVA) 控管環境間的網路流量。
如果不希望環境之間有直接的網路連線,請選擇每個環境拓撲的共用 VPC 網路。如要允許 NVA 篩選的環境之間的網路連線,請選擇輻射狀網路拓撲,例如當您依賴需要與環境中每部伺服器建立直接網路路徑的現有工具時。
兩種拓樸結構都使用共用虛擬私有雲做為主要網路結構,因為共用虛擬私有雲可明確區分責任。網路管理員可管理集中式主機專案中的網路資源,而工作負載團隊則可部署自己的應用程式資源,並使用附加至主機專案的服務專案中的網路資源。
每個環境拓撲的共用虛擬私有雲網路
如果您需要在 Google Cloud的開發、非正式和正式網路之間建立網路區隔,建議您為每個環境拓樸建立共用虛擬私有雲網路。這個拓撲圖不允許環境之間的網路流量。
下圖顯示每個環境拓樸的共用虛擬私有雲網路。
下圖說明每個環境拓撲的共用虛擬私人雲端的下列重要概念:
- 每個環境 (實際工作環境、非實際工作環境和開發環境) 都有一個共用虛擬私有雲端網路。這張圖表只顯示實際工作環境,但每個環境都會重複相同的模式。
- 每個共用虛擬私有雲網路都有兩個子網路,每個子網路位於不同的地區。
- 您可以使用四個 Cloud Router 服務 (每個地區各有兩個,用於備援),透過四個 VLAN 連結,將每個共用 VPC 網路連結至專屬互連網路執行個體,進而連線至內部部署資源。詳情請參閱「內部部署環境與 Google Cloud之間的混合式連線」。
根據設計,這個拓撲圖不允許網路流量直接在環境之間流動。如果您確實需要網路流量直接在環境之間流動,則必須採取額外步驟才能允許這個網路路徑。舉例來說,您可以設定 Private Service Connect 端點,將某個虛擬私有雲網路中的服務公開至另一個虛擬私有雲網路。或者,您可以設定內部部署網路,讓流量從一個Google Cloud 環境流向內部部署環境,然後再流向另一個 Google Cloud 環境。
輻射狀網路拓撲
如果您在 Google Cloud 中部署資源,且需要直接網路路徑連往多個環境中的資源,建議您採用中心輻輳式網路拓撲。
軸輻式拓撲會使用各個環境拓撲共用虛擬私有雲網路的部分概念,但會修改拓撲以新增軸網路。下圖顯示軸輻式拓樸。
下圖說明樞紐式網路拓撲的幾個重要概念:
- 這個模型會新增中樞網路,而每個開發、非實際工作環境和實際工作環境網路 (輪輻) 都會透過虛擬私有雲網路對等互連功能連線至中樞網路。或者,如果您預期會超過配額限制,可以改用高可用性 VPN 閘道。
- 只有透過中樞網路,才能連線至內部部署網路。所有輪輻網路都能與樞紐網路中的共用資源通訊,並使用這個路徑連線至內部部署網路。
- 樞紐網路包含每個區域的 NVA,並在內部網路負載平衡器執行個體後方部署備援。這個 NVA 做為閘道,可允許或拒絕輪輻網路之間的流量通訊。
- 中樞網路也提供工具,這些工具需要連線至所有其他網路。舉例來說,您可以將工具部署至 VM 執行個體,以便在常見環境中進行設定管理。
為了啟用輪輻對輪輻的流量,範本會在中樞共用 VPC 網路上部署 NVA,做為網路之間的閘道。路徑會透過自訂路徑交換,從樞紐到輻射狀 VPC 網路交換。在這種情況下,輻射狀 VPC 網路之間的連線必須經由 NVA 轉送,因為虛擬私有雲網路對等互連不是傳遞性的,因此輻射狀 VPC 網路無法直接交換資料。您必須設定虛擬應用程式,才能選擇性允許輪輻之間的流量。
專案部署模式
建立工作負載的新專案時,您必須決定該專案中的資源如何連線至現有網路。下表說明在藍圖中使用的部署專案模式。
模式 | 說明 | 應用實例 |
---|---|---|
共用虛擬私人雲端服務專案 | 這些專案會設為共用虛擬私有雲主機專案的服務專案。 如果專案中的資源符合下列條件,請使用這個模式:
|
example_shared_vpc_project.tf |
浮動專案 | 浮動專案不會連線至拓撲中的其他虛擬私有雲網路。 如果專案中的資源符合下列條件,請使用這個模式:
在某些情況下,您可能希望將浮動專案的虛擬私有雲網路與主要虛擬私有雲網路拓撲分開,但也希望在網路之間公開有限數量的端點。在這種情況下,請使用 Private Service Connect 發布服務,藉此在虛擬私有雲網路中共用個別端點的網路存取權,而不必公開整個網路。 |
example_floating_project.tf |
對等互連專案 | 對等互連專案會建立自己的虛擬私有雲網路,並與拓撲中的其他虛擬私有雲網路對等互連。 如果專案中的資源符合下列條件,請使用這個模式:
如果您建立對等連線專案,就必須負責分配不會發生衝突的 IP 位址範圍,並規劃對等連線群組配額。 |
example_peering_project.tf |
IP 位址分配
本節將介紹藍圖架構如何分配 IP 位址範圍。您可能需要根據現有混合環境中的 IP 位址可用性,變更所使用的特定 IP 位址範圍。
下表列出為藍圖分配的 IP 位址空間。中樞環境僅適用於中樞與輻條拓撲。
目的 | 地區 | 中樞環境 | 開發環境 | 非正式環境 | 正式環境 |
---|---|---|---|---|---|
主要子網路範圍 | 區域 1 | 10.8.0.0/18 | 10.8.64.0/18 | 10.8.128.0/18 | 10.8.192.0/18 |
區域 2 | 10.9.0.0/18 | 10.9.64.0/18 | 10.9.128.0/18 | 10.9.192.0/18 | |
未分配 | 10.{10-15}.0.0/18 | 10.{10-15}.64.0/18 | 10.{10-15}.128.0/18 | 10.{10-15}.192.0/18 | |
私人服務存取權 | 全球 | 10.16.32.0/21 | 10.16.40.0/21 | 10.16.48.0/21 | 10.16.56.0/21 |
Private Service Connect 端點 | 全球 | 10.17.0.5/32 | 10.17.0.6/32 | 10.17.0.7/32 | 10.17.0.8/32 |
Proxy 專用子網路 | 區域 1 | 10.26.0.0/23 | 10.26.2.0/23 | 10.26.4.0/23 | 10.26.6.0/23 |
區域 2 | 10.27.0.0/23 | 10.27.2.0/23 | 10.27.4.0/23 | 10.27.6.0/23 | |
未分配 | 10.{28-33}.0.0/23 | 10.{28-33}.2.0/23 | 10.{28-33}.4.0/23 | 10.{28-33}.6.0/23 | |
次要子網路範圍 | 區域 1 | 100.72.0.0/18 | 100.72.64.0/18 | 100.72.128.0/18 | 100.72.192.0/18 |
區域 2 | 100.73.0.0/18 | 100.73.64.0/18 | 100.73.128.0/18 | 100.73.192.0/18 | |
未分配 | 100.{74-79}.0.0/18 | 100.{74-79}.64.0/18 | 100.{74-79}.128.0/18 | 100.{74-79}.192.0/18 |
下表說明分配 IP 位址範圍的概念:
- IP 位址分配會細分為各個用途、區域和環境組合的範圍。
- 部分資源是全域資源,不需要為每個區域建立子區域。
- 根據預設,如果是區域資源,範本會在兩個區域中部署。此外,還有未使用的 IP 位址範圍,因此您可以擴展至另外六個區域。
- 樞紐網路僅用於樞紐和輻射狀網路拓撲,而開發、非正式和正式環境則可用於兩種網路拓撲。
下表說明各類型 IP 位址範圍的使用方式。
目的 | 說明 |
---|---|
主要子網路範圍 | 您部署至虛擬私有雲網路的資源 (例如虛擬機器執行個體),會使用這些範圍內的內部 IP 位址。 |
私人服務存取權 | 部分 Google Cloud 服務 (例如 Cloud SQL) 需要您預先分配子網路範圍,以便存取私人服務。藍圖會為每個共用 VPC 網路在全球預留 /21 範圍,為需要私人服務存取權的服務分配 IP 位址。建立依賴私人服務存取權的服務時,您會從保留的 /21 範圍中分配區域 /24 子網路。 |
Private Service Connect | 範本會為每個 VPC 網路提供 Private Service Connect 端點,用於與 Google Cloud API 通訊。這個端點可讓虛擬私有雲網路中的資源存取 Google Cloud API,不必仰賴傳出至網際網路的流量或公開宣傳的網際網路範圍。 |
Proxy 負載平衡器 | 某些類型的應用程式負載平衡器需要您預先配置Proxy 專用子網路。雖然此範本不會部署需要此範圍的應用程式負載平衡器,但預先分配範圍有助於減少工作負載的摩擦力,因為工作負載可能需要要求新的子網路範圍,才能啟用特定的負載平衡器資源。 |
次要子網路範圍 | 某些用途 (例如容器式工作負載) 需要次要範圍。雖然藍圖不會部署需要次要範圍的服務,但會從 RFC 6598 IP 位址空間分配次要範圍。或者,如果您無法為這些服務分配足夠大的 CIDR 區塊,不妨考慮在「專案部署模式」一節中介紹的浮動專案模式中部署這些服務。 |
集中式 DNS 設定
如要處理 Google Cloud 和內部部署環境之間的 DNS 解析,建議您採用混合式方法,搭配兩個權威 DNS 系統。在這種做法中,Cloud DNS 會為Google Cloud 環境處理權威 DNS 解析,而現有的內部部署 DNS 伺服器會處理內部部署資源的權威 DNS 解析。您的內部部署環境和 Google Cloud 環境會透過轉送要求,在環境之間執行 DNS 查詢。
下圖顯示設計藍圖中多個 VPC 網路的 DNS 拓撲。
下圖說明設計藍圖部署的 DNS 設計中,下列元件:
- DNS 中樞是內部部署環境和 Google Cloud環境之間 DNS 交換的中心點。DNS 轉送會使用網路拓撲中已設定的專屬互連網路執行個體和 Cloud Router。
- 在每個環境拓樸的共用虛擬私有雲網路中,DNS 專案與實際工作環境的共用虛擬私有雲主專案相同。
- 在輻射狀拓撲中,DNS 中樞專案與共用虛擬私有雲中樞主專案相同。
- 每個共用 VPC 網路中的伺服器可以透過DNS 轉送解析其他共用 VPC 網路的 DNS 記錄,這項功能會在每個共用 VPC 主機專案的 Cloud DNS 和 DNS 中樞之間設定。
- 地端部署伺服器可使用允許地端部署伺服器查詢的 DNS 伺服器政策,解析 Google Cloud環境中的 DNS 記錄。藍圖會在 DNS 中樞中設定傳入伺服器政策,以便分配 IP 位址,而內部 DNS 伺服器會將要求轉送至這些位址。所有 DNS 要求都會先到達 DNS 中樞,再由中樞解析 DNS 對等端的記錄。 Google Cloud
- Google Cloud 中的伺服器可使用查詢內部部署伺服器的轉送區域,解析內部部署環境中的 DNS 記錄。所有對內部部署環境的 DNS 要求都來自 DNS 中樞。DNS 要求來源為 35.199.192.0/19。
防火牆政策
Google Cloud 有幾種防火牆政策類型。階層式防火牆政策會在機構或資料夾層級強制執行,以便在階層中的所有資源中一致地繼承防火牆政策規則。此外,您可以為每個虛擬私有雲網路設定網路防火牆政策。藍圖會結合這些防火牆政策,透過階層式防火牆政策在所有環境中強制執行一般設定,並透過網路防火牆政策在每個單獨虛擬私人雲端網路中強制執行更明確的設定。
藍圖不會使用舊版虛擬私有雲防火牆規則。建議您只使用防火牆政策,避免與舊版 VPC 防火牆規則混用。
階層式防火牆政策
範本會定義單一階層式防火牆政策,並將政策附加至各個實際工作環境、非實際工作環境、開發、啟動和常用資料夾。這個階層式防火牆政策包含應廣泛套用至所有環境的規則,並將更精細規則的評估工作委派給各個環境的網路防火牆政策。
下表說明藍圖部署的階層防火牆政策規則。
規則說明 | 流量方向 | 篩選器 (IPv4 範圍) | 通訊協定和通訊埠 | 動作 |
---|---|---|---|---|
將 RFC 1918 的入站流量評估委派至階層中的較低層級。 | Ingress |
192.168.0.0/16、10.0.0.0/8、172.16.0.0/12 |
all |
Go to next |
將傳出流量的評估作業委派給 RFC 1918,以便在階層中降低層級。 | Egress |
192.168.0.0/16、10.0.0.0/8、172.16.0.0/12 |
all |
Go to next |
用於 TCP 轉送的 IAP | Ingress |
35.235.240.0/20 |
tcp:22,3389 |
Allow |
Windows Server 啟用 | Egress |
35.190.247.13/32 |
tcp:1688 |
Allow |
Cloud Load Balancing 的健康狀態檢查 | Ingress |
130.211.0.0/22、35.191.0.0/16、209.85.152.0/22、209.85.204.0/22 |
tcp:80,443 |
Allow |
網路防火牆政策
藍圖會為每個網路設定網路防火牆政策。每項網路防火牆政策都會先設定一組最少的規則,允許存取 Google Cloud 服務,並拒絕所有其他 IP 位址的輸出流量。
在輻射狀架構中,網路防火牆政策包含額外規則,可允許輻射狀架構中的通訊。網路防火牆政策允許從一個節點傳送至樞紐或其他輻射節點的傳出流量,並允許樞紐網路中 NVA 的傳入流量。
下表說明在設計範本中為每個 VPC 網路部署的全球網路防火牆政策中的規則。
規則說明 | 流量方向 | 篩選器 | 通訊協定和通訊埠 |
---|---|---|---|
允許傳出至 Google Cloud API 的流量。 | Egress |
為各個網路設定的 Private Service Connect 端點。請參閱「Google API 的私人存取權」。 | tcp:443 |
拒絕其他規則未比對到的傳出流量。 | Egress |
全部 | all |
允許從一個輪輻傳送至另一個輪輻的傳出流量 (僅限中樞與輪輻式網路)。 | Egress | 在樞紐與輻射狀拓撲中使用的所有 IP 位址的匯總。離開輪輻 VPC 的流量會先轉送至樞紐網路中的 NVA。 | all |
允許中樞網路中的 NVA 傳送至輪輻的傳入流量 (僅限中樞與輪輻式模式)。 |
Ingress |
來自樞紐網路中 NVA 的流量。 | all |
首次部署藍圖時,VPC 網路中的 VM 執行個體可以與 Google Cloud 服務通訊,但無法與同一個 VPC 網路中的其他基礎架構資源通訊。如要允許 VM 執行個體通訊,您必須在網路防火牆政策中新增額外規則,並加入標記,明確允許 VM 執行個體通訊。系統會將標記新增至 VM 執行個體,並根據這些標記評估流量。標記也提供 IAM 控制項,方便您集中定義標記,並將標記的使用權限委派給其他團隊。
下圖顯示如何新增自訂標記和網路防火牆政策規則,讓工作負載在虛擬私有雲網路中進行通訊。
下圖說明此範例的以下概念:
- 網路防火牆政策包含規則 1,會以優先順序 65530 拒絕所有來源的傳出流量。
- 網路防火牆政策包含規則 2,允許具有
service=frontend
標記的執行個體傳入流量,傳送至具有service=backend
標記的執行個體,優先順序為 999。 - 由於流量符合規則 2 允許的標記,因此執行個體 2 的 VM 可以接收來自執行個體 1 的流量。系統會根據優先順序值,在評估規則 1 之前先比對規則 2。
- 執行個體 3 VM 不會接收流量。唯一符合此流量的防火牆政策規則是規則 1,因此會拒絕來自執行個體 1 的輸出流量。
Google Cloud API 私人存取權
如要讓虛擬私有雲網路或內部部署環境中的資源存取Google Cloud 服務,建議您使用私人連線,而非傳出至公開 API 端點的網際網路流量。藍圖會在每個子網路上設定私人 Google 存取權,並使用Private Service Connect 建立內部端點,以便與 Google Cloud 服務通訊,並設定防火牆政策和 DNS 記錄,允許流量連往這些端點。搭配使用這些控制項可讓您透過私人路徑存取 Google Cloud 服務,不必仰賴網際網路傳出流量或公開宣傳的網際網路範圍。
此範本會使用名為 vpc-sc
的API 套件設定 Private Service Connect 端點,以便存取受限制 VIP 支援的 Google Cloud 服務。這項控制項可避免存取與 Google Cloud無關的其他 Google API,進而降低資料外洩風險。這項控制項也是啟用 VPC Service Controls 的必要步驟。如要進一步瞭解啟用 VPC Service Controls 的選用步驟,請參閱「使用 VPC Service Controls 保護資源」。
下表說明為每個網路建立的 Private Service Connect 端點。
環境 | API 套件 | Private Service Connect 端點 IP 位址 | ||
---|---|---|---|---|
常用符號或字元 | vpc-sc |
10.17.0.5/32 | ||
開發 | vpc-sc |
10.17.0.6/32 | ||
非正式環境 | vpc-sc |
10.17.0.7/32 | ||
生產 | vpc-sc |
10.17.0.8/32 |
為確保 Google Cloud 服務的流量可透過 DNS 查詢正確的端點,範本會為每個 VPC 網路設定私人 DNS 區域。下表說明這些私人 DNS 區域。
私有區域名稱 | DNS 名稱 | 記錄類型 | 資料 |
---|---|---|---|
googleapis.com. |
*.googleapis.com. |
CNAME |
restricted.googleapis.com. |
restricted.googleapis.com |
A |
該虛擬私有雲網路的 Private Service Connect 端點 IP 位址。 | |
gcr.io. |
*.gcr.io |
CNAME |
gcr.io. |
gcr.io |
A |
該虛擬私有雲網路的 Private Service Connect 端點 IP 位址。 | |
pkg.dev. |
*.pkg.dev. |
CNAME |
pkg.dev. |
pkg.dev. |
A |
該虛擬私有雲網路的 Private Service Connect 端點 IP 位址。 |
藍圖有其他設定,可確保這些 Private Service Connect 端點的使用方式一致。每個共用虛擬私有雲網路也會強制執行下列項目:
- 網路防火牆政策規則,允許所有來源的輸出流量,透過 TCP:443 傳送至 Private Service Connect 端點的 IP 位址。
- 網路防火牆政策規則,拒絕將外送流量傳送至 0.0.0.0/0,其中包括用於存取 Google Cloud 服務的預設網域。
網際網路連線
藍圖不允許虛擬私有雲網路與網際網路之間的傳入或傳出流量。如果工作負載需要網際網路連線,您必須採取額外步驟來設計必要的存取路徑。
如果工作負載需要傳出流量才能連上網際網路,建議您透過 Cloud NAT 管理傳出流量,以便允許傳出流量不受未經授權的傳入連線干擾;或者透過 Secure Web Proxy 進行更精細的控管,只允許傳出流量連上可信任的網路服務。
如果工作負載需要來自網際網路的入站流量,建議您使用 Cloud Load Balancing 和 Google Cloud Armor 設計工作負載,以便享有分散式阻斷服務和 WAF 防護機制。
我們不建議您設計可透過 VM 上的外部 IP 位址,讓網際網路與 VM 之間直接連線的工作負載。
內部部署環境和 Google Cloud之間的混合式連線
如要建立內部部署環境和Google Cloud之間的連線,建議您使用專屬互連網路,以便提升安全性和可靠性。專屬互連網路連線是指在地端部署網路和Google Cloud之間的直接連結。
下圖說明內部部署環境與 Google 虛擬私有雲網路之間的混合式連線。
下圖說明專屬互連網路 99.99% 可用性模式的下列元件:
- 四個專屬互連網路連線,其中兩個連線位於同一個都會區 (都會區),另外兩個連線位於另一個都會區。每個都會區內的共置設施都有兩個不同的區域。
- 連線分為兩組,每組連線至一個內部部署資料中心。
- VLAN 連結可用於將每個專屬互連網路執行個體連結至附加至共用 VPC 拓撲的 Cloud Router。
- 每個共用 VPC 網路都有四個 Cloud Router,每個地區各有兩個,動態轉送模式設為
global
,因此每個 Cloud Router 都能不分地區通告所有子網路。
利用全域動態轉送功能,Cloud Router 可以將路徑公告至虛擬私有雲網路中的所有子網路。Cloud Router 會將路徑通告至優先順序比本機子網路 (位於 Cloud Router 地區中的子網路) 低的遠端子網路 (Cloud Router 地區之外的子網路)。您也可以選擇在設定 Cloud Router 的 BGP 工作階段時,變更通告的前置字串和優先順序。
從 Google Cloud 傳送至內部部署環境的流量,會使用最靠近雲端資源的 Cloud Router。在單一區域內,前往內部部署網路的多個路徑具有相同的多出口鑑別 (MED) 值,並 Google Cloud 使用等價多路徑 (ECMP) 路由,在所有可能的路徑之間分配出站流量。
內部部署設定變更
如要設定內部部署環境與Google Cloud之間的連線,您必須在內部部署環境中設定其他變更。設計範本中的 Terraform 程式碼會自動設定Google Cloud 資源,但不會修改任何內部網路資源。
藍圖會自動啟用從內部部署環境連線至Google Cloud 的部分混合式連線元件,包括:
- 如「DNS 設定」一文所述,Cloud DNS 會在所有共用 VPC 網路之間,將 DNS 轉送至單一中樞。Cloud DNS 伺服器政策會使用傳入轉寄站 IP 位址進行設定。
- Cloud Router 會設定為匯出所有子網路的路徑,以及 Private Service Connect 端點使用的 IP 位址的自訂路徑。
如要啟用混合式連線,您必須採取下列額外步驟:
- 訂購專屬互連網路連線。
- 設定內部部署路由器和防火牆,允許傳出流量傳送至 IP 位址空間分配 中定義的內部 IP 位址空間。
- 設定內部部署 DNS 伺服器,將Google Cloud 的 DNS 查詢轉送至藍圖已設定的傳入轉寄站 IP 位址。
- 設定內部部署 DNS 伺服器、防火牆和路由器,接受來自 Cloud DNS 轉送區域 (35.199.192.0/19) 的 DNS 查詢。
- 設定內部部署 DNS 伺服器,以便回應內部部署主機對 Google Cloud 服務的查詢,並使用私人存取權存取 Cloud API 中定義的 IP 位址。
- 如要透過專屬互連網路連線進行傳輸加密,請設定 Cloud Interconnect 的 MACsec,或設定 採用 Cloud Interconnect 的高可用性 VPN 進行 IPsec 加密。
詳情請參閱「內部部署主機的私人 Google 存取權」。
後續步驟
- 請參閱偵查控管功能 (本系列的下一篇文件)。