跳至主要内容

全域權限

警告

在 Rancher 中授予使用者權限是一項敏感的操作。請仔細檢視您授予的權限,以確保使用者具有適當的存取層級。過度寬鬆的角色可能對您的 Rancher 環境和管理的叢集構成安全風險。

_權限_是您在為使用者選擇自訂權限時可以分配的個別存取權。

全域權限定義任何特定叢集範圍之外的使用者授權。預設情況下,有四個預設全域權限:Administrator、Standard User 和 User-base。

  • Administrator: 這些使用者對整個 Rancher 系統及其中的所有叢集擁有完全控制權。

  • Standard User: 這些使用者可以建立新叢集並使用它們。標準使用者還可以將其他使用者的權限分配給其叢集。

  • User-Base: User-Base 使用者僅具有登入存取權。

您無法更新或刪除內建的全域權限。

全域權限分配​

本機使用者的全域權限分配方式與使用外部身份驗證登入 Rancher 的使用者不同。

新本機使用者的全域權限​

當您建立新的本機使用者時,您會在完成 Add User 表單時為他們分配全域權限。

要查看新使用者的預設權限,

  1. 在左上角,點擊 ☰ > 使用者與身份驗證。
  2. 在左側導覽列中,點擊 角色範本。
  3. 角色範本 頁面有按範圍分組的角色標籤。每個表格列出該範圍中的角色。在 Global 標籤的 New User Default 欄中,預設授予新使用者的權限會以勾選標記表示。

您可以更改預設全域權限以滿足您的需求。

使用外部身份驗證的使用者的全域權限​

當使用者首次使用外部身份驗證提供者登入 Rancher 時,他們會自動被分配 New User Default 全域權限。預設情況下,Rancher 為新使用者分配 Standard User 權限。

要查看新使用者的預設權限,

  1. 在左上角,點擊 ☰ > 使用者與身份驗證。
  2. 在左側導覽列中,點擊 角色範本。
  3. 角色範本 頁面有按範圍分組的角色標籤。每個表格列出該範圍中的角色。在每個頁面的 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 中。

自訂全域權限AdministratorStandard UserUser-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 資源對應於每個全域權限的詳細資訊,

  1. 在左上角,點擊 ☰ > 使用者與身份驗證。
  2. 在左側導覽列中,點擊 角色範本。
  3. 如果您點擊個別角色的名稱,表格會顯示該角色允許的所有操作和資源。
注意事項:
  • 上面列出的每個權限都由多個未在 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 時明確分配全域權限。您可以在新增使用者時自訂這些全域權限。

要更改在外部使用者首次登入時分配給他們的預設全域權限,請執行以下步驟:

  1. 在左上角,點擊 ☰ > 使用者與身份驗證。
  2. 在左側導覽列中,點擊 角色範本。在 角色範本 頁面上,確保選擇了 Global 標籤。
  3. 找到您要新增或移除為預設的權限集。然後透過選擇 ⋮ > Edit Config 來編輯權限。
  4. 如果您要將權限新增為預設,請選擇 Yes: Default role for new users,然後點擊 Save。如果您要移除預設權限,請編輯權限並選擇 No。

結果: 預設全域權限根據您的更改進行設定。分配給新使用者的權限會在 New User Default 欄中顯示勾選標記。

為個別使用者設定全域權限​

要為使用者設定權限,

  1. 在左上角,點擊 ☰ > 使用者與身份驗證。
  2. 在左側導覽列中,點擊 Users。
  3. 前往您要更改存取層級的使用者,然後點擊 ⋮ > Edit Config。
  4. 在 Global Permissions 和 Built-in 部分,勾選您希望使用者擁有的每個權限的方塊。如果您已從 角色範本 頁面建立角色,它們將顯示在 Custom 部分,您也可以從中選擇。
  5. 點擊 Save。

結果: 使用者的全域權限已更新。

為群組設定全域權限​

如果您有一群需要在 Rancher 中擁有相同存取權層級的個人,則一次為整個群組分配權限可以節省時間,以便群組中的使用者在首次登入 Rancher 時即具有適當的存取權層級。

在您為群組分配自訂全域角色後,當群組中的使用者登入 Rancher 時,自訂全域角色將分配給他們。

對於現有使用者,當使用者登出 Rancher 並再次登入時,或當管理員重新整理群組成員資格時,新權限將生效。

對於新使用者,當使用者首次登入 Rancher 時,新權限生效。來自此群組的新使用者除了 New User Default 全域權限外,還將從自訂全域角色接收權限。預設情況下,New User Default 權限等同於 Standard User 全域角色,但可以設定預設權限。

如果使用者從外部身份驗證提供者群組中移除,他們將失去分配給群組的自訂全域角色的權限。他們將繼續擁有分配給他們的任何剩餘角色,通常包括標記為 New User Default 的角色。當使用者登出時,或當管理員重新整理群組成員資格時(以先發生者為準),Rancher 將移除與群組相關的權限。

先決條件:

只有在以下情況下,您才能將全域角色分配給群組:

要將自訂全域角色分配給群組,請執行以下步驟:

  1. 在左上角,點擊 ☰ > 使用者與身份驗證。
  2. 在左側導覽列中,點擊 Groups。
  3. 前往您要為其分配自訂全域角色的群組,然後點擊 ⋮ > Edit Config。
  4. 在 Global Permissions、Custom 和/或 Built-in 部分,選擇群組應具有的權限。
  5. 點擊 Create。

結果: 當群組中的使用者登入 Rancher 時,自訂全域角色將生效。

重新整理群組成員資格​

當管理員更新群組的全域權限時,在個別群組成員登出 Rancher 並再次登入後,更改對他們生效。

要使更改立即生效,管理員或叢集擁有者可以重新整理群組成員資格。

如果使用者從外部身份驗證服務中的群組中移除,管理員可能還希望重新整理群組成員資格。在這種情況下,重新整理會使 Rancher 知道使用者已從群組中移除。

要重新整理群組成員資格,

  1. 在左上角,點擊 ☰ > 使用者與身份驗證。
  2. 在左側導覽列中,點擊 Users。
  3. 點擊 Refresh Group Memberships。

結果: 對群組成員權限的任何更改都將生效。