.
👋 嘿,我是 Browny。
Informal Writing 書寫琢磨 技術趨勢、溝通領導、概念理解與生活實踐。
每週一四派送,訂閱起來👇。也在 threads 上面分享比較 即時的 insight,歡迎關注 👀
📌 引言
今天回到老本行寫一些技術的東西,來看看如果要在 Google Cloud 當中,利用 private 的方式存取不管是 Google APIs、Managed services 或是 跨 VPC 的 services,有哪些方案可以選擇,我們又應該基於條件什麼來作取捨:
在雲端運算技術不斷進步的今天,如何安全有效地存取各種服務成為了一個重要課題。為了應對這一需求,Google Cloud Platform (GCP) 推出了三種私有存取解決方案:Private Service Connect (PSC)、Private Google Access (PGA) 和 Private Service Access (PSA)。
這三種方案各有特色,適用於不同場景,因此對於使用 GCP 的組織來說,選擇合適的方案至關重要:
Private Service Connect (PSC) 是一個功能強大的多用途解決方案。它能夠為各種服務提供私有連接,包括 Google API、第三方服務,甚至是內部應用程式 (個人認為完勝 PGA 和 PSA)。PSC 採用了服務導向的模型,通過端點和服務附件在不同的專案、組織之間,甚至與第三方供應商之間建立安全連接。
Private Google Access (PGA) 則專門用於在您的虛擬私有雲 (VPC) 網路內私密存取 Google API 和服務。PGA 利用 Google 的內部網路並配置私有 DNS 區域,讓您能夠輕鬆存取 Google 的各種服務,而無需將流量暴露在公共網際網路上。
Private Service Access (PSA) 的設計目的是連接特定的 Google 管理服務,如 Cloud SQL 和 Memorystore。它通過 VPC peering 技術,在您的 VPC 和服務提供商的 VPC (就是 GCP 自己管理的 VPC,你看不到摸不到) 之間建立直接且私密的連接。
本文著重探討 PSC:服務導向的模型,如何適用在更廣泛的連結類型。PSC 幾乎覆蓋了 PGA, PSA 的所有場景,並具備更好的稽核與安全管控能力。您將能夠根據自身組織的獨特需求,做出最適合的選擇。
文章一開頭的那張比較表,總結了三個方案的技術特點與適用場景。書籤收藏起來,之後就不會傻傻分不清楚啦。如果你喜歡技術類型的分享,猜你也喜歡之前的文章。接下來,我們將啟程探索:
PSC 技術特點: 服務導向設計
Managed services (生產端) & Connect types (消費端)
私有連線至 Google APIs: PSC vs. PGA
私有連線至 Google 管理的服務: PSC vs. PSA
結語
.
📌 PSC 技術特點: 服務導向設計
PSC 相較 PGA, PSA 有以下技術特點,這些特點在 Enterprise 的應用場景中尤其重要。雖然配置可能會比 PGA, PSA 來的複雜一點點,但他帶來的好處我覺得就像是 Zen of Python 裡面所說的:Explicit is better than implicit;1. 服務導向設計 和 2. 明確授權模型是最大的優點。
服務導向設計:
生產者服務通過負載均衡器發布,為消費者VPC網絡提供單一IP地址。
消費者流量單向訪問,僅能訪問服務IP地址,而非整個對等VPC網絡。
明確授權模型:
消費者和生產者擁有精細的控制權。
確保只有預期的服務端點可以連接到服務。
無共享依賴:
使用NAT技術實現消費者和生產者之間的流量傳輸。
消費者和生產者VPC網絡間無需IP地址協調或其他共享資源依賴。
簡化部署並便於擴展管理服務。
線速性能:
流量直接從消費者客戶端到生產者後端,無中間跳轉或代理。
NAT在託管消費者和生產者VM的物理主機上直接執行,降低延遲並提高帶寬容量。
帶寬容量僅受直接通信的客戶端和服務器機器的帶寬限制。
.
上述四點當中,又以 服務導向設計 最為重要,或是說因為這樣的設計,才讓 2, 3, 4 成為可能,我們深入來看一下,它的具體涵義:
服務抽象:PSC 允許服務被抽象化並作為端點暴露,隱藏了底層網路的複雜性 (服務的消費者不需要知道負載平衡或是擴展的細節,服務消費者也不會因為這些細節的不同,而影響其使用服務的方式)。這與面向服務架構(SOA)的服務抽象原則相一致。
鬆耦合:服務可以在不直接進行網路對等連接 (peering) 或IP地址管理的情況下相互連接,促進了消費者網路和生產者網路之間的鬆耦合。
標準化服務契約:服務通過標準化的端點和服務附件進行暴露,提供了一種連接服務的一致方式。
.
用一個生活化的事物來舉例:在服務導向設計的世界,會分成服務的消費者與生產者兩邊。就像是燈泡 (服務消費者) 和 燈座 (服務生產者)。這裡的 服務 = 照明能量
。燈座提供照明能量,燈泡使用照明能量照亮環境。
透過燈座,燈泡 (消費者) 不需要了解整間屋子的配電系統是如何運作,也不需要關心具體分壓 (110W or 220W) 的細節,直接擰上就可以使用照明能量,這是 <服務抽象>。
因為不需要關心背後的實作細節,燈泡只需要關心是否符合燈座的介面規範以及是否相容其提供的電壓,這是 <標準化服務契約>。有了簡單且一致的服務契約,更多的燈泡 (消費者) 廠商就可以製造各式各樣不同應用的燈泡 (鎢絲燈、LED 燈、閃光燈、等等…),這是 <鬆耦合> 帶來的好處。
接下來,我們來看一下,PSC 利用哪一些 entity 來描述消費與生產兩端的抽象。
.
📌 Managed services (生產端) & Connect types (消費端)
理解了服務導向的設計原則後,接著我們來看一下在 服務消費端 與 服務生產端,PSC 各支援了哪些類型:
🎯 生產端的支援類型:
Google API:
如 Cloud Storage 或 BigQuery (如上圖紅框 PGA,這其實就涵蓋了 PGA 的功能:透過私有連結存取 Google APIs,而非透過 internet)
發布的 VPC 託管服務:
Google 發布的服務,如 Apigee 或 GKE 控制平面 (如上圖紅框 PSA,涵蓋了 PSA 的功能,存取 Google 發布的服務,像是 Cloud SQL,是位在 Google managed 的一個獨立 VPC 裡面,消費端觸碰不到)
由合作夥伴提供的第三方服務
組織內部發布的服務,其中消費者和生產者可能是同一組織內的兩個不同 VPC 網絡
從圖中可以看到,PGA (以私有方式存取 Google API) 和 PSA (以私有的方式存取 Google managed service, e.g. Cloud SQL) 的場景,都已經被 PSC 涵蓋了。也就是說,PGA, PSA 做的到的事情 PSC 也都做的到。
.
🎯 消費端的支援類型:
.
這張表總結了 Private Service Connect 消費端三種主要類型 (Endpoints, Backends, Interfaces) 的關鍵特性和差異。每種類型都有其特定的使用場景和配置方式,為不同的需求提供了靈活的解決方案:
Endpoints 適合直接訪問服務
Backends 提供了更多的控制和自定義選項 (如:負載平衡、路由、自訂網域)
Interfaces 則允許雙向通信,特別適用於需要從服務生產者發起連接的場景
選擇哪種類型取決於您的具體需求:如安全要求、控制程度、流量方向等因素。
.
🎯 配置架構:
具體的配置細節就不在本文展開,基本上可以理解成一個 3x2 = 6 種的組合可能 (Endpoint/Backend 可以配 Google APIs/Published services; 但 Interface 只能接 Published services,所以精確來說是 5 種組合)。
下面列舉 Endpoint/Backend/Interface
串接 Published services
的三個架構圖:
Endpoints
Backends
Interfaces
.
了解 PSC 的各種組合拳之後,我們放大來看那兩個紅色框框,也就是 PSC 覆蓋 PGA 與 PSA 功能的部分,看看 PSC 是不是可以直接取代它們。
.
📌 私有連線至 Google APIs: PSC vs. PGA
GCP 中的 Private Service Connect (PSC) 和 Private Google Access (PGA) 都可用於私有連線存取 Google API,它們在實現和使用上有一些關鍵區別:
.
📌 私有連線至 Google 管理的服務: PSC vs. PSA
GCP 提供了兩種主要的私有連線選項來存取 Google 管理的服務: Private Service Connect (PSC) 和 Private Service Access (PSA)。雖然這兩種方法都旨在提供安全的私有連接,但它們在實現方式和使用場景上有一些關鍵區別:
.
📌 結語
Private Service Connect 的出現,為各種私有連接的需求提供了一套統一的框架。透過服務導向的設計,讓消費者與生產者解耦,支援更複雜連接型態,也讓管理工作變得更清晰透明。
這樣的設計,在現在大語言模型應用程式上的佈署上也帶來更好的彈性與安全性,有機會我們再來聊聊這一塊。
想想看:
還有什麼理由,要繼續用 PGA, PSA 呢?
你是否開打算使用 PSC 全面取代 PGA, PSA 了呢? 如果不是,那是為什麼呢?
上面講了許多服務導向設計的優點,那有什麼缺點呢?
~
🔖 參考資料
[1] https://cloud.google.com/vpc/docs/private-google-access
[2] https://cloud.google.com/vpc/docs/private-services-access
[3] https://cloud.google.com/vpc/docs/private-service-connect