Jenkins access roles: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 37 промежуточных версий этого же участника)
Строка 5: Строка 5:
   
 
=Создание ролей в Jenkins=
 
=Создание ролей в Jenkins=
  +
  +
В Jenkins права распределяются немного "заморочено".
  +
Лично до меня дошло не с первого раза, по-тому и появилась эта заметка.
  +
  +
  +
==Установить нужные плагины==
  +
Можно обойтись только одним плагином <B>role-strategy</B>, но тогда придется следить за именами job и при переименовании права могут ломаться.
  +
По этой причине лучше сразу же использовать совместно с плагином <B>role-strategy</B>
  +
  +
===role-strategy===
  +
<PRE>
  +
java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin "role-strategy" --username admin --password r00tme
  +
Installing cloudbees-folder from update center
  +
</PRE>
  +
  +
===cloudbees-folder===
 
<PRE>
 
<PRE>
 
java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin "cloudbees-folder" --username admin --password r00tme
 
java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin "cloudbees-folder" --username admin --password r00tme
Строка 10: Строка 26:
 
</PRE>
 
</PRE>
   
  +
==Перезапуск Jenkins==
  +
После установки этих плагинов требуется перезапуск:
 
<PRE>
 
<PRE>
 
java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ safe-restart --username admin --password r00tme
 
java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ safe-restart --username admin --password r00tme
 
</PRE>
 
</PRE>
  +
  +
==Настройка прав доступа==
  +
Уже существуют 2 группы пользователей в LDAP:
  +
* cicd_users
  +
* cicd_administrators
  +
  +
Нужно назначать ограниченные права для группы cicd_users
  +
===Создать folder===
  +
Тут - проще сделать используя веб-интерфейс чем CLI, так-как create-item принимает на вход XML который еще требуется написать. Как один из вариантов - использовать конфигурацию существующей job.
  +
  +
===Новый Item===
  +
Создать новый элемент - выбрать пункт New Item
  +
<BR>
  +
[[image:JenkinsAccess1.png|400px]]
  +
<BR>
  +
<BR>
  +
Выбрать имя и задать тип элемента - Folder
  +
<BR>
  +
[[image:JenkinsAccess2.png|400px]]
  +
<BR>
  +
<BR>
  +
Сохранить пока-что пустой Folder
  +
<BR>
  +
[[image:JenkinsAccess3.png|400px]]
  +
<BR>
  +
<BR>
  +
Ожидаемый результат:
  +
<BR>
  +
[[image:JenkinsAccess4.png|400px]]
  +
  +
===Поместить в него job===
  +
Создаем новый Job внутри Folder
  +
<BR>
  +
Тип: FreeStyle
  +
<BR>
  +
[[image:JenkinsAccess5.png|400px]]
  +
<BR>
  +
  +
Добавить Build Step: Execute shell.
  +
<BR>
  +
Это нужно для того что бы тестовая Job-а делала хоть что-то.
  +
<BR>
  +
[[image:JenkinsAccess6.png|400px]]
  +
<BR>
  +
Простейший тестовый код - вывести переменные окружения.
  +
  +
<BR>
  +
[[image:JenkinsAccess7.png|400px]]
  +
<BR>
  +
Результат - есть Folder и внутри него существует Job
  +
<BR>
  +
[[image:JenkinsAccess8.png|400px]]
  +
<BR>
  +
  +
===Назначение прав===
  +
В разделе Manage Jenkins перейти к Manage and Assign Roles
  +
  +
<BR>
  +
[[image:JenkinsAccess9.png|800px]]
  +
<BR>
  +
  +
  +
<BR>
  +
[[image:JenkinsAccess10.png|400px]]
  +
<BR>
  +
====Создание ролей====
  +
В разделе Manage and Assign Roles требуется создать роли - для этого перейти в раздел Manage Roles
  +
  +
<BR>
  +
Создать 2 глобальные роли
  +
* Админ с полным доступом
  +
* overall/Read - глобальная роль которая имеет только право на чтение глобально
  +
(overall/Read - это название привилегии в Jenkins и роль которая владеет только этой привилегией названа точно так же)
  +
  +
<BR>
  +
[[image:JenkinsAccess11.png|1000px]]
  +
<BR>
  +
  +
Создать 2 проектные роли:
  +
* pythonFolder c паттерном "pythonFolder"
  +
* pythonFolderChilds c паттерном "pythonFolder/.*"
  +
<BR>
  +
Первая роль обеспечивает доступ к фолдеру, вторая - к содержимому
  +
<BR>
  +
<BR>
  +
  +
<BR>
  +
[[image:JenkinsAccess12.png|400px]]
  +
<BR>
  +
<BR>
  +
[[image:JenkinsAccess13.png|400px]]
  +
<BR>
  +
====Назначение ролей группе пользователей====
  +
Перейти в раздел Assign Roles
  +
  +
<BR>
  +
[[image:JenkinsAccess14.png|400px]]
  +
<BR>
  +
  +
Добавить Global Role overall/read для группы cicd_users.
  +
(Без этой роли пользователи этой группы не смогут читать никакие job - будет сообщение о том что не назначена эта роль)
  +
  +
  +
  +
  +
<BR>
  +
[[image:JenkinsAccess15.png|400px]]
  +
<BR>
  +
<BR>
  +
Назначить группе cicd_users роли pythonFolder и pythonFolderChilds
  +
<BR>
  +
[[image:JenkinsAccess16.png|400px]]
  +
<BR>
  +
  +
<BR>
  +
[[image:JenkinsAccess17.png|400px]]
  +
<BR>
  +
<BR>
  +
====Проверка ролей====
  +
Требуется логин под пользователем test или любым другим из группы cicd_users.
  +
