Я пытаюсь установить разрешения для роли 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
свойство.