在多租戶方案中使用 Container Apps 的考量
您可以使用 Azure Container Apps 在無伺服器平台上執行微服務和容器化應用程式。 本文說明容器應用程式的一些功能,這些功能對多租用戶解決方案很有用。 它也提供指引的連結,可協助您在規劃階段。
隔離模型
當您使用使用 Container Apps 的多租用戶系統時,您必須判斷所需的隔離等級。 Container Apps 支援不同的多租戶架構模型:
- 您可以使用共用環境來實作 信任的多租戶環境。 例如,當您的租使用者全部來自組織內時,此模型可能很合適。
- 您可以透過為每個租戶部署獨立的環境來實作 有安全風險的多租戶機制。 例如,當您不信任租使用者執行的程式代碼時,此模型可能適用。
下表摘要說明 Container Apps 的主要租用隔離模型之間的差異。 本文稍後會說明模型。
考慮 | 每個租用戶一個環境 | 特定租戶的容器應用程式 | 共用容器應用程式 |
---|---|---|---|
數據隔離 | 高 | 低 | 低 |
效能隔離 | 高 | 中等。 沒有網路隔離。 | 低 |
部署複雜度 | 中等 | 低到中 | 低 |
作業複雜度 | 中等 | 低 | 低 |
資源成本 | 高 | 低 | 低 |
範例案例 | 在隔離的環境中運行敵對的多租戶工作負載,以滿足安全性與合規性的需求 | 優化受信任多租使用者應用程式的成本、網路資源和作業 | 在商業邏輯層級實施多租戶解決方案 |
共用容器應用程式
您可能想要考慮在用於所有租用戶的單一 Container Apps 環境中部署共用容器應用程式。
這種方法通常符合成本效益,而且需要最少的作業額外負荷,因為要管理的資源較少。
不過,如果您想要使用此隔離模型,您的應用程式碼必須具備多租戶感知能力。 此隔離模型不保證網路、計算、監視或數據層級的隔離。 您的應用程式程式代碼必須處理租用戶隔離。 此模型不適用於您不信任執行之程式代碼的惡意多租使用者工作負載。
此外,此模型可能會受到
注意
當租用戶位於不同的成本模型時,部署戳記模式 很有用。 例如,租戶可能會根據其定價層被指派到共用或專用的 Container Apps 環境。 此部署策略使您可以突破每個區域單一訂閱的 Container Apps 限制,並隨著租戶數量的增長而實現線性擴展。
租使用者特定的容器應用程式
您可能考慮的另一種方法是在共享環境中部署租使用者特定的容器應用程式,以隔離您的租使用者。
此隔離模型提供每個租用戶之間的邏輯隔離。 它提供下列優點:
- 成本效率。 藉由共用 Container Apps 環境、虛擬網路和其他鏈接的資源,例如 Log Analytics 工作區,您通常會降低每個租用戶的整體成本和管理複雜度。
- 升級和部署的分離。 每個租使用者的應用程式二進位檔都可以與相同環境中的其他容器應用程式獨立部署和升級。 如果您需要在不同的時間將不同的租用戶升級至特定版本的原始碼,這種方法會很有幫助。
- 資源隔離。 您環境中的每個容器應用程式都會配置自己的 CPU 和記憶體資源。 如果特定租使用者需要更多資源,您可以將更多 CPU 和記憶體配置給該租使用者的特定容器應用程式。 請記住,容器應用程式的 CPU 和記憶體配置總計有 限制。
不過,此方法不會為租用戶之間提供硬體或網路隔離。 單一環境中的所有容器應用程式都會共用相同的虛擬網路。 您必須能夠信任部署至應用程式的工作負載不會誤用共享資源。
容器應用程式具有對 Dapr 的內建支援,其使用模組化設計,通過 元件來實現各項功能。 在 Container Apps 中,Dapr 元件是環境層級的資源。 當您跨多個租用戶共用單一環境時,請確定您已將 Dapr 元件適當範圍設定為正確的租使用者特定容器應用程式,以確保隔離並避免數據外泄的風險。
注意
請勿使用 修訂 為不同的租戶建立不同版本的應用程式。 修訂版本不提供資源隔離。 它們是針對部署案例所設計,您必須在更新推出程式中執行多個版本的應用程式,如藍/綠部署和 A/B 測試一樣。
每個承租人一個環境
您可以考慮為每個租使用者部署一個 Container Apps 環境。 Container Apps 環境 是容器應用程式群組周圍的隔離界限。 環境會在數據平面上提供計算和網路隔離。 每個環境都會部署至自己的虛擬網路,並由環境內的所有應用程式共用。 每個環境都有自己的 Dapr 和監視組態。
這種方法提供最強層級的數據和效能隔離,因為每個租用戶的數據和流量都會隔離至特定環境。 當您使用這個模型時,您的應用程式不需要具備多租戶架構意識。 當您使用此方法時,您可以更細微地控制如何將資源配置給環境內的容器應用程式。 您可以根據租使用者的需求來決定配置。 例如,某些租使用者可能需要比其他租使用者更多的 CPU 和記憶體資源,因此您可以為這些租用戶的應用程式提供更多資源,同時受益於租使用者特定環境所提供的隔離。
不過,每個區域中可以部署的環境數量 限制很低,。 在某些情況下,您可以建立 Azure 支援票證來增加這些配額。
實作此隔離模型之前,請務必知道租用戶數目的預期成長。 請記住,這種方法通常會產生較高的總擁有成本,以及較高的部署和作業複雜度,因為您需要部署和管理的額外資源。
支援多租戶的容器應用程式功能
自訂網域名稱
Container Apps 允許您使用 通配符 DNS,並新增您自己的通配符 TLS 憑證到。 當您使用租使用者特定的子域時,通配符 DNS 和 TLS 憑證可讓您輕鬆地將解決方案調整為大量租使用者,而不需要手動重新設定每個新租使用者。
在容器應用程式中,您會在環境層級管理憑證。 Ingress 必須先針對容器應用程式啟用,然後才能將自訂網域綁定至該應用程式。
要求驗證和授權
容器應用程式可以代表您的應用程式來
如果您的租使用者使用 Microsoft Entra ID 作為識別提供者,您可以將 Container Apps 設定為使用 /common 端點 來驗證使用者令牌。 如此可以確保,無論使用者所屬的 Microsoft Entra 租用戶為何,他們的令牌都能被驗證並接受。
您也可以整合 Container Apps 與 Azure Active Directory B2C,以透過合作夥伴身分識別提供者進行用戶驗證。
如需詳細資訊,請參閱下列資源:
注意
Container Apps 中的驗證和授權功能類似於 Azure App Service 中的驗證和授權功能。 不過,有一些差異。 如需詳細資訊,請參閱 使用內建驗證的考慮。
受管理的身份
您可以使用來自 Microsoft Entra ID 的受控識別,讓您的容器應用程式存取由 entra ID Microsoft 驗證的其他資源。 當您使用受控識別時,容器應用程式不需要管理服務對服務通訊的認證。 您可以授與容器應用程式身分識別的特定許可權,以進行角色型訪問控制。
當您使用受控識別時,請記住您所選擇的隔離模型。 例如,假設您在所有租用戶之間共用容器應用程式,並部署租使用者特定的資料庫。 您必須確保一個租使用者的應用程式無法存取不同的租用戶資料庫。
如需詳細資訊,請參閱 Azure 容器應用程式的受控身分識別。
貢獻者
本文由 Microsoft 維護。 它最初是由下列參與者所撰寫。
主要作者:
- Daniel Larsen | FastTrack for Azure 主要客戶工程師
- Will Velida | Azure FastTrack 客戶工程師 2
其他參與者:
- John Downs |首席軟體工程師
- 查德·基特爾 |主要軟體工程師,Microsoft
- 劉徐紅 | Azure FastTrack 資深服務工程師
- Aarthi Murugan |CS 技術策略應用程式創新資深項目經理
- Kendall Roden |Azure Container Apps 資深項目經理
- Paolo Salvatori | Azure FastTrack 主要客戶工程師
- 阿森·弗拉基米爾斯基 | FastTrack for Azure 主要客戶工程師
若要查看非公開的 LinkedIn 個人資料,請登入 LinkedIn。
後續步驟
相關資源
- 多租使用者解決方案架構設計人員和開發人員的資源
- 在 Azure 上建構多租用戶解決方案
- Azure 上用於設計和建構多租戶解決方案的
檢查清單