EKS授权普通用户拥有K8S集群权限


在aws的EKS中,默认创建集群用户是集群的owner用户,如果需要授权给开发、测试、运维人员,需要进行单独授权。

aws的页面管理控制台没有那么容易点点点,就可以让你把这种集群授权授予某一个用户,这一点阿里云的管理后台就做的非常不错。
阿里云是先授权某个用户具有RAM权限或者加入某个有RAM权限的组。然后再进行RBAC权限关联(比如集群、命名空间、 角色(管理员 运维人员 开发人员 受限用户 自定义))等。非常人性化,所见即所得。 但是aws控制台就比较‘大道至简’了。

aws的授权也分为两个步骤。

1.创建iam用户并授权相应的权限
IAM有基于身份、资源的授权策略配置。比如基于身份的策略授权有,允许执行动作、列出集群eks,操作对应的资源(集群)等。
授权了某个用户针对某个集群有什么样的权限,还是第一步。并未完成,还需要进行RBAC关联。 授权IAM用户或者组,有很多角色(集群、节点、pod),根据不同场景,有不同的IAM角色选择,比如自动节点组加入,需要节点组角色权限授权于AWS。他会根据你设置AS弹性伸缩策略进行拉起或者缩小集群节点。
2.在eks集群中根据RBAC再次授权(aws-auth ConfigMap)

默认的eks角色和绑定、用户有下面的:

Roles

eks:authenticator

eks:certificate-controller-approver

eks:certificate-controller

eks:cluster-event-watcher

eks:fargate-scheduler

eks:k8s-metrics

eks:nodewatcher

eks:pod-identity-mutating-webhook

RoleBindings

eks:authenticator

eks:certificate-controller-approver

eks:certificate-controller

eks:cluster-event-watcher

eks:fargate-scheduler

eks:k8s-metrics

eks:nodewatcher

eks:pod-identity-mutating-webhook

Users

eks:authenticator

eks:certificate-controller

eks:cluster-event-watcher

eks:fargate-scheduler

eks:k8s-metrics

eks:nodewatcher

eks:pod-identity-mutating-webhook

运行kubectl describe clusterrole 以查看每个角色的权限。
创建好IMA用户后,拿到arn,再修改configmap即可

#获取当前集群配置文件
k get cm/aws-auth -n kube-system -o yaml
  mapUsers: |
    - userarn: arn:aws-cn:iam::0000xxxxxxxxx:user/sa-sk
      username: sa-sk
      groups:
        - system:masters
    - userarn: arn:aws-cn:iam::0000xxxxxxxxx:user/cicd
      username: cicd
      groups:
        - system:masters    

把userarn加入保存后,应用该yaml即可生效授权!

参考:https://aws.amazon.com/cn/premiumsupport/knowledge-center/amazon-eks-cluster-access/