容器服务ACK的授权体系融合了阿里云访问控制(RAM)与Kubernetes原生的RBAC(Role-Based Access Control)机制,支持对基础资源层和集群内部资源的权限控制,为您提供灵活的多层次权限管理解决方案。
授权体系
容器服务ACK的授权体系包含对基础资源层的RAM授权以及对集群层的RBAC授权。授权体系如下图所示。
RAM授权:基于RAM系统策略或自定义策略的授权,属于云资源维度的授权,通过RAM授权,您可以获取容器服务ACK产品及其所依赖阿里云云产品的OpenAPI操作权限,对集群进行如下运维操作:
集群:创建、查看、升级、删除
节点池:创建、修改、扩缩容
授权管理
集群监控、日志、事件
RBAC授权:基于Kubernetes RBAC的授权,属于集群内部资源维度的授权,通过RBAC授权,可以让不同的用户拥有操作不同Kubernetes资源的操作权限。主要包括对以下Kubernetes对象资源的增删改查操作:
工作负载:Deployment、StatefulSet、DaemonSet、Job、CronJob、Pod、ReplicaSet等
网络:Service、Ingress、NetworkPolicy等
存储:PV、PVC、StorageClass等
Namespace、ConfigMap 、Secrets等
权限类型
权限类型 | 是否必须授权 | 权限说明 |
RAM授权 |
|
|
RBAC授权 |
| 授权后,RAM用户或RAM角色才能对集群内的Kubernetes资源进行操作。 |
RAM授权
默认情况下,RAM用户或RAM角色没有使用云服务OpenAPI的任何权限,当您需要通过RAM用户或RAM角色管理云服务资源时,您可以为RAM用户或RAM角色配置系统策略及自定义策略的权限,以适应不同的场景需求。具体操作,请参见使用RAM授予集群及云资源访问权限。
RAM授权其他使用场景
您可以使用标签对集群做分类,并匹配对应的RAM权限策略,实现集群的精细化权限管理,使不同的用户可以拥有不同的集群的访问权限。具体操作,请参见通过标签实现精细化权限管理。
当您通过Worker RAM角色为特定的应用授权时,权限将会共享给集群内所有的节点,可能会存在非预期的权限扩散的风险。您可以在创建节点池时为其指定一个自定义的Worker RAM角色,通过为不同的节点池分配特定的角色,降低在集群所有节点中共用一个Worker RAM角色可能存在的风险。具体操作,请参见使用自定义Worker RAM角色。
如需提升集群内应用访问其他云服务的安全性,您可以通过RRSA配置ServiceAccount的RAM权限实现Pod权限隔离。具体操作,请参见通过RRSA配置ServiceAccount的RAM权限实现Pod权限隔离。
为了提升ACK托管集群节点的安全性,您可以基于最小化原则手动调整和优化已分配给Worker节点的RAM角色所具有的权限。具体操作,请参见手动收敛ACK托管版集群的Worker RAM角色权限。
RBAC授权
RAM授权后仅拥有集群的操作权限,若RAM用户或RAM角色需要操作指定集群内Kubernetes资源时(例如,获取集群Pod和节点信息),您需要在的授权管理页面对指定RAM用户或RAM角色进行RBAC授权。
Kubernetes RBAC支持以下类型的角色和绑定,通过角色定义资源的访问权限时,仅支持允许访问资源,不支持拒绝访问资源。关于如何编写Kubernetes的ClusterRole和Role,请参见使用自定义RBAC限制集群内资源操作。
Role:角色,定义对单个命名空间内资源的访问权限。
RoleBinding:角色绑定,定义用户和角色的关系。
ClusterRole:集群角色,定义对整个集群内资源的访问权限。
ClusterRoleBinding:集群角色绑定,定义用户和集群角色的关系。
当前容器服务的授权管理仅支持自定义ClusterRole与集群的RAM用户或RAM角色的绑定,不支持自定义Role与集群的RAM用户或RAM角色的绑定。
容器服务管理控制台预置了多种ClusterRole,方便您为RAM用户或角色分配对应的权限。具体操作,请参见使用RBAC授予集群内资源操作权限。
表 1. 角色权限说明
角色 | 集群内RBAC权限 |
管理员 | 对所有命名空间下所有资源的读写权限。 |
运维人员 | 对所有命名空间下控制台可见资源的读写权限,对集群节点、存储卷、命名空间、配额的只读权限。 |
开发人员 | 对所有命名空间或所选命名空间下控制台可见资源的读写权限。 |
受限用户 | 对所有命名空间或所选命名空间下控制台可见资源的只读权限。 |
自定义 | 权限由您所选择的ClusterRole决定,请在确定所选ClusterRole对各类资源的操作权限后再进行授权,以免RAM用户或RAM角色获得不符合预期的权限。关于ClusterRole的更多信息,请参见使用自定义RBAC限制集群内资源操作。 |
当RAM用户或RAM角色需要进行集群运维和应用运维时,您需要依次对其进行RAM授权和RBAC授权。在进行RBAC授权前,您需要先进行RAM授权。三种典型场景的授权操作,如下所示:
如果授权对象为集群与集群内应用的运维人员,请参见场景一:授权对象为集群与集群内应用的运维人员。
如果授权对象为集群内应用的开发人员,请参见场景二:授权对象为集群内应用的开发人员。
如果授权对象为集群内应用的权限管理员,请参见场景三:授权对象为集群内应用的权限管理员。
对于离职员工或非受信人员,删除RAM用户或RAM角色并不会同步删除该用户或角色拥有的集群KubeConfig中的RBAC权限。因此,删除RAM用户或RAM角色以后,请您及时清除离职员工或非受信用户的KubeConfig权限。具体操作,请参见清除KubeConfig。