譯者 | 朱鋼
審校 | 孫淑娟
基于云的SaaS解決方案以及大多數其他解決方案都需要實現多租戶。讓我們快速回顧一下什么是多租戶,我們可以從中獲得什么,以及如何通過兩個簡單的層輕松實現它吧!
1.何為多租戶
從本質上講,多租戶允許服務的各個部分(即各個微服務)雖然服務多個客戶,但無需為每個客戶部署單獨的實例。為了使SaaS解決方案能夠以可承受的價格擴展,滿足客戶需求并具有彈性(即在云資源中具有成本效益),因此它必須支持多租戶。
多租戶架構提供了許多出色且必不可少的功能:
- 允許應用程序同時為多個客戶提供服務,同時共享底層基礎架構和服務;
- 安全且合規的訪問隔離;
- 負載均衡和擴展。
2.多租戶的兩個層面
一旦你理解了多租戶,它就很容易了。基本上只需要兩件事:“應用程序級的訪問控制”和“管理數據架構”。
讓我們將其分解為兩個層面:
- 數據層面,是關于你如何傳輸,存儲以及管理相互孤立的數據(即底層基礎設施如何避免混淆不同租戶的數據)。數據層面的多租戶通常以數據層上的分區來實現,例如數據存儲架構(如何在數據庫中保存)、主題(例如,kafka主題)、標簽、Domains、Sockets和端口,用于傳輸中的數據。
具有基于列簡單租戶分離的數據庫表示例
- 應用程序層面,是如何在邏輯層中實現接收不同租戶的上下文和訪問,即讓相同的代碼適用于不同的租戶。其中授權是應用程序層面實現多租戶必須具備的組件。
使用Permit.io的SDK強制實施多租戶的示例應用程序路由
3.實現多租戶
授權層,它是從單租戶應用程序安全升級到多租戶應用程序的最快、最可靠的方法。此外,授權層可以通過在所有相關服務中應用策略來實現分離,而無需更改服務本身。
選擇正確的策略模型可以進一步簡化這個轉換過程。使用經典模型,如RBAC + Tenancy,ReBAC + Hierarchy(租戶成為root-level關系)或普通ABAC(將租賃作為屬性)。
我們不需要自己實現多租戶授權,可以享受現成的開源工具和服務來實現。
4.使用OPA + OPAL實現多租戶(開源)
使用開源工具是開始實現多租戶授權層的絕佳選擇。雖然有多種選擇,但開放策略代理(OPA)是最常用的。OPA 充當授權微服務,我們可以將其添加到應用程序中,并使用其專有的Rego語言編寫的規則強制實施訪問。
將OPA與OPAL(開放策略管理層)相結合,使我們能夠大規模管理授權層,使用Pub/Sub主題使我們的代理及時了解策略(Rego代碼)和數據(JSON文檔)。例如,主題可以是我們的租戶名稱或租戶ID,從而允許我們將代理與每個租戶的更改同步。
5.使用Permit.io實現多租戶(服務)
應用授權解決方案,如Permit.io 。Permit建立在OPA和OPAL之上,增加了管理界面,包括租戶列表、租戶資源管理和每個租戶的用戶管理。
在 Permit.io 的儀表板中切換租戶
6.總結
多租戶允許我們的應用程序滿足多個客戶的需求,而無需為每個客戶部署單獨的實例。gist中的多租戶方案由兩層面組成:數據和應用程序。實現多租戶的最佳方法之一是創建一個授權層,該授權層可以實現分離,而無需更改服務本身。雖然你可以構建自己的授權層,但也有開源項目(例如OPA + OPAL)和服務(例如 Permit.io)允許你在應用程序中實現一個一月訪問的多租戶授權層。
原文鏈接:https://dev.to/permit_io/how-to-implement-multitenancy-in-cloud-computing-4pif
譯者介紹
朱鋼,51CTO社區編輯,2021年IT影響力專家博主,阿里云專家博主,2019年CSDN博客之星20強,2020年騰訊云+社區優秀作者,11年一線開發經驗,曾參與獵頭服務網站架構設計,企業智能客服以及大型電子政務系統開發,主導某大型央企內部防泄密和電子文檔安全監控系統的建設,目前在北京圖伽健康從事醫療軟件研發工作。