Разрешить пользователю AWS IAM запускать только один экземпляр ec2

В Amazon AWS я хотел бы предоставить моему пользователю, зарегистрированному в IAM (Windows), небольшую программу на основе API, которая запустит настраиваемый экземпляр на основе AMI, а затем подключит к нему свою машину. Легко - но если тот же пользователь должен попытаться запустить другой экземпляр, пока первый все еще работает (с того же или другого компьютера), вторая и последующие попытки должны потерпеть неудачу. AMI будет совместно использоваться несколькими пользователями. Экземпляр будет уникальным для пользователя.

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

В идеале обнаружение и предотвращение всего этого должно происходить на стороне AWS, потому что это более безопасно.

На стороне клиента я вижу, как я могу использовать для этого теги - пометить запущенный экземпляр именем пользователя и выполнить поиск тегов, прежде чем разрешить запуск экземпляра.

Есть ли способ сделать это на стороне сервера, с условиями политики IAM или чем-то еще?


person user2793921    schedule 05.03.2014    source источник


Ответы (1)


Конечно. Вот простой пример, в котором я предоставил пользователю доступ ко всем действиям ec2, кроме тех, которые я явно запретил, если существует ResourceTag с ключом «MyTag» и значением «MyTagValue».

Запрещенные действия:

Пример:

{
  "Statement": [
    {
      "Action": [
        "ec2:PurchaseReservedInstancesOffering",
        "ec2:RequestSpotInstances",
        "ec2:RunInstances"
      ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/MyTag": "MyTagValue"
        }
      }
    },
    {
      "Action": "ec2:*",
      "Effect": "Allow",
      "Resource": "*"
    }   
  ]
}

Вот подтверждение результатов имитатора политики IAM:

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

Эти действия разрешены, если этот тег не существует, имеет другое значение и т. Д.

Кроме того, действие разрешения ec2 "Action": "ec2:*" было сделано для примера ... вы можете удалить весь этот блок или использовать его в качестве шаблона, чтобы разрешить пользователям только определенный набор действий EC2.

person Anthony Neace    schedule 05.03.2014
comment
Кто-нибудь действительно заставил это работать? Согласно этому сообщению на форуме AWS в марте 2015 г. можно ограничить количество экземпляров с помощью политики IAM. Когда я тестировал этот подход с помощью EC2 api, он, похоже, не работал. - person tfasz; 06.01.2017