Отличный вопрос, к сожалению, ответ немного сложен.
Вы сталкиваетесь с небольшой проблемой курицы и яйца со всеми поставщиками Infrastructure As Code (Serverless, CDK, CloudFormation, Terraform , et c).
Помните, что пользователь IAM, который развертывает ваше приложение, не такой же, как роль IAM вашего приложения (Lambda) запускает под.
Это означает, что если вы хотите строго ограничить разрешения своего пользователя развертывания, чтобы он мог развертывать только указанные c ресурсы, это нормально - однако, как вы отметили, вам нужно будет расширять эти разрешения каждый раз, когда вы хотите развернуть новые ресурсы. Примечательно, что если вы автоматизируете этот процесс таким образом, что разрешения ролей расширяются каждый раз, когда вы добавляете новую инфраструктуру, вы фактически предоставляете своему пользователю развертывания административный доступ.
Вот почему большинство людей используют развернутого пользователя с избыточной подготовкой для развертывания своих приложений. Это не считается плохим подходом по двум причинам:
- Ваше приложение не использует эту роль при выполнении, поэтому, если у вас есть серьезная уязвимость в лямбда-выражении, которая допускает удаленное выполнение кода, злоумышленник не сможет ' t поставить под угрозу всю вашу AWS учетную запись
- Вы полагаетесь на своего провайдера IA C, чтобы гарантировать, что вы не создадите ненужную инфраструктуру. (IE: вы и ваш провайдер IA C имеете одинаковый уровень доступа)
Пока роль Lambda Execution имеет строгую политику IAM, можно использовать пользователя развертывания с избыточным выделением ресурсов.