全局权限
| 
 Users with permissions to modify accounts or resources are considered privileged users, only grant these permissions to trusted users.  | 
权限 是你在为用户选择自定义权限时可以分配的个人访问权限。
全局权限定义用户在任何特定集群之外的授权。Rancher 提供四种开箱即用的默认全局权限:Administrator (管理员)、Restricted Admin (受限管理员)、Standard User (标准用户) 和 User-Base 用户。
- 
管理员:可以完全控制整个 Rancher 系统和其中的所有集群。
 - 
受限管理员:可以完全控制下游集群,但不能更改本地 Kubernetes 集群。
 - 
普通用户:可以创建新集群并使用它们。普通用户还可以在自己的集群中向其他用户分配集群权限。
 - 
User-Base 用户:只有登录权限。
 
你无法更新或删除内置的全局权限。
分配全局权限
本地用户的全局权限分配与使用外部认证登录 Rancher 的用户不同。
新本地用户的全局权限
在创建新本地用户时,请在填写添加用户表单时为他分配全局权限。
如果需要查看新用户的默认权限:
- 
在左上角,单击 ☰ > 用户 & 认证。
 - 
在左侧导航栏中,单击角色。
 - 
角色页面有按范围分组的角色选项卡。每个表都列出了范围内的角色。在全局选项卡的新用户的默认角色列中,默认授予新用户的权限用复选标记表示。
 
使用外部认证登录的用户的全局权限
当用户首次使用外部认证登录 Rancher 时,他们会自动分配到新用户的默认角色的全局权限。默认情况下,Rancher 为新用户分配 Standard User 权限。
如果需要查看新用户的默认权限:
- 
在左上角,单击 ☰ > 用户 & 认证。
 - 
在左侧导航栏中,单击角色。
 - 
角色页面有按范围分组的角色选项卡。每个表都列出了范围内的角色。在每个页面的新用户的默认角色列中,默认授予新用户的权限用复选标记表示。
 
你可以按照步骤操作来将权限分配给单个用户。
如果外部认证服务支持组,你可以同时为组中的每个成员分配角色。
自定义全局权限
使用自定义权限可以为用户提供 Rancher 中更为受限或特定的访问权限。
当来自外部认证的用户首次登录 Rancher 时,他们会自动分配到一组全局权限(以下简称权限)。默认情况下,用户第一次登录后会被创建为用户,并分配到默认的用户权限。标准的用户权限允许用户登录和创建集群。
但是,在某些组织中,这些权限可能会被认为权限过大。你可以为用户分配一组更具限制性的自定义全局权限,而不是为用户分配 Administrator 或 Standard User 的默认全局权限。
默认角色(管理员和标准用户)都内置了多个全局权限。系统管理员角色包括所有全局权限,而默认用户角色包括三个全局权限,分别是创建集群、使用应用商店模板和 User Base(登录 Rancher 的最低权限)。换句话说,自定义全局权限是模块化的,因此,如果你要更改默认用户角色权限,你可以选择需要包括在新的默认用户角色中的全局权限子集。
管理员可以通过多种方式强制执行自定义全局权限:
结合内置的全局角色
Rancher 提供了多个全局角色,它们为某些常见的用户场景授予了精细的权限。下表列出了每个内置的全局角色(Administrator, Standard User 和 User-Base)以及它包含的默认全局权限
| 自定义全局权限 | Administrator | Standard User | User-Base | 
|---|---|---|---|
创建集群  | 
✓  | 
✓  | 
|
创建 RKE 模板  | 
✓  | 
✓  | 
|
管理认证  | 
✓  | 
||
管理应用商店  | 
✓  | 
||
管理集群驱动  | 
✓  | 
||
管理主机驱动  | 
✓  | 
||
管理 PodSecurityPolicy 模板  | 
✓  | 
||
管理角色  | 
✓  | 
||
管理设置  | 
✓  | 
||
Manage Users  | 
✓  | 
||
使用应用商店模板  | 
✓  | 
✓  | 
|
User-Base (基本登录访问)  | 
✓  | 
✓  | 
如果需要查看每个全局权限对应哪些 Kubernetes 资源:
- 
在左上角,单击 ☰ > 用户 & 认证。
 - 
在左侧导航栏中,单击角色。
 - 
如果单击单个角色的名称,表格会显示该角色授权的所有操作和资源。
 
| 
 注意事项: 
  | 
自定义全局角色
当内置的全局角色无法直接满足你的需求时,可以创建自定义全局角色。
通过 UI 或自动化(例如 Rancher Kubernetes API) 创建自定义全局角色,你可以指定使用与上游角色和集群角色相同的规则。
Escalate 与 Bind
当授予全局角色权限时,请注意 Rancher 遵循 escalate 与 bind,其方式类似于 Kubernetes。
在全局角色提供的这两项配置,都可以授予用户绕过 Rancher 提升校验的权限。这可能允许用户成为管理员。由于这有着极高的安全风险,因此应非常谨慎地将 bind 和 escalate 权限分发给用户。
escalate 允许用户更改全局角色并添加任何授权,即使用户没有当前或新版本的全局角色权限。
bind 允许用户对指定的全局角色进行授权(创建 ClusterRoleBinding),即使该用户没有访问全局角色的权限。
| 
 通配符动词   | 
