Jenkins API - существует ли токен API, не являющийся пользователем (например, на основе задания), для доступа только для чтения?

Раньше был способ для анонимного пользователя - например, сценарий - запрашивать определенные аспекты Jenkins через его REST API. Например, узнать имя пользователя, запустившего конкретное задание сборки, или дату его выполнения. Однако за последние несколько лет модель безопасности изменилась, что, кажется, значительно усложняет задачу даже для доступа только для чтения.

Я использую Jenkins с аутентификацией ADS. Мне нужно предоставить API-доступ к скрипту, но я не хочу использовать личный токен API конкретного пользователя (жестко запрограммированный в скрипте), потому что скрипт может запускаться кем угодно в моей организации, в том числе как часть другой автоматизации. , и я не хочу привязывать это к конкретному сотруднику.

Вместо этого мне нужен токен на основе задания - тот, который установлен для задания. Есть токен сборки, но я не думаю, что он работает для REST API.

Я думал о создании специального «автоматического» пользователя и токена для этого пользователя, но конфигурация Active Directory, похоже, не позволяет мне создавать новых пользователей Jenkins. Я не могу создать нового пользователя AD, потому что у меня просто нет возможности сделать это в моей организации.

Как лучше всего использовать токены API для анонимного доступа? Кроме того, есть ли способ гарантировать, что токен предоставляет только ограниченный доступ - например, только чтение? В идеале такой токен должен быть ограничен определенным набором заданий, а не глобальным.


person davidA    schedule 23.09.2018    source источник
comment
Примечание. Я пробовал Allow anonymous read access, и это разрешает глобальный доступ только для чтения через API, но он не основан на токенах или заданиях, поэтому он немного шире, чем мне нужно.   -  person davidA    schedule 24.09.2018
comment
вам это нужно - wiki.jenkins.io/display/JENKINS/Build+ Token + Root + плагин   -  person Stan E    schedule 24.09.2018
comment
@StanEremin позволит ли это получить доступ к той части API, которая возвращает информацию о сборке, например имя пользователя, запустившего сборку?   -  person davidA    schedule 25.09.2018


Ответы (2)


Нет. Запрос функции: JENKINS-56465.

person OrangeDog    schedule 07.03.2019

См. https://stackoverflow.com/a/49938577/97831 о том, как добавлять пользователей в базу данных Jenkins уже с аутентификацией. включено.

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

person Jason Swager    schedule 24.09.2018
comment
Хорошо, спасибо, это может сработать - хотя я думаю, что по-прежнему будет глобальный доступ по умолчанию (в той мере, к которой имеет доступ выделенный новый пользователь). Я изучу более детальные разрешения для моего специального пользователя, чтобы увидеть, могу ли я ограничить его конкретными заданиями. - person davidA; 25.09.2018