基於角色的存取控制
本節描述 Prometheus Federator 的基於角色的存取控制(RBAC)的要求。
如 namespace 章節所述,Prometheus Federator 期望 Project Owner、Project Member 以及叢集中具有專案級別權限的其他使用者(例如,由單一標籤選擇器識別的特定一組 namespace 中的權限)除了 Project Registration Namespace(預設匯入到專案中)和已經組成其專案的 namespace 之外,在任何 namespace 中只有最少的權限。因此,為了允許 Project Owner 將特定 chart 權限分配給其 Project namespace 中的其他使用者,Helm Project Operator 將自動監控以下綁定:
- ClusterRoleBinding
- Project Release Namespace 中的 RoleBinding
在觀察到其中一種類型的綁定發生變更時,Helm Project Operator 將檢查綁定指向的 roleRef 是否與以下提供的名稱的 ClusterRole 匹配:
helmProjectOperator.releaseRoleBindings.clusterRoleRefs.adminhelmProjectOperator.releaseRoleBindings.clusterRoleRefs.edithelmProjectOperator.releaseRoleBindings.clusterRoleRefs.view
預設情況下,這些 roleRef 將分別對應於 admin、edit 和 view,這些是預設 Kubernetes 面向使用者的角色。
對於 Rancher RBAC 使用者,這些預設 Kubernetes 面向使用者的角色直接對應於 Project Owner、Project Member 和 Read-Only 預設專案角色範本。
如果 roleRef 匹配,Helm Project Operator 將過濾綁定中所有使用者和群組的 subjects,並使用它自動為 Project Release Namespace 中的每個 Role 建構一個 RoleBinding,該 Role 與角色同名並具有以下標籤:
helm.cattle.io/project-helm-chart-role: {{ .Release.Name }}helm.cattle.io/project-helm-chart-role-aggregate-from: <admin|edit|view>
預設情況下,rancher-project-monitoring(Prometheus Federator 部署的底層 chart)為每個 Project Release Namespace 建立三個預設 Role,為 admin、edit 和 view 使用者提供查看 Project Monitoring Stack 的 Prometheus、Alertmanager 和 Grafana UI 的權限,以提供最小權限。但是,如果叢集管理員希望為某些使用者分配額外的權限,他們可以直接在 Project Release Namespace 中為某些使用者分配 RoleBinding,或建立帶有上述兩個標籤的 Role,以允許 Project Owner 控制將這些 RBAC 角色分配給其 Project Registration Namespace 中的使用者。