AWS IAM - может ли служба знать роль, которая ее вызывает?
Общая цель:
Я пишу обертку вокруг хранилища параметров AWS для нашей микросервисной среды (все новое). По сути, я пытаюсь облегчить переход от одного поставщика услуг к другому, если мы решим перейти на Azure, например, поэтому нужно будет изменить только эту услугу.
Идея заключается в том, что служба при запуске может вызывать эту службу ("служба конфигурации"), чтобы получить все параметры конфигурации.
Проблема:
Если мы решим пойти по этому пути, может возникнуть желание заблокировать параметры на основе разрешений IAM (ролей / политик). Я ищу способ в этой службе конфигурации, чтобы, возможно, получить пользователя / роль, вызывающую службу конфигурации, и передать его в хранилище параметров, например, при вызове ssm.getParameters(...)
,
Я видел эту страницу, которая позволяет пользователям ограничивать роли, которые они могут передавать, поэтому мне кажется, что я могу передать эту роль. Однако мне нужно выяснить, как найти эту роль.
Например, если бы я использовал.NET с сайтом ASP.NET и с проверкой подлинности Windows, есть возможность выдать себя за этого пользователя, чтобы имитировать разрешения этого пользователя. (Общий эффект, связанный с разрешениями вызывающей службы, ограничивает параметры, к которым она может получить доступ.)
Я использую node.js в Elastic Container Service, используя новый тип Fargate luanch, если это влияет на потенциальные ответы.
1 ответ
Если вы хотите заблокировать параметр SSM для определенного микросервиса
- Создать и прикрепить роль IAM для каждой задачи ECS
- Организуйте свои параметры, используя
path
обозначение - Для каждой роли IAM укажите
Resource
ограничить доступ только для определенного пути (см. это). Это позволит вам иметь только определенные параметры, доступные для каждого микросервиса.
PS. если вы просто хотите получить текущую используемую роль
aws sts get-caller-identity
Другое альтернативное решение:
- При звонке
config-service
включитьmicroservice
имя в запросе и создать роли IAM для соответствияmicroservice
название. - использование
aws sts assume-role
в вашемconfig-service
принять роль IAM, которая будет доступна микросервису. - Заблокировать
config-service
принимать только разрешенные роли.