Как ограничить узел Дженкинса по метке для группы пользователей

#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'