全域權限
在 Rancher 中授予使用者權限是一項敏感的操作。請仔細檢視您授予的權限,以確保使用者具有適當的存取層級。過度寬鬆的角色可能對您的 Rancher 環境和管理的叢集構成安全風險。
_權限_是您在為使用者選擇自訂權限時可以分配的個別存取權。
全域權限定義任何特定叢集範圍之外的使用者授權。預設情況下,有四個預設全域權限:Administrator、Standard User 和 User-base。
-
Administrator: 這些使用者對整個 Rancher 系統及其中的所有叢集擁有完全控制權。
-
Standard User: 這些使用者可以建立新叢集並使用它們。標準使用者還可以將其他使用者的權限分配給其叢集。
-
User-Base: User-Base 使用者僅具有登入存取權。
您無法更新或刪除內建的全域權限。
全域權限分配
本機使用者的全域權限分配方式與使用外部身份驗證登入 Rancher 的使用者不 同。
新本機使用者的全域權限
當您建立新的本機使用者時,您會在完成 Add User 表單時為他們分配全域權限。
要查看新使用者的預設權限,
- 在左上角,點擊 ☰ > 使用者與身份驗證。
- 在左側導覽列中,點擊 角色範本。
- 角色範本 頁面有按範圍分組的角色標籤。每個表格列出該範圍中的角色。在 Global 標籤的 New User Default 欄中,預設授予新使用者的權限會以勾選標記表示。
您可以更改預設全域權限以滿足您的需求。
使用外部身份驗證的使用者的全域權限
當使用者首次使用外部身份驗證提供者登入 Rancher 時,他們會自動被分配 New User Default 全域權限。預設情況下,Rancher 為新使用者分配 Standard User 權限。
要查看新使用者的預設權限,
- 在左上角,點擊 ☰ > 使用者與身份驗證。
- 在左側導覽列中,點擊 角色範本。
- 角色範本 頁面 有按範圍分組的角色標籤。每個表格列出該範圍中的角色。在每個頁面的 New User Default 欄中,預設授予新使用者的權限會以勾選標記表示。
您可以更改預設權限以滿足您的需求。
可以為個別使用者分配權限。
如果外部身份驗證提供者支援群組,您可以同時為群組中的所有人分配角色。
自訂全域權限
使用自訂權限便於為使用者提供狹窄或專門的 Rancher 存取權。
當來自外部身份驗證來源的使用者首次登入 Rancher 時,他們會自動被分配一組全域權限(以下簡稱權限)。預設情況下,使用者首次登入後,會被建立為使用者並分配預設的 user 權限。標準 user 權限允許使用者登入並建立叢集。
然而,在某些組織中,這些權限可能會擴展過多的存取權。您可以為他們分配更具限制性的自訂全域權限集,而不是為使用者分配 Administrator 或 Standard User 的預設全域權限。
預設角色 Administrator 和 Standard User 都內建了多個全域權限。Administrator 角色包含所有全域權限,而預設使用者角色包含三個全域權限:Create Clusters、Use Catalog Templates 和 User Base,這相當於登入 Rancher 的最低權限。換句話說,自訂全域權限 是模組化的,因此如果您想更改預設使用者角色權限,您可以選擇新預設使用者角色中包含哪些全域權限的子集。
管理員可以透過多種方式強制執行自訂全域權限:
組合內建 GlobalRoles
Rancher 提供了幾個 GlobalRoles,為某些常見使用案例授予細粒度權限。
下表列出了每個內建全域權限,以及它是否包含在預設全域權限 Administrator、Standard User 和 User-Base 中。
| 自訂全域權限 | Administrator | Standard User | User-Base |
|---|---|---|---|
| Create Clusters | ✓ | ✓ | |
| Create RKE Templates | ✓ | ✓ | |
| Manage Authentication | ✓ | ||
| Manage Catalogs | ✓ | ||
| Manage Cluster Drivers | ✓ | ||
| Manage Node Drivers | ✓ | ||
| Manage PodSecurityPolicy Templates | ✓ | ||
| Manage Roles | ✓ | ||
| Manage Settings | ✓ | ||
| Manage Users | ✓ | ||
| Use Catalog Templates | ✓ | ✓ | |
| User-Base (Basic log-in access) | ✓ | ✓ |
有關哪些 Kubernetes 資源對應於每個全域權限的詳細資訊,
- 在左上角,點擊 ☰ > 使用者與身份驗證。
- 在左側導覽列中,點擊 角色範本。
- 如果您點擊個別角色的名稱,表格會顯示該角色允許的所有操作和資源。
- 上面列出的每個權限都由多個未在 Rancher UI 中列出的個別權限組成。有關這些權限及其組成規則的完整清單,請透過 API 存取
/v3/globalRoles。 - 檢視 Rancher 建立的預設角色相關資源時,如果一個行項目上有多個 Kubernetes API 資源,則該資源將附加
(Custom)。這些不是自訂資源,只是表示有多個 Kubernetes API 資源作為一個資源。
內建的 GlobalRole Manage Users 允許使用者在 Rancher 環境中建立、修改和刪除其他使用者。雖然此權限對於受信任環境中的管理工作流程可能是必要的,但將其授予不受信任或較低權限的使用者(例如標準使用者)會帶來嚴重的安全風險,並可能導致權限提升。
自訂 GlobalRoles
您可以建立自訂 GlobalRoles 以滿足內建 GlobalRoles 未直接解決的使用案例。
透過 UI 或透過自動化(例如 Rancher Kubernetes API)建立自訂 GlobalRoles。您可以指定與上游角色和 clusterRoles 規則相同類型的規則。
Escalate 和 Bind 動詞
在授予 GlobalRoles 權限時,請記住 Rancher 尊重 escalate 和 bind 動詞,與 Kubernetes 的方式類似。
這兩個動詞都在 GlobalRoles 資源上給出,可以授予使用者繞過 Rancher 權限提升檢查的權限。這可能允許使用者成為管理員。由於這代表嚴重的安全風險,應該非常謹慎地將 bind 和 escalate 分配給使用者。
escalate 動詞允許使用者更改 GlobalRole 並新增任何權限,即使使用者在當前 GlobalRole 或新版本的 GlobalRole 中沒有這些權限。
bind 動詞允許使用者建立 GlobalRoleBinding 到指定的 GlobalRole,即使他們沒有 GlobalRole 中的權限。
萬用字元動詞 * 也包括 bind 和 escalate 動詞。這意味著將 GlobalRoles 上的 * 授予使用者也會同時授予他們 escalate 和 bind。
自訂 GlobalRole 範例
要授予僅提升 test-gr GlobalRole 的權限:
rules:
- apiGroups:
- 'management.cattle.io'
resources:
- 'globalroles'
resourceNames:
- 'test-gr'
verbs:
- 'escalate'
要授予提升所有 GlobalRoles 的權限:
rules:
- apiGroups:
- 'management.cattle.io'
resources:
- 'globalroles'
verbs:
- 'escalate'
要授予僅對 test-gr GlobalRole 建立繫結(繞過提升檢查)的權限:
rules:
- apiGroups:
- 'management.cattle.io'
resources:
- 'globalroles'
resourceNames:
- 'test-gr'
verbs:
- 'bind'
- apiGroups:
- 'management.cattle.io'
resources:
- 'globalrolebindings'
verbs:
- 'create'
授予 * 權限(包括 escalate 和 bind):
rules:
- apiGroups:
- 'management.cattle.io'
resources:
- 'globalroles'
verbs:
- '*'
下游叢集上的 GlobalRole 權限
GlobalRoles 可以透過 inheritedClusterRoles 欄位在每個下游叢集上授予一個或多個 RoleTemplates。此欄位中的值必須引用存在且具有 Cluster context 的 RoleTemplate。
使用此欄位,使用者可以在所有當前或未來的下游叢集上獲得指定的權限。例如,考慮以下 GlobalRole:
apiVersion: management.cattle.io/v3
kind: GlobalRole
displayName: All Downstream Owner
metadata:
name: all-downstream-owner
inheritedClusterRoles:
- cluster-owner
任何擁有此權限的使用者都將成為所有下游叢集的叢集擁有者。如果新增新叢集,無論類型如何,使用者也將成為該叢集的擁有者。
在預設 GlobalRoles 上使用此欄位可能會導致使用者獲得過多的權限。
設定預設全域權限
如果您想限制新使用者的預設權限,您可以移除 user 權限作為預設角色,然後分配多個個別權限作為預設。相反,您也可以在一組其他標準權限之上新增管理權限。
預設角色僅分配給從外部身份驗證提供者新增的使用者。對於本機使用者,您必須在將使用者新增到 Rancher 時明確分配全域權限。您可以在新增使用者時自訂這些全域權限。
要更改在外部使用者首次登入時分配給他們的預設全域權限,請執行以下步驟:
- 在左上角,點擊 ☰ > 使用者與身份驗證。
- 在左側導覽列中,點擊 角色範本。在 角色範本 頁面上,確保選擇了 Global 標籤。
- 找到您要新增或移除為預設的權限集。然後透過選擇 ⋮ > Edit Config 來編輯權限。
- 如果您要將權限新增為預設,請選擇 Yes: Default role for new users,然後點擊 Save。如果您要移除預設權限,請編輯權限並選擇 No。
結果: 預設全域權限根據您的更改進行設定。分配給新使用者的權限會在 New User Default 欄中顯示勾選標記。
為個別使用者設定全域權限
要為使用者設定權限,
- 在左上角,點擊 ☰ > 使用者與身份驗證。
- 在左側導覽列中,點擊 Users。
- 前往您要更改存取層級的使用者,然後點擊 ⋮ > Edit Config。
- 在 Global Permissions 和 Built-in 部分,勾選您希望使用者擁有的每個權限的方塊。如果您已從 角色範本 頁面建立角色,它們將顯示在 Custom 部分,您也可以從中選擇。
- 點擊 Save。
結果: 使用者的全域權限已更新。
為群組設定全域權限
如果您有一群需要在 Rancher 中擁有相同存取權層級的個人,則一次為整個群組分配權限可以節省時間,以便群組中的使用者在首次登入 Rancher 時即具有適當的存取權層級。
在您為群組分配自訂全域角色後,當群組中的使用者登入 Rancher 時,自訂全域角色將分配給他們。
對於現有使用者,當使用者登出 Rancher 並再次登入時,或當管理員重新整理群組成員資格時,新權限將生效。
對於新使用者,當使用者首次登入 Rancher 時,新權限生效。來自此群組的新使用者除了 New User Default 全域權限外,還將從自訂全域角色接收權限。預設情況下,New User Default 權限等同於 Standard User 全域角色,但可以設定預設權限。
如果使用者從外部身份驗證提供者群組中移除,他們將失去分配給群組的自訂全域角色的權限。他們將繼續擁有分配給他們的任何剩餘角色,通常包括標記為 New User Default 的角色。當使用者登出時,或當管理員重新整理群組成員資格時(以先發生者為準),Rancher 將移除與群組相關的權限。
要將自訂全域角色分配給群組,請執行以下步驟:
- 在左上角,點擊 ☰ > 使用者與身份驗證。
- 在左側導覽列中,點擊 Groups。
- 前往您要為其分配自訂全域角色的群組,然後點擊 ⋮ > Edit Config。
- 在 Global Permissions、Custom 和/或 Built-in 部分,選擇群組應具有的權限。
- 點擊 Create。
結果: 當群組中的使用者登入 Rancher 時,自訂全域角色將生效。
重新整理群組成員資格
當管理員更新群組的全域權限時,在個別群組成員登出 Rancher 並再次登入後,更改對他們生效。
要使 更改立即生效,管理員或叢集擁有者可以重新整理群組成員資格。
如果使用者從外部身份驗證服務中的群組中移除,管理員可能還希望重新整理群組成員資格。在這種情況下,重新整理會使 Rancher 知道使用者已從群組中移除。
要重新整理群組成員資格,
- 在左上角,點擊 ☰ > 使用者與身份驗證。
- 在左側導覽列中,點擊 Users。
- 點擊 Refresh Group Memberships。
結果: 對群組成員權限的任何更改都將生效。