RBAC(Role-Based Access Control)是基于角色的访问控制。通过RBAC授权,您可以将权限与集群角色相关联,从而为不同角色成员配置不同的Kubernetes资源操作权限,降低账号安全风险。本文介绍如何为RAM用户(子账号)或RAM角色配置对应的Kubernetes集群内RBAC权限。
配置说明
| 配置项 | 说明 | 
| 默认权限 | 
 | 
| 授权方式 | 
 说明  开始授权前,请先确保目标RAM用户或RAM角色在RAM管理控制台中已被授予指定集群的RAM只读权限。 | 
| 授权模式 | 支持对多个目标RAM用户或RAM角色进行单个和批量授权。 | 
由于阿里云RAM的安全限制,当您通过容器计算服务控制台修改RAM用户或RAM角色的RAM授权时,请按照页面提示的参考策略内容和操作说明在RAM控制台为目标RAM用户或RAM角色进行手动授权。
为RAM用户或RAM角色授予RBAC权限
- 登录容器计算服务控制台,在左侧导航栏选择授权管理。 
- 在授权管理页面为RAM用户或RAM角色配置管理权限。 重要- 因为ACS集群是ACK Serverless类型集群之一,所以如果您已经或者将通过ACK控制台对RAM用户或RAM角色授予“所有集群”RBAC权限,那么“所有集群”中包括ACS集群,您将无法再通过容器计算服务ACS产品控制台对ACS集群做单独授权,默认继承“所有集群”授权策略。 - 为RAM用户授权 - 单击子账号页签,在RAM用户列表,单击目标RAM用户右侧的管理权限,进入权限管理弹窗页面。 
- 为RAM角色授权 - 单击RAM 角色页签,输入RAM 角色名称后单击管理权限,进入权限管理弹窗页面。 
 
- 在权限管理弹窗页面中单击+添加权限,为目标RAM用户或RAM角色添加集群和命名空间级别的权限配置,并选择相应的预置角色,然后单击提交授权。 - 预置角色 - 集群内RBAC权限 - 管理员 - 对所有命名空间下所有资源的读写权限。 - 运维人员 - 对所有命名空间下控制台可见Kubernetes资源的读写权限,对集群存储卷、命名空间、配额的只读权限。 - 开发人员 - 对所有命名空间或所选命名空间下控制台可见Kubernetes资源的读写权限。 - 受限用户 - 对所有命名空间或所选命名空间下控制台可见Kubernetes资源的只读权限。 - 自定义 - 权限由您所选择的ClusterRole决定,请在确定所选ClusterRole对各类资源的操作权限后再进行授权,以免RAM用户或RAM角色获得不符合预期的权限。您可以参考下文,展开查看如何查看自定义权限。 重要- RAM用户或RAM角色被授予cluster-admin权限后,在该集群内可视为与阿里云账号有相同权限的超级账号,拥有操作集群内所有资源的任意权限,请务必谨慎授权。 
- 配置完成后,您可以使用目标RAM用户或RAM角色登录容器计算服务控制台,并进行相关操作。 说明- 请确保您需要使用的RAM用户或RAM角色已完成集群的RAM授权,同时已被授予集群内RBAC管理员权限或cluster-admin角色。详细操作,请参见为RAM用户或RAM角色授予RAM权限。 
- ACS预置角色包括管理员、运维人员、开发人员和受限用户四种标准的访问权限,可满足大部分用户的使用需求。如果您想自由定义集群的访问权限,可选择ACS内置的自定义角色,使用自定义权限功能。 
- 在一个目标集群或命名空间中为RAM用户或RAM角色的授权时,支持配置一个预置角色和多个自定义角色。 
- 如果您希望在所有集群维度为RAM用户或RAM角色进行一键授权,使得后续新创建的集群也会为被授权的RAM用户或RAM角色自动绑定已经授权的预置角色,您可以选择集群为所有集群。 
 
通过RAM用户或RAM角色为其他账号授予RBAC权限
默认情况下,RAM用户或RAM角色不具备对其他RAM用户或RAM角色进行RBAC授权的能力。如果您需要通过某个RAM用户或RAM角色为其他账号进行RBAC授权,您需要使用阿里云账号或具备所有集群RBAC管理员角色的RAM用户为该RAM用户或RAM角色授予所需的RAM权限和RBAC权限。
RAM权限
您需要给该RAM用户或RAM角色授予相应的RAM权限策略,策略包括以下内容:
- 查看其他RAM账号。 
- 授予RAM权限策略。 
- 查看集群信息。 
- 查看RBAC权限配置。 
- RBAC授权能力。 
- 登录RAM管理控制台,参考以下代码示例,为该RAM用户或RAM角色授予所需的RAM权限。更多信息,请参见为RAM用户或RAM角色授予RAM权限。 重要- 请将 - xxxxxx替换为需要绑定的RAM策略的名称。替换为*,表示RAM用户或RAM角色拥有所有RAM策略的授权绑定能力。“Resource”:“*” 表示授权该uid下所有资源的鉴权Action操作,ACK OpenAPI (cs:*) 包括除ACS类型集群外所有ACK集群操作权限,请务必谨慎授权。- { "Statement": [{ "Action": [ "ram:Get*", "ram:List*", "cs:DescribeClustersV1", "cs:GrantPermission" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ram:AttachPolicyToUser", "ram:AttachPolicy" ], "Effect": "Allow", "Resource": [ "acs:ram:*:*:policy/xxxxxx", "acs:*:*:*:user/*" ] } ], "Version": "1" }
- 授权完成后,该RAM用户或RAM角色可以在指定策略范围内对其他RAM用户或RAM角色进行RAM授权。 
RBAC权限
- 授予所需的RAM权限后,您还需要为该RAM用户或RAM角色在目标集群或命名空间上授予预置角色管理员或者自定义权限策略中的cluster-admin角色。具体操作,请参见授权对象为集群内应用的权限管理员。 
将RAM用户或RAM角色设置为权限管理员
如果您不方便使用阿里云账号为RAM用户或RAM角色进行授权,您可以将某个RAM用户或RAM角色设置为权限管理员,随后使用该RAM用户或RAM角色进行授权操作。
- 登录RAM管理控制台,定位目标RAM用户或RAM角色。 - RAM用户 - 选择,在用户列表的操作列,单击添加权限。 
- RAM角色 - 选择,在角色列表的操作列,单击添加权限。 
 
- 在新增授权弹窗页面中,点击权限策略中的搜索框,根据名称分别搜索 - AliyunRAMFullAccess和- AliyunACCFullAccess系统策略,然后勾选策略添加到右侧的已选择权限策略区域,接着单击确认新增授权并关闭弹窗完成授权。
- 登录容器计算服务控制台为该RAM用户或RAM角色在所有集群维度授予预置角色管理员。具体操作,请参见为RAM用户或RAM角色授予RBAC权限。 
- 完成上述步骤后,该RAM用户或RAM角色成为一个权限管理员,拥有给其他RAM用户或RAM角色进行RAM授权和RBAC授权的能力。 
无权限错误码说明
当您通过控制台或OpenAPI所做的部分操作缺少所需的RBAC权限时,控制台或OpenAPI将返回相应的无权限错误码。各个错误码对应操作所需的集群RBAC权限说明如下表所示。
| 错误码或错误信息 | 所需的集群RBAC权限 | 
| ForbiddenCheckControlPlaneLog | 管理员或运维人员权限。 | 
| ForbiddenHelmUsage | 管理员权限。 | 
| ForbiddenRotateCert | 管理员权限。 | 
| ForbiddenQueryClusterNamespace | 管理员、运维人员、开发人员或受限用户权限。 |