Jenkins access roles: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 41: | Строка 41: | ||
Тут - проще сделать используя веб-интерфейс чем CLI, так-как create-item принимает на вход XML который еще требуется написать. Как один из вариантов - использовать конфигурацию существующей job. |
Тут - проще сделать используя веб-интерфейс чем CLI, так-как create-item принимает на вход XML который еще требуется написать. Как один из вариантов - использовать конфигурацию существующей job. |
||
− | + | ===Новый Item=== |
|
Создать новый элемент - выбрать пункт New Item |
Создать новый элемент - выбрать пункт New Item |
||
<BR> |
<BR> |
||
Строка 153: | Строка 153: | ||
<BR> |
<BR> |
||
<I>рекомендуется использовать другой браузер что бы не делать постоянный перелогин</I> |
<I>рекомендуется использовать другой браузер что бы не делать постоянный перелогин</I> |
||
⚫ | |||
<BR> |
<BR> |
||
⚫ | |||
⚫ | |||
<BR> |
<BR> |
||
− | |||
<BR> |
<BR> |
||
− | [[image: |
+ | [[image:JenkinsAccess18.png|600px]] |
+ | <BR> |
||
+ | Содержимое фолдера не видно: |
||
+ | <BR> |
||
⚫ | |||
<BR> |
<BR> |
||
+ | Для того что бы видеть в том числе и содержимое - проверить/добавить если не добавлена роль pythonFolderChilds |
||
− | |||
<BR> |
<BR> |
||
− | [[image:JenkinsAccess20.png| |
+ | [[image:JenkinsAccess20.png|600px]] |
<BR> |
<BR> |
||
+ | После чего содержимое фолдера становится доступно: |
||
− | |||
<BR> |
<BR> |
||
− | [[image:JenkinsAccess21.png| |
+ | [[image:JenkinsAccess21.png|600px]] |
<BR> |
<BR> |
||
+ | Согласно политики, у пользователя из группы cicd_users есть права на запуск job но нет более никаких прав. |
||
− | |||
<BR> |
<BR> |
||
− | [[image:JenkinsAccess22.png| |
+ | [[image:JenkinsAccess22.png|600px]] |
<BR> |
<BR> |
||
+ | Если создать фолдер javaFolder то можно убедиться что к нему у пользователя test доступа не будет |
||
=Ссылки= |
=Ссылки= |
Текущая версия на 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
Выбрать имя и задать тип элемента - Folder
Сохранить пока-что пустой Folder
Ожидаемый результат:
Поместить в него job
Создаем новый Job внутри Folder
Тип: FreeStyle
Добавить Build Step: Execute shell.
Это нужно для того что бы тестовая Job-а делала хоть что-то.
Простейший тестовый код - вывести переменные окружения.
Результат - есть Folder и внутри него существует Job
Назначение прав
В разделе Manage Jenkins перейти к Manage and Assign Roles
Создание ролей
В разделе Manage and Assign Roles требуется создать роли - для этого перейти в раздел Manage Roles
Создать 2 глобальные роли
- Админ с полным доступом
- overall/Read - глобальная роль которая имеет только право на чтение глобально
(overall/Read - это название привилегии в Jenkins и роль которая владеет только этой привилегией названа точно так же)
Создать 2 проектные роли:
- pythonFolder c паттерном "pythonFolder"
- pythonFolderChilds c паттерном "pythonFolder/.*"
Первая роль обеспечивает доступ к фолдеру, вторая - к содержимому
Назначение ролей группе пользователей
Перейти в раздел Assign Roles
Добавить Global Role overall/read для группы cicd_users. (Без этой роли пользователи этой группы не смогут читать никакие job - будет сообщение о том что не назначена эта роль)
Назначить группе cicd_users роли pythonFolder и pythonFolderChilds
Проверка ролей
Требуется логин под пользователем test или любым другим из группы cicd_users.
рекомендуется использовать другой браузер что бы не делать постоянный перелогин
Если назначена роль pythonFolder но не назначена pythonFolderChilds то фолдер видно, но его содержимое - нет.
Содержимое фолдера не видно:
Для того что бы видеть в том числе и содержимое - проверить/добавить если не добавлена роль pythonFolderChilds
После чего содержимое фолдера становится доступно:
Согласно политики, у пользователя из группы cicd_users есть права на запуск job но нет более никаких прав.
Если создать фолдер javaFolder то можно убедиться что к нему у пользователя test доступа не будет