全局权限

Users with permissions to modify accounts or resources are considered privileged users, only grant these permissions to trusted users.

_权限_是您在为用户选择自定义权限时可以分配的单独访问权。

全局权限定义了用户在任何特定集群范围之外的授权。开箱即用,有四个默认的全局权限:Administrator、Standard User`和`User-base。

  • *管理员:*这些用户对整个Rancher系统及其所有集群拥有完全控制权。

  • *标准用户:*这些用户可以创建新集群并使用它们。标准用户还可以将其他用户的权限分配给他们的集群。

  • *用户基础:*用户基础用户仅具有登录访问权限。

您无法更新或删除内置的全局权限。

全局权限分配

本地用户的全局权限分配方式与使用外部身份验证登录Rancher的用户不同。

新本地用户的全局权限

当您创建新本地用户时,您在完成*添加用户*表单时为他们分配全局权限。

要查看新用户的默认权限,

  1. 在左上角,点击*☰ > 用户与身份验证*。

  2. 在左侧导航栏中,点击*角色模板*。

  3. *角色模板*页面有按范围分组的角色标签。每个表格列出了该范围内的角色。在*全局*标签中,在*新用户默认*列中,默认给予新用户的权限用勾号表示。

具有外部身份验证的用户的全局权限

当用户第一次使用外部身份验证提供者登录Rancher时,他们会自动被分配*新用户默认*全局权限。默认情况下,Rancher为新用户分配*标准用户*权限。

要查看新用户的默认权限,

  1. 在左上角,点击*☰ > 用户与身份验证*。

  2. 在左侧导航栏中,点击*角色模板*。

  3. *角色模板*页面有按范围分组的角色标签。每个表格列出了该范围内的角色。在每个页面的*新用户默认*列中,默认给予新用户的权限用勾号表示。

权限可以分配给单个用户。

如果外部身份验证提供者支持组,您可以同时将角色分配给组中的每个人。

自定义全局权限

使用自定义权限方便为用户提供狭窄或专业的Rancher访问权限。

当来自外部身份验证源的用户第一次登录Rancher时,他们会自动被分配一组全局权限(以下简称权限)。默认情况下,用户第一次登录后,会被创建为用户并分配默认的`user`权限。标准`user`权限允许用户登录并创建集群。

然而,在某些组织中,这些权限可能会扩展过多的访问权限。与其为用户分配默认全局权限`Administrator`或`Standard User`,不如为他们分配一组更具限制性的自定义全局权限。

默认角色,管理员和标准用户,各自内置了多个全局权限。管理员角色包括所有全局权限,而默认用户角色包括三个全局权限:创建集群、使用目录模板和用户基础,这相当于登录Rancher的最低权限。换句话说,自定义全局权限是模块化的,因此如果您想更改默认用户角色的权限,可以选择包含在新默认用户角色中的全局权限子集。

管理员可以通过多种方式强制执行自定义全局权限:

组合内置全局角色

Rancher提供了几种全局角色,这些角色为某些常见用例授予细粒度权限。 下表列出了每个内置全局权限以及它是否包含在默认全局权限中,Administrator、Standard User`和`User-Base。

自定义全局权限 管理员 标准用户 用户基础

创建集群

✓

✓

创建RKE模板

✓

✓

管理身份验证

✓

管理目录

✓

管理集群驱动程序

✓

管理节点驱动程序

✓

管理 PodSecurityPolicy 模板

✓

管理角色

✓

管理设置

✓

管理用户

✓

使用目录模板

✓

✓

用户基础(基本登录访问)

✓

✓

有关每个全局权限对应的 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 的规则相同类型的规则。

请参阅列表 全局资源 以获取相关资源。

提升和绑定动词

在授予 GlobalRoles 权限时,请记住 Rancher 尊重 escalate 和 bind 动词,类似于 Kubernetes。

这两个动词在 GlobalRoles 资源上授予用户绕过 Rancher 权限提升检查的权限。这可能允许用户成为管理员。由于这代表了严重的安全风险,bind 和 escalate 应该谨慎地分配给用户。

escalate 动词允许用户更改 GlobalRole 并添加任何权限,即使用户在当前 GlobalRole 或新版本的 GlobalRole 中没有这些权限。

bind 动词允许用户创建对指定 GlobalRole 的 GlobalRoleBinding,即使他们在 GlobalRole 中没有权限。

通配符动词 还包括 bind 和 escalate 动词。这意味着将 权限授予用户也会同时授予他们 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 字段在每个下游集群上授予一个或多个 RoleTemplate。该字段中的值必须引用一个存在且具有 Cluster 的 context 的 RoleTemplate。

