您当前的用户或角色无权访问此 EKS 集群上的 Kubernetes 对象

ben*_*ouf 23 amazon-web-services amazon-iam kubernetes amazon-eks eksctl

不知道这是 AWS 的错误还是其他错误。我创建了一个 IAM 用户并为其提供了完整的管理策略。然后,我使用该用户通过 CLI 创建 EKS 集群,但是当我使用root 用户eksctl登录 AWS 控制台时,在尝试访问集群节点时出现以下错误。

\n

您当前的用户或角色无权访问此 EKS 集群上的 Kubernetes 对象\n这可能是由于当前用户或角色没有描述集群资源的 Kubernetes RBAC 权限,或者在集群中没有条目\xe2\x80\x99s身份验证配置映射。

\n

我有这些问题

\n
    \n
  1. root 用户是否具有从控制台查看每个资源的完全访问权限?
  2. \n
  3. 如果上述情况成立,是否意味着当我从 CLI 创建资源时,我必须使用同一用户登录才能查看它?
  4. \n
  5. 或者有什么方法可以将策略附加到根用户?没有在控制台中看到类似的内容。
  6. \n
\n

AWS本身不建议为root用户创建访问密钥并将其用于可编程访问,所以我现在很困惑。有人帮忙

\n

到目前为止我看到的所有问题以及此处文档的链接都在讨论在 AWS IAM 中创建的用户或角色,而不是根用户。

\n

Env*_*nve 43

如果您使用 root 用户登录并收到此错误,请运行以下命令来编辑 configMap aws-auth

kubectl edit configmap aws-auth -n kube-system
Run Code Online (Sandbox Code Playgroud)

然后向下mapUsers添加以下内容(替换[account_id]为您的帐户 ID)

mapUsers: |
  - userarn: arn:aws:iam::[account_id]:root
    groups:
    - system:masters
Run Code Online (Sandbox Code Playgroud)

  • 我的 EKS 集群是由 Cloudformation 模板创建的,而不是通过任何 CLI 创建的,我遇到了完全相同的问题。在哪里运行命令“kubectl edit configmap aws-auth -n kube-system”? (2认同)

小智 9

据我了解,EKS 通过驻留aws-authkube-system命名空间中的 ConfigMap 来管理用户和角色权限。因此,尽管使用对所有服务具有完全管理员访问权限的 AWS 用户登录,EKS 仍会限制您在控制台中的访问,因为它无法在其身份验证配置中找到用户或角色。

当我遇到这个问题时,我通过在 mapRoles 下添加以下内容来编辑 aws-auth configmap 来解决它:

- "groups":
  - "system:masters"
  "rolearn": "arn:aws:iam::<aws-account-id>:role/<aws-role-name>"
  "username": "<aws-username>"

Run Code Online (Sandbox Code Playgroud)

aws-role-name登录 aws 控制台时右上角显示的角色名称在哪里。

我想这也可以使用eksctl此处记录的 -utility 来完成:https ://eksctl.io/usage/iam-identity-mappings/

所以,也许是这样的:

eksctl create iamidentitymapping --cluster <clusterName> --region=<region> --arn arn:aws:iam::<aws-account-id>:role/<aws-role-name> --group system:masters --username <aws-username>

使用eksctl可能是更好的方法,尽管我自己还没有尝试过。


man*_*ran 4

我今天遇到了这个问题,并通过合并此处的答案解决了它。工作后的 aws-auth 配置如下所示:

apiVersion: v1
data:
  mapRoles: |
    - groups:
      - system:bootstrappers
      - system:nodes
      rolearn: arn:aws:iam::671177010163:role/eksctl-manu-eks-new2-nodegroup-ng-NodeInstanceRole-1NYUHVMYFP2TK
      username: system:node:{{EC2PrivateDNSName}}
  mapUsers: "- groups: \n  - system:masters\n  userarn: arn:aws:iam::671177010163:root\n"
kind: ConfigMap
metadata:
  creationTimestamp: "2022-02-13T11:03:30Z"
  name: aws-auth
  namespace: kube-system
  resourceVersion: "11362"
  uid: ac36a1d9-76bc-40dc-95f0-b1e7934357
Run Code Online (Sandbox Code Playgroud)