什么是權(quán)限管理
CCE權(quán)限管理是在統(tǒng)一身份認(rèn)證服務(wù)(IAM)與Kubernetes的角色訪問(wèn)控制(RBAC)的能力基礎(chǔ)上,打造的細(xì)粒度權(quán)限管理功能,支持基于IAM的細(xì)粒度權(quán)限控制和IAM Token認(rèn)證,支持集群級(jí)別、命名空間級(jí)別的權(quán)限控制,幫助用戶便捷靈活的對(duì)租戶下的IAM用戶、用戶組設(shè)定不同的操作權(quán)限。
如果您需要對(duì)CCE集群及相關(guān)資源進(jìn)行精細(xì)的權(quán)限管理,例如限制不同部門的員工擁有部門內(nèi)資源的細(xì)粒度權(quán)限,您可以使用CCE權(quán)限管理提供的增強(qiáng)能力進(jìn)行多維度的權(quán)限管理。
CCE支持的權(quán)限管理能力
CCE的權(quán)限管理包括“集群權(quán)限”和“命名空間權(quán)限”兩種能力,能夠從集群和命名空間層面對(duì)用戶組或用戶進(jìn)行細(xì)粒度授權(quán),具體解釋如下:
集群權(quán)限:是基于IAM系統(tǒng)策略的授權(quán),可以通過(guò)用戶組功能實(shí)現(xiàn)IAM用戶的授權(quán)。用戶組是用戶的集合,通過(guò)集群權(quán)限設(shè)置可以讓某些用戶組操作集群(如創(chuàng)建/刪除集群、節(jié)點(diǎn)、節(jié)點(diǎn)池、模板、插件等),而讓某些用戶組僅能查看集群。
集群權(quán)限涉及CCE非Kubernetes API,支持IAM細(xì)粒度策略、企業(yè)項(xiàng)目管理相關(guān)能力。
命名空間權(quán)限:是基于Kubernetes RBAC(Role-Based Access Control,基于角色的訪問(wèn)控制)能力的授權(quán),通過(guò)權(quán)限設(shè)置可以讓不同的用戶或用戶組擁有操作不同Kubernetes資源的權(quán)限。同時(shí)CCE基于開(kāi)源能力進(jìn)行了增強(qiáng),可以支持基于IAM用戶或用戶組粒度進(jìn)行RBAC授權(quán)、IAM token直接訪問(wèn)API進(jìn)行RBAC認(rèn)證鑒權(quán)。
命名空間權(quán)限涉及CCE Kubernetes API,基于Kubernetes RBAC能力進(jìn)行增強(qiáng),支持對(duì)接IAM用戶/用戶組進(jìn)行授權(quán)和認(rèn)證鑒權(quán),但與IAM細(xì)粒度策略獨(dú)立。
CCE從v1.11.7-r2版本起的集群支持配置命名空間權(quán)限,1.11.7-r2之前的版本默認(rèn)擁有全部命名空間權(quán)限。
CCE的權(quán)限可以從使用的階段分為兩個(gè)階段來(lái)看,第一個(gè)階段是創(chuàng)建和管理集群的權(quán)限,也就是擁有創(chuàng)建/刪除集群、節(jié)點(diǎn)等資源的權(quán)限。第二個(gè)階段是使用集群Kubernetes資源(如工作負(fù)載、Service等)的權(quán)限。
清楚了集群權(quán)限和命名空間權(quán)限后,您就可以通過(guò)這兩步授權(quán),做到精細(xì)化的權(quán)限控制。
CCE集群權(quán)限是基于IAM系統(tǒng)策略和自定義策略的授權(quán),可以通過(guò)用戶組功能實(shí)現(xiàn)IAM用戶的授權(quán)。
系統(tǒng)策略
IAM中預(yù)置的CCE系統(tǒng)策略當(dāng)前包含CCEFullAccess和CCEReadOnlyAccess兩種策略:
- CCE FullAccess:系統(tǒng)策略,CCE服務(wù)集群相關(guān)資源的普通操作權(quán)限,不包括集群(啟用Kubernetes RBAC鑒權(quán))的命名空間權(quán)限,不包括委托授權(quán)、生成集群證書等管理員角色的特權(quán)操作。
- CCE ReadOnlyAccess:系統(tǒng)策略,CCE服務(wù)集群相關(guān)資源的只讀權(quán)限,不包括集群(啟用Kubernetes RBAC鑒權(quán))的命名空間權(quán)限。
自定義策略
如果系統(tǒng)預(yù)置的CCE策略,不滿足您的授權(quán)要求,可以創(chuàng)建自定義策略。
目前支持以下兩種方式創(chuàng)建自定義策略:
- 可視化視圖創(chuàng)建自定義策略:無(wú)需了解策略語(yǔ)法,按可視化視圖導(dǎo)航欄選擇云服務(wù)、操作、資源、條件等策略內(nèi)容,可自動(dòng)生成策略。
- JSON視圖創(chuàng)建自定義策略:可以在選擇策略模板后,根據(jù)具體需求編輯策略內(nèi)容;也可以直接在編輯框內(nèi)編寫JSON格式的策略內(nèi)容。
設(shè)置集群權(quán)限流程
命名空間權(quán)限是基于Kubernetes RBAC能力的授權(quán),通過(guò)權(quán)限設(shè)置可以讓不同的用戶或用戶組擁有操作不同Kubernetes資源的權(quán)限。Kubernetes RBAC API定義了四種類型:Role、ClusterRole、RoleBinding與ClusterRoleBinding,這四種類型之間的關(guān)系和簡(jiǎn)要說(shuō)明如下:
- Role:角色,其實(shí)是定義一組對(duì)Kubernetes資源(命名空間級(jí)別)的訪問(wèn)規(guī)則。
- RoleBinding:角色綁定,定義了用戶和角色的關(guān)系。
- ClusterRole:集群角色,其實(shí)是定義一組對(duì)Kubernetes資源(集群級(jí)別,包含全部命名空間)的訪問(wèn)規(guī)則。
- ClusterRoleBinding:集群角色綁定,定義了用戶和集群角色的關(guān)系。
在CCE控制臺(tái)可以授予用戶或用戶組命名空間權(quán)限,可以對(duì)某一個(gè)命名空間或全部命名空間授權(quán),CCE控制臺(tái)默認(rèn)提供如下ClusterRole:
- view(只讀權(quán)限):對(duì)全部或所選命名空間下大多數(shù)資源的只讀權(quán)限。
- edit(開(kāi)發(fā)權(quán)限):對(duì)全部或所選命名空間下多數(shù)資源的讀寫權(quán)限。當(dāng)配置在全部命名空間時(shí)能力與運(yùn)維權(quán)限一致。
- admin(運(yùn)維權(quán)限):對(duì)全部命名空間下大多數(shù)資源的讀寫權(quán)限,對(duì)節(jié)點(diǎn)、存儲(chǔ)卷,命名空間和配額管理的只讀權(quán)限。
- cluster-admin(管理員權(quán)限):對(duì)全部命名空間下所有資源的讀寫權(quán)限。
CCE中的命名空間權(quán)限是基于Kubernetes RBAC能力的授權(quán),通過(guò)權(quán)限設(shè)置可以讓不同的用戶或用戶組擁有操作不同Kubernetes資源的權(quán)限。
某部門權(quán)限設(shè)計(jì)及配置示例
某部門權(quán)限設(shè)計(jì)及配置示例
活動(dòng)對(duì)象:華為云電銷客戶及渠道伙伴客戶可參與消費(fèi)滿送活動(dòng),其他客戶參與前請(qǐng)咨詢客戶經(jīng)理
活動(dòng)時(shí)間: 2020年8月12日-2020年9月11日
活動(dòng)期間,華為云用戶通過(guò)活動(dòng)頁(yè)面購(gòu)買云服務(wù),或使用上云禮包優(yōu)惠券在華為云官網(wǎng)新購(gòu)云服務(wù),累計(jì)新購(gòu)實(shí)付付費(fèi)金額達(dá)到一定額度,可兌換相應(yīng)的實(shí)物禮品?;顒?dòng)優(yōu)惠券可在本活動(dòng)頁(yè)面中“上云禮包”等方式獲取,在華為云官網(wǎng)直接購(gòu)買(未使用年中云鉅惠活動(dòng)優(yōu)惠券)或參與其他活動(dòng)的訂單付費(fèi)金額不計(jì)入統(tǒng)計(jì)范圍內(nèi);
活動(dòng)對(duì)象:華為云電銷客戶及渠道伙伴客戶可參與消費(fèi)滿送活動(dòng),其他客戶參與前請(qǐng)咨詢客戶經(jīng)理
基于IAM系統(tǒng)策略的“集群權(quán)限”與基于Kubernetes RBAC能力的“命名空間權(quán)限”,兩者是完全獨(dú)立的,互不影響,但要配合使用。同時(shí),為用戶組設(shè)置的權(quán)限將作用于用戶組下的全部用戶。當(dāng)給用戶或用戶組添加多個(gè)權(quán)限時(shí),多個(gè)權(quán)限會(huì)同時(shí)生效(取并集)。
下面以一個(gè)公司為例進(jìn)行介紹。
通常一個(gè)公司中有多個(gè)部門或項(xiàng)目,每個(gè)部門又有多個(gè)成員,所以在配置權(quán)限前需要先進(jìn)行詳細(xì)設(shè)計(jì),并在設(shè)置權(quán)限之前提前為每個(gè)成員創(chuàng)建用戶名,便于后續(xù)對(duì)用戶進(jìn)行用戶組歸屬和權(quán)限設(shè)置。
下圖為某公司某部門的組織架構(gòu)圖和相關(guān)人員的權(quán)限設(shè)計(jì),本文將按照該設(shè)計(jì)對(duì)每個(gè)角色的權(quán)限設(shè)置進(jìn)行演示:
-
收起
主管:DAVID 收起
用戶“DAVID”為該公司某部門的主管,根據(jù)權(quán)限設(shè)計(jì)需要為其配置CCE服務(wù)的所有權(quán)限(包括集群權(quán)限和命名空間權(quán)限),因此需要在統(tǒng)一身份認(rèn)證服務(wù) IAM中單獨(dú)為DAVID創(chuàng)建用戶組“cce-admin”,并配置所有項(xiàng)目的權(quán)限:“CCE Administrator”。
- 說(shuō)明
CCE Administrator:CCE的管理員權(quán)限,擁有該服務(wù)的所有權(quán)限,不需要再賦予其他權(quán)限。
CCE FullAccess、CCE ReadOnlyAccess:CCE的集群管理權(quán)限,僅針對(duì)與集群相關(guān)的資源(如集群、節(jié)點(diǎn))有效,您必須確保同時(shí)配置了“命名空間權(quán)限”,才能有操作Kubernetes資源(如工作負(fù)載、Service等)的權(quán)限。
-
收起
運(yùn)維組長(zhǎng):JAMES 收起
用戶“JAMES”為該部門的運(yùn)維組長(zhǎng),需要設(shè)置所有項(xiàng)目的集群權(quán)限和所有命名空間的只讀權(quán)限。
在統(tǒng)一身份認(rèn)證服務(wù) IAM中為用戶“JAMES”單獨(dú)創(chuàng)建用戶組“cce-sre”,然后為用戶組“cce-sre”配置所有項(xiàng)目的集群權(quán)限:“CCE FullAccess”,用戶組“cce-sre”便擁有了所有項(xiàng)目的集群管理權(quán)限,接下來(lái)為所有組長(zhǎng)和工程師添加所有集群和命名空間的只讀權(quán)限。
-
收起
開(kāi)發(fā)組長(zhǎng):ROBERT 收起
用戶“ROBERT”作為開(kāi)發(fā)組的組長(zhǎng),雖然在已經(jīng)為其設(shè)置了所有集群和命名空間的只讀權(quán)限,但顯然還不夠,還需要為其設(shè)置所有命名空間的管理權(quán)限。
因此需要再單獨(dú)為其賦予所有集群下全部命名空間的管理員權(quán)限。
-
收起
運(yùn)維工程師:WILLIAM 收起
運(yùn)維工程師“WILLIAM”雖然有了所有集群和命名空間的只讀權(quán)限,但還需要在統(tǒng)一身份認(rèn)證服務(wù) IAM中為其設(shè)置區(qū)域的集群管理權(quán)限,因此單獨(dú)為其創(chuàng)建一個(gè)用戶組“cce-sre-b4”,然后配置區(qū)域項(xiàng)目的“CCE FullAccess”。
-
收起
開(kāi)發(fā)工程師:LINDA、PETER 收起
“LINDA”和“PETER”是開(kāi)發(fā)工程師,已經(jīng)在用戶組“read-only”中為兩位工程師配置了集群和命名空間的只讀權(quán)限,此時(shí)只需要再另外配置相應(yīng)命名空間的編輯權(quán)限即可。