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

Какие разрешения IAM необходимы для ec2-create-image?

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

Я хочу, чтобы пользователь IAM мог создавать изображения только для этого конкретного экземпляра, поэтому моя политика была настроена следующим образом:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt999",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateImage"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:ec2:us-east-1:<my account id>:instance/<my instance id>"
      ]
    }
  ]
} 

Но я продолжал получать ошибки отказа в доступе при использовании интерфейса командной строки EC2. Я изменил Resource часть просто "*" и теперь он работает, но теперь мой пользователь IAM может создавать AMI (вызывая перезагрузку) для любых экземпляров EC2 в моей учетной записи.

Как я могу это заблокировать?

Создание образа также включает в себя создание снимков, прикрепленных к этому экземпляру. Ниже должна работать политика IAM.

{     
  "Effect": "Allow",
  "Action": [
    "ec2:Describe*",
    "ec2:CreateSnapshot",
    "ec2:CreateImage"
  ],
  "Resource": [
    "*"
  ]
}

К сожалению, на данный момент вы не можете заблокировать это на уровне ресурсов. Есть связка действий EC2 который не поддерживает разрешения на уровне ресурсов и ec2:CreateImage один из них.

Вы не можете заблокировать / ограничить CreateImage на уровне ресурсов, и ответ @nkryption был правильным. http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html

Используйте роль IAM, как указано. Попробуйте установить флаг «--no-reboot» при использовании create-image. Это остановит ваш сервер от перезагрузки при создании AMI, например:

 ## Take the actual ami backup, and store the ami id in "AMI"
 AMI=$(aws ec2 create-image --instance-id ${instance-id} --name ${Random-Name}.AutoScript.${DATE} --description 'This is created by amibackup.sh' --no-reboot | ${GREP} -i ami)