Управление учетными данными безопасности IAM для нескольких док-контейнеров

11

В простой среде EC2 управление доступом к другим ресурсам AWS довольно просто с помощью ролей и учетных данных IAM (автоматически выбирается из метаданных экземпляра). Еще проще с CloudFormation, где вы можете создавать роли на лету, когда назначаете конкретную роль приложения для экземпляра.

Если бы я захотел перейти на Docker и выполнить своего рода развертывание M-to-N, на котором у меня M машин и N приложений, работающих на нем, как мне следует ограничить доступ к ресурсам AWS для каждого приложения? Метаданные экземпляра доступны любому на хосте, поэтому у меня было бы возможность видеть / изменять данные любого другого приложения в одной и той же среде развертывания.

Каковы рекомендации по предоставлению учетных данных безопасности для контейнеров приложений, работающих в такой среде?

Алекс Б
источник

Ответы:

5

Есть этот проект: https://github.com/dump247/docker-ec2-metadata

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

pbitty
источник
1

Применение наименьших привилегий с использованием ролей и групп безопасности (даже если вы их не упомянули) в AWS с EC2 являются лучшими практиками для обеспечения безопасной среды для ваших хостинговых приложений, особенно при использовании CloudFormation. Однако, если вы наложите многопользовательскую среду Docker поверх этого, то все начнёт разваливаться.

Наилучшим ответом сейчас, чтобы продолжать получать преимущества от ролей при применении наименьших привилегий, является не использование мультитенантного подхода. В основном используется однозначное сопоставление между экземпляром EC2 и приложением, но вы все равно можете использовать кластеры / ASG. Docker по-прежнему является чрезвычайно полезным и мощным инструментом, который вы можете использовать для управления и развертывания своих приложений, но сейчас роли применяются в экземпляре EC2, а не в контейнере. Это означает использование отдельных виртуальных машин для каждого приложения на данный момент.

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

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

JaredHatfield
источник