文档首页/ 华为云UCS/ 用户指南/ 权限管理/ 集群中Kubernetes资源权限(RBAC授权)
更新时间:2024-06-17 GMT+08:00

集群中Kubernetes资源权限(RBAC授权)

集群中Kubernetes资源权限是基于Kubernetes RBAC能力的授权,管理员可授予用户针对集群内特定Kubernetes资源对象的操作权限,权限最终作用在舰队或未加入舰队的集群的命名空间上。

本章节以“只读权限”为例,介绍为用户授予Kubernetes资源权限的方法,操作流程如图1所示。

UCS的集群操作权限设置仅对非华为云集群生效。对于华为云集群(CCE集群、CCE Turbo集群)的操作权限以IAM权限或者CCE RBAC权限为准。

授权流程

图1 给用户授予Kubernetes资源权限流程
  1. 创建用户

    管理员账号在IAM控制台创建一个用户。

  2. 为用户授予UCS系统策略

    授予Kubernetes资源权限之前,必须先为用户授予UCS系统策略的权限,本例中应该授予UCS ReadOnlyAccess策略(UCS服务只读权限)。

  3. 创建权限

    管理员账号在UCS控制台创建权限,选择“只读权限”的权限类型,表示对所有Kubernetes资源对象的只读权限。

  4. 关联权限至舰队或未加入舰队的集群

    将权限关联至舰队,关联时需要选择权限作用的命名空间。也可以关联权限至未加入舰队的集群。

  5. 验证权限是否生效

    新创建的用户登录控制台,验证只读权限是否生效。

创建权限

  1. 登录UCS控制台,在左侧导航栏中选择“权限管理”
  2. 单击右上角的“创建权限”按钮。
  3. 在弹出页面中填写权限参数。

    图2 创建权限
    • 权限名称:自定义权限的名称,需以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。
    • 用户:在下拉列表中勾选新创建的用户名。支持选择多个用户,假设一个企业中的开发团队有多名员工,他们对资源的操作权限一样,就可以在创建权限时选择多个用户以达到批量授权的目的。

      本文以添加一个“readonly_user”用户为例。

    • 权限类型:支持管理员权限、只读权限、开发权限和自定义权限。
      表1 权限类型说明

      权限类型

      说明

      管理员权限

      对所有集群资源对象的读写权限

      只读权限

      对所有集群资源对象的只读权限

      开发权限

      对大多数集群资源对象的读写权限,对命名空间、资源配额等集群资源对象的只读权限

      自定义权限

      权限由您选择的操作类型和资源对象决定

    • 权限内容:表示对哪些资源可以执行哪些操作。管理员权限、只读权限、开发权限的权限内容已经模板化,您可以单击按钮查看权限的详细内容。当权限类型选择“自定义权限”时,需要设置操作类型和资源对象。

      操作类型:包含如下类型,也支持新增操作类型(如deletecollection,表示删除多个资源)。

      • get:按名称检索特定的资源对象。
      • list:检索命名空间中特定类型的所有资源对象。
      • watch:响应资源变化。
      • create:创建资源。
      • update:更新资源。
      • patch:局部更新资源。
      • delete:删除资源。

      对于全部操作推荐选择:全部。

      对于只读操作推荐选择:get + list + watch。

      对于读写操作推荐选择:get + list + watch + create + update + patch + delete。

      资源对象:您可以选择“全部资源”或“指定资源”。全部资源对象包括当前已有的资源对象和后续新增的自定义资源对象;“指定资源”即表示您自己选择资源对象的范围,为了便于查找,UCS服务将资源对象按照工作负载、服务、配置和存储、身份验证、授权、权限、扩展、集群维度划分。

      若系统资源中没有您需要的资源对象,也可以新增自定义资源对象。

      如果针对不同资源对象,操作类型不同(例如:对deployments具有create、delete操作权限,对secrets具有get、list、watch操作权限),可以单击按钮添加多组内容。

      若您想了解更多资源对象和操作类型的知识,请参阅Kubernetes API

    • 描述:添加权限的描述信息。

  4. 单击“确定”。权限创建完成后,需要继续关联舰队或未加入舰队的集群,才可正常操作Kubernetes资源。

关联权限至舰队或未加入舰队的集群

舰队是多个集群的集合,舰队可以实现多集群的权限统一管理。因此建议您将集群加入舰队后,为舰队关联权限,这样舰队中的集群将具有相同的权限。

  1. 登录UCS控制台,在左侧导航栏中选择“容器舰队”
  2. 在目标舰队栏中,单击右上角的按钮。

    图3 为舰队关联权限

  3. 在弹出的页面单击“修改容器舰队权限”或“关联权限”,打开修改权限页面,将已创建好的权限和舰队的命名空间关联起来。

    图4 修改权限
    • 命名空间:支持“全部命名空间”和“指定命名空间”。全部命名空间包括当前舰队已有的命名空间和舰队后续新增的命名空间;“指定命名空间”即表示您自己选择命名空间的范围,UCS服务提供了几个常见的命名空间供您选择(如default、kube-system、kube-public),您也可以新增命名空间,但要自行确保新增的命名空间在集群中存在。

      请注意,选择的命名空间仅对权限中命名空间级资源生效,不影响权限中的集群资源。关于命名空间级和集群级资源的介绍,请参见Kubernetes资源对象章节。

    • 关联权限:从下拉列表中选择权限,支持一次性选择多个权限,以达到批量授权的目的。

    本示例中,选择“default”命名空间,选择“readonly”权限。

    如果针对不同命名空间,关联的权限不同(例如:为default命名空间关联readonly权限,为development命名空间关联develop权限),可以单击按钮添加多组授权关系。

  4. 单击“确定”,完成权限的关联。

    如果后续需要修改舰队的权限,采用同样的方法,重新选择命名空间和权限即可。

验证权限是否生效

新创建的“readonly_user”用户登录控制台,验证权限是否生效(以附着集群为例):

  • 进入舰队中附着集群的控制台,选择“资源 > 工作负载”,如果可以正常查看default命名空间下的工作负载,但是查看其他命名空间下的工作负载时提示无权限,表示“只读权限”已生效。
  • 进入舰队中附着集群的控制台,选择“资源 > 工作负载”,切换至default命名空间,单击右上角“创建负载”按钮,若提示无权限,表示“只读权限”已生效。