Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何解决我的 Amazon EKS 集群中的访问权限问题?
我在尝试授予对我的 Amazon Elastic Kubernetes Service (Amazon EKS) 集群的访问权限时遇到了问题。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
使用 Amazon EKS 访问条目向 AWS Identity and Access Management (IAM) 用户和角色授予对 Kubernetes API 的访问权限。
配置 IAM 主体权限
IAM 主体必须对您的集群具有以下权限:
- CreateAccessEntry
- ListAccessEntries
- DescribeAccessEntry
- DeleteAccessEntry
- UpdateAccessEntry
- ListAccessPolicies
- AssociateAccessPolicy
- DisassociateAccessPolicy
有关 Amazon EKS 权限的详细信息,请参阅 Amazon Elastic Kubernetes Service 定义的操作。
配置访问策略权限
访问策略设置了允许用户访问 Kubernetes API 的访问级别。使用以下策略创建访问条目:
- AmazonEKSAdminPolicy
- AmazonEKSClusterAdminPolicy
- AmazonEKSAdminViewPolicy
- AmazonEKSEditPolicy
- AmazonEKSViewPolicy
当您使用上述策略创建访问条目时,将为 Kubernetes 集群级别权限授予对某个命名空间的访问权限。
**注意:**您无法修改访问策略的内容,也无法创建自己的访问策略。
授予 IAM 用户对您的 Amazon EKS 集群的访问权限
更改身份验证模式
**重要事项:**激活访问条目方法后,无法再次将其关闭。
要使用访问条目,请将 Amazon EKS 集群的身份验证模式更新为 API 或 API_AND_CONFIG_MAP。运行以下 AWS CLI 命令 update-cluster-config:
aws eks update-cluster-config \ --name my-cluster \ --access-config authenticationMode=API_AND_CONFIG_MAP
**注意:**请将 my-cluster 替换为您的集群名称。要永久停用 ConfigMap 方法,请将 API_AND_CONFIG_MAP 替换为 API。
为 IAM 实体创建访问条目并附加访问策略
向集群管理员提供对您的 Amazon EKS 集群的访问权限。首先,运行以下 create-access-entry 命令,为您的 IAM 用户或角色创建访问条目:
aws eks create-access-entry --cluster-name my-cluster \ --principal-arn arn:aws:iam::111122223333:user/example-user
**注意:**请将 my-cluster 替换为您的集群名称,将 arn:aws:iam::111122223333:user/example-user 替换为您的 IAM 角色或用户的 ARN。
然后,运行以下 associate-access-policy 命令,以将 AmazonEKSClusterAdminPolicy 关联到 IAM 用户或角色:
aws eks associate-access-policy --cluster-name my-cluster\ --principal-arn arn:aws:iam::111122223333:user/example-user \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster
**注意:**请将 my-cluster 替换为您的集群名称,将 arn:aws:iam::111122223333:user/example-user 替换为您的 IAM 角色或用户的 ARN。
要向 IAM 用户或角色提供对特定命名空间的管理员访问权限,请运行以下 associate-access-policy 命令:
aws eks associate-access-policy --cluster-name my-cluster\ --principal-arn arn:aws:iam::111122223333:role/example-role \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy \ --access-scope type=namespace,namespaces=test*
**注意:**请将 my-cluster 替换为您的集群名称,将 arn:aws:iam::111122223333:role/example-role 替换为您的 IAM 角色或用户的 ARN。此外,请将 test 替换为您的命名空间名称。
要在 Kubernetes 基于角色的访问控制 (RBAC) 中使用访问条目,请运行以下 create-access-entry 命令:
aws eks create-access-entry --cluster-name my-cluster \ --principal-arn arn:aws:iam::111122223333:role/example-role-2 \ --kubernetes-groups viewers
**注意:**请将 my-cluster 替换为您的集群名称,将 arn:aws:iam::111122223333:user/example-role-2 替换为您的 IAM 角色或用户的 ARN。请将 viewers 替换为您的集群上 Kubernetes 的 RoleBinding 或 ClusterRoleBinding 对象中指定的组的名称。
确认您的 IAM 实体凭证
要检查 AWS CLI 上正在使用的 IAM 用户或角色凭证,请运行以下 get-caller-identity 命令:
aws sts get-caller-identity
命令输出必须返回您为其创建了访问条目的 IAM 用户或角色。如果您收到不同的 IAM 角色或用户,请确保您正确配置了角色或用户的凭证。
为您的 IAM 实体创建 Kubeconfig
要为您的 IAM 角色或用户创建 Kubeconfig,请运行以下 update-kubeconfig 命令:
aws eks update-kubeconfig --name my-cluster --region aws-region
**注意:**请将 my-cluster 替换为您的集群名称,将 aws-region 替换为您的 AWS 区域。
检查您的 Kubernetes 访问权限
确认您的 IAM 实体已通过身份验证,并且您可以访问您的 Amazon EKS 集群资源。
要检查您是否可以在任意命名空间中创建容器组 (pod),请运行以下命令:
kubectl auth can-i create pods --all-namespaces
要检查您是否可以在特定命名空间中列出部署,请运行以下命令:
kubectl auth can-i list deployments.apps -n test
**注意:**请将 test 替换为您的命名空间的名称。
- 语言
- 中文 (简体)

相关内容
AWS 官方已更新 3 年前