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

Требуются ли разрешения IAM для ec2.requestSpotInstances?

Я пытаюсь установить разрешения для роли IAM, которая при необходимости будет отправлять новый запрос на спотовый экземпляр. Он будет использоваться лямбда-функцией.

Код выполняет следующие вызовы API AWS:

И я создал для него следующую политику (попробовав множество других вариантов ...):

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stmt1437749945000",
        "Effect": "Allow",
        "Action": [
            "ec2:Describe*",
            "ec2:RequestSpotInstances",
            "ec2:RunInstances",
            "ec2:CreateTags",
            "iam:List*"
        ],
        "Resource": [
            "*"
        ]
    }
]

}

Если я добавлю iam:* это работает, но, очевидно, я не хочу этого делать ..

Может ли кто-нибудь помочь мне угадать, какое разрешение ему действительно нужно? Кто-нибудь знает карту между вызовами API AWS и всеми необходимыми разрешениями?

Обычно существует однозначное соответствие между функциями API ec2 и разрешениями. Так что большая часть того, что у вас есть в вашей политике, в порядке.

Вам нужно добавить iam:PassRole разрешение. Это связано с тем, что ваш спотовый запрос, вероятно, предоставляет роль IAM для работы ваших новых инстансов EC2.

В iam:PassRole разрешение необходимо, потому что ваша лямбда-роль потенциально создает экземпляр с более высокими разрешениями, чем она сама. Это может привести к опасным сценариям безопасности. Это дополнительное разрешение необходимо, и обычно оно ограничивается конечным списком ролей, которые можно назначить с помощью Resource свойство.