本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

集群和项目角色

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

要管理这些角色,

  1. 点击 ☰ > 用户与身份验证

  2. 在左侧导航栏中,点击 角色模板,然后转到 集群项目/名称空间 标签。

成员资格和角色分配

非管理用户可以访问的项目和集群由 成员资格 决定。成员资格是一个用户列表,基于他们在特定集群或项目中被分配的角色,决定他们对该集群或项目的访问权限。每个集群和项目都有一个标签,具有适当权限的用户可以用来管理成员资格。

当您创建一个集群或项目时,Rancher 会自动将您分配为该集群或项目的 Owner。被分配 Owner 角色的用户可以在集群或项目中分配其他用户角色。

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

集群角色

集群角色 是您可以分配给用户的角色,授予他们对集群的访问权限。有两个主要的集群角色:OwnerMember

  • 集群所有者:

    这些用户对集群及其所有资源拥有完全控制权。

  • 集群成员:

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

    当集群成员创建项目时,用户会自动被分配 项目所有者权限。这赋予他们对项目及其相关资源的全面控制,包括部署工作负载的权限。如果没有强制执行 Pod 安全标准 (PSS) 和 Pod 安全准入 (PSA),集群成员能够在集群中执行特权容器。

自定义集群角色

Rancher 允许您将 自定义集群角色 分配给标准用户,而不是典型的 OwnerMember 角色。这些角色可以是内置的自定义集群角色,也可以是 Rancher 管理员定义的角色。它们方便用于为集群中的标准用户定义狭窄或专业的访问权限。请参见下表以获取内置自定义集群角色的列表。

集群角色参考

下表列出了每个可用的内置自定义集群角色,以及该访问级别是否包含在默认的集群级别权限中,Cluster OwnerCluster Member

内置集群角色 所有者 成员

创建项目

管理集群备份

管理集群目录

管理集群成员

管理节点 (见下表)

管理存储

查看所有项目

查看集群目录

查看集群成员

查看节点

管理节点权限

下表列出了 RKE 和 RKE2 中 Manage Nodes 角色可用的权限。

管理节点权限 RKE RKE2

SSH 访问

删除节点

扩展和缩减集群

*

在 RKE2 中,您必须拥有编辑集群的权限才能扩展和缩减集群。

有关每个集群角色如何访问 Kubernetes 资源的详细信息,您可以在 Rancher UI 中查找:

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

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

  3. 点击 集群 标签。

  4. 点击单个角色的名称。该表显示了该角色允许的所有操作和资源。

在查看 Rancher 创建的默认角色相关的资源时,如果一行中有多个 Kubernetes API 资源,该资源将附加 (Custom)。这些不是自定义资源,而只是表示有多个 Kubernetes API 资源作为一个资源。

给予集群成员自定义集群角色

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

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

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

  1. 单击 ☰ > 集群管理

  2. 转到您想要将角色分配给成员的集群,然后单击*探索*。

  3. 单击menu:集群[集群成员]。

  4. 单击*添加*。

  5. 在*集群权限*部分,选择应分配给成员的自定义集群角色。

  6. 单击*创建*。

*结果:*该成员已获得分配的角色。

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

  1. 点击 ☰ > 用户与身份验证

  2. 转到您想要给予角色的成员。单击*⋮ > 编辑配置*。

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

  4. 单击 保存

*结果:*该成员已获得分配的角色。

项目角色

_项目角色_是可以用来授予用户访问项目权限的角色。有三种主要的项目角色:OwnerMember`和`Read Only

  • 项目所有者:

    这些用户对项目及其所有资源拥有完全控制权。

  • 项目成员:

    这些用户可以管理项目范围内的资源,如名称空间和工作负载,但无法管理其他项目成员。

默认情况下,`project-member`的Rancher角色继承自`Kubernetes-edit`角色,而`project-owner`角色继承自`Kubernetes-admin`角色。因此,`project-member`和`project-owner`角色都允许进行名称空间管理,包括创建和删除名称空间的能力。

  • 只读:

    这些用户可以查看项目中的所有内容,但无法创建、更新或删除任何内容。

被分配`Owner`或`Member`角色的用户会自动继承`namespace creation`角色。然而,这个角色是一个 Kubernetes集群角色,这意味着它的范围扩展到集群中的所有项目。因此,明确分配`owner`或`member`角色的用户可以在他们被分配的其他项目中创建名称空间,即使他们只被分配了`Read Only`角色。

