AWS EKS 添加IAM用户角色

网友投稿 310 2022-09-30

AWS EKS 添加IAM用户角色

作者:​​SRE运维博客​​博客地址: ​​文章地址:​​​​Amazon EKS​​ 集群时,​​IAM​​ 用户或角色会自动在集群的 ​​RBAC​​ 配置中被授予 ​​system:masters​​ 权限。例如,​​IAM​​ 用户或角色可以是创建集群的联合身份用户。如果使用不属于 ​​aws-auth​​ ​​ConfigMap​​ 的 ​​IAM​​ 用户或角色访问 ​​Amazon EKS​​ 控制台,则无法看到 ​​Kubernetes​​ 工作负载。也不会看到集群的概览详细信息。所以要向其他 ​​AWS​​ 用户或角色授予与集群交互的能力,您必须在 ​​Kubernetes​​ 中编辑 ​​aws-auth​​ ​​ConfigMap​​。 因为部门有不通的角色,所以想基于不通的角色分配不同的权限,下面是记录添加一个对 ​​EKS​​ 只有只读权限的 ​​AIM​​ 用户。 {{< notice info "注意:" >}} 如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,​​请确保您使用的是最新版的 AWS CLI​​。 {{< /notice >}}

为 IAM 用户或角色配置权限

要查找具有主要集群配置权限的集群创建者或管理员角色,请在 AWS CloudTrail 中搜索 ​​CreateCluster​​ API 调用。然后,检查此 API 调用的 UserIdentity 部分。识别需要权限的 IAM 用户或角色。确认已识别的 IAM 用户或角色有权在 AWS 管理控制台中查看所有集群的节点和工作负载。

使用 aws-auth ConfigMap 将 IAM 用户或角色映射到 RBAC 角色和组

{{< notice info "重要提示:" >}} 在连接 Amazon EKS API 服务器之前,​​安装​​并​​配置​​最新版本的 AWS CLI。 {{< /notice >}} 获取 AWS CLI 用户或角色的配置:

aws sts get-caller-identit

输出将返回 IAM 用户或角色的 Amazon 资源名称 (ARN)。例如:

{ "UserId": "XXXXXXXXXXXXXXXXXXXXX", "Account": "XXXXXXXXXXXX", "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"

确认 ARN 与具有主要集群配置访问权限的集群创建者或管理员相匹配。如果 ARN 与集群创建者或管理员不匹配,请联系集群创建者 aws-auth ConfigMap。

添加对 EKS 集群具有只读访问权限的 IAM 用户

{{< notice info "注意:" >}} 要允许超级用户访问权限以对任何资源执行任何操作,请添加 system:masters 而非 system:bootstrappers 和 system:nodes。有关更多信息,请参阅 Kubernetes 网站上的​​默认角色和角色绑定​​。 {{< /notice >}} 创建 rbac.yaml

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: readerrules:- apiGroups: ["*"] resources: ["deployments", "configmaps", "pods", "secrets", "services"] verbs: ["get", "list", "watch"]---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: readersubjects:- kind: Group name: reader apiGroup: rbac.authorization.k8s.ioroleRef: kind: ClusterRole name: reader apiGroup: rbac.authorization.k8s.i

要添加 IAM 用户或角色,请完成以下步骤之一。 添加 IAM 用户到 mapUsers。

... mapUsers: | - userarn: arn:aws:iam::424432388155:user/developer username: developer groups: - reader..

创建 RBAC

kubectl apply -f rbac.yam

在AWS 中创建 ​​AmazonEKSDeveloperPolicy​​ 策略以让用户在 AWS 管理控制台中查看所有集群的节点和工作负载

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeNodegroup", "eks:ListNodegroups", "eks:DescribeCluster", "eks:ListClusters", "eks:AccessKubernetesApi", "ssm:GetParameter", "eks:ListUpdates", "eks:ListFargateProfiles" ], "Resource": "*" } ]

创建​​eks-developer​​IAM 组并附加​​AmazonEKSDeveloperPolicy​​策略创建​​developer​​用户添加​​developer​​个人资料​​aws configure --profile developer​​添加到​​aws-auth​​configmap​​developer​​用户 ARN。

kubectl edit -n kube-system configmap/aws-auth... mapUsers: | - userarn: arn:aws:iam::424432388155:user/developer username: developer groups: - reader..

为​​developer​​用户配置 kubectl 上下文

aws eks --region us-east-1 update-kubeconfig --name eks --profile develope

检查 kubeconfig

kubectl config view --minif

检查权限

kubectl auth can-i get podskubectl auth can-i create podskubectl run nginx --image=ngin

创建具有管理员访问权限的 IAM 角色并由 IAM 用户代入此角色。

创建​​AmazonEKSAdminPolicy​​策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "eks.amazonaws.com" } } } ]

创建​​eks-admin​​角色并附加​​AmazonEKSAdminPolicy​​策略描述​​eks-admin​​角色

aws iam get-role --profile terraform --role-name eks-admi

创建​​AmazonEKSAssumePolicy​​允许承担角色的策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::424432388155:role/eks-admin" } ]

创建​​manager​​用户以使用​​eks-admin​​角色添加​​manager​​个人资料​​aws configure --profile manager​​检查​​manager​​用户是否可以承担​​eks-admin​​角色

aws sts assume-role --role-arn arn:aws:iam::424432388155:role/eks-admin --role-session-name manager-session --profile manage

为创建 EKS 集群的用户更新 kubeconfig

aws eks --region us-east-1 update-kubeconfig --name eks --profile terrafor

添加到​​aws-auth​​configmap​​eks-admin​​角色 ARN。

kubectl edit -n kube-system configmap/aws-auth...- rolearn: arn:aws:iam::424432388155:role/eks-admin username: eks-admin groups: - system:masters..

创建​​eks-admin​​配置文件以承担角色​​vim ~/.aws/config​​

bw4xhc[profile eks-admin]role_arn = arn:aws:iam::424432388155:role/eks-adminsource_profile = manage

为​​manager​​用户配置 kubectl 上下文以自动承担​​eks-admin​​角色

aws eks --region us-east-1 update-kubeconfig --name eks --profile eks-admi

检查 kubeconfig

kubectl config view --minif

检查经理是否具有 EKS 集群的管理员访问权限

kubectl auth can-i "*" "*

作者:​​SRE运维博客]()​​​​博客地址: [) ​​​​文章地址:[https://cnsre.cn/posts/211203931498/​​相关话题:​​https://cnsre.cn/tags/aws/​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot之内嵌tomcat版本升级操作示例
下一篇:Java超详细分析讲解final关键字的用法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~