在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/