Назад | Перейти на главную страницу

Как разрешить дополнительному пользователю AWS получить доступ к EKS?

Я пытаюсь сделать:

[ec2-user@xxxxxxxxx x]$ aws eks update-kubeconfig --name prod-eks-v2 --role-arn arn:aws:iam::9xxxxxxxxxxeks-v2-cluster-ServiceRole-xxxxxxxxxx

An error occurred (AccessDeniedException) when calling the DescribeCluster operation: User: arn:aws:iam::xxxxxxxxxxx:user/ecr is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks:eu-west-1:xxxxxxxxxxxxxxx:cluster/prod-eks-v2

Это для дополнительный пользователь, которого я добавил. Я уже добавил их в aws-auth configmap, добавив следующее:

  mapUsers: |
    - userarn: arn:aws:iam::xxxxxxxxxxxx:user/xxxxxxxxx
    username: admin
    groups:
        - system:masters

Попытка взять на себя роль вручную:

aws sts assume-role --role-arn arn:aws:iam::xxxxxxxx:role/eksctl-prod-eks-v2-cluster-ServiceRole-xxxx --role-session-name test-eks-role

An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::xxxxxxxxxx:user/ecr is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::xxxxxxxxx:role/eksctl-prod-eks-v2-cluster-ServiceRole-xxxxxxxxxxxxxx

Это доверительные отношения json для cluster-ServiceRole ...:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Как я могу это решить? Я следил за документами из https://aws.amazon.com/premiumsupport/knowledge-center/amazon-eks-cluster-access/


Обновить:

Я изменил доверительные отношения, чтобы они были:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com",
        "AWS": "arn:aws:iam::xxxxxxx:user/xxxxxx"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

И может успешно:

aws sts assume-role --role-arn arn:aws:iam::xxxxxxxxxx:role/eksctl-prod-eks-v2-cluster-ServiceRole-OCH0HY9R9WGS --role-session-name test-eks-role

Но я все еще получаю ...is not authorized to perform: eks:DescribeCluster on resourc... при выполнении aws eks update-kubeconfig --name prod-eks-v2.


Обновление 2:

Я добавил пользователя в AmazonEKSWorkerNodePolicy роль, которая теперь позволяет мне успешно сгенерировать конфигурацию с aws eks update-kubeconfig... Однако я получаю error: You must be logged in to the server (Unauthorized) при попытке чего-либо через kubectl....

Нижняя часть файла kubeconfig выглядит так:

users:
- name: arn:aws:eks:eu-west-1:xxxxxxxxxxxx:cluster/prod-eks-v2
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - token
      - -i
      - prod-eks-v2
      - -r
      - arn:aws:iam::xxxxxx:role/eksctl-prod-eks-v2-cluster-ServiceRole-xxxxxxxxxx
      command: aws-iam-authenticator

Обновление 3:

Супер запутался ... Я могу вручную сгенерировать токен и проверить его с помощью:

aws-iam-authenticator token -i prod-eks-v2 -r...
aws-iam-authenticator verify -t ...

Но, как уже упоминалось, делать что-нибудь с kubectl показывает error: You must be logged in to the server (Unauthorized)...

делать kubectl get pods -v=10: показывает:

...
I1115 12:36:42.163298   10509 request.go:942] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
...