您當(dāng)前的位置是:  首頁(yè) > 新聞 > 文章精選 >
 首頁(yè) > 新聞 > 文章精選 >

容器云多租戶及權(quán)限中心設(shè)計(jì)

2017-12-01 09:15:41   作者:汪照輝 王作敬   來源:開源云中文社區(qū)   評(píng)論:0  點(diǎn)擊:


  容器云平臺(tái)逐步進(jìn)入到了企業(yè)生產(chǎn)環(huán)境,但容器云產(chǎn)品化才剛剛起步。很多功能的設(shè)計(jì)很不完善也很不合理。這篇文章從容器云多租戶考慮,提出多租戶可能的需求,從而設(shè)計(jì)出適用不同場(chǎng)景需求的多租戶和多租戶權(quán)限中心能力,更能靈活的滿足不同租戶的需求。
  摘要
  隨著容器技術(shù)的火熱,不能免俗,我們也嘗試引入容器技術(shù)搭建私有容器云平臺(tái),然后在容器云的基礎(chǔ)上逐步實(shí)現(xiàn)公司的PaaS平臺(tái),以提供給各團(tuán)隊(duì)?wèi)?yīng)用托管、應(yīng)用開發(fā)、應(yīng)用運(yùn)維的能力,同時(shí)希望實(shí)現(xiàn)開發(fā)測(cè)試環(huán)境一致性,實(shí)現(xiàn)互聯(lián)網(wǎng)應(yīng)用或類互聯(lián)網(wǎng)應(yīng)用的彈性伸縮,實(shí)現(xiàn)手機(jī)應(yīng)用的灰度發(fā)布,實(shí)現(xiàn)持續(xù)集成持續(xù)交付的敏捷流程,實(shí)現(xiàn)運(yùn)維自動(dòng)化等能力。
  我們前后接觸了10多家容器云廠商,從交流過程中,隨著理解的深入,也發(fā)現(xiàn)基本上所有的廠商都是基于開源社區(qū)版本的功能,很少有自己的想法,難以滿足我們的需求,特別是多租戶的設(shè)計(jì),基本上都是開發(fā)人員一廂情愿的想法,沒有理解多租戶功能。所以這里我們就拋磚引玉討論下如何看待多租戶及多租戶權(quán)限訪問控制的設(shè)計(jì)實(shí)現(xiàn)。
  容器云多租戶
  多租戶,顧名思義,就是很多人來租用容器云平臺(tái)的資源來實(shí)現(xiàn)自己的應(yīng)用托管運(yùn)維需求。那么資源管理與分配就是我們首先需要面對(duì)的問題。那么容器云中什么是資源?資源該由誰(shuí)來管理?如何分配?誰(shuí)來運(yùn)維這些資源?誰(shuí)來使用這些資源? 是不是一個(gè)admin就可以眉毛胡子一把抓,干所有事情?
  資源概念很廣,對(duì)于容器云平臺(tái)來說,租戶是不是一種資源?當(dāng)然是。但這里我們討論的只是容器云平臺(tái)提供的基礎(chǔ)資源:計(jì)算資源、存儲(chǔ)資源、網(wǎng)絡(luò)資源。
  有了資源,那么誰(shuí)來管理運(yùn)維分配使用這些資源?目前幾乎所有的容器廠商都是由一個(gè)容器平臺(tái)管理員來做所有的事情,這很不合理!
  多租戶很重要的一點(diǎn)是資源隔離,安全。即便是私有云,也需要考慮相應(yīng)的安全和業(yè)務(wù)隔離需求,特別做一個(gè)產(chǎn)品時(shí)。
  從多租戶的角度考慮,租戶租用容器云平臺(tái)的資源來托管、開發(fā)、部署運(yùn)維自己的應(yīng)用、服務(wù)。容器云平臺(tái)需要提供、維護(hù)保障租戶能正常使用這些資源,同時(shí)給租戶托管的應(yīng)用提供服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、服務(wù)配置、日志、監(jiān)控、預(yù)警告警、彈性伸縮、負(fù)載均衡、安全等能力。我們要明白的是租戶只是租用這些能力,他并不運(yùn)維這些能力。租戶關(guān)注的是其托管的應(yīng)用和服務(wù),他需要做的是利用平臺(tái)提供的這些能力來無縫的運(yùn)維他們的應(yīng)用和服務(wù)。
  到此,我們就理解清楚了上面的幾個(gè)問題。租戶只是使用/租用資源;容器云平臺(tái)管理運(yùn)維這些資源。租戶側(cè)重于對(duì)自由的應(yīng)用或服務(wù)進(jìn)行運(yùn)維。資源由租戶申請(qǐng),容器云平臺(tái)來分配管理資源。
  我們?cè)賮碛懻撓氯萜髟浦卸嘧鈶舻目赡艿陌咐枨螅?/div>
  多租戶可能需求
  • 案例需求一
  不同組織架構(gòu)支持。租戶可能是一個(gè)公司、一個(gè)部門、一個(gè)團(tuán)隊(duì)、一個(gè)項(xiàng)目組或者簡(jiǎn)單一個(gè)人等。一個(gè)公司可能有不同的部門,一個(gè)部門有子部門,一個(gè)團(tuán)隊(duì)可能有多個(gè)項(xiàng)目組,一個(gè)人可能屬于不同的團(tuán)隊(duì)不同的項(xiàng)目組……有點(diǎn)頭大,是不是?多租戶中需要支持不同的組織架構(gòu)形式,并且這個(gè)組織架構(gòu)是租戶自己定義管理的。
  圖表 1需要支持的租戶的不同組織架構(gòu)需求
  • 案例需求二
  權(quán)限定義。容器云為租戶提供不同的功能,不同功能組件可能面臨著不同權(quán)限定義的問題。對(duì)于租戶來說,可以完全控制其下的賬戶管理,賬戶管理可能有增刪改查等權(quán)限;但對(duì)資源,只能申請(qǐng)、使用分配到的資源,或者再分配資源給其他用戶或角色。而對(duì)租戶自己的應(yīng)用可能有查詢、部署、運(yùn)維(配置更新停止啟動(dòng)等)、刪除等權(quán)限。
  圖表 2不同功能不同權(quán)限定義需求
  • 案例需求三
  角色定義、授權(quán)。對(duì)于部署的應(yīng)用A, 可能的需求是分配一個(gè)用戶UserA僅 有應(yīng)用A運(yùn)維的角色,用戶UserA只有運(yùn)維應(yīng)用A的權(quán)限。當(dāng)然用戶UserA需要有從鏡像倉(cāng)庫(kù)更新對(duì)應(yīng)的應(yīng)用鏡像的權(quán)限,需要有在日志中心查詢應(yīng)用A的日志的權(quán)限,在監(jiān)控告警中心配置應(yīng)用A監(jiān)控告警規(guī)則的權(quán)限等。當(dāng)然也可以不賦予用戶A此權(quán)限。
  圖表 3角色定義,授權(quán)
  • 案例需求四
  多租戶用戶登錄。前面提到不同租戶下可能有同名用戶或同賬號(hào)用戶。同一用戶/同一賬號(hào)也可能屬于不同的租戶,那么登錄的時(shí)候如何通過租戶賬號(hào)來區(qū)分?
  • 案例需求五
  對(duì)應(yīng)用不同資源需求的支持。租戶開發(fā)的應(yīng)用可能需要不同的資源類型來支撐,比如某應(yīng)用B需要內(nèi)存優(yōu)化的資源,某應(yīng)用C需要IO優(yōu)化和高CPU計(jì)算的資源,應(yīng)用D可能只通用資源就可以,應(yīng)用E需要GPU資源,等等。這就需要根據(jù)不同的應(yīng)用需求,提供不同的資源支撐。
  • 案例需求六
  充分利用現(xiàn)有資源。我們知道容器不占用很多資源,那么為充分有效利用可用的資源,公司內(nèi)可能有虛擬化資源,也可能有一些淘汰的物理機(jī)。是不是可以利用起來部署容器?這些設(shè)備配置各異,即便是新購(gòu)買主機(jī),不同批次配置也可能不一樣,這些資源如何能更好的管理和使用?
  • 案例需求七
  都把容器列到菜單最顯著位置,生怕沒人知道他們采用了容器技術(shù)。但對(duì)于租戶來說關(guān)心的重點(diǎn)應(yīng)該是應(yīng)用,用不用容器,用什么容器,應(yīng)用部署在哪臺(tái)主機(jī)哪個(gè)集群都應(yīng)該是透明的,都不重要。只要保證資源有效可用,在資源異常情況下能順利實(shí)現(xiàn)應(yīng)用遷移即可。
  回到應(yīng)用。這里的應(yīng)用我們指業(yè)務(wù)應(yīng)用。一個(gè)業(yè)務(wù)應(yīng)用可以看作是一個(gè)系統(tǒng),也可以是系統(tǒng)的一個(gè)模塊,或者組件。一個(gè)業(yè)務(wù)應(yīng)用可能由多個(gè)服務(wù)組成,這里就涉及到了服務(wù)的編排。每個(gè)服務(wù)可能需要部署一到多個(gè)服務(wù)實(shí)例,每個(gè)服務(wù)實(shí)例運(yùn)行在Pods或容器中。Pods或容器和主機(jī)、存儲(chǔ)、網(wǎng)絡(luò)等資源相關(guān),主機(jī)上有CPU、Memory等資源。我們希望我們運(yùn)維一個(gè)應(yīng)用時(shí),不同層次的對(duì)象可以有效平滑的關(guān)聯(lián)起來,就像一個(gè)人,有骨架,有血肉,是一個(gè)整體。而不是點(diǎn)這里一下,再點(diǎn)那里一下,跳來跳去。
  圖表 4應(yīng)用管理
  • 案例需求八
  同時(shí)業(yè)務(wù)服務(wù)涉及到鏡像倉(cāng)庫(kù)、服務(wù)的注冊(cè)發(fā)現(xiàn)、服務(wù)配置、服務(wù)部署策略、服務(wù)運(yùn)行監(jiān)控、服務(wù)彈性伸縮、服務(wù)負(fù)載均衡、異常遷移、自動(dòng)恢復(fù)等。每個(gè)租戶登錄時(shí)可能只希望看到鏡像倉(cāng)庫(kù)、日志、監(jiān)控告警、配置等中自己相關(guān)的信息,不希望其他租戶看到自己的信息。
  • 案例需求九
  多租戶還有重要的一點(diǎn)就是安全和資源隔離。租戶用戶不需要連接登錄遠(yuǎn)程容器云資源主機(jī)或容器引擎。我們說了,容器資源由容器平臺(tái)來運(yùn)維,租戶只是使用資源。不管私有云或公有云,理念要一致,不能隨意而為。否則安全就無法保證。
  基于上面提到的需求,我們看下怎么實(shí)現(xiàn)?雌饋硗(fù)雜,其實(shí)也很簡(jiǎn)單。只有想不到,沒有做不到。
  多租戶和權(quán)限中心實(shí)現(xiàn)
  從目前國(guó)內(nèi)各廠商的實(shí)現(xiàn)來看,沒有能滿足以上需求的, 也沒有廠商認(rèn)真考慮上面的問題。
  多租戶設(shè)計(jì),需要考慮到租戶的權(quán)限訪問控制,這涉及到容器云平臺(tái)整體的權(quán)限控制架構(gòu),所以這里我們提出了一個(gè)權(quán)限中心的概念,實(shí)現(xiàn)一個(gè)權(quán)限中心,由權(quán)限中心來實(shí)現(xiàn)對(duì)容器云各組件及各功能的動(dòng)態(tài)控制,以適應(yīng)靈活的不同的場(chǎng)景需求?
  一、 組織結(jié)構(gòu)的實(shí)現(xiàn)可采用類似論壇的層次結(jié)構(gòu)方法,無論多少層多少級(jí),只標(biāo)注其父結(jié)點(diǎn)ID,樹型結(jié)構(gòu)遍歷可以獲得所有的結(jié)點(diǎn)。這也是我們下面權(quán)限訪問控制實(shí)現(xiàn)的基礎(chǔ)。
  二、由于每項(xiàng)功能可以提供不同的操作,所以定義權(quán)限時(shí)很難用統(tǒng)一的權(quán)限名稱來定義,這里可以借助Oracle數(shù)據(jù)庫(kù)的權(quán)限定義,比如應(yīng)用管理,有部署、查看、運(yùn)維、刪除等權(quán)限;租戶資源管理,有申請(qǐng)、使用、再分配等權(quán)限。
  三、角色定義,就需要基于用戶及用戶組織結(jié)構(gòu),權(quán)限和容器云提供給租戶的功能列表來實(shí)現(xiàn)?梢圆捎肙racle 數(shù)據(jù)庫(kù)的用戶角色權(quán)限定義方式來定義。容器云平臺(tái)初始化時(shí)可以預(yù)定義角色,比如租戶管理員角色、應(yīng)用管理員角色等。
  四、用戶登錄我們借用Windows domain的概念,一個(gè)租戶就是一個(gè)domain。租戶賬號(hào)就是domain name。 登錄時(shí)指定domainName\useraccount的方式登錄。根據(jù)定義的角色權(quán)限展示不同用戶視圖。以租戶賬號(hào)登錄時(shí),可以不用指定domain登錄。 租戶/用戶賬號(hào)是有效的Email Address。租戶賬號(hào)是超級(jí)用戶賬號(hào)。
  五、資源管理需要容器云平臺(tái)來支撐,簡(jiǎn)單的方式是通過標(biāo)簽來進(jìn)行資源分類。 一方面可以方便的充分有效的利用公司內(nèi)資源,另一方面也有針對(duì)性的對(duì)應(yīng)用不同資源需求提供支持。再者也可以簡(jiǎn)單實(shí)現(xiàn)資源隔離。
  這樣組織結(jié)構(gòu)可支持不同的需求變化,每用戶(人員)有從屬于租戶(domain)下的自己的賬號(hào)。租戶可定義不同的角色,角色賦予用戶,用戶可有多種角色、角色權(quán)限可繼承。用戶使用資源重點(diǎn)關(guān)注應(yīng)用的運(yùn)維。
  之所以把權(quán)限訪問控制提取出來實(shí)現(xiàn)一個(gè)統(tǒng)一的權(quán)限中心組件,是因?yàn)檎麄(gè)容器云平臺(tái),各個(gè)組件都面臨著權(quán)限訪問控制需求。從云計(jì)算的理念來說,松耦合,插件式的組件或模塊設(shè)計(jì)更靈活和適用快速變化的需求。對(duì)一個(gè)客戶來說,一個(gè)組件可能需要也可能不需要,每個(gè)組件都可以以插拔的方式來控制,根據(jù)客戶需求來部署相應(yīng)的組件,實(shí)現(xiàn)相應(yīng)的權(quán)限訪問控制,將會(huì)更靈活和便利。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題