错误地使用rbac更新了configmap aws-auth,导致无法访问集群。

14

尝试使用AWS EKS集群的rbac限制IAM用户,错误地从kube-system命名空间更新了configmap“aws-auth”。这将完全访问EKS集群的权限删除。

在用户的configmap中漏掉了组:

尝试为最后在configmap中提到的用户/角色提供完整的管理员访问权限,但没有成功。

任何恢复访问该集群的想法将不胜感激。

config-map.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapUsers: |
    - userarn: arn:aws:iam::1234567:user/test-user
      username: test-user
2个回答

13

为了解决这个问题,我们找到了一个方法:

由于默认情况下创建 EKS 集群的 IAM 用户拥有对集群的完全访问权限,即使 aws-auth 配置映射表中没有该用户。但是由于创建该用户的 IAM 用户已被删除,因此我们重新创建了该 IAM 用户,这样它将具有相同的 arn (如果使用与之前相同的名称创建 IAM 用户)。

一旦为该用户创建了凭证(访问密钥和秘密密钥),我们就可以重新获得对 EKS 集群的访问权限。随后,我们根据需要修改了配置映射表。


0

我会尝试的第一件事是恢复原始的aws-auth ConfigMap(您可以在这里找到它):

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: <ARN of instance role (not instance profile)>
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes

rolearn的占位符替换为与您的工作节点关联的IAM角色的ARN,如EKS文档中所述。

当集群再次工作时,您可以再次将IAM用户添加到ConfigMap中,这也在EKS文档中有描述。


5
我该如何修改ConfigMap呢?因为我一开始就失去了对集群的访问权限。我遇到了同样的问题,请给予建议。 - Anil Bhargava
一种可能性是,如果您的其中一个Pod使用了具有修改ConfigMaps权限的ServiceAccount:请使用SSH登录到运行Pod的节点,然后在Pod的Docker容器中执行(docker exec -ti <container> bash),并在/var/run/secrets/kubernetes.io/serviceaccount/token中检索ServiceAccount令牌。然后,您可以使用此令牌通过kubectl从本地机器访问集群。 - weibeld
@AnilBhargava 很抱歉回复晚了。如果您是创建该用户的IAM用户,即使您错误地删除了配置映射,您的IAM用户仍具有根访问权限。这样,您可以使用iam arn和access、secret key,重新获得对集群的访问权限。 - Sandy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接