作者: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
用户。
为 IAM 用户或角色配置权限
- 要查找具有主要集群配置权限的集群创建者或管理员角色,请在 AWS CloudTrail 中搜索 CreateCluster API 调用。然后,检查此 API 调用的 UserIdentity 部分。
- 识别需要权限的 IAM 用户或角色。
- 确认已识别的 IAM 用户或角色有权在 AWS 管理控制台中查看所有集群的节点和工作负载。
使用 aws-auth ConfigMap 将 IAM 用户或角色映射到 RBAC 角色和组
获取 AWS CLI 用户或角色的配置:
aws sts get-caller-identity
输出将返回 IAM 用户或角色的 Amazon 资源名称 (ARN)。例如:
{
"UserId": "XXXXXXXXXXXXXXXXXXXXX",
"Account": "XXXXXXXXXXXX",
"Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
}
确认 ARN 与具有主要集群配置访问权限的集群创建者或管理员相匹配。如果 ARN 与集群创建者或管理员不匹配,请联系集群创建者 aws-auth ConfigMap。
添加对 EKS 集群具有只读访问权限的 IAM 用户
创建 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.io
要添加 IAM 用户或角色,请完成以下步骤之一。
添加 IAM 用户到 mapUsers。
...
mapUsers: |
- userarn: arn:aws:iam::424432388155:user/developer
username: developer
groups:
- reader
...
创建 RBAC
kubectl apply -f rbac.yaml
在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
configmapdeveloper
用户 ARN。
kubectl edit -n kube-system configmap/aws-auth
...
mapUsers: |
- userarn: arn:aws:iam::424432388155:user/developer
username: developer
groups:
- reader
...
- 为
developer
用户配置 kubectl 上下文
|
|
- 检查 kubeconfig
|
|
- 检查权限
|
|
创建具有管理员访问权限的 IAM 角色并由 IAM 用户代入此角色。
- 创建
AmazonEKSAdminPolicy
策略
|
|
- 创建
eks-admin
角色并附加AmazonEKSAdminPolicy
策略 - 描述
eks-admin
角色
|
|
- 创建
AmazonEKSAssumePolicy
允许承担角色的策略
|
|
- 创建
manager
用户以使用eks-admin
角色 - 添加
manager
个人资料aws configure --profile manager
- 检查
manager
用户是否可以承担eks-admin
角色
|
|
- 为创建 EKS 集群的用户更新 kubeconfig
|
|
- 添加到
aws-auth
configmapeks-admin
角色 ARN。
|
|
- 创建
eks-admin
配置文件以承担角色vim ~/.aws/config
[profile eks-admin]
role_arn = arn:aws:iam::424432388155:role/eks-admin
source_profile = manager
- 为
manager
用户配置 kubectl 上下文以自动承担eks-admin
角色
|
|
- 检查 kubeconfig
|
|
- 检查经理是否具有 EKS 集群的管理员访问权限
|
|
作者:SRE运维博客
博客地址: https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/211203931498/
相关话题:https://www.cnsre.cn/tags/aws/