Ошибочно обновленная конфигурационная карта aws-auth с rbac и потерянный доступ к кластеру

Пытался ограничить пользователей IAM с помощью rbac кластера AWS EKS. По ошибке обновлена ​​карта конфигурации "aws-auth" из пространства имен kube-system. Это удалило полный доступ к кластеру EKS.

Не удалось добавить группы: в конфигурационную карту для пользователя.

Пытался предоставить полный доступ администратора к пользователю / роли, который в последний раз упоминается в 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

person Sandy    schedule 28.11.2019    source источник


Ответы (2)


Обходили эту проблему:

Поскольку пользователь IAM, создавший кластер EKS, по умолчанию имеет полный доступ к кластеру, несмотря на конфигурационную карту aws-auth. Поскольку созданный пользователь IAM был удален, мы повторно создали пользователя IAM, так как он будет иметь тот же arn (если пользователь IAM создается с тем же именем, что и раньше).

После создания учетных данных пользователя (доступа и секретных ключей) мы получили обратно доступ к кластеру EKS. После чего мы изменили конфигурационную карту по мере необходимости.

person Sandy    schedule 30.11.2019

Первым делом я бы попробовал восстановить исходную 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 на ARN роли IAM, связанной с вашими рабочими узлами, как описано в документация EKS.

Когда кластер снова заработает, вы можете снова добавить пользователей IAM в ConfigMap, что также описано в EKS docs.

person weibeld    schedule 28.11.2019
comment
Как я могу изменить configMap, если я вообще потерял доступ к кластеру? Столкнувшись с той же проблемой. Пожалуйста, предложите. - person Anil Bhargava; 28.04.2020
comment
Одна из возможностей заключается в том, что один из ваших модулей использует ServiceAccount, у которого есть разрешения на изменение карт ConfigMaps: войдите в узел, на котором работает модуль, с помощью SSH, выполните команду в контейнере Docker модуля (docker exec -ti <container> bash) и получите токен ServiceAccount в /var/run/secrets/kubernetes.io/serviceaccount/token. Затем вы можете использовать этот токен для доступа к кластеру с локального компьютера с помощью kubectl. - person weibeld; 28.04.2020
comment
@AnilBhargava Извините за поздний ответ. Если вы являетесь пользователем IAM, создавшим пользователя, даже если вы удалили карту конфигурации по ошибке, ваш пользователь IAM еще имеет root-доступ. Таким образом, вы можете использовать iam arn & access, секретный ключ, вы можете получить доступ на задней панели кластера. - person Sandy; 15.12.2020