EKS Access Entry是AWS于2023年推出的一种新机制,用于管理对EKS集群的访问权限
aws iam create-user --user-name eks-user
aws iam create-access-key --user-name eks-user
返回结果如下,注意保存ak/sk:
{
"AccessKey": {
"UserName": "eks-user",
"AccessKeyId": "AKIAxxxxxxxxx7QE",
"Status": "Active",
"SecretAccessKey": "YGlk7xxxxxxxxxxxxxfLZzIdMwba",
"CreateDate": "2025-04-18T07:33:33+00:00"
}
}
在控制台上能看到新创建出来的用户:
给它添加EKS Describe相关的权限,创建一个inline-policy.json
, 内容如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "eks:DescribeCluster",
"Resource": "*"
}
]
}
给用户添加这个权限
aws iam put-user-policy \
--user-name eks-user \
--policy-name EKSDescribeClusterPolicy \
--policy-document file://inline-policy.json
# 创建用户的Access Entry
aws eks create-access-entry \
--cluster-name your-cluster-name \
--principal-arn arn:aws:iam::ACCOUNT_ID:user/eks-user \
--username eks-user \
--type STANDARD
返回结果:
在eks页面上能看到新创建的access entry:
给这个access entry 加上AmazonEKSClusterAdminPolicy
权限:
# 将用户关联到一个或多个Kubernetes组
aws eks associate-access-policy \
--cluster-name your-cluster-name \
--principal-arn arn:aws:iam::ACCOUNT_ID:user/eks-user \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
--access-scope type=cluster
返回结果:
用户需要配置AWS CLI并更新kubeconfig:
# 配置AWS CLI
aws configure
# 更新kubeconfig
aws eks update-kubeconfig \
--name your-cluster-name \
--region your-region
然后执行kubectl 命令,有权限访问到集群
EKS Access Entry提供几种预定义的访问策略:
使用IAM角色而非用户:生产环境中优先使用IAM角色
利用访问范围:使用namespace限制权限范围
Access Entry提供更安全、更可靠、更易管理的方式来控制谁可以访问您的Kubernetes集群及其资源。