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

Пользователь не авторизован для выполнения: iam: PassRole на ресурсе

Я пытаюсь создать кластер eks через aws cli с помощью следующих команд:

aws eks create-cluster --name ekCsluster --role-arn arn:aws:iam::111111111111:role/eksServiceRole --resources-vpc-config subnetIds=subnet-1,subnet-2,subnet-3,subnet-4,subnet-5,subnet-6,securityGroupIds=sg-1

И получите следующую ошибку:

An error occurred (AccessDeniedException) when calling the CreateCluster operation: User: arn:aws:iam::111111111111:user/userName is not authorized to perform: iam:PassRole on resource: arn:aws:iam::111111111111:role/eksServiceRole

Однако я создал политику разрешений, AssumeEksServiceRole и прикрепил его непосредственно к пользователю, arn:aws:iam::111111111111:user/userName:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::111111111111:role/eksServiceRole"
        }
    ]
}

в eksServiceRole роль, я определил доверительные отношения следующим образом:

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

Что мне не хватает? Как я могу отладить это сообщение об ошибке? Спасибо за любую помощь.

В вашем случае вы можете просто использовать:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::111111111111:role/eksServiceRole"
        }
    ]
}

Я использую это:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CustomEditor",
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:PassRole"
            ],
            "Resource": "*"
        }
    ]
}

Ваша запись в eksServiceRole роль не нужна.

Я бы попытался удалить пользователя из доверительных отношений (что в любом случае не нужно). Сервисы AWS не работают хорошо, когда в доверительных отношениях используются одновременно учетные записи и сервисы, например, если вы попытаетесь сделать это с помощью CodeBuild, он будет жаловаться, что ему не принадлежит принципал.