壹個K8S集群並不只有管理員在使用,如果是壹個開發或者壹個測試,就不能有太高的權限,預防出錯。 此時就要通過K8S壹個機制RBAC對權限經行細粒度劃分,例如張三,可設置只能在namespaceA進行操作,不能在其他命名空間操作。
官網: 的用戶:
對於名稱為 frontend-admins 的用戶組:
RoleBinding示例:對於名稱為 alice@example.com 的用戶:
對於任何名稱空間中的 “qa” 組中所有的服務賬戶:
對於所有已經過認證的用戶:
對於所有用戶:
默認 ClusterRole和默認 ClusterRoleBinding 壹些默認的 ClusterRole 不是以前綴 system: 開頭的。這些是面向用戶的角色。 它們包括超級用戶(Super-User)角色(cluster-admin)、 使用 ClusterRoleBinding 在集群範圍內完成授權的角色(cluster-status)、 以及使用 RoleBinding 在特定名字空間中授予的角色(admin、edit、view)。 面向用戶的 ClusterRole 使用 ClusterRole 聚合以允許管理員在 這些 ClusterRole 上添加用於定制資源的規則。如果想要添加規則到 admin、edit 或者 view, 可以創建帶有以下壹個或多個標簽的 ClusterRole:
假設有2個ClusterRole,ClusterRoleA和ClusterRoleB,ClusterRoleA設置了rule並打上了標簽,ClusterRoleB就可以引用A的標簽,ClusterRoleB就會自動補上ClusterRoleA的rule.
示例:
驗證:創建sa,並查看sa創建的secret,獲得token
創建壹個名稱叫test-aggregation的clusterrolebinding,把clusterrole:test-aggregation授權給SA:default命名空間下 的test-aggregation
登錄測試,發現並沒有權限,只能登錄
創建b-ClusterRole,使其聚合a-ClusterRole
再次驗證,發現可以查看命名空間和svc等監控
問題:
1.創建壹個名為deployment-clusterrole的clusterrole
a)該clusterrole只允許創建Deployment、Daemonset、Statefulset的create操作
2.在名字為app-team1的namespace下創建壹個名為cicd-token的serviceAccount,並且將上壹步創建clusterrole的權限綁定到該serviceAccount
實操:
創建namespace和serviceAccount
創建名為deployment-clusterrole的clusterrole
綁定權限並查看
編輯壹份deployment模板
驗證:通過sa創建的secret的token登錄dashboard,選擇右上+,選擇app-team1參試創建yaml,發下最終有權限創建。
通過token登錄dashboard
最後查看deployment,已創建
企業中的權限劃分:
2.根據需求先創建2個用戶dotbalo,dukuan(sa,通過Sa創建的secret的token管理節點)
3.根據需求總***有4中權限分別是只讀命名空間,刪除日誌,執行pod命名,查看日誌,然後創建4種權限的ClusterRole
4.綁定全局命名空間查看權限(clusterrolebinding)
5.綁定用戶dotbalo兩個命名空間default、kube-system的查看pod日誌的權限(rolebinding)
6.綁定用戶dukuan在deefault中執行pod命令權限和刪除Pod權限
1.Kubernetes多集群圖形化管理工具Ratel介紹&使用
2.圖形化管理Kubernetes多租戶權限