集群和项目角色
集群和项目角色用来定义集群或项目内部的用户授权。您可以从全局 > 安全 > 角色页面管理这些角色。
成员资格和角色分配
非管理用户可访问的项目和集群由成员资格确定。成员资格是根据他们在该集群或项目中分配的角色而有权访问特定集群或项目的用户列表。每个集群和项目都包含一个选项卡,具有适当权限的用户可以使用该选项卡来管理成员资格。
创建集群或项目时,Rancher 会自动将创建者分配为所有者。分配了所有者角色的用户可以在集群或项目中给其他用户分配角色。
注意: 默认情况下,非管理员用户无法访问任何现有项目/集群。具有适当权限的用户(通常是所有者)必须显式分配项目和集群成员资格。
集群角色
集群角色是您可以分配给用户的角色,以授予他们对集群的访问权限。集群有两个主要角色:所有者和成员。
集群所有者:
这些用户可以完全控制集群及其中的所有资源。
集群成员:
这些用户可以查看大多数集群级别的资源并创建新项目。
自定义集群角色
使用 Rancher,您可以将自定义集群角色分配给标准用户,而不是典型的所有者或成员角色。这些角色可以是内置的自定义集群角色,也可以是 Rancher 管理员定义的角色。这方便管理员为集群中的标准用户配置受限的或特定的访问权限。有关内置的自定义集群角色的列表,请参见下表。
集群角色参考
下表列出了每个可用的内置自定义集群角色,以及默认的集群级别角色集群所有者和集群成员中是否包括该权限。
内置集群角色 | 所有者 | 成员 |
---|---|---|
创建项目 | ✓ | ✓ |
管理集群备份 | ✓ | |
管理集群应用商店 | ✓ | |
管理集群成员 | ✓ | |
管理节点 | ✓ | |
管理存储 | ✓ | |
查看所有项目 | ✓ | |
查看集群应用商店 | ✓ | ✓ |
查看集群成员 | ✓ | ✓ |
查看节点 | ✓ | ✓ |
有关每个集群角色如何访问 Kubernetes 资源的详细信息,可以转到 Rancher UI 中的全局视图。然后单击安全 > 角色,然后转到集群标签。单击单个角色,然后可以参考资源授权表以查看该角色允许的所有操作和资源。
注意: 查看与 Rancher 创建的默认角色相关的资源时,如果在一行上有多个 Kubernetes API 资源,则该资源将带有(Custom)标识。这些不是自定义资源,仅表示把多个 Kubernetes API 资源作为一种资源。
分配自定义集群角色
管理员设置自定义集群角色后,集群所有者和管理员可以将这些角色分配给集群成员。
可以使用 Rancher UI,将自定义角色分配给新的集群成员。要修改现有成员的权限,您将需要使用 Rancher API 视图。
要将角色分配给新的集群成员,
- 转到集群视图,然后转到成员选项卡。
- 单击添加成员。然后在集群权限部分中,选择应分配给成员的自定义集群角色。
- 单击创建。
结果: 成员已分配角色。
要将任何自定义角色分配给现有集群成员,
- 转到您要授予角色的成员。单击省略号(…) > 在 API 中查看。
- 在 roleTemplateId 字段中,转到下拉菜单,然后选择要分配给成员的角色。单击显示请求和发送请求。
结果: 成员已分配角色。
项目角色
项目角色是可用于授予用户访问项目权限的角色。项目主要有三个角色:所有者,成员和只读。
项目所有者:
这些用户对项目及其中的所有资源拥有完全控制权。
项目成员:
这些用户可以管理项目范围的资源,例如命名空间和工作负载,但不能管理其他项目成员。
只读:
这些用户可以查看项目中的所有内容,但不能创建,更新或删除任何内容。
注意事项: 为项目分配了
所有者
或成员
角色的用户会自动继承命名空间创建
角色。但是,此角色是 Kubernetes ClusterRole,这意味着它的作用域扩展到了集群中的所有项目。因此,在某个项目中明确分配了所有者
或成员
角色的用户,即使在其他项目中仅分配了只读
角色,这些用户也可以在这些项目中创建命名空间。
自定义项目角色
使用 Rancher,您可以将自定义项目角色分配给标准用户,而不是典型的所有者,成员或只读角色。这些角色可以是内置的自定义项目角色,也可以是 Rancher 管理员定义的角色。这方便管理员为项目中的标准用户配置受限的或特定的访问权限。有关内置的自定义项目角色的列表,请参见下表。
项目角色参考
下表列出了 Rancher 中可用的每个内置自定义项目角色,以及是否也由所有者,成员或只读角色授予的。
内置项目角色 | 所有者 | 成员 | 只读 |
---|---|---|---|
管理项目成员 | ✓ | ||
创建命名空间 | ✓ | ✓ | |
管理配置映射 | ✓ | ✓ | |
管理 Ingress | ✓ | ✓ | |
管理项目应用商店 | ✓ | ||
管理密文 | ✓ | ✓ | |
管理服务帐户 | ✓ | ✓ | |
管理服务 | ✓ | ✓ | |
管理卷 | ✓ | ✓ | |
管理工作负载 | ✓ | ✓ | |
查看配置图 | ✓ | ✓ | ✓ |
查看 Ingress | ✓ | ✓ | ✓ |
查看项目成员 | ✓ | ✓ | ✓ |
查看项目应用商店 | ✓ | ✓ | ✓ |
查看密文 | ✓ | ✓ | ✓ |
查看服务帐户 | ✓ | ✓ | ✓ |
查看服务 | ✓ | ✓ | ✓ |
查看卷 | ✓ | ✓ | ✓ |
查看工作负载 | ✓ | ✓ | ✓ |
注意:
- 上面列出的每个项目角色,包括所有者,成员和只读,都由多个规则组成,这些规则授予对各种资源的访问权限。您可以在全局 > 安全 > 角色页面上查看角色及其规则。
- 查看与 Rancher 创建的默认角色相关的资源时,如果在一行上有多个 Kubernetes API 资源,则该资源将带有(Custom)标识。这些不是自定义资源,仅表示把多个 Kubernetes API 资源作为一种资源。
- 使用管理项目成员角色,项目所有者可以管理项目的任何成员,并授予他们任何项目范围的角色,而不管他们是否有权访问项目资源。单独分配此角色时要小心。
定义自定义角色
如前所述,可以定义自定义角色以在集群或项目级别使用。上下文字段定义角色是否将显示在集群成员页面,项目成员页面或两者上。
定义自定义角色时,您可以授予对特定资源的访问权限,或指定自定义角色应继承的角色。定制角色可以由特定授予和继承角色的组合组成。所有赋权都是加性的。这意味着为特定资源定义更窄的授权不会覆盖自定义角色继承自的角色中定义的更广泛的授权。
默认集群和项目角色
默认情况下,当标准用户创建新集群或项目时,会自动为他们分配所有权角色:集群所有者或项目所有者。但是,在某些组织中,这些角色可能会被认为有过多的管理访问权限。在这种情况下,您可以将默认角色更改为更具限制性的角色,例如一组单独的角色或一个自定义角色。
有两种更改默认集群/项目角色的方法:
例如,您可以选择混合使用各个角色(例如管理节点和管理存储),而不是分配继承其他角色的角色(例如集群所有者)。
注意:
- 尽管您可以锁定默认角色,但系统仍会将该角色分配给创建集群/项目的用户。
- 只有创建集群/项目的用户才能继承其角色。此后添加到集群/项目成员资格的用户必须明确分配其角色。
为集群和项目创建者配置默认角色
您可以更改自动分配给创建用户的集群或项目角色。
在全局视图中,从主菜单中选择安全 > 角色。选择集群或项目选项卡。
查找要用作默认角色的自定义角色或单个角色。然后通过选择省略号 > 编辑来编辑角色。
启用默认角色。
在新集群/项目默认角色中,选择是:用于创建新集群/项目的默认角色。
单击保存。
如果要删除默认角色,请编辑权限,然后从默认角色选项中选择否。
结果: 根据您的更改配置默认角色。分配给集群/项目创建者的角色在集群/项目创建者默认值列中显示一个检查。
撤消集群成员资格时的行为
当您撤消已为集群和集群中的项目明确分配了成员资格的标准用户的集群成员身份时,该标准用户将失去其集群角色但仍保留其项目角色。换句话说,尽管您已经撤消了用户访问集群及其节点的权限,但是标准用户仍然可以:
- 访问其拥有成员资格的项目。
- 行使分配给他们的任何项目角色的权限。
如果要完全撤消集群中用户的访问权限,请撤消其集群成员和项目成员身份。