<BR>
  +
<I>рекомендуется использовать другой браузер что бы не делать постоянный перелогин</I>
  +
<BR>
  +
Если назначена роль pythonFolder но не назначена pythonFolderChilds то фолдер видно, но его содержимое - нет.
  +
<BR>
  +
<BR>
  +
[[image:JenkinsAccess18.png|600px]]
  +
<BR>
  +
Содержимое фолдера не видно:
  +
<BR>
  +
[[image:JenkinsAccess19.png|600px]]
  +
<BR>
  +
  +
Для того что бы видеть в том числе и содержимое - проверить/добавить если не добавлена роль pythonFolderChilds
  +
<BR>
  +
[[image:JenkinsAccess20.png|600px]]
  +
<BR>
  +
  +
После чего содержимое фолдера становится доступно:
  +
<BR>
  +
[[image:JenkinsAccess21.png|600px]]
  +
<BR>
  +
Согласно политики, у пользователя из группы cicd_users есть права на запуск job но нет более никаких прав.
  +
<BR>
  +
[[image:JenkinsAccess22.png|600px]]
  +
<BR>
  +
Если создать фолдер javaFolder то можно убедиться что к нему у пользователя test доступа не будет
   
 
=Ссылки=
 
=Ссылки=
 
* https://www.cloudbees.com/products/cloudbees-jenkins-platform/team-edition/features/folders-plugin
 
* https://www.cloudbees.com/products/cloudbees-jenkins-platform/team-edition/features/folders-plugin
  +
* https://sinisa229.wordpress.com/2014/11/10/role-strategy-plugin-for-jenkins/

Текущая версия на 14:55, 14 декабря 2016


Создание ролей в Jenkins

В Jenkins права распределяются немного "заморочено". Лично до меня дошло не с первого раза, по-тому и появилась эта заметка.


Установить нужные плагины

Можно обойтись только одним плагином role-strategy, но тогда придется следить за именами job и при переименовании права могут ломаться. По этой причине лучше сразу же использовать совместно с плагином role-strategy

role-strategy

java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar  -s http://127.0.0.1:8080/ install-plugin  "role-strategy" --username  admin --password r00tme
Installing cloudbees-folder from update center

cloudbees-folder

java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar  -s http://127.0.0.1:8080/ install-plugin  "cloudbees-folder" --username  admin --password r00tme
Installing cloudbees-folder from update center

Перезапуск Jenkins

После установки этих плагинов требуется перезапуск:

java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar  -s http://127.0.0.1:8080/   safe-restart  --username  admin --password r00tme

Настройка прав доступа

Уже существуют 2 группы пользователей в LDAP:

  • cicd_users
  • cicd_administrators

Нужно назначать ограниченные права для группы cicd_users

Создать folder

Тут - проще сделать используя веб-интерфейс чем CLI, так-как create-item принимает на вход XML который еще требуется написать. Как один из вариантов - использовать конфигурацию существующей job.

Новый Item

Создать новый элемент - выбрать пункт New Item
JenkinsAccess1.png

Выбрать имя и задать тип элемента - Folder
JenkinsAccess2.png

Сохранить пока-что пустой Folder
JenkinsAccess3.png

Ожидаемый результат:
JenkinsAccess4.png

Поместить в него job

Создаем новый Job внутри Folder
Тип: FreeStyle
JenkinsAccess5.png

Добавить Build Step: Execute shell.
Это нужно для того что бы тестовая Job-а делала хоть что-то.
JenkinsAccess6.png
Простейший тестовый код - вывести переменные окружения.


JenkinsAccess7.png
Результат - есть Folder и внутри него существует Job
JenkinsAccess8.png

Назначение прав

В разделе Manage Jenkins перейти к Manage and Assign Roles


JenkinsAccess9.png



JenkinsAccess10.png

Создание ролей

В разделе Manage and Assign Roles требуется создать роли - для этого перейти в раздел Manage Roles


Создать 2 глобальные роли

  • Админ с полным доступом
  • overall/Read - глобальная роль которая имеет только право на чтение глобально

(overall/Read - это название привилегии в Jenkins и роль которая владеет только этой привилегией названа точно так же)


JenkinsAccess11.png

Создать 2 проектные роли:

  • pythonFolder c паттерном "pythonFolder"
  • pythonFolderChilds c паттерном "pythonFolder/.*"


Первая роль обеспечивает доступ к фолдеру, вторая - к содержимому


JenkinsAccess12.png

JenkinsAccess13.png

Назначение ролей группе пользователей

Перейти в раздел Assign Roles


JenkinsAccess14.png

Добавить Global Role overall/read для группы cicd_users. (Без этой роли пользователи этой группы не смогут читать никакие job - будет сообщение о том что не назначена эта роль)




JenkinsAccess15.png

Назначить группе cicd_users роли pythonFolder и pythonFolderChilds
JenkinsAccess16.png


JenkinsAccess17.png

Проверка ролей

Требуется логин под пользователем test или любым другим из группы cicd_users.
рекомендуется использовать другой браузер что бы не делать постоянный перелогин
Если назначена роль pythonFolder но не назначена pythonFolderChilds то фолдер видно, но его содержимое - нет.

JenkinsAccess18.png
Содержимое фолдера не видно:
JenkinsAccess19.png

Для того что бы видеть в том числе и содержимое - проверить/добавить если не добавлена роль pythonFolderChilds
JenkinsAccess20.png

После чего содержимое фолдера становится доступно:
JenkinsAccess21.png
Согласно политики, у пользователя из группы cicd_users есть права на запуск job но нет более никаких прав.
JenkinsAccess22.png
Если создать фолдер javaFolder то можно убедиться что к нему у пользователя test доступа не будет

Ссылки