Могу ли я ограничить группу пользователей доступом / запуском / завершением только определенных AMI EC2 или экземпляров в IAM?

Что говорит название.

В основной учетной записи AWS у меня есть несколько личных учетных записей, то есть пользователей AWS Identity and Access Management (IAM). Я хочу назначить определенных пользователей IAM в группы и запретить им отключать определенные экземпляры Amazon EC2, отмена регистрации определенных образов машин Amazon (AMI) и т. д.

Я не против, если они играют со своими вещами, но я не хочу, чтобы они трогали мои вещи.

Это возможно?


person Florin Andrei    schedule 22.03.2012    source источник


Ответы (1)


Обновлять

AWS только что анонсировала разрешения на уровне ресурсов для Amazon EC2 и Amazon RDS для устранения этого давнего недостатка поддержки IAM в EC2 и RDS (по сравнению с другими сервисами AWS, подробности / предыстория см. В моем исходном ответе ниже):

Сегодня мы делаем IAM еще более мощным, вводя разрешения на уровне ресурсов для Amazon EC2 и Amazon RDS. [...]

На стороне EC2 теперь вы можете создавать и использовать политики IAM для управления доступом к экземплярам EC2, томам EBS, изображениям и эластичным IP-адресам. [...]

Вот лишь несколько вещей, которые вы можете сделать:

  • Разрешить пользователям работать с ограниченным набором ресурсов в более крупной многопользовательской среде EC2.
  • Установите разные разрешения для ресурсов "разработки" и "тестирования".
  • Определите, какие пользователи могут завершать какие экземпляры.
  • Требовать дополнительных мер безопасности, таких как аутентификация MFA, при работе с определенными ресурсами.

Это решает множество проблем с безопасностью, а также открывает множество новых вариантов использования.

Кроме того, инструкции политики EC2 могут включать ссылку на теги ресурсов EC2, что позволяет использовать одну и ту же модель и схему тегов для разрешений и отчетов по счетам. Наконец, есть расширенный набор тегов условий [...], включая ec2: Region, ec2: Owner и ec2: InstanceType, см. Ключи условий для Amazon EC2, чтобы получить подробную информацию.

Решение

Вот вариант Пример 3. Разрешить пользователям останавливаться и запускать только определенные экземпляры для рассматриваемого варианта использования, что позволяет пользователям запускать и останавливать [и завершать] только экземпляры с тегом «Department = dev»:

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": [
        "ec2:StopInstances", 
        "ec2:StartInstances",
        "ec2:TeminateInstances"
      ],
      "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/department": "dev"
        }
      }
    }
   ]
}

Предостережение

Поддержка разрешений на уровне ресурсов ограничена следующим набором действий с указанными ресурсами, что исключает части варианта использования (например, отмена регистрации AMI) - уверенность в основе этого < em> сложная и далеко идущая функция, по-видимому, достаточно высока, чтобы объявить, что они планируют добавить поддержку дополнительных API в течение оставшейся части 2013 года (AWS обычно не публикует никаких дорожных карт) :

  • Экземпляры - перезагрузка, запуск, остановка, завершение.
  • Тома EBS - прикрепить, удалить, отсоединить.

Оригинальный ответ

Боюсь, что это невозможно сделать так, как вы хотели бы (и многие другие в этом отношении, включая меня).

Проблема

Вы хотите ограничить доступ к ресурсам определенного сервиса, а не к его действиям - в то время как AWS Управление идентификацией и доступом (IAM) в принципе поддерживает и то, и другое; не все продукты / услуги AWS пока предлагают ограничения на основе ресурсов; к сожалению, Amazon EC2 является одним из них и даже показан в качестве примера этой самой разницы, см. Интеграция с другими продуктами AWS:

В следующей таблице показано, можете ли вы предоставить разрешения IAM, которые управляют доступом к действиям, ресурсам службы или к тому и другому. Например, вы можете использовать IAM для управления действиями Amazon EC2, к которым пользователи имеют доступ, но вы не можете использовать IAM для управления доступом пользователей к AMI, томам, экземплярам и т. Д. [ акцент мой]

(Частично) Временное решение

В зависимости от потребностей других учетных записей вы можете по-прежнему иметь возможность хотя бы ограничить их способность выполнять действия, которые считаются разрушительными - вы можете изучить доступные действия с помощью AWS Policy Generator, например:

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

То есть, как только вы включите защиту от прерывания, никто, не имеющий разрешения на использование ec2:ModifyInstanceAttribute, вообще не сможет завершить эти экземпляры.

Очевидно, что соответственно ограниченные учетные записи больше не смогут облегчить эти вызовы за свои собственные ресурсы.

Более того, это не помешает им запустить модный восьмой сверхбольшой экземпляр кластерных вычислений или около того, что, в свою очередь, приведет к соответствующим расходам;)

Альтернативный подход

В зависимости от вашей настройки / среды вы можете вместо этого изучить Consolidated Billing, который, по сути, предоставляет способ собрать одну или несколько учетных записей AWS под другой, который оплачивает ресурсы, используемые другими.

Хотя это в первую очередь функция учета, ее также можно использовать для разделения проблемных областей - например, довольно распространено упрощение отдельных учетных записей разработки и производства для достижения соответственно независимой работы, не в последнюю очередь в отношении прав IAM и тому подобного.

Вводная запись в блоге Новая функция AWS: консолидированный биллинг предоставляет хороший обзор, и вот соответствующая тема из AWS Consolidated Billing Guide, касающаяся вашего очевидного варианта использования:

Платежный аккаунт оплачивает все расходы связанных аккаунтов. Однако каждая связанная учетная запись полностью независима во всех остальных отношениях (подписка на услуги, доступ к ресурсам, использование AWS Premium Support и т. д.). Владелец платной учетной записи не может получить доступ к данным, принадлежащим владельцам связанных учетных записей. (например, их файлы в Amazon S3). Каждый владелец учетной записи использует свои собственные учетные данные AWS для доступа к своим ресурсам (например, собственный секретный ключ доступа к AWS). [выделено мной]

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

person Steffen Opel    schedule 24.03.2012
comment
Следуя идее использовать обходной подход к консолидированному биллингу, человек, который хочет сохранить контроль над системным администратором, может сохранить право собственности на все учетные записи (создать по одной для каждого пользователя) и просто использовать IAM в каждой учетной записи, чтобы предоставить отдельному пользователю способности, которые им нужны. Таким образом, вы, как системный администратор, по-прежнему можете видеть, когда они оставляют машины работающими (в противном случае они накапливают огромные счета, а вы не знаете об этом до конца месяца. Объедините этот подход с некоторыми функциями «оповещения», встроенными в AWS, или используйте EC2 API для проверки того, что работает во всех учетных записях. - person dmohr; 24.04.2013
comment
@dmohr - Хорошее замечание; может быть, немного экстремальным для больших пользовательских баз, но он может достаточно масштабироваться в зависимости от ваших потребностей и на сегодняшний день также является единственным вариантом для получения своего рода контрольного журнала (см. Журналы действий на amazon s3 / других сервисах AWS, чтобы узнать об этом подробнее); если вас беспокоят только запущенные экземпляры, вы можете также изучить новый Amazon CloudWatch - Действия по тревоге, подробности см. в моем соответствующем ответе. - person Steffen Opel; 29.04.2013