---
title: 自定义角色
---

在 Rancher 中，_角色_ 决定了用户可以在集群或项目中执行哪些操作。

请注意，_角色_ 与 _权限_ 不同，权限决定的是你可以访问哪些集群和项目。

:::danger

自定义角色可以启用权限提升。有关详细信息，请参阅[本节](#权限提升)。

:::


## 先决条件

要完成此页面上的任务，需要以下权限之一：

- [管理员全局权限](global-permissions.md)。
- 分配了[管理角色](global-permissions.md)的[自定义全局权限](global-permissions.md#自定义全局权限)。

## 创建自定义角色

虽然 Rancher 提供一组开箱即用的默认用户角色，但你还可以创建默认的自定义角色，从而在 Rancher 中为用户提供更精细的权限。

添加自定义角色的步骤因 Rancher 的版本而异。

1. 在左上角，单击 **☰ > 用户 & 认证**。
1. 在左侧导航栏中，单击**角色**。
1. 选择一个选项卡来确定要添加的角色的范围。这些选项卡是：

- **全局**：仅在允许成员管理全局范围的资源时，可以分配该角色。
- **集群**：仅在向集群添加/管理成员时，可以分配该角色。
- **项目或命名空间**：仅在向项目或命名空间添加/管理成员时，可以分配该角色。

1. 根据所需要的范围，单击**创建全局角色**、**创建集群角色**或**创建项目或命名空间的角色**。
1. 输入角色的**名称**。
1. 可选：选择**集群创建者的默认角色/项目创建者的默认角色**选项，以将该角色分配给集群/项目创建者。使用此功能，你可以扩展或限制集群/项目创建者的默认角色。

   > 开箱即用的**集群创建者的默认角色**和**项目创建者的默认角色**分别是`集群所有者`和`项目所有者`。

1. 使用**授权资源**选项将各个 [Kubernetes API 端点](https://kubernetes.io/docs/reference/)分配给角色。

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

   > **资源**文本字段可以用来搜索预定义的 Kubernetes API 资源，或者为授权输入自定义资源名称。在此字段中输入资源名称后，必须从下拉列表中选择预定义或`（自定义）`资源。

   你还可以选择每个分配的端点可用的 cURL 方法（`Create`、`Delete`、`Get` 等）。

1. 使用 **Inherit from** 选项将各个 Rancher 角色分配给你的自定义角色。请注意，如果自定义角色从父角色继承，你需要先删除子角色才能删除父角色。

1. 单击**创建**。

## 创建从另一个角色继承的自定义角色

如果你有一组需要在 Rancher 中具有相同访问权限的用户，一种节省时间的方法是创建一个新的自定义角色，而该角色的规则都是从另一个角色（例如管理员角色）复制而来的。这样，你只需要配置现有角色和新角色之间不同的部分。

然后，你可以将自定义角色分配给用户或组。该角色在用户首次登录 Rancher 时生效。

要基于现有角色创建自定义角色：

1. 在左上角，单击 **☰ > 用户 & 认证**。
1. 在左侧导航栏中，单击**角色**。
1. 单击**集群**或**项目或命名空间**选项卡。根据所需要的范围，单击**创建集群角色**或**创建项目或命名空间的角色**。请注意，只有集群角色和项目/命名空间角色可以从另一个角色继承。
1. 输入角色的名称。
1. 在 **Inherit From** 选项卡中，选择自定义角色需要从哪个角色继承权限。
1. 在**授权资源**选项卡中，选择拥有自定义角色的用户要启用的 Kubernetes 资源操作。

   > **资源**文本字段可以用来搜索预定义的 Kubernetes API 资源，或者为授权输入自定义资源名称。在此字段中输入资源名称后，必须从下拉列表中选择预定义或`（自定义）`资源。
1. 可选：将角色设置为默认。
1. 单击**创建**。

## 删除自定义角色

删除自定义角色时，具有此自定义角色的所有全局角色绑定（Global Role Bindings）都将被删除。

如果某个用户仅分配了一个自定义全局角色，而且你删除了这个角色，该用户将不能再访问 Rancher。要让用户重新获得访问权限，管理员需要编辑用户并应用新的全局权限。

自定义角色可以删除，但内置角色不能删除。

要删除自定义角色：

1. 在左上角，单击 **☰ > 用户 & 认证**。
1. 在左侧导航栏中，单击**角色**。
2. 转到要删除的自定义全局角色，然后单击 **⋮ (…) > 删除**。
3. 单击**删除**。

## 为组分配自定义角色

如果你有一组需要在 Rancher 中具有相同访问权限的用户，一种节省时间的方法是创建一个新的自定义角色。将角色分配给组时，组中的用户在首次登录 Rancher 时就会拥有配置的访问级别。

组中的用户登录时，他们默认获得内置的**普通用户**全局角色。他们还将获得分配给他们的组的权限。

如果将用户从外部身份验证系统的组中删除，用户将失去分配给该组的自定义全局角色的权限。但是，用户仍会拥有**普通用户**角色。

:::note 先决条件：

只有在以下情况下，你才能将全局角色分配给组：

* 你已设置[外部身份验证提供程序](../../../../pages-for-subheaders/authentication-config.md#外部验证与本地验证)。
* 外部身份验证提供程序支持[用户组](../../authentication-permissions-and-global-configuration/authentication-config/manage-users-and-groups.md)。
* 你已使用身份验证提供程序设置了至少一个用户组。

:::

要将自定义角色分配给组，请执行以下步骤：

1. 在左上角，单击 **☰ > 用户 & 认证**。
1. 在左侧导航栏中，单击**组**。
1. 转到将分配自定义角色的组，然后单击 **⋮ > 编辑配置**。
1. 如果你已创建角色，角色将显示在**自定义**中。选择要分配给组的自定义角色。
1. 可选：在**全局权限**或**内置角色**中，选择要分配给该组的其他权限。
1. 单击**保存**。

**结果**：自定义角色将在组内用户登录 Rancher 时生效。

## 权限提升

`配置应用商店`这个自定义权限很强大，应谨慎使用。如果管理员将`配置应用商店`权限分配给普通用户，可能会导致权限提升。在这种情况下，用户可以让自己对 Rancher 配置的集群进行管理员访问。因此，拥有此权限的任何用户都应被视为管理员。