学向勤中得,萤窗万卷书。这篇文章主要讲述AWSEKS 添加IAM用户角色相关的知识,希望能为你提供帮助。
作者:??SRE运维博客??因为创建 ?
博客地址: ??https://www.cnsre.cn/??
文章地址:??https://www.cnsre.cn/posts/211203931498/??
相关话题:??https://www.cnsre.cn/tags/aws/??
?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 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/v1
kind: ClusterRole
metadata:
name: reader
rules:
- apiGroups: ["*"]
resources: ["deployments", "configmaps", "pods", "secrets", "services"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: reader
subjects:
- kind: Group
name: reader
apiGroup: rbac.authorization.k8s.io
roleRef:
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 pods
kubectl auth can-i create pods
kubectl 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-admin
source_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://www.cnsre.cn/ )??
??博客地址: [https://www.cnsre.cn/](https://www.cnsre.cn/ ) ??
??文章地址:[https://www.cnsre.cn/posts/211203931498/??
相关话题:??https://www.cnsre.cn/tags/aws/??
【AWSEKS 添加IAM用户角色】
推荐阅读
- jmeter 压测之发送 java 请求
- 如何使用WordPress Meta Box保存多文本框
- 更新wordpress后如何解决php错误
- 如何将wordpress图像调整为固定高度和自动宽度
- 如何在WP-admin用户界面中重命名”作者”标签
- 如何替换wordpress the_title中的文本()
- 如何从WordPress主题定制器中删除菜单部分
- 如何从WordPress中删除()
- 点击特色图片后如何重定向到帖子()