自定义全局角色示例
仅为名称为 test-gr 的全局角色授予 escalate 权限:
rules:
  - apiGroups:
      - "management.cattle.io"
    resources:
      - "globalroles"
    resourceNames:
      - "test-gr"
    verbs:
      - "escalate"
为所有的全局角色授予 escalate 权限:
rules:
  - apiGroups:
      - "management.cattle.io"
    resources:
      - "globalroles"
    verbs:
      - "escalate"
仅为名称为 test-gr 的全局角色授予创建角色绑定(绕过 escalation 检查)的权限
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:
      - "*"
下游集群的全局角色权限
全局角色可以通过 inheritedClusterRoles 字段在每个下游集群上授予一个或多个 RoleTemplate。此字段中引用的值必须是集群级别的 RoleTemplate 并且在集群 context 中存在。
通过此字段,用户将获取当前或未来的所有下游集群的指定权限,例如以下的全局角色示例:
apiVersion: management.cattle.io/v3
kind: GlobalRole
displayName: All Downstream Owner
metadata:
  name: all-downstream-owner
inheritedClusterRoles:
  - cluster-owner
任何具有此权限的用户都将是所有下游集群的所有者(cluster-owner)。如果添加了新的集群,无论是什么类型的集群,用户也将是这个集群的所有者。
| 
 在默认的全局角色中使用此字段可能会导致用户获得过多的权限。  | 
配置默认的全局权限
如果你想限制新用户的默认权限,你可以删除作为默认角色的用户权限,然后分配多个单独的权限作为默认权限。你也可以在一组其他标准权限之上添加管理权限。
| 
 默认角色仅分配给从外部认证登录的用户。对于本地用户,在将用户添加到 Rancher 时,必须显式分配全局权限。你可以在添加用户时自定义这些全局权限。  | 
要更改在外部用户首次登录时分配给他们的默认全局权限,请执行以下步骤:
- 
在左上角,单击 ☰ > 用户 & 认证。
 - 
在左侧导航栏中,单击角色。在角色页面上,确保选择了全局选项卡。
 - 
查找要添加或删除的默认权限集。然后,通过选择 ⋮ > 编辑配置来编辑权限。
 - 
如果要将权限添加为默认权限,请选择是:新用户的默认角色,然后单击保存。如果要删除默认权限,请编辑该权限并选择否。
 
结果:默认全局权限已根据你的更改配置。分配给新用户的权限会在新用户的默认角色列中显示为复选标记。
为单个用户配置全局权限
要为单个用户配置权限:
- 
在左上角,单击 ☰ > 用户 & 认证。
 - 
在左侧导航栏中,单击用户。
 - 
找到要更改访问级别的用户,然后单击 ⋮ > 编辑配置。
 - 
在全局权限和内置角色部分中,选中你希望用户拥有的权限的复选框。如果你在角色页面创建了角色,这些角色将出现在自定义部分,你也可以选择这些角色。
 - 
单击保存。
 
结果:用户的全局权限已更新。
为组配置全局权限
如果你有一组需要在 Rancher 中有相同访问权限的用户,你可以一次性将权限分配给整个组来节省时间。这样,组中的用户在第一次登录 Rancher 时能拥有相应级别的访问权限。
将自定义全局角色分配给组后,该角色将在组中用户登录 Rancher 时分配给用户。
对于现有用户,新权限将在用户退出 Rancher 并重新登录时,或当管理员刷新用户组成员名单时生效。
对于新用户,新权限在用户首次登录 Rancher 时生效。除了新用户的默认角色全局权限外,来自该组的新用户还将获得自定义全局角色的权限。默认情况下,新用户的默认角色权限等同于 Standard User 全局角色,但默认权限可以配置。
如果从外部认证服务中将用户从组中删除,该用户将失去分配给该组的自定义全局角色的权限。他们将继续拥有分配给他们的其他剩余角色,这通常包括标记为新用户的默认角色的角色。Rancher 将在用户登出或管理员刷新用户组成员名单时删除与组关联的权限。
要将自定义全局角色分配给组,请执行以下步骤:
- 
在左上角,单击 ☰ > 用户 & 认证。
 - 
在左侧导航栏中,单击组。
 - 
转到你要分配自定义全局角色的组,然后单击 ⋮ > 编辑配置。
 - 
在全局权限,自定义和/或内置角色部分中,选择该组应具有的权限。
 - 
单击创建。
 
结果:自定义全局角色会在组内用户登录 Rancher 时生效。
受限管理员
| 
 已弃用 
