Могу ли я ограничить группу пользователей в IAM доступом / запуском / прекращением работы только определенных AMI или экземпляров EC2? - PullRequest
16 голосов
/ 22 марта 2012

То, что написано в заголовке.

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

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

Возможно ли это?

1 Ответ

29 голосов
/ 24 марта 2012

Обновление

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. Разрешить пользователям останавливать и запускать только определенные экземпляры для рассматриваемого варианта использования, который позволяет пользователям запускать иОстановить [и завершить] только экземпляры, имеющие тег «отдел = 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 ) - доверие к основанию для этой сложной и далеко идущей функции , по-видимому, высокодостаточно, чтобы объявить, что они планируют добавить поддержку дополнительных API-интерфейсов в течение оставшейся части 2013 года (AWS обычно не публикует какие-либо дорожные карты):

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

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

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

Проблема

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

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

(Частичное) Обходной путь

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

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

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

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

Более того, это не помешает им запустить причудливый Cluster Compute Eight Extra Large Instance или около того, в свою очередь несут соответствующие расходы;)

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

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

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

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

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

...