#security #jenkins #jenkins-pipeline #jenkins-plugins #amazon-ecs
#Безопасность #Дженкинс #дженкинс-конвейер #дженкинс-плагины #amazon-ecs
Вопрос:
Ситуация
Допустим, у меня есть установки Jenkins с многоотраслевыми конвейерами, которые выполняются на узлах, которые реализованы как задачи ECS в AWS. Узлы имеют определенные роли IAM, которые позволяют выполнять определенные действия, например, получать доступ к определенному секрету. Закодированные конвейеры динамически выбирают узел по метке. Пока все хорошо.
В этой настройке Jenkins подключается через LDAP к OpenLDAP и настраиваются группы. Разрешения обрабатываются с помощью «стратегии на основе ролей»
Для благословенной ветви конвейеров существуют проверки кода, но теоретически любой пользователь может создать ветку и использовать закодированный конвейер для извлечения секретов, которые узлу разрешено читать.
В этой ситуации я считаю, что правильный способ обеспечения безопасности — запретить определенным группам запускать задания на определенных узлах.
Вопрос
Как я могу ограничить использование определенного узла для определенной группы пользователей по метке?
Что я пробовал до сих пор
Поскольку я считаю, что стратегия, основанная на ролях, может назначать групповые разрешения на основе имени узла, а узлы ECS получают свои имена на основе <cluster name>-<random string>
, я попытался
- создайте кластер с определенным именем для узлов, которые я хочу иметь возможность ограничивать
- созданы две группы, например. стандартная и привилегированная
- глобально запретить разрешение на «сборку» для стандартной группы
- разрешить разрешение «построить» для стандартной группы на узлах с именем like
<non-privileged cluster name>-.*|master|Jenkins
Проблема в том, что это не сработало для master (некоторые непривилегированные конвейеры должны выполнять задачи на master). Я получил сообщения об ошибках, такие как 'XXXXXXXX' lacks permission to run on 'Jenkins'