
Miré a través deldocumentos oficialesy parece que no pude encontrar ninguna referencia sobre qué permisos necesita el usuario de IAM para poder utilizar este comando.
Quiero que el usuario de IAM solo pueda crear imágenes para esta instancia en particular, así que configuré mi política de esta manera:
{
"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>"
]
}
]
}
Pero seguí recibiendo errores de Acceso denegado cuando utilicé la CLI de EC2. Cambié la Resource
parte a solo "*"
y ahora funciona, pero ahora mi usuario de IAM puede crear AMI (por lo tanto, provocar reinicios) en cualquier instancia EC2 de mi cuenta.
¿Cómo puedo bloquear esto?
Respuesta1
Desafortunadamente, no puedes bloquear esto a nivel de recursos en este momento. Hay unmontón de acciones EC2eso no admite permisos a nivel de recursos y ec2:CreateImage
es uno de ellos.
Respuesta2
La creación de una imagen también implica la creación de instantáneas adjuntas a esa instancia. La siguiente política de IAM debería funcionar.
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:CreateSnapshot",
"ec2:CreateImage"
],
"Resource": [
"*"
]
}
Respuesta3
No puede bloquear/limitar CreateImage en el nivel de recursos y la respuesta de @nkryption fue correcta. http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html
Respuesta4
CreateImage ahora admite políticas a nivel de recursos. La siguiente política permite crear una imagen pero solo para la identificación de instancia especificada:
{
"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",
}
]
}
Actualice el número de cuenta y la identificación de la instancia para adaptarla a sus requisitos. También puedes restringir esto según las etiquetas de instancia:
{
"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"
}
}
}
]
}