Rancher Kubernetes擁有RBAC(基於角色的訪問控制)功能,此功能可讓管理員配置不一樣的策略,容許或拒絕用戶和服務賬戶訪問Kubernetes API資源。git
爲了更好地理解RBAC功能是如何工做的,本文將闡明如何使用Kubernetes API進行身份認證,以及RBAC受權模塊如何與認證用戶協同工做。github
Rancher使用Webhook Token身份驗證策略來認證用戶的bearer token。首先,用戶使用Rancher驗證經過Kubernetes > CLI選項卡得到kube配置文件,這其中就包含bearer token。而後,kubectl藉助此token和web hook遠程認證服務,用Kubernetes API對用戶進行身份認證:web
當用戶嘗試使用bearer token對Kubernetes API進行認證時,認證webhook會與Rancher Kubernetes認證服務進行通訊,併發送包含該token的身份認證審查對象。而後,Rancher Kubernetes認證服務將會發送一個檢查狀態,該狀態指定用戶是否通過身份認證。微信
審閱狀態包含名稱、uid和組等用戶信息。Kubernetes API中的受權模塊稍後將以此肯定該用戶的訪問級別。併發
如下是Kubernetes發送給Rancher Kubernetes認證服務的認證請求示例。ui
認證請求:spa
Rancher Kubernetes認證服務決定該用戶是否經過認證,並向Kubernetes發送響應。對象
認證響應:token
如您所見,因爲環境全部者發送此請求,用戶在系統中被歸爲system:masters組,該用戶組能夠訪問Kubernetes集羣中的全部資源:圖片
集羣角色「集羣管理」資源容許訪問全部API組中的全部Kubernetes資源:
對API的請求包含請求者的用戶名、請求的操做以及操做所影響的對象的信息。在對Kubernetes API的請求成功進行認證以後,必須受權該請求。
RBAC受權模塊定義了四個頂級對象,這四個對象控制受權用戶的受權決策:
角色和集羣角色都標識了Kubernetes API資源的權限集。它們之間惟一的區別是:角色能夠在命名空間中定義,而集羣角色綁定則在集羣範圍內定義。
角色綁定和集羣角色綁定將定義的角色分配給用戶、組或服務賬戶。而它們能夠經過在命名空間中進行角色綁定或在集羣範圍內進行集羣角色綁定來得到授予權限。在下一節中咱們將討論相關示例。
要在Rancher中全新安裝Kubernetes來啓用RBAC功能,您能夠編輯默認環境或建立新的環境模板。在Kubernetes環境選項中,您能夠啓用RBAC,若是您已經啓動了Kubernetes基礎設施服務,則能夠單擊「更新」以更新Kubernetes的配置選項。
如前一節所述,這些示例假設您已經啓用了RBAC功能的Kubernetes,並假設您已啓用Rancher的GitHub身份認證。
做爲Kubernetes環境的全部者,如前所述,您能夠訪問全部Kubernetes API,由於集羣管理員角色是默認分配給環境全部者的。管理員用戶默認不會訪問任何API資源。
若您已將一些GitHub用戶和組添加爲Kubernetes環境的成員,當你嘗試訪問Kubernetes API時,則會收到如下消息:
要跨全部Kubernetes集羣啓用GitHub組織的訪問權限,請建立如下集羣角色:
此角色定義了列表並得到了對服務資源的訪問權限。此時, 集羣角色不與任何用戶或組關聯, 所以如下步驟爲建立集羣角色綁定:
角色綁定指定了GitHub組織的「github_org:」組。這時您會發現,當您想將角色綁定應用於組時,每種認證類型都有專門的Rancher認證語法。有關更多詳細信息,可參閱Rancher文檔:
建立角色綁定後,您就能夠列出屬於此GitHub組織的任何用戶的服務了:
關注微信公衆號(RancherLabs),獲取每日Docker&K8S技術乾貨推送。添加Rancher助手(RancherLabsChina)爲好友,加入技術羣,獲取免費技術支持,年底贏取Apple Watch、Beats耳機、機械鍵盤等重磅好禮。