通过此字段,用户在所有当前或未来的下游集群上获得指定的权限。例如,请考虑以下 GlobalRole:

apiVersion: management.cattle.io/v3
kind: GlobalRole
displayName: All Downstream Owner
metadata:
  name: all-downstream-owner
inheritedClusterRoles:
- cluster-owner

任何拥有此权限的用户将在所有下游集群上成为集群拥有者。如果添加了新集群,无论类型如何,用户也将在该集群上成为拥有者。

在 default GlobalRoles 上使用此字段可能导致用户获得过多权限。

配置默认全局权限

如果您想限制新用户的默认权限,可以将`user`权限去除作为默认角色,然后分配多个单独的权限作为默认权限。相反,您也可以在一组其他标准权限的基础上添加管理权限。

默认角色仅分配给从外部身份验证提供者添加的用户。对于本地用户,您必须在将用户添加到Rancher时明确分配全局权限。在添加用户时,您可以自定义这些全局权限。

要更改首次登录时分配给外部用户的默认全局权限,请按照以下步骤操作:

  1. 在左上角,点击*☰ > 用户与身份验证*。

  2. 在左侧导航栏中,点击*角色模板*。在*角色模板*页面上,确保选择了*全局*选项卡。

  3. 找到您想要添加或去除的默认权限集。然后通过选择*⋮ > 编辑配置*来编辑权限。

  4. 如果您想将权限添加为默认,请选择*是:新用户的默认角色*,然后点击*保存*。如果您想去除默认权限,请编辑权限并选择*否*。

*结果:*默认全局权限根据您的更改进行配置。分配给新用户的权限在*新用户默认*列中显示勾选。

为单个用户配置全局权限

要为用户配置权限,

  1. 在左上角,点击*☰ > 用户与身份验证*。

  2. 在左侧导航栏中,点击*用户*。

  3. 找到您想要更改访问级别的用户,然后点击*⋮ > 编辑配置*。

  4. 在*全局权限*和*内置*部分,勾选您希望用户拥有的每个权限的框。如果您已从*角色模板*页面创建角色,它们将出现在*自定义*部分,您也可以从中选择。

  5. 单击 保存。

*结果:*用户的全局权限已更新。

为组配置全局权限

如果您有一组需要在Rancher中拥有相同访问级别的个人,一次性为整个组分配权限可以节省时间,以便组中的用户在首次登录Rancher时拥有适当的访问级别。

在您为一个组分配自定义全局角色后,当组中的用户登录Rancher时,将会分配自定义全局角色。

对于现有用户,新权限将在用户注销Rancher并重新登录时生效,或者当管理员刷新组成员资格。

对于新用户,新权限在用户首次登录Rancher时生效。来自该组的新用户将获得自定义全局角色的权限,以及*新用户默认*全局权限。默认情况下,*新用户默认*权限等同于*标准用户*全局角色,但默认权限可以配置。

如果用户从外部身份验证提供者组中被去除,他们将失去分配给该组的自定义全局角色的权限。他们将继续拥有分配给他们的任何剩余角色,通常包括标记为*新用户默认*的角色。当用户注销时,Rancher将移除与该组相关联的权限,或者当管理员刷新组成员资格,以先到者为准。

先决条件:

您只能在以下情况下将全局角色分配给组:

要将自定义全局角色分配给组,请按照以下步骤操作:

  1. 在左上角,点击*☰ > 用户与身份验证*。

  2. 在左侧导航栏中,点击*组*。

  3. 转到您要分配自定义全局角色的组,然后点击*⋮ > 编辑配置*。

  4. 在*全局权限,* *自定义,*和/或*内置*部分中,选择该组应拥有的权限。

  5. 单击*创建*。

*结果:*当组中的用户登录Rancher时,自定义全局角色将生效。

刷新组成员资格

当管理员更新组的全局权限时,变更将在个别组成员注销并重新登录Rancher后生效。

为了使变更立即生效,管理员或集群拥有者可以刷新组成员资格。

如果用户在外部认证服务中被移除,管理员也可能希望刷新组成员资格。在这种情况下,刷新会使Rancher意识到该用户已从组中移除。

要刷新组成员资格,

  1. 在左上角,点击*☰ > 用户与身份验证*。

  2. 在左侧导航栏中,点击*用户*。

  3. 点击 刷新组成员资格。

*结果:*对组成员权限的任何更改将生效。