Я просмотрел официальные документы и, похоже, не смог найти никакой ссылки на то, какие разрешения нужны пользователю 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)