EKS 无法使用 Kubectl 向 Kubernetes 进行身份验证 - “用户:无权执行:sts:AssumeRole”

Posted

技术标签:

【中文标题】EKS 无法使用 Kubectl 向 Kubernetes 进行身份验证 - “用户:无权执行:sts:AssumeRole”【英文标题】:EKS not able to authenticate to Kubernetes with Kubectl - "User: is not authorized to perform: sts:AssumeRole" 【发布时间】:2020-02-14 13:05:39 【问题描述】:

我最初运行 aws --region eu-west-1 eks update-kubeconfig --name prod-1234 --role-arn arn:aws:iam::1234:user/chris-devops 以访问 EKS 集群。

当执行以下操作时:kubectl get ... 我收到以下错误:

调用 AssumeRole 时发生错误 (AccessDenied) 操作:用户:arn:aws:iam::1234:user/chris-devops 未授权 执行: sts:AssumeRole 在资源上: arn:aws:iam::1234:user/chris-devops

为什么会出现此错误?我如何获得访问权限?

我已向用户添加以下内容:


    "Version": "2012-10-17",
    "Statement": [
        
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::1234:user/chris-devops"
        
    ]

此外,我还拥有完整的管理员权限:


    "Version": "2012-10-17",
    "Statement": [
        
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        
    ]

我已阅读:https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_cant-assume-role

我的理解是我符合所有标准。

【问题讨论】:

尝试将"Resource": "arn:aws:iam::1234:user/chris-devops改为"Resource":* 谢谢 - 我最初确实有,但没有区别。 也许这可以帮助eksworkshop.com/irsa 【参考方案1】:

你的政策是错误的。用户不能假设另一个 IAM 用户。应该是这样的:


"Version": "2012-10-17",
"Statement": [
    
        "Effect": "Allow",
        "Action": [
            "sts:AssumeRole"
        ],
        "Resource": "arn:aws:iam::1234:role/prod-Eks-1234-admins"
    
]

【讨论】:

你是如何创建这个角色的?如果我理解正确,这个角色的含义应该是 eks 访问您的帐户。这个角色有什么政策? Prod-Eks-1234-admins 谢谢!【参考方案2】:
aws eks --region eu-west-1 update-kubeconfig --name prod-eks-3flXvI2r --role-arn http://arn:aws:iam::1234:role/prod-eks-1234-admins

我必须指定正确的角色...哇哦

【讨论】:

是的,要添加更多详细信息,您需要指定配置 EKS 集群的角色。与您的用户的策略相同,使用配置角色。 你是如何创建这个角色的?如果我理解正确,这个角色的含义应该是可以访问您的帐户。

以上是关于EKS 无法使用 Kubectl 向 Kubernetes 进行身份验证 - “用户:无权执行:sts:AssumeRole”的主要内容,如果未能解决你的问题,请参考以下文章

创建并运行 EMR on EKS 集群

kubectl 等待 AWS EKS 上的服务公开 .status.loadBalancer.ingress 字段中报告的 Elastic Load Balancer (ELB) 地址

来自 EKS 节点的 ERR_CONNECTION_RESET

如何向世界公开我的 nginx EKS 集群?

Kubernetes 命令行工具之kubctl

如何使用 aws-cdk 从 AWS Secrets Manager 导入 EKS 密钥?