受限管理员角色已弃用,并将在未来的 Rancher 版本(2.10 或更高版本)中删除。你应该创建具有所需权限的自定义角色,而不是依赖此项内置角色。  | 
Rancher 2.5 创建了一个新的 restricted-admin 角色,以防止本地 Rancher Server Kubernetes 集群的权限提升。此角色对 Rancher 管理的所有下游集群具有完全管理员权限,但没有更改本地 Kubernetes 集群的权限。
restricted-admin 可以创建其他具有同样访问权限的 restricted-admin 用户。
Rancher 还增加了一个新设置,来将初始启动的管理员设置为 restricted-admin 角色。该设置适用于 Rancher Server 首次启动时创建的第一个用户。如果设置了这个环境变量,则不会创建全局管理员,也就无法通过 Rancher 创建全局管理员。
要以 restricted-admin 作为初始用户来启动 Rancher,你需要使用以下环境变量来启动 Rancher Server:
CATTLE_RESTRICTED_DEFAULT_ADMIN=true
受限管理员 的权限列表
下表列出了 受限管理员 与 全局管理员 和 普通用户 角色相比应具有的权限和操作:
| 类别 | 操作 | 全局管理员 | 普通用户 | 受限管理员 | 受限管理员的注意事项 | 
|---|---|---|---|---|---|
本地集群功能  | 
管理本地集群(列出、编辑、导入主机)  | 
是  | 
否  | 
否  | 
|
创建项目/命名空间  | 
是  | 
否  | 
否  | 
||
添加集群/项目成员  | 
是  | 
否  | 
否  | 
||
全局 DNS  | 
是  | 
否  | 
否  | 
||
访问 CRD 和 CR 的管理集群  | 
是  | 
否  | 
是  | 
||
另存为 RKE 模板  | 
是  | 
否  | 
否  | 
||
安全  | 
|||||
启用认证  | 
配置认证  | 
是  | 
否  | 
是  | 
|
角色  | 
创建/分配 GlobalRoles  | 
是  | 
否(可列出)  | 
是  | 
认证 Webhook 允许为已经存在的权限创建 globalrole  | 
创建/分配 ClusterRoles  | 
是  | 
否(可列出)  | 
是  | 
不在本地集群中  | 
|
创建/分配 ProjectRoles  | 
是  | 
否(可列出)  | 
是  | 
不在本地集群中  | 
|
用户  | 
添加用户/编辑/删除/停用用户  | 
是  | 
否  | 
是  | 
|
组  | 
将全局角色分配给组  | 
是  | 
否  | 
是  | 
在 Webhook 允许的范围内  | 
刷新组  | 
是  | 
否  | 
是  | 
||
PSP  | 
管理 PSP 模板  | 
是  | 
否(可列出)  | 
是  | 
与 PSP 的全局管理员权限相同  | 
工具  | 
|||||
管理 RKE 模板  | 
是  | 
否  | 
是  | 
||
管理全局应用商店  | 
是  | 
否  | 
是  | 
无法编辑/删除内置系统应用商店。可以管理 Helm 库  | 
|
集群驱动  | 
是  | 
否  | 
是  | 
||
主机驱动  | 
是  | 
否  | 
是  | 
||
GlobalDNS 提供商  | 
是  | 
是(自己)  | 
是  | 
||
GlobalDNS 条目  | 
是  | 
是(自己)  | 
是  | 
||
设置  | 
|||||
管理设置  | 
是  | 
否(可列出)  | 
否(可列出)  | 
||
用户  | 
|||||
管理 API 密钥  | 
是(管理所有)  | 
是(管理自己的)  | 
是(管理自己的)  | 
||
管理节点模板  | 
是  | 
是(管理自己的)  | 
是(管理自己的)  | 
只能管理自己的节点模板,不能管理其他用户创建的节点模板。  | 
|
管理云凭证  | 
是  | 
是(管理自己的)  | 
是(管理自己的)  | 
只能管理自己的云凭证,不能管理其他用户创建的云凭证。  | 
|
下游集群  | 
创建集群  | 
是  | 
是  | 
是  | 
|
编辑集群  | 
是  | 
是  | 
是  | 
||
轮换证书  | 
是  | 
是  | 
|||
立即创建快照  | 
是  | 
是  | 
|||
恢复快照  | 
是  | 
是  | 
|||
另存为 RKE 模板  | 
是  | 
否  | 
是  | 
||
运行 CIS 扫描  | 
是  | 
是  | 
是  | 
||
添加成员  | 
是  | 
是  | 
是  | 
||
创建项目  | 
是  | 
是  | 
是  | 
||
自 2.5 起的功能 Chart  | 
|||||
安装 Fleet  | 
是  | 
是  | 
无法在本地集群中运行 Fleet  | 
||
部署 EKS 集群  | 
是  | 
是  | 
是  | 
||
部署 GKE 集群  | 
是  | 
是  | 
是  | 
||
部署 AKS 集群  | 
是  | 
是  | 
是  |