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