Развертывание CDK и принцип наименьших привилегий

#amazon-web-services #aws-cdk

Вопрос:

Мы (в основном с радостью ;)) используем AWS CDK для развертывания нашего стека приложений в нескольких средах (например, производство, централизованная разработка, индивидуальная разработка). Теперь мы хотим повысить безопасность, применив принцип наименьших привилегий к роли развертывания. Поскольку код CDK уже содержит всю информацию о том, какие службы он будет касаться, существует ли наилучшая практика создания определения роли?

Очевидно, что он не может быть частью стека, поскольку он необходим для развертывания стека. Существует ли какой — либо механизм, встроенный в CDK (например, используется распределение по облачным фронтам, поэтому роль развертывания должна иметь разрешение на создание, обновление и удаление распределений по облачным фронтам-возможно, даже после того, как распределение по облачным фронтам сопоставлено только с этим распределением).

Есть какие-нибудь лучшие практики, как этого добиться?

Ответ №1:

Здесь вы сталкиваетесь с проблемой курицы и яйца. (Мы сталкиваемся с аналогичной проблемой с секретным менеджером и инициализацией секретов) практически единственное решение, которое я нашел, которое работает, — это сценарий настройки в первый раз, который использует SDK или интерфейс командной строки для запуска необходимых команд для этой настройки в первый раз. Тогда вы можете сослаться на то, что находится за пределами этого.

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

Комментарии:

1. Спасибо за ваш ответ, но я не полностью согласен. Возможно, я переборщил с ограничением определенных ресурсов, но код CDK уже «знает», используется ли определенная служба, например CloudFront, и вы можете собрать многие требования к развертыванию из кода — поэтому мой вопрос: есть ли для этого лучшая практика или шаблон, потому что я не люблю давать карт-бланш на обслуживание CI/CD. Поэтому я согласен, что необходимо выполнить два шага: 1. сгенерировать и развернуть роль (вручную с ролью администратора) 2. использовать роль для (многократно) Если вы добавляете новые службы, вернитесь к 1

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