集群和项目角色

集群和项目角色定义集群或项目内的用户授权。

要管理这些角色:

  1. 单击 ☰ > 用户 & 认证

  2. 在左侧导航栏中,单击角色并转到集群项目或命名空间选项卡。

成员资格和角色分配

非管理用户可以访问的项目和集群由 成员资格 决定。成员资格是根据该集群或项目中分配的角色而有权访问特定集群或项目的用户列表。每个集群和项目都包含一个选项卡,具有适当权限的用户可以使用该选项卡来管理成员资格。

创建集群或项目时,Rancher 会自动将创建者分配为所有者。分配了所有者角色的用户可以在集群或项目中给其他用户分配角色。

默认情况下,非管理员用户无法访问任何现有项目/集群。具有适当权限的用户(通常是所有者)必须显式分配项目和集群成员资格。

集群角色

集群角色 是你可以分配给用户的角色,以授予他们对集群的访问权限。集群的两个主要角色分别是所有者成员

  • 集群所有者:

    可以完全控制集群及其中的所有资源。

  • 集群成员:

    可以查看大多数集群级别的资源并创建新项目。

    When a Cluster Member creates a project, the user is automatically assigned Project Owner privileges. This grants them comprehensive control over the project and its associated resources, including permissions to deploy workloads. Without enforced Pod Security Standards (PSS) and Pod Security Admission (PSA), a Cluster Member is able to execute privileged containers in the cluster.

自定义集群角色

Rancher 支持将 自定义集群角色 分配给普通用户,而不是典型的所有者成员角色。这些角色可以是内置的自定义集群角色,也可以是 Rancher 管理员定义的角色。这些角色便于为集群内的普通用户定义更受限或特定的访问权限。有关内置自定义集群角色的列表,请参阅下表。

集群角色参考

下表列出了可用的内置自定义集群角色,以及默认的集群级别角色集群所有者集群成员是否包含该权限:

内置集群角色 所有者 成员

创建项目

管理集群备份

管理集群应用商店

管理集群成员

管理节点(见下表)

管理存储

查看所有项目

查看集群应用商店

查看集群成员

查看节点

管理节点权限

下表列出了 RKE 和 RKE2 中管理节点角色可用的权限:

管理节点权限 RKE RKE2

SSH 访问

删除节点

集群的垂直扩缩容

*

在 RKE2 中,你必须拥有编辑集群的权限才能对集群进行垂直扩缩容。

如果需要了解各个集群角色如何访问 Kubernetes 资源,在 Rancher UI 中找到这些角色:

  1. 在左上角,单击 ☰ > 用户 & 认证

  2. 在左侧导航栏中,单击角色

  3. 单击集群选项卡。

  4. 单击角色的名称。表格会显示角色授权的所有操作和资源。

在查看 Rancher 创建的默认角色关联的资源时,如果在一行上有多个 Kubernetes API 资源,则该资源将带有 (Custom) 标识。这不代表这个资源是自定义资源,而只是表明多个 Kubernetes API 资源作为一个资源。

为集群成员提供自定义集群角色

在管理员设置自定义集群角色后,集群所有者和管理员可以将这些角色分配给集群成员。

要将自定义角色分配给新的集群成员,你可以使用 Rancher UI。要修改现有成员的权限,你需要使用 Rancher API 视图。

要将角色分配给新的集群成员:

  1. 点击 ☰ > 集群管理

  2. 转到要将角色分配给成员的集群,然后单击 Explore

  3. 点击集群  集群成员

  4. 单击添加

  5. 集群权限中,选择要分配给成员的自定义集群角色。

  6. 单击创建

结果:成员具有所分配的角色。

要将自定义角色分配给现有集群成员:

  1. 单击 ☰ > 用户 & 认证

  2. 找到要分配角色的成员。单击 ⋮ > 编辑配置

  3. 如果你添加了自定义角色,它们将显示在自定义中。选择要分配给成员的角色。

  4. 单击保存

结果:成员具有所分配的角色。

项目角色

项目角色 是用于授予用户访问项目权限的角色。主要的项目角色分别是所有者成员只读

  • 项目所有者:

    可以完全控制项目及其中的所有资源。

  • 项目成员:

    可以管理项目范围的资源,如命名空间和工作负载,但不能管理其他项目成员。

默认情况下,Rancher 的项目成员角色继承自 Kubernetes-edit 角色,而项目所有者角色继承自 Kubernetes-admin 角色。因此,项目成员项目所有者角色都能管理命名空间,包括创建和删除命名空间。

  • 只读:

    可以查看项目中的所有内容,但不能创建、更新或删除任何内容。

如果用户分配到了项目的所有者成员角色,用户会自动继承命名空间创建角色。然而,这个角色是 Kubernetes ClusterRole,这表示角色的范围会延展到集群中的所有项目。因此,对于显式分配到了项目所有者成员角色的用户来说,即使只有只读角色,这些用户也可以在分配给他们的其他项目中创建命名空间。

自定义项目角色

Rancher 支持将 自定义项目角色 分配给普通用户,而不是典型的所有者成员只读角色。这些角色可以是内置的自定义项目角色,也可以是 Rancher 管理员定义的角色。这些角色便于为项目内的普通用户定义更受限或特定的访问权限。有关内置自定义项目角色的列表,请参阅下表。

项目角色参考

下表列出了 Rancher 中可用的内置自定义项目角色,以及这些角色是否由所有者,成员只读角色授予的:

内置项目角色 所有者 成员 只读

管理项目成员

创建命名空间

管理配置映射

管理 Ingress

管理项目应用商店

管理密文

管理 ServiceAccount

管理服务

管理卷

管理工作负载

查看密文

查看配置图

查看 Ingress

查看项目成员

查看项目应用商店

查看 ServiceAccount

查看服务

查看卷

查看工作负载

注意事项:
  • 上面列出的每个项目角色(包括所有者成员只读)均由多个规则组成,这些规则授予对各种资源的访问权限。你可以在全局  安全  角色页面上查看角色及其规则。

  • 在查看 Rancher 创建的默认角色关联的资源时,如果在一行上有多个 Kubernetes API 资源,则该资源将带有 (Custom) 标识。这不代表这个资源是自定义资源,而只是表明多个 Kubernetes API 资源作为一个资源。

  • 管理项目成员角色允许项目所有者管理项目的所有成员,授予这些成员任何项目范围的角色(不论他们是否有权访问项目资源)。单独分配此角色时要小心。

定义自定义角色

如前所述,你可以定义自定义角色,并将这些角色用在集群或项目中。上下文字段定义了角色是否显示在集群成员页面、项目成员页面或同时显示在这两个页面。

定义自定义角色时,你可以授予对特定资源的访问权限,或指定自定义角色应继承的角色。自定义角色可以由特定授权和继承角色组成。所有授权都是累加的。换言之,如果你为特定资源定义更受限的授权,自定义角色继承的角色中定义的更广泛的授权不会被覆盖。

默认集群和项目角色

默认情况下,在普通用户创建新集群或项目时,他们会自动分配到所有者的角色,即集群所有者项目所有者。但是,在某些组织中,这些角色可能会被认为有过多的管理访问权限。在这种情况下,你可以将默认角色更改为更具限制性的角色,例如一组单独的角色或一个自定义角色。

更改默认集群/项目角色有以下两种方法:

  • 分配自定义角色:为你的集群项目创建一个自定义角色,然后将自定义角色设置为默认。

  • 分配单独的角色:将多个集群/项目角色配置为默认角色,并分配给创建的用户。

    例如,你可以选择混合使用多个角色(例如管理节点管理存储),而不是使用继承的角色(例如集群所有者)。

  • 虽然你可以锁定一个默认角色,但系统仍会将这个角色分配给创建集群/项目的用户。

  • 只有创建集群/项目的用户才能继承他们的角色。对于之后添加为集群/项目成员的用户,你必须显式分配角色。

为集群和项目创建者配置默认角色

你可以更改为创建集群或项目的用户自动创建的角色:

  1. 在左上角,单击 ☰ > 用户 & 认证

  2. 在左侧导航栏中,单击角色

  3. 单击集群项目或命名空间选项卡。

  4. 找到你要用作默认角色的自定义或单个角色。然后通过选择 ⋮ > 编辑配置来编辑角色。

  5. 集群创建者的默认角色项目创建者的默认角色中,将角色启用为默认。

  6. 单击保存

结果:默认角色已根据你的更改配置。分配给集群/项目创建者的角色会在集群创建者的默认角色/项目创建者的默认角色列中勾选。

如果要删除默认角色,请编辑权限,并在默认角色选项中选择

撤销集群成员资格

如果你撤销一个普通用户的集群成员资格,而且该用户已显式分配集群的集群 项目的成员资格,该普通用户将失去集群角色保留项目角色。换句话说,即使你已经撤销了用户访问集群和其中的节点的权限,但该普通用户仍然可以:

  • 访问他们拥有成员资格的项目。

  • 行使分配给他们的任何单个项目角色

如果你想完全撤销用户在集群中的访问权限,请同时撤销他们的集群和项目成员资格。