Permissões necessárias do IAM para ec2.requestSpotInstances?

2

Estou tentando definir permissões em uma função do IAM que enviará uma nova solicitação de instância pontual, se necessário. Ele será usado por uma função do Lambda.

O código faz as seguintes chamadas da API da AWS:

  • ec2.describeSpotInstanceRequests
  • ec2.requestSpotInstances
  • ec2.createTags

E eu criei para ele a seguinte política (depois de tentar muitas outras opções ...):

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

}

Se eu adicionar iam:* , funciona, mas obviamente eu não quero fazer isso ..

Alguém pode me ajudar a adivinhar que permissão realmente precisa? Alguém sabe de um mapa entre as chamadas da API da AWS e todas as permissões necessárias?

    
por Zach Moshe 25.07.2015 / 03:05

1 resposta

3

Geralmente, há uma correspondência de um para um entre as funções da API ec2 e as permissões. Então, muito do que você tem em sua política é bom.

Você precisa adicionar a permissão iam:PassRole . Isso ocorre porque sua solicitação pontual provavelmente está fornecendo uma função do IAM para que suas novas instâncias do EC2 sejam executadas.

A permissão iam:PassRole é necessária porque sua função lambda está potencialmente criando uma instância com permissões mais altas do que a própria. Isso pode levar a cenários de segurança perigosos. Portanto, essa permissão extra é necessária e, geralmente, é restrita a uma lista finita de funções que pode ser atribuída usando a propriedade Resource .

    
por 26.07.2015 / 21:08