Какие разрешения 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"
                }
            }
        }
    ]
}
            
Другие вопросы по тегам