AKS Azure RBAC 概念解析

02/05 07:26
阅读数 91

这两篇准备来谈谈Azure中关于AKS的RBAC,正好之前刚刚谈完AKS和AzureAD的集成,AKS在这方面稍显复杂一些,所以可以先把一些基础的概念做下普及

正常来讲,如果AKS集群没开启和Azure AD集成的话,那么如果想对集群进行操作的话,有几种途径

  1. 有对AKS的管理权限,可以下载kubeconfig,并且所处的角色有操作集群资源的权限,这种情况一般拿到的就是cluster admin的权限

  2. 如果想划分细粒度的权限,可以按照传统的K8S RBAC方式创建用户等,但是没办法赋权给AzureAD的identity

如果开启了Azure AD集成的话,则可以结合K8S本身的RBAC,把权限授权给AzureAD的用户和组等,这样授权其实对用户来说使用要方便很多,所以还是建议把Azure AD集成打开

而今天要讲的这个Azure RBAC其实是独立出来的另外一个概念,Azure对于每个服务其实都有一些特定的role,比如vm会有virtual machine contributor这种role,AKS也不例外,这方面的内置角色主要有两种

  1. 名字带RBAC的

    1. Azure Kubernetes 服务 RBAC 查看者

    2. Azure Kubernetes 服务 RBAC 写入者

    3. Azure Kubernetes 服务 RBAC 管理员

    4. Azure Kubernetes 服务 RBAC 群集管理员

  2. 名字不带RBAC的

    1. Azure Kubernetes 服务参与者角色

    2. Azure Kubernetes 服务群集用户角色

    3. Azure Kubernetes 服务群集管理员角色

这两种类型的角色侧重点有所不同

  • 带RBAC的角色对AKS集群本身没有任何管理权限,连集群信息都看不到,纯粹是管理AKS集群内部resource的,比如pod, namespace等等

  • 不带RBAC的角色其实名字听起来很混淆,看起来好像都能管理集群,但是实际则不然,只有Azure Kubernetes 服务参与者角色对AKS集群有管理权限,可以执行升级,删除等操作,那剩下两个集群用户和集群管理员是做啥的呢。。说起来感觉会有点怪,这俩角色其实唯一的权限就是可以下载kubeconfig。。只不过集群用户角色下载的是普通用户的config,而集群管理员可以通过--admin的参数,绕过AzureAD的身份验证,直接拿到admin权限

经过简单解释,相信对于这些内置角色,应该能有一定认知了,我们要特别讲的Azure RBAC其实特指的是名字带RBAC的这几个角色,首先可以来看下这些角色的定义

https://docs.microsoft.com/zh-cn/azure/aks/concepts-identity?WT.mc_id=AZ-MVP-5001235

角色 描述
Azure Kubernetes 服务 RBAC 查看者 允许进行只读访问并查看命名空间中的大多数对象。 不允许查看角色或角色绑定。 此角色不允许查看 Secrets,因为通过读取机密内容可以访问命名空间中的 ServiceAccount 凭据,这样就会允许以命名空间中任何 ServiceAccount 的身份进行 API 访问(一种特权提升形式)
Azure Kubernetes 服务 RBAC 写入者 允许对命名空间中的大多数对象进行读/写访问。 此角色不允许查看或修改角色或角色绑定。 但是,此角色允许以命名空间中任何 ServiceAccount 的身份访问 Secrets 和运行 Pod,因此可用于获取命名空间中任何 ServiceAccount 的 API 访问级别。
Azure Kubernetes 服务 RBAC 管理员 允许要在命名空间内授予的管理员访问权限。 允许对命名空间(或群集范围)中的大多数资源进行读/写访问,包括在命名空间内创建角色和角色绑定。 此角色不允许对资源配额或命名空间本身进行写入访问。
Azure Kubernetes 服务 RBAC 群集管理员 允许超级用户访问权限(对任何资源执行任何操作)。 它提供对群集中每个资源和所有命名空间的完全控制。


听起来很实用的样子,有了这几个角色,其实我们就不需要那么麻烦要自己通过role binding来分配权限了,但是实际上想把这个功能用起来真的没那么容易,需要不少弯弯道道

  1. 需要开启Azure AD集成

  2. 需要开启K8S RBAC

  3. 这个feature是个preview的feature,还需要先进行注册才能使用,否则是没办法用起来的,我刚开始也是被坑了一道才发现了这个问题

而且21v版本的RBAC角色定义还有点问题,之前reader角色允许的操作里居然有不少write,提了case之后现在已经改过来了

而把这几个前提条件都搞定之后,才能让你真的用上这个功能!

后边就来看下具体怎么操作

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部