自定义项目角色

Rancher允许您将_自定义项目角色_分配给标准用户,而不是典型的`Owner`、`Member`或`Read Only`角色。这些角色可以是内置的自定义项目角色,也可以是Rancher管理员定义的角色。它们方便为标准用户在项目内定义狭窄或专业的访问权限。请参见下表以获取内置自定义项目角色的列表。

项目角色参考

下表列出了Rancher中可用的每个内置自定义项目角色,以及它是否也由`Owner`、`Member`或`Read Only`角色授予。

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

管理项目成员

创建名称空间

管理配置映射

管理入口

管理项目目录

管理机密

管理服务账户

Manage Services(管理服务)

管理卷

管理工作负载

查看机密

查看配置映射

查看入口

查看项目成员

查看项目目录

查看服务账户

查看服务

查看卷

查看工作负载

备注:
  • 上述每个项目角色,包括`Owner`、Member`和`Read Only,由多个规则组成,授予对各种资源的访问权限。您可以在全局 > 安全 > 角色页面查看角色及其规则。

  • 在查看 Rancher 创建的默认角色相关的资源时,如果一行中有多个 Kubernetes API 资源,该资源将附加 (Custom)。这些不是自定义资源,而只是表示有多个Kubernetes API资源作为一个资源。

  • `Manage Project Members`角色允许项目所有者管理项目的任何成员*并*授予他们任何项目范围的角色,而不管他们对项目资源的访问权限。单独分配此角色时请谨慎。

定义自定义角色

如前所述,可以为集群或项目级别定义自定义角色。上下文字段定义角色将出现在集群成员页面、项目成员页面,还是两者都有。

在定义自定义角色时,可以授予对特定资源的访问权限或指定自定义角色应继承的角色。自定义角色可以由特定授权和继承角色的组合构成。所有授权都是累加的。这意味着为特定资源定义更狭窄的授权*不会*覆盖自定义角色所继承的角色中定义的更广泛的授权。

默认集群和项目角色

默认情况下,当标准用户创建新集群或项目时,他们会自动被分配一个所有权角色:要么是集群所有者,要么是项目所有者。然而,在某些组织中,这些角色可能会赋予用户过多的管理权限。在这种用例中,您可以将默认角色更改为更具限制性的角色,例如一组单独的角色或自定义角色。

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

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

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

    例如,您可以选择一组单独的角色(例如`manage nodes`和`manage storage`),而不是分配一个继承其他角色的角色(例如`cluster owner`)。

  • 尽管您可以锁定默认角色,但系统仍会将该角色分配给创建集群/项目的用户。

  • 只有创建集群/项目的用户才能继承他们的角色。之后添加到集群/项目成员的用户必须明确分配他们的角色。

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

您可以更改自动分配给创建用户的集群或项目角色。

  1. 在左上角,点击 ☰ > 用户与认证

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

  3. 点击 集群项目/名称空间 标签。

  4. 找到您希望设为默认角色的自定义或单独角色。然后通过选择 ⋮ > 编辑配置 来编辑角色。

  5. 集群创建者默认项目创建者默认 部分,启用该角色作为默认角色。

  6. 单击 保存

结果:*默认角色根据您的更改进行配置。分配给集群/项目创建者的角色在 *集群/项目创建者默认 列中显示一个勾选。

如果您想要去除默认角色,请编辑权限并从默认角色选项中选择

集群成员资格撤销行为

当您撤销一个明确同时获得集群_和_集群内项目成员资格的标准用户的集群成员资格时,该用户将失去其集群角色,但仍保留项目角色。换句话说,尽管您已撤销用户访问集群及其节点的权限,但该标准用户仍然可以:

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

外部 RoleTemplate 行为

在 Rancher v2.9.0 及更高版本中,只有在本地群集中存在后端 ClusterRole 时,才能创建外部 RoleTemplate 对象,或者在您的配置中设置 ExternalRules

为了提供背景,后端 ClusterRole 持有集群规则和权限,并共享在您的集群中由 ClusterRoleTemplateBinding/ProjectRoleTemplateBinding 引用的 metadata.name。此外,请注意,创建带有 ExternalRules 的外部 RoleTemplates 需要对 escalateRoleTemplates 权限。