Не может взять на себя роль в командной строке AWS, даже с доверительными отношениями

#amazon-web-services #amazon-iam #aws-cli #amazon-eks #assume-role

#amazon-web-services #amazon-iam #aws-cli #amazon-eks #предположим-роль

Вопрос:

Я пытаюсь взять на себя роль в awscli с моим пользователем (из объединенной учетной записи), но я не могу.

Каждый раз, когда я запускаю эту команду:

 % aws sts assume-role --role-arn “arn:aws:iam::123456789012:role/eksServiceRole” --role-session-name "my_test"
 

Я получаю эту ошибку:

 An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com is not authorized to perform: sts:AssumeRole on resource: “arn:aws:iam::123456789012:role/eksServiceRole”
 

Я добавил свою учетную запись в качестве доверительных отношений к этой роли, но все равно ничего не работает:

 {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com",
          "arn:aws:iam::123456789012:root"
        ],
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
  ]
}
 

Я пробовал то же самое для этой роли, но все равно это не работает.

 {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:root",
          "arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "2ffd8b2c3d8edaf02104a081af4b78d82f6e770f"
        }
      }
    }
  ]
}
 

У меня также активирован STS для всех регионов.

Я пробовал разные роли и пользователей, но я никогда не мог запустить команду из-за этого assumerole. Мне просто нужно это сделать, чтобы продолжить работу над моим проектом (интеграция кластера Gitlab EKS для установки сервера метрик).

Я борюсь с этим в течение нескольких дней, и я перепробовал все решения здесь, в stack overflow.

Комментарии:

1. Вам нужна фактическая роль arn, а не предполагаемая роль arn. например arn:aws:iam::123456789012:role/AzureAD_AWS_Admin

2. Привет, @jordanm! Извините, но я не понял, что вы сказали

Ответ №1:

Я решил это!

В нем отсутствовал externalId. В этом случае для этих ролей они были созданы с помощью этого внешнего идентификатора из стороннего приложения (Gitlab).

Поэтому я поместил --external-id параметр во все, что было запущено корректно:

 % aws sts assume-role --role-arn arn:aws:iam::123456789012:role/eksGitlabProvisionRole --external-id 2ffd4wsc3d8edaf02104a081af4b78g432f6e750f --role-session-name my_test