開發者友好型網絡,跟上您的開發速度
共用VPC遵循最小權限原則,只有中央網絡和安全團隊擁有在主專案中創建和管理網絡基礎設施的權限。而開發者則只能在服務專案中部署計算、儲存和其他資源。
這種方法在需要存取Google Cloud中運行的其他資源、本地資源或其他雲端提供商資源的應用場景中效果很好。然而,並非所有用例都需要這樣的存取權限。例如,考慮一個基於BigQuery(BQ)和/或Google Cloud Storage(GCS)中的資料運行的資料流管道,它只需要存取本地網絡,以便為工作執行創建計算機器。
另一個範例是,一個開發團隊擁有一個Google Kubernetes Engine(GKE)自動駕駛叢集,他們用它來託管一組內部應用,並且不需要超出叢集的擴展連接。
對於不需要外部連接的用例,依賴於存取集中式共用VPC是不必要的。為了提供更多的彈性,可以根據連接需求對應用程式進行分類。將需要連接到本地或其他網絡的應用程式放在共用VPC中,並在服務專案中創建的VPC中部署不需要外部連接的應用程式。需要注意的是,服務專案可以同時使用來自主專案的共用VPC和在服務專案中創建和管理的本地VPC。
這篇部落格討論了透過分類VPC管理網絡連接的設計考慮,以及它們如何用於提供以開發者為中心的網絡同時保持安全性。
靈活性、安全性與可擴展性
目標是在不損害安全性和可擴展性的前提下,提供開發人員在設計其服務項目本地VPC時與網絡團隊的靈活性和自主性。這使開發人員能夠為其應用程式在Google雲端中輕鬆快速地上線,而不會受到中央網絡控制的阻礙,例如防火牆規則的變更請求、IAM訪問權限和VPC。對於那些孤立且不需要任何外部連接的工作負載來說,這一點尤其重要。
允許開發人員創建VPC網絡是個好想法,但維持安全規範也非常重要。因此,建議將VPC創建自動化為項目創建的基礎設施即代碼(IaC)的一部分。網絡團隊監督VPC創建IaC的指導原則,並且開發人員可以訪問預先創建的VPC。本地VPC的更改通過類似GitHub拉取請求的工作流程進行,中央網絡管理員和/或Google雲端平台管理團隊成為這些項目本地VPC的應用團隊驅動配置的審查者。
建議參考組織政策,以限制開發人員在服務項目VPC中部署的網絡組件。例如,組織政策可以用來阻止向虛擬機分配公共IP地址、創建外部負載均衡器、VPC對等連接、VPN、NAT網關等。考慮在文件夾或組織級別使用分層防火牆政策,以更高層級控制網絡訪問。
另外,一些VPC配額和限制適用於每個網絡。通過將孤立工作負載轉移到本地服務項目VPC,可以減少對中央共享VPC的配額消耗。
需要理解的设计方面
使用这些参考设计作为基线,构建符合您需求的设计。
1. VPC分类
项目本地与共享VPC访问拓扑
此设计能够提供一个服务项目,该项目既能访问项目本地VPC,也能访问共享VPC。其思路是项目内的应用程序/服务利用本地VPC,并根据需要使用共享VPC或其他连接机制来扩展连接性。
例如,预期Cloud Run应用程序通过企业代理访问公共资源。同样地,连接到共享VPC的私有工作池上运行的Cloud Build可以从公共注册表下载构建时依赖。另一个例子是部署在本地VPC上的私有GKE集群可以托管在集群内部进行本地通信的应用程序。
重要的是要理解,VPC之间没有默认的连接性,并且没有提出修改共享VPC设计的建议。
2. 連線至谷歌管理服務
在一個專案中,並非強制要求存取共享VPC,而只能包括專案內的本地VPC。在本地VPC中的客戶端可以存取PSA服務,如Filestore和Cloud SQL,或使用谷歌雲端API的服務。這種設計支持快速上市,僅限於私有部署,同時允許存取谷歌管理的服務/API。通常,用戶只需要存取谷歌雲端API。
對於集中管理的共享VPC的存取,應當需要時才按選擇性授予。網絡管理員和/或SRE應該審核共享VPC的使用情況,針對未使用的專案限制共享VPC的存取,並將VPC存取日誌發送至BigQuery進行分析。
預設情況下,此設計不提供從本地/其他網絡到達或離開的連線。
3.跨專案/組織的網絡連接
透過私有服務連接(PSC)、VPC網路對等連接,或合適的負載平衡器LB堆疊,可以選擇性地暴露VPC外的端點以進行流入。PSC管理服務是一種機制,用於擴展本地或共享VPC連接,無論是在同一個Google雲端組織內還是跨組織。另一種選擇,VPC對等連接提供了更廣泛的入/出連接性。
本博客從開發者導向的網絡設計觀點出發,提供了安全與靈活性之間的平衡。設計包括了針對特定專案的本地VPC,以及對集中管理的共享VPC的選擇性訪問。此設計使企業能夠對網絡訪問進行分類,並最小化未經授權訪問的風險。