Настройка Lambda для создания AWS CloudFormation без политики IAM - PullRequest
0 голосов
/ 11 января 2019

Каковы лучшие практики для стеков CloudFormation, которые создают пользователей IAM? Я создаю API, который будет автоматически добавлять клиентов в один из наших сервисов, т. Е. Он использует шаблон CloudFormation для создания сегментов, записей динамо-базы данных, пользователя IAM и т. Д.

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

Есть ли способ, которым я мог бы создать стек CloudFormation, но для его создания требуется разрешение администратора? Я заметил, что нет способа «задержать» стек для утверждения от другого объекта, который имеет правильные разрешения, так как для стеков, которые должны быть созданы в первую очередь, должны быть надлежащие политики для объекта, создающего его.

Итак, в общем, отправьте запрос POST на URL, который создает стек, требующий одобрения администратора с соответствующими разрешениями для активации создания.

Я начинаю верить, что это невозможно, так каковы некоторые рекомендации?

Мы подумали о некоторых других методах:

  • Вызов API загружает сгенерированный шаблон CloudFormation в s3, затем администраторы вручную создают стек с URL-адресом объекта
  • Измените шаблон CloudFormation, чтобы удалить раздел IAM, и попросите администраторов создать эту часть вручную

В любом случае, это отчасти отнимает аспект "автоматизации".

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я бы предложил использовать Шаговые функции AWS для создания конечного автомата (кодифицированного процесса) вокруг механизма утверждения. Затем запрос POST инициирует выполнение новой пошаговой функции с конкретным шаблоном CFN. Я полагаю, что вам нужно создать простой интерфейс, чтобы перечислить все ожидающие выполнения функции шага (то есть ожидающие утверждения).

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

0 голосов
/ 11 января 2019

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

...