Skip to content

antony@notes:~/rancher$ cat "Rancher-RBAC-實務範例.md"

Rancher RBAC 實務範例

2026-03-23· rancher

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 內完整 CRUDProject 成員管理、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 等
  • 使用者帳號與角色分配 — 管理平台上所有使用者的權限

具體權限 (內建)

image

實作範例 : 設定 Windows AD 的 admin 群組為平台管理員

  1. 點選左側清單的 Users & Authentication -> Groups -> Assign Global Roles

    image

  2. 選擇群組 -> 僅勾選 Administrator image

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

    image

2. 叢集管理、維運人員

角色概述

負責管理特定 DownStream Kubernetes 叢集狀態的 SRE 或維運工程師,此角色是特定叢集的維運、管理者,但非平台管理者。

職責範圍

Cluster Admin 專注在自己管理的叢集內。日常工作包括:

  • node 的健康監控與管理(cordon、drain、新增和刪除節點)
  • namespaceproject 的規劃
  • 叢集內的 RBAC 設定(指派 Project owner 等角色)
  • 硬體資源配額的調整
  • Netwrok policy 的管理
  • 對 ETCD Take Snapshot
  • 叢集層級的日誌和監控設定

具體權限 (內建)

image

實作範例 : 設定 Windows AD 的 infra 群組為基礎架構維運人員

  1. 點選左側選單 Cluster Management -> 找到要管理的 K8s 叢集 -> 點選最右側的三點選單 -> Edit Config

    image

  2. 選擇 Member Roles -> Add 按鈕 image

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

  4. 點選右下角 Save 按鈕儲存 image

在 NeuVector 通常賦予 CI/CD 操作權限,允許在維運過程中觸發掃描或排除誤判,確保服務穩定。

3. 資訊安全稽核員

角色概述

資安部門長官或一般人員進行合規性的稽核作業。

職責範圍

  • 長官可以讀取所有叢集(包含 local Cluster)的所有資源,但不具備編輯或刪除的其他權限。
  • 一般人員只能讀取特定叢集的所有資源。

具體權限 (客製化) - Read Only Administrator

image

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

image

  1. 建立 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
  2. local Cluster 建立 cluster-reader Roletemplate 執行以下命令

    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

  1. Users & Authentication -> Users -> 選擇使用者 -> 三點選單 -> Edit Config

    image

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

    image

實作範例 2 : 設定 Windows AD 的特定 User 為 Cluster Reader

  1. 左側選單點進要管理的叢集 -> Cluster -> Cluster and Project Members -> Add image

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

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 層級的監控規則與告警通知,確保應用異常時能即時回應
  • 基礎設施資訊查看 — 可查看叢集節點狀態與叢集事件,了解底層運行狀況

具體權限 (內建)

image

實作範例 : 設定 Windows AD 的特定 User 為 Project Owner

  1. 左側選單選擇目標 K8s 叢集 -> Cluster and Project Members -> Project Membership -> Add

    image

  2. 選擇 User -> 選擇 Owner -> Create

    image

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

image

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

image

實作範例 : 設定 Windows AD 的特定 User 為 Project Member

  1. 左側選單選擇目標 K8s 叢集 -> Cluster and Project Members -> Project Membership -> Add

    image

  2. 選擇 User -> 選擇 Owner -> Create

    image