antony@notes:~/rancher$ cat "Rancher-RBAC-實務範例.md"
Rancher RBAC 實務範例
Rancher RBAC 實務範例
依據職責與最小權限原則,可將使用者劃分為以下幾個層級
| 層級 | 角色 | Rancher 角色 | 權限範圍 | 核心職責 |
|---|---|---|---|---|
| 1 | 平台管理員 | Global Administrator(內建) | 全域 — 所有叢集、所有資源完整 CRUD | 叢集生命週期管理、全域認證與安全策略 (LDAP/AD/SAML)、使用者帳號與角色分配 |
| 2 | 叢集管理/維運人員 | Cluster Owner(內建) | 特定叢集 — 完整管理權限,不含平台層級操作 | 節點健康監控 (cordon/drain)、Namespace 與 Project 規劃、叢集內 RBAC、資源配額調整、ETCD 快照 |
| 3a | 資安稽核員(長官) | Read Only Administrator(客製) | 全域 — 所有叢集僅 get/list/watch | 跨叢集合規性稽核,查看所有資源但無法修改或刪除 |
| 3b | 資安稽核員(一般) | Cluster Reader(客製) | 特定叢集 — 僅 get/list/watch | 特定叢集合規性稽核,查看該叢集所有資源 |
| 4 | 應用系統/專案管理員 | Project Owner(內建) | 特定 Project — 所屬 Project 內完整 CRUD | Project 成員管理、Namespace 建立、Workload 部署、ResourceQuota/LimitRange、PVC 管理、監控告警 |
| 5 | 應用程式開發人員 | Project Member / Read Only(內建) | 特定 Namespace — 授權 Namespace 內操作;正式環境通常僅唯讀 | Workload 部署與更新、Service/Ingress 設定、ConfigMap/Secret 使用、日誌查看與 Pod 除錯、HPA 設定 |
1. 平台管理員
角色概述
平台管理員負責維護 Rancher 平台本身的運作,擁有最高權限(Global Administrator)。
職責範圍
在 Rancher 中,平台管理員可處理跨叢集、平台層級的事務,包括:
- 叢集生命週期管理 — 建立、匯入、刪除 Rancher 本身及其所管理的所有叢集
- 全域認證與安全策略設定 — LDAP、AD、SAML 等
- 使用者帳號與角色分配 — 管理平台上所有使用者的權限
具體權限 (內建)

實作範例 : 設定 Windows AD 的 admin 群組為平台管理員
點選左側清單的 Users & Authentication -> Groups -> Assign Global Roles

選擇群組 -> 僅勾選 Administrator

滑鼠滾到頁面最下方,點選 Save 按鈕儲存

2. 叢集管理、維運人員
角色概述
負責管理特定 DownStream Kubernetes 叢集狀態的 SRE 或維運工程師,此角色是特定叢集的維運、管理者,但非平台管理者。
職責範圍
Cluster Admin 專注在自己管理的叢集內。日常工作包括:
node的健康監控與管理(cordon、drain、新增和刪除節點)namespace與project的規劃- 叢集內的 RBAC 設定(指派 Project owner 等角色)
- 硬體資源配額的調整
- Netwrok policy 的管理
- 對 ETCD Take Snapshot
- 叢集層級的日誌和監控設定
具體權限 (內建)

實作範例 : 設定 Windows AD 的 infra 群組為基礎架構維運人員
點選左側選單 Cluster Management -> 找到要管理的 K8s 叢集 -> 點選最右側的三點選單 -> Edit Config

選擇 Member Roles -> Add 按鈕

選擇群組 -> 勾選 Owner 權限 -> Add 按鈕

點選右下角 Save 按鈕儲存

在 NeuVector 通常賦予 CI/CD 操作權限,允許在維運過程中觸發掃描或排除誤判,確保服務穩定。
3. 資訊安全稽核員
角色概述
資安部門長官或一般人員進行合規性的稽核作業。
職責範圍
- 長官可以讀取所有叢集(包含
localCluster)的所有資源,但不具備編輯或刪除的其他權限。 - 一般人員只能讀取特定叢集的所有資源。
具體權限 (客製化) - Read Only Administrator

具體權限 (客製化) - Cluster Reader

建立 Global Read-only Administrator Roletemplate
cat <<'EOF' | kubectl apply -f - apiVersion: management.cattle.io/v3 builtin: false context: cluster description: '' displayName: View Cluster Resources for Readonly Admin external: false hidden: true kind: RoleTemplate metadata: name: cluster-readonly-view rules: - apiGroups: - '' resources: - secrets verbs: - get - list - watch - apiGroups: - catalog.cattle.io resources: - clusterrepos - apps verbs: - get - list - watch - apiGroups: - management.cattle.io resourceNames: - local resources: - clusters verbs: - get --- apiVersion: management.cattle.io/v3 builtin: false displayName: Read Only Administrator description: '全域唯讀管理員角色,不具備任何建立、修改或刪除操作的權限。' inheritedClusterRoles: - projects-view - nodes-view - cluster-readonly-view kind: GlobalRole metadata: name: global-read-only rules: - apiGroups: - management.cattle.io resources: - projectroletemplatebindings - clusterroletemplatebindings verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - globalroles - globalrolebindings verbs: - get - list - watch - apiGroups: - project.cattle.io resources: - apps verbs: - get - list - watch - apiGroups: - project.cattle.io resources: - apprevisions verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - nodes - nodepools verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - roletemplates verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - clusterevents verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - notifiers verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - notificationtemplates verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - projectalertgroups - projectalertrules verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - projectloggings verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - clusteralertgroups - clusteralertrules verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - clustercatalogs verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - projectcatalogs verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - projectmonitorgraphs verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - catalogtemplates verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - catalogtemplateversions verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - projects verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - clusters verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - principals verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - users - userattribute - groups - groupmembers verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - clusterloggings verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - clustermonitorgraphs verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - preferences verbs: - '*' - apiGroups: - management.cattle.io resources: - settings verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - features verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - templates - templateversions - catalogs verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - nodedrivers verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - kontainerdrivers verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - operatorsettings verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - podsecuritypolicytemplates verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - nodetemplates verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - multiclusterapps - globaldnses - globaldnsproviders - clustertemplaterevisions - clustertemplates verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - rkek8ssystemimages verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - rkek8sserviceoptions verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - rkeaddons verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - cisconfigs verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - cisbenchmarkversions - clusterscans verbs: - get - list - watch - apiGroups: - management.cattle.io resources: - etcdbackups verbs: - get - list - watch - apiGroups: - catalog.cattle.io resources: - clusterrepos verbs: - get - list - watch - apiGroups: - provisioning.cattle.io resources: - clusters verbs: - get - list - watch - apiGroups: - '' resources: - nodes verbs: - get - list - watch - apiGroups: - '*' resources: - secrets verbs: - get - list - watch EOF在
localCluster 建立cluster-readerRoletemplate 執行以下命令cat <<'EOF' | kubectl apply -f - apiVersion: management.cattle.io/v3 kind: RoleTemplate metadata: name: cluster-reader displayName: Cluster Reader description: "提供叢集層級的唯讀權限,可查看所有資源但無法修改。" # context 設定為 cluster 表示此角色應用於集群層級 context: cluster # builtin 設定為 false 表示這是自定義角色 builtin: false clusterCreatorDefault: true rules: - apiGroups: - '*' resources: - '*' verbs: - get - list - watch EOF
實作範例 1 : 設定 Windows AD 的特定 User 為 Read Only Administrator
Users & Authentication -> Users -> 選擇使用者 -> 三點選單 -> Edit Config

找到 Custom 區塊 -> 勾選 Read Only Administrator -> 右下角 Save 按鈕

實作範例 2 : 設定 Windows AD 的特定 User 為 Cluster Reader
左側選單點進要管理的叢集 -> Cluster -> Cluster and Project Members -> Add

Select Member 選擇特定 User -> 選擇 Cluster Reader -> Create

4. 應用系統/專案管理員
角色概述
負責管理特定 Downstream Kubernetes 叢集中,特定 Project 底下的所有資源與權限。對應 Rancher 的 Project Owner 角色,通常由各應用系統的 Tech Lead、專案負責人或 AP 維運組長擔任。
職責範圍
在 Rancher 中,應用系統/專案管理員可在其所屬 Project 範圍內處理以下事務:
- Project 成員管理 — 負責新增、移除及調整 Project 內成員的角色與權限,為該 Project 的最高管理者
- Namespace 規劃與建立 — 依據應用模組或環境需求,在 Project 下建立與管理 Namespace
- 應用部署與生命週期管理 — 管理 Project 內所有 Workload、Service、Cronjob 等應用資源的部署與更新
- 資源配額管控 — 設定 Project 層級與 Namespace 層級的 ResourceQuota / LimitRange,確保資源使用不超出分配額度
- 儲存資源管理 — 為應用申請與管理持久化儲存空間(PVC),並可查看叢集可用的 StorageClass
- 監控與告警設定 — 設定 Project 層級的監控規則與告警通知,確保應用異常時能即時回應
- 基礎設施資訊查看 — 可查看叢集節點狀態與叢集事件,了解底層運行狀況
具體權限 (內建)

實作範例 : 設定 Windows AD 的特定 User 為 Project Owner
左側選單選擇目標 K8s 叢集 -> Cluster and Project Members -> Project Membership -> Add

選擇 User -> 選擇 Owner -> Create

5. 應用程式開發人員
角色概述
負責在被授權的 Project 內進行應用程式的部署、除錯與日常維運操作。對應 Rancher 的 Project Member 或 Read-Only 角色,通常由應用開發工程師或 DevOps 工程師擔任。透過 Rancher 的專案 (Project) 機制,限制他們只能在配發的 Namespace 內部署應用程式與查看 Log。他們無法看見亦無法影響其他團隊的資源或底層基礎建設。
職責範圍
在 Rancher 中,應用程式開發人員可在其所屬 Project 的已授權 Namespace 內執行以下操作:
- Workload 部署與管理 — 建立、更新、刪除 Deployment、StatefulSet、Job、CronJob 等Workloads
- 服務與路由設定 — 建立及修改 Service、Ingress,設定應用的對內與對外存取路徑
- 組態與密鑰使用 — 建立及編輯自身應用所需的 ConfigMap 與 Secret(依權限範圍)
- 應用日誌查看 — 透過 Rancher 介面查看 Pod 即時日誌,進行問題排查
- Pod 除錯操作 — 使用 kubectl exec / Rancher Shell 進入 App Container 進行偵錯,查看 Pod 事件與狀態
- 彈性伸縮設定 — 設定 HPA (Horizontal Pod Autoscaler),調整副本數因應流量變化
- CI/CD 管線觸發 — 配合 Pipeline 執行應用的建置與部署流程
- 正式環境(Production)唯讀除錯 — 在正式環境中,開發人員通常僅具備唯讀(Read-Only)權限,只能查看日誌與監控儀表板以協助排查線上問題,無權直接修改系統配置或重啟服務。
具體權限 (內建) - Project Member

具體權限 (內建) - Project Read only

實作範例 : 設定 Windows AD 的特定 User 為 Project Member
左側選單選擇目標 K8s 叢集 -> Cluster and Project Members -> Project Membership -> Add

選擇 User -> 選擇 Owner -> Create
