Какие разрешения 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 CLI. Я изменил Resource
часть просто "*"
и теперь это работает, но теперь мой пользователь IAM может создавать AMI (следовательно, вызывать перезагрузку) для любых экземпляров EC2 в моей учетной записи.
Как я могу заблокировать это?
5 ответов
К сожалению, вы не можете заблокировать это на уровне ресурсов в данный момент. Существует множество действий EC2, которые не поддерживают разрешения на уровне ресурсов и ec2:CreateImage
это один из них.
Создание изображения также включает создание снимков, прикрепленных к этому экземпляру. Ниже политика IAM должна работать.
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:CreateSnapshot",
"ec2:CreateImage"
],
"Resource": [
"*"
]
}
Используйте роль IAM, как указано. Попробуйте установить флаг "--no-reboot" при использовании create-image. Это остановит ваш сервер от перезагрузки при создании AMI, например:
## Возьмите актуальную резервную копию ami и сохраните идентификатор ami в "AMI" AMI=$(aws ec2 create-image --instance-id ${instance-id} --name ${Random-Name}.AutoScript.${DATE} --description 'Это создано amibackup.sh' - без перезагрузки | ${GREP} -i ami)
Вы не можете заблокировать / ограничить CreateImage на уровне ресурса, и ответ @nkryption был правильным. http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html
CreateImage теперь поддерживает политики уровня ресурсов. Следующая политика позволяет создавать изображения, но только для указанного идентификатора экземпляра:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCreateImage",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*::image/*"
},
{
"Sid": "RestrictCreateImageToInstance",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*:999999999999:instance/i-999999999",
}
]
}
Обновите номер учетной записи и идентификатор экземпляра в соответствии с вашими требованиями. Вы также можете ограничить это на основе тегов экземпляра:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCreateImage",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*::image/*"
},
{
"Sid": "RestrictCreateImageToInstances",
"Effect": "Allow",
"Action": "ec2:CreateImage",
"Resource": "arn:aws:ec2:*:999999999999:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Name": "Test"
}
}
